VirtualBox

Changeset 59795 in vbox


Ignore:
Timestamp:
Feb 24, 2016 9:13:27 AM (9 years ago)
Author:
vboxsync
Message:

temporarily back out the recent Python 3 changes (r105649, r105645, r105644, r105643, r105641)

Location:
trunk
Files:
37 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r59790 r59795  
    64746474        $(MAKE) VBOX_QUICK=1
    64756475
    6476 
  • trunk/doc/manual/en_US/SDKRef.xml

    r59771 r59795  
    781781        <xref linkend="glue-python"/>.</para>
    782782
    783         <para>The minimum supported Python version is 2.6.</para>
    784 
    785783        <para>As indicated in <xref linkend="webservice-or-com"/>, the
    786784        COM/XPCOM API gives better performance without the SOAP overhead, and
     
    790788        platform<footnote>
    791789            <para>On On Mac OS X only the Python versions bundled with the OS
    792             are officially supported. This means 2.6 and 2.7 for 10.8 and later.</para>
     790            are officially supported. This means Python 2.3 for 10.4, Python
     791            2.5 for 10.5 and Python 2.5 and 2.6 for 10.6.</para>
    793792          </footnote>). On Windows, you can use the Main API from Python if the
    794793          Win32 extensions package for Python<footnote>
    795794            <para>See <ulink
    796795            url="http://sourceforge.net/project/showfiles.php?group_id=78018">http://sourceforge.net/project/showfiles.php?group_id=78018</ulink>.</para>
    797           </footnote> is installed. Versions of Python Win32 extensions earlier
     796          </footnote> is installed. Version of Python Win32 extensions earlier
    798797          than 2.16 are known to have bugs, leading to issues with VirtualBox
    799           Python bindings, so please make sure to use latest available Python
    800           and Win32 extensions.</para>
     798          Python bindings, and also some early builds of Python 2.5 for Windows
     799          have issues with reporting platform name on some Windows versions, so
     800          please make sure to use latest available Python and Win32
     801          extensions.</para>
    801802
    802803        <para>The VirtualBox OOWS for Python relies on the Python ZSI SOAP
     
    14961497        the glue layer if you want to use a different Python
    14971498        installation.</para>
    1498 
    1499         <para>The minimum supported Python version is 2.6.</para>
    15001499
    15011500        <para>In this layer, the class
  • trunk/src/VBox/Frontends/VBoxShell/vboxshell.py

    r59777 r59795  
    22# -*- coding: utf-8 -*-
    33# $Id$
    4 
    54"""
    65VirtualBox Python Shell.
     
    2019"""
    2120
    22 from __future__ import print_function
    23 
    2421__copyright__ = \
    2522"""
    26 Copyright (C) 2009-2016 Oracle Corporation
     23Copyright (C) 2009-2015 Oracle Corporation
    2724
    2825This file is part of VirtualBox Open Source Edition (OSE), as
     
    3734
    3835
    39 import os
    40 import sys
     36import os, sys
    4137import traceback
    4238import shlex
     
    4642from optparse import OptionParser
    4743from pprint import pprint
     44
    4845
    4946
     
    155152                            matches.append(word)
    156153
    157             except Exception as e:
     154            except Exception, e:
    158155                printErr(self.ctx, e)
    159156                if g_fVerbose:
     
    167164
    168165    comps = {}
    169     for (key, _value) in list(cmds.items()):
     166    for (key, _value) in cmds.items():
    170167        comps[key] = None
    171168    completer = CompleterNG(comps, ctx)
     
    192189    try:
    193190        while not progress.completed:
    194             print("%s %%\r" % (colored(str(progress.percent), 'red')), end="")
     191            print "%s %%\r" % (colored(str(progress.percent), 'red')),
    195192            sys.stdout.flush()
    196193            progress.waitForCompletion(wait)
     
    200197        return 1
    201198    except KeyboardInterrupt:
    202         print("Interrupted.")
     199        print "Interrupted."
    203200        ctx['interrupt'] = True
    204201        if progress.cancelable:
    205             print("Canceling task...")
     202            print "Canceling task..."
    206203            progress.cancel()
    207204        return 0
    208205
    209206def printErr(_ctx, e):
    210     oVBoxMgr = _ctx['global']
     207    oVBoxMgr = _ctx['global'];
    211208    if oVBoxMgr.errIsOurXcptKind(e):
    212         print(colored('%s: %s' % (oVBoxMgr.xcptToString(e), oVBoxMgr.xcptGetMessage(e)), 'red'))
    213     else:
    214         print(colored(str(e), 'red'))
     209        print colored('%s: %s' % (oVBoxMgr.xcptToString(e), oVBoxMgr.xcptGetMessage(e)), 'red');
     210    else:
     211        print colored(str(e), 'red')
    215212
    216213def reportError(_ctx, progress):
    217214    errorinfo = progress.errorInfo
    218215    if errorinfo:
    219         print(colored("Error in module '%s': %s" % (errorinfo.component, errorinfo.text), 'red'))
     216        print colored("Error in module '%s': %s" % (errorinfo.component, errorinfo.text), 'red')
    220217
    221218def colCat(_ctx, strg):
     
    244241    mach = vbox.createMachine("", name, [], kind, "")
    245242    mach.saveSettings()
    246     print("created machine with UUID", mach.id)
     243    print "created machine with UUID", mach.id
    247244    vbox.registerMachine(mach)
    248245    # update cache
     
    251248def removeVm(ctx, mach):
    252249    uuid = mach.id
    253     print("removing machine ", mach.name, "with UUID", uuid)
     250    print "removing machine ", mach.name, "with UUID", uuid
    254251    cmdClosedVm(ctx, mach, detachVmDevice, ["ALL"])
    255252    disks = mach.unregister(ctx['global'].constants.CleanupMode_Full)
     
    257254        progress = mach.deleteConfig(disks)
    258255        if progressBar(ctx, progress, 100) and int(progress.resultCode) == 0:
    259             print("Success!")
     256            print "Success!"
    260257        else:
    261258            reportError(ctx, progress)
     
    274271            try:
    275272                perf.setup(['*'], [mach], 10, 15)
    276             except Exception as e:
     273            except Exception, e:
    277274                printErr(ctx, e)
    278275                if g_fVerbose:
     
    327324        return
    328325    for metric in ctx['perf'].query(["*"], [mach]):
    329         print(metric['name'], metric['values_as_string'])
     326        print metric['name'], metric['values_as_string']
    330327
    331328def guestExec(ctx, machine, console, cmds):
    332     exec(cmds)
     329    exec cmds
    333330
    334331def printMouseEvent(_ctx, mev):
    335     print("Mouse : mode=%d x=%d y=%d z=%d w=%d buttons=%x" % (mev.mode, mev.x, mev.y, mev.z, mev.w, mev.buttons))
     332    print "Mouse : mode=%d x=%d y=%d z=%d w=%d buttons=%x" % (mev.mode, mev.x, mev.y, mev.z, mev.w, mev.buttons)
    336333
    337334def printKbdEvent(ctx, kev):
    338     print("Kbd: ", ctx['global'].getArray(kev, 'scancodes'))
     335    print "Kbd: ", ctx['global'].getArray(kev, 'scancodes')
    339336
    340337def printMultiTouchEvent(ctx, mtev):
    341     print("MultiTouch : contacts=%d time=%d" % (mtev.contactCount, mtev.scanTime))
     338    print "MultiTouch : contacts=%d time=%d" % (mtev.contactCount, mtev.scanTime)
    342339    xPositions = ctx['global'].getArray(mtev, 'xPositions')
    343340    yPositions = ctx['global'].getArray(mtev, 'yPositions')
     
    346343
    347344    for i in range(0, mtev.contactCount):
    348         print("  [%d] %d,%d %d %d" % (i, xPositions[i], yPositions[i], contactIds[i], contactFlags[i]))
     345        print "  [%d] %d,%d %d %d" % (i, xPositions[i], yPositions[i], contactIds[i], contactFlags[i])
    349346
    350347def monitorSource(ctx, eventSource, active, dur):
    351348    def handleEventImpl(event):
    352349        evtype = event.type
    353         print("got event: %s %s" % (str(evtype), asEnumElem(ctx, 'VBoxEventType', evtype)))
     350        print "got event: %s %s" % (str(evtype), asEnumElem(ctx, 'VBoxEventType', evtype))
    354351        if evtype == ctx['global'].constants.VBoxEventType_OnMachineStateChanged:
    355352            scev = ctx['global'].queryInterface(event, 'IMachineStateChangedEvent')
    356353            if scev:
    357                 print("machine state event: mach=%s state=%s" % (scev.machineId, scev.state))
     354                print "machine state event: mach=%s state=%s" % (scev.machineId, scev.state)
    358355        elif  evtype == ctx['global'].constants.VBoxEventType_OnSnapshotTaken:
    359356            stev = ctx['global'].queryInterface(event, 'ISnapshotTakenEvent')
    360357            if stev:
    361                 print("snapshot taken event: mach=%s snap=%s" % (stev.machineId, stev.snapshotId))
     358                print "snapshot taken event: mach=%s snap=%s" % (stev.machineId, stev.snapshotId)
    362359        elif  evtype == ctx['global'].constants.VBoxEventType_OnGuestPropertyChanged:
    363360            gpcev = ctx['global'].queryInterface(event, 'IGuestPropertyChangedEvent')
    364361            if gpcev:
    365                 print("guest property change: name=%s value=%s" % (gpcev.name, gpcev.value))
     362                print "guest property change: name=%s value=%s" % (gpcev.name, gpcev.value)
    366363        elif  evtype == ctx['global'].constants.VBoxEventType_OnMousePointerShapeChanged:
    367364            psev = ctx['global'].queryInterface(event, 'IMousePointerShapeChangedEvent')
     
    369366                shape = ctx['global'].getArray(psev, 'shape')
    370367                if shape is None:
    371                     print("pointer shape event - empty shape")
     368                    print "pointer shape event - empty shape"
    372369                else:
    373                     print("pointer shape event: w=%d h=%d shape len=%d" % (psev.width, psev.height, len(shape)))
     370                    print "pointer shape event: w=%d h=%d shape len=%d" % (psev.width, psev.height, len(shape))
    374371        elif evtype == ctx['global'].constants.VBoxEventType_OnGuestMouse:
    375372            mev = ctx['global'].queryInterface(event, 'IGuestMouseEvent')
     
    444441    def handleEventImpl(event):
    445442        evtype = event.type
    446         #print("got event: %s %s" % (str(evtype), asEnumElem(ctx, 'VBoxEventType', evtype)))
     443        #print "got event: %s %s" % (str(evtype), asEnumElem(ctx, 'VBoxEventType', evtype))
    447444        if evtype == ctx['global'].constants.VBoxEventType_OnGuestMouse:
    448445            mev = ctx['global'].queryInterface(event, 'IGuestMouseEvent')
     
    492489
    493490    header = demo.readline()
    494     print("Header is", header)
     491    print "Header is", header
    495492    basere = re.compile(r'(?P<s>\d+): (?P<t>[km]) (?P<p>.*)')
    496493    mre = re.compile(r'(?P<a>\d+) (?P<x>-*\d+) (?P<y>-*\d+) (?P<z>-*\d+) (?P<w>-*\d+) (?P<b>-*\d+)')
     
    518515            if rtype == 'k':
    519516                codes = kre.findall(params)
    520                 #print("KBD:", codes)
     517                #print "KBD:", codes
    521518                kbd.putScancodes(codes)
    522519            elif rtype == 'm':
     
    526523                    if mdict['a'] == '1':
    527524                        # absolute
    528                         #print("MA: ", mdict['x'], mdict['y'], mdict['z'], mdict['b'])
     525                        #print "MA: ", mdict['x'], mdict['y'], mdict['z'], mdict['b']
    529526                        mouse.putMouseEventAbsolute(int(mdict['x']), int(mdict['y']), int(mdict['z']), int(mdict['w']), int(mdict['b']))
    530527                    else:
    531                         #print("MR: ", mdict['x'], mdict['y'], mdict['b'])
     528                        #print "MR: ", mdict['x'], mdict['y'], mdict['b']
    532529                        mouse.putMouseEvent(int(mdict['x']), int(mdict['y']), int(mdict['z']), int(mdict['w']), int(mdict['b']))
    533530
     
    562559        h = fbh
    563560
    564     print("Saving screenshot (%d x %d) screen %d in %s..." % (w, h, screen, f))
     561    print "Saving screenshot (%d x %d) screen %d in %s..." % (w, h, screen, f)
    565562    data = display.takeScreenShotToArray(screen, w, h, ctx['const'].BitmapFormat_RGBA)
    566563    size = (w, h)
     
    589586        h = fbh
    590587
    591     print("Saving screenshot (%d x %d) screen %d in %s..." % (w, h, screen, f))
     588    print "Saving screenshot (%d x %d) screen %d in %s..." % (w, h, screen, f)
    592589    data = display.takeScreenShotToArray(screen, w, h, ctx['const'].BitmapFormat_PNG)
    593590    pngfile = open(f, 'wb')
     
    597594def teleport(ctx, _session, console, args):
    598595    if args[0].find(":") == -1:
    599         print("Use host:port format for teleport target")
     596        print "Use host:port format for teleport target"
    600597        return
    601598    (host, port) = args[0].split(":")
     
    611608
    612609    port = int(port)
    613     print("Teleporting to %s:%d..." % (host, port))
     610    print "Teleporting to %s:%d..." % (host, port)
    614611    progress = console.teleport(host, port, passwd, maxDowntime)
    615612    if progressBar(ctx, progress, 100) and int(progress.resultCode) == 0:
    616         print("Success!")
     613        print "Success!"
    617614    else:
    618615        reportError(ctx, progress)
     
    635632    all_stats = ctx['const'].all_values('GuestStatisticType')
    636633    cpu = 0
    637     for s in list(all_stats.keys()):
     634    for s in all_stats.keys():
    638635        try:
    639636            val = guest.getStatistic( cpu, all_stats[s])
    640             print("%s: %d" % (s, val))
     637            print "%s: %d" % (s, val)
    641638        except:
    642639            # likely not implemented
     
    645642def plugCpu(_ctx, machine, _session, args):
    646643    cpu = int(args[0])
    647     print("Adding CPU %d..." % (cpu))
     644    print "Adding CPU %d..." % (cpu)
    648645    machine.hotPlugCPU(cpu)
    649646
    650647def unplugCpu(_ctx, machine, _session, args):
    651648    cpu = int(args[0])
    652     print("Removing CPU %d..." % (cpu))
     649    print "Removing CPU %d..." % (cpu)
    653650    machine.hotUnplugCPU(cpu)
    654651
     
    664661
    665662def printHostUsbDev(ctx, ud):
    666     print("  %s: %s (vendorId=%d productId=%d serial=%s) %s" % (ud.id, colored(ud.product, 'blue'), ud.vendorId, ud.productId, ud.serialNumber, asEnumElem(ctx, 'USBDeviceState', ud.state)))
     663    print "  %s: %s (vendorId=%d productId=%d serial=%s) %s" % (ud.id, colored(ud.product, 'blue'), ud.vendorId, ud.productId, ud.serialNumber, asEnumElem(ctx, 'USBDeviceState', ud.state))
    667664
    668665def printUsbDev(_ctx, ud):
    669     print("  %s: %s (vendorId=%d productId=%d serial=%s)" % (ud.id,  colored(ud.product, 'blue'), ud.vendorId, ud.productId, ud.serialNumber))
     666    print "  %s: %s (vendorId=%d productId=%d serial=%s)" % (ud.id,  colored(ud.product, 'blue'), ud.vendorId, ud.productId, ud.serialNumber)
    670667
    671668def printSf(ctx, sf):
    672     print("    name=%s host=%s %s %s" % (sf.name, colPath(ctx, sf.hostPath), cond(sf.accessible, "accessible", "not accessible"), cond(sf.writable, "writable", "read-only")))
     669    print "    name=%s host=%s %s %s" % (sf.name, colPath(ctx, sf.hostPath), cond(sf.accessible, "accessible", "not accessible"), cond(sf.writable, "writable", "read-only"))
    673670
    674671def ginfo(ctx, console, _args):
    675672    guest = console.guest
    676673    if guest.additionsRunLevel != ctx['const'].AdditionsRunLevelType_None:
    677         print("Additions active, version %s" % (guest.additionsVersion))
    678         print("Support seamless: %s" % (getFacilityStatus(ctx, guest, ctx['const'].AdditionsFacilityType_Seamless)))
    679         print("Support graphics: %s" % (getFacilityStatus(ctx, guest, ctx['const'].AdditionsFacilityType_Graphics)))
    680         print("Balloon size: %d" % (guest.memoryBalloonSize))
    681         print("Statistic update interval: %d" % (guest.statisticsUpdateInterval))
    682     else:
    683         print("No additions")
     674        print "Additions active, version %s" % (guest.additionsVersion)
     675        print "Support seamless: %s" % (getFacilityStatus(ctx, guest, ctx['const'].AdditionsFacilityType_Seamless))
     676        print "Support graphics: %s" % (getFacilityStatus(ctx, guest, ctx['const'].AdditionsFacilityType_Graphics))
     677        print "Balloon size: %d" % (guest.memoryBalloonSize)
     678        print "Statistic update interval: %d" % (guest.statisticsUpdateInterval)
     679    else:
     680        print "No additions"
    684681    usbs = ctx['global'].getArray(console, 'USBDevices')
    685     print("Attached USB:")
     682    print "Attached USB:"
    686683    for ud in usbs:
    687684        printUsbDev(ctx, ud)
    688685    rusbs = ctx['global'].getArray(console, 'remoteUSBDevices')
    689     print("Remote USB:")
     686    print "Remote USB:"
    690687    for ud in rusbs:
    691688        printHostUsbDev(ctx, ud)
    692     print("Transient shared folders:")
     689    print "Transient shared folders:"
    693690    sfs = rusbs = ctx['global'].getArray(console, 'sharedFolders')
    694691    for sf in sfs:
     
    701698        session = ctx['global'].getSessionObject(vbox)
    702699        mach.lockMachine(session, ctx['global'].constants.LockType_Shared)
    703     except Exception as e:
     700    except Exception, e:
    704701        printErr(ctx, "Session to '%s' not open: %s" % (mach.name, str(e)))
    705702        if g_fVerbose:
     
    707704        return
    708705    if session.state != ctx['const'].SessionState_Locked:
    709         print("Session to '%s' in wrong state: %s" % (mach.name, session.state))
     706        print "Session to '%s' in wrong state: %s" % (mach.name, session.state)
    710707        session.unlockMachine()
    711708        return
     
    713710    # in Webservices) functionality
    714711    if ctx['remote'] and cmd == 'some_local_only_command':
    715         print('Trying to use local only functionality, ignored')
     712        print 'Trying to use local only functionality, ignored'
    716713        session.unlockMachine()
    717714        return
     
    737734    except KeyboardInterrupt:
    738735        ctx['interrupt'] = True
    739     except Exception as e:
     736    except Exception, e:
    740737        printErr(ctx, e)
    741738        if g_fVerbose:
     
    750747    try:
    751748        cmd(ctx, mach, args)
    752     except Exception as e:
     749    except Exception, e:
    753750        save = False
    754751        printErr(ctx, e)
     
    758755        try:
    759756            mach.saveSettings()
    760         except Exception as e:
     757        except Exception, e:
    761758            printErr(ctx, e)
    762759            if g_fVerbose:
     
    770767    try:
    771768        cmd(ctx, mach, session.console, args)
    772     except Exception as e:
     769    except Exception, e:
    773770        save = False
    774771        printErr(ctx, e)
     
    780777
    781778def machById(ctx, uuid):
    782     mach = ctx['vb'].findMachine(uuid)
     779    try:
     780        mach = ctx['vb'].getMachine(uuid)
     781    except:
     782        mach = ctx['vb'].findMachine(uuid)
    783783    return mach
    784784
     
    899899def argsToMach(ctx, args):
    900900    if len(args) < 2:
    901         print("usage: %s [vmname|uuid]" % (args[0]))
     901        print "usage: %s [vmname|uuid]" % (args[0])
    902902        return None
    903903    uuid = args[1]
    904904    mach = machById(ctx, uuid)
    905905    if mach == None:
    906         print("Machine '%s' is unknown, use list command to find available machines" % (uuid))
     906        print "Machine '%s' is unknown, use list command to find available machines" % (uuid)
    907907    return mach
    908908
     
    912912    else:
    913913        spec = ""
    914     print("    %s: %s%s" % (colored(cmd, 'blue'), h, spec))
     914    print "    %s: %s%s" % (colored(cmd, 'blue'), h, spec)
    915915
    916916def helpCmd(_ctx, args):
    917917    if len(args) == 1:
    918         print("Help page:")
    919         names = list(commands.keys())
     918        print "Help page:"
     919        names = commands.keys()
    920920        names.sort()
    921921        for i in names:
     
    925925        c = commands.get(cmd)
    926926        if c == None:
    927             print("Command '%s' not known" % (cmd))
     927            print "Command '%s' not known" % (cmd)
    928928        else:
    929929            helpSingleCmd(cmd, c[0], c[2])
     
    932932def asEnumElem(ctx, enum, elem):
    933933    enumVals = ctx['const'].all_values(enum)
    934     for e in list(enumVals.keys()):
     934    for e in enumVals.keys():
    935935        if str(elem) == str(enumVals[e]):
    936936            return colored(e, 'green')
     
    948948            else:
    949949                tele = "    "
    950                 print("%sMachine '%s' [%s], machineState=%s, sessionState=%s" % (tele, colVm(ctx, mach.name), mach.id, asEnumElem(ctx, "MachineState", mach.state), asEnumElem(ctx, "SessionState", mach.sessionState)))
    951         except Exception as e:
     950                print "%sMachine '%s' [%s], machineState=%s, sessionState=%s" % (tele, colVm(ctx, mach.name), mach.id, asEnumElem(ctx, "MachineState", mach.state), asEnumElem(ctx, "SessionState", mach.sessionState))
     951        except Exception, e:
    952952            printErr(ctx, e)
    953953            if g_fVerbose:
     
    956956
    957957def infoCmd(ctx, args):
    958     if len(args) < 2:
    959         print("usage: info [vmname|uuid]")
     958    if (len(args) < 2):
     959        print "usage: info [vmname|uuid]"
    960960        return 0
    961961    mach = argsToMach(ctx, args)
     
    963963        return 0
    964964    vmos = ctx['vb'].getGuestOSType(mach.OSTypeId)
    965     print(" One can use setvar <mach> <var> <value> to change variable, using name in [].")
    966     print("  Name [name]: %s" % (colVm(ctx, mach.name)))
    967     print("  Description [description]: %s" % (mach.description))
    968     print("  ID [n/a]: %s" % (mach.id))
    969     print("  OS Type [via OSTypeId]: %s" % (vmos.description))
    970     print("  Firmware [firmwareType]: %s (%s)" % (asEnumElem(ctx, "FirmwareType", mach.firmwareType), mach.firmwareType))
    971     print()
    972     print("  CPUs [CPUCount]: %d" % (mach.CPUCount))
    973     print("  RAM [memorySize]: %dM" % (mach.memorySize))
    974     print("  VRAM [VRAMSize]: %dM" % (mach.VRAMSize))
    975     print("  Monitors [monitorCount]: %d" % (mach.monitorCount))
    976     print("  Chipset [chipsetType]: %s (%s)" % (asEnumElem(ctx, "ChipsetType", mach.chipsetType), mach.chipsetType))
    977     print()
    978     print("  Clipboard mode [clipboardMode]: %s (%s)" % (asEnumElem(ctx, "ClipboardMode", mach.clipboardMode), mach.clipboardMode))
    979     print("  Machine status [n/a]: %s (%s)" % (asEnumElem(ctx, "SessionState", mach.sessionState), mach.sessionState))
    980     print()
     965    print " One can use setvar <mach> <var> <value> to change variable, using name in []."
     966    print "  Name [name]: %s" % (colVm(ctx, mach.name))
     967    print "  Description [description]: %s" % (mach.description)
     968    print "  ID [n/a]: %s" % (mach.id)
     969    print "  OS Type [via OSTypeId]: %s" % (vmos.description)
     970    print "  Firmware [firmwareType]: %s (%s)" % (asEnumElem(ctx, "FirmwareType", mach.firmwareType), mach.firmwareType)
     971    print
     972    print "  CPUs [CPUCount]: %d" % (mach.CPUCount)
     973    print "  RAM [memorySize]: %dM" % (mach.memorySize)
     974    print "  VRAM [VRAMSize]: %dM" % (mach.VRAMSize)
     975    print "  Monitors [monitorCount]: %d" % (mach.monitorCount)
     976    print "  Chipset [chipsetType]: %s (%s)" % (asEnumElem(ctx, "ChipsetType", mach.chipsetType), mach.chipsetType)
     977    print
     978    print "  Clipboard mode [clipboardMode]: %s (%s)" % (asEnumElem(ctx, "ClipboardMode", mach.clipboardMode), mach.clipboardMode)
     979    print "  Machine status [n/a]: %s (%s)" % (asEnumElem(ctx, "SessionState", mach.sessionState), mach.sessionState)
     980    print
    981981    if mach.teleporterEnabled:
    982         print("  Teleport target on port %d (%s)" % (mach.teleporterPort, mach.teleporterPassword))
    983         print()
     982        print "  Teleport target on port %d (%s)" % (mach.teleporterPort, mach.teleporterPassword)
     983        print
    984984    bios = mach.BIOSSettings
    985     print("  ACPI [BIOSSettings.ACPIEnabled]: %s" % (asState(bios.ACPIEnabled)))
    986     print("  APIC [BIOSSettings.IOAPICEnabled]: %s" % (asState(bios.IOAPICEnabled)))
     985    print "  ACPI [BIOSSettings.ACPIEnabled]: %s" % (asState(bios.ACPIEnabled))
     986    print "  APIC [BIOSSettings.IOAPICEnabled]: %s" % (asState(bios.IOAPICEnabled))
    987987    hwVirtEnabled = mach.getHWVirtExProperty(ctx['global'].constants.HWVirtExPropertyType_Enabled)
    988     print("  Hardware virtualization [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_Enabled, value)]: " + asState(hwVirtEnabled))
     988    print "  Hardware virtualization [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_Enabled, value)]: " + asState(hwVirtEnabled)
    989989    hwVirtVPID = mach.getHWVirtExProperty(ctx['const'].HWVirtExPropertyType_VPID)
    990     print("  VPID support [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_VPID, value)]: " + asState(hwVirtVPID))
     990    print "  VPID support [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_VPID, value)]: " + asState(hwVirtVPID)
    991991    hwVirtNestedPaging = mach.getHWVirtExProperty(ctx['const'].HWVirtExPropertyType_NestedPaging)
    992     print("  Nested paging [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_NestedPaging, value)]: " + asState(hwVirtNestedPaging))
    993 
    994     print("  Hardware 3d acceleration [accelerate3DEnabled]: " + asState(mach.accelerate3DEnabled))
    995     print("  Hardware 2d video acceleration [accelerate2DVideoEnabled]: " + asState(mach.accelerate2DVideoEnabled))
    996 
    997     print("  Use universal time [RTCUseUTC]: %s" % (asState(mach.RTCUseUTC)))
    998     print("  HPET [HPETEnabled]: %s" % (asState(mach.HPETEnabled)))
     992    print "  Nested paging [guest win machine.setHWVirtExProperty(ctx[\\'const\\'].HWVirtExPropertyType_NestedPaging, value)]: " + asState(hwVirtNestedPaging)
     993
     994    print "  Hardware 3d acceleration [accelerate3DEnabled]: " + asState(mach.accelerate3DEnabled)
     995    print "  Hardware 2d video acceleration [accelerate2DVideoEnabled]: " + asState(mach.accelerate2DVideoEnabled)
     996
     997    print "  Use universal time [RTCUseUTC]: %s" % (asState(mach.RTCUseUTC))
     998    print "  HPET [HPETEnabled]: %s" % (asState(mach.HPETEnabled))
    999999    if mach.audioAdapter.enabled:
    1000         print("  Audio [via audioAdapter]: chip %s; host driver %s" % (asEnumElem(ctx, "AudioControllerType", mach.audioAdapter.audioController), asEnumElem(ctx, "AudioDriverType",  mach.audioAdapter.audioDriver)))
    1001     print("  CPU hotplugging [CPUHotPlugEnabled]: %s" % (asState(mach.CPUHotPlugEnabled)))
    1002 
    1003     print("  Keyboard [keyboardHIDType]: %s (%s)" % (asEnumElem(ctx, "KeyboardHIDType", mach.keyboardHIDType), mach.keyboardHIDType))
    1004     print("  Pointing device [pointingHIDType]: %s (%s)" % (asEnumElem(ctx, "PointingHIDType", mach.pointingHIDType), mach.pointingHIDType))
    1005     print("  Last changed [n/a]: " + time.asctime(time.localtime(mach.lastStateChange/1000)))
     1000        print "  Audio [via audioAdapter]: chip %s; host driver %s" % (asEnumElem(ctx, "AudioControllerType", mach.audioAdapter.audioController), asEnumElem(ctx, "AudioDriverType",  mach.audioAdapter.audioDriver))
     1001    print "  CPU hotplugging [CPUHotPlugEnabled]: %s" % (asState(mach.CPUHotPlugEnabled))
     1002
     1003    print "  Keyboard [keyboardHIDType]: %s (%s)" % (asEnumElem(ctx, "KeyboardHIDType", mach.keyboardHIDType), mach.keyboardHIDType)
     1004    print "  Pointing device [pointingHIDType]: %s (%s)" % (asEnumElem(ctx, "PointingHIDType", mach.pointingHIDType), mach.pointingHIDType)
     1005    print "  Last changed [n/a]: " + time.asctime(time.localtime(long(mach.lastStateChange)/1000))
    10061006    # OSE has no VRDE
    10071007    try:
    1008         print("  VRDE server [VRDEServer.enabled]: %s" % (asState(mach.VRDEServer.enabled)))
     1008        print "  VRDE server [VRDEServer.enabled]: %s" % (asState(mach.VRDEServer.enabled))
    10091009    except:
    10101010        pass
    10111011
    1012     print()
    1013     print(colCat(ctx, "  USB Controllers:"))
     1012    print
     1013    print colCat(ctx, "  USB Controllers:")
    10141014    for oUsbCtrl in ctx['global'].getArray(mach, 'USBControllers'):
    1015         print("    '%s': type %s  standard: %#x" \
    1016             % (oUsbCtrl.name, asEnumElem(ctx, "USBControllerType", oUsbCtrl.type), oUsbCtrl.USBStandard))
    1017 
    1018     print()
    1019     print(colCat(ctx, "  I/O subsystem info:"))
    1020     print("   Cache enabled [IOCacheEnabled]: %s" % (asState(mach.IOCacheEnabled)))
    1021     print("   Cache size [IOCacheSize]: %dM" % (mach.IOCacheSize))
     1015        print "    '%s': type %s  standard: %#x" \
     1016            % (oUsbCtrl.name, asEnumElem(ctx, "USBControllerType", oUsbCtrl.type), oUsbCtrl.USBStandard);
     1017
     1018    print
     1019    print colCat(ctx, "  I/O subsystem info:")
     1020    print "   Cache enabled [IOCacheEnabled]: %s" % (asState(mach.IOCacheEnabled))
     1021    print "   Cache size [IOCacheSize]: %dM" % (mach.IOCacheSize)
    10221022
    10231023    controllers = ctx['global'].getArray(mach, 'storageControllers')
    10241024    if controllers:
    1025         print()
    1026         print(colCat(ctx, "  Storage Controllers:"))
     1025        print
     1026        print colCat(ctx, "  Storage Controllers:")
    10271027    for controller in controllers:
    1028         print("    '%s': bus %s type %s" % (controller.name, asEnumElem(ctx, "StorageBus", controller.bus), asEnumElem(ctx, "StorageControllerType", controller.controllerType)))
     1028        print "    '%s': bus %s type %s" % (controller.name, asEnumElem(ctx, "StorageBus", controller.bus), asEnumElem(ctx, "StorageControllerType", controller.controllerType))
    10291029
    10301030    attaches = ctx['global'].getArray(mach, 'mediumAttachments')
    10311031    if attaches:
    1032         print()
    1033         print(colCat(ctx, "  Media:"))
     1032        print
     1033        print colCat(ctx, "  Media:")
    10341034    for a in attaches:
    1035         print("   Controller: '%s' port/device: %d:%d type: %s (%s):" % (a.controller, a.port, a.device, asEnumElem(ctx, "DeviceType", a.type), a.type))
     1035        print "   Controller: '%s' port/device: %d:%d type: %s (%s):" % (a.controller, a.port, a.device, asEnumElem(ctx, "DeviceType", a.type), a.type)
    10361036        medium = a.medium
    10371037        if a.type == ctx['global'].constants.DeviceType_HardDisk:
    1038             print("   HDD:")
    1039             print("    Id: %s" % (medium.id))
    1040             print("    Location: %s" % (colPath(ctx, medium.location)))
    1041             print("    Name: %s" % (medium.name))
    1042             print("    Format: %s" % (medium.format))
     1038            print "   HDD:"
     1039            print "    Id: %s" % (medium.id)
     1040            print "    Location: %s" % (colPath(ctx, medium.location))
     1041            print "    Name: %s" % (medium.name)
     1042            print "    Format: %s" % (medium.format)
    10431043
    10441044        if a.type == ctx['global'].constants.DeviceType_DVD:
    1045             print("   DVD:")
     1045            print "   DVD:"
    10461046            if medium:
    1047                 print("    Id: %s" % (medium.id))
    1048                 print("    Name: %s" % (medium.name))
     1047                print "    Id: %s" % (medium.id)
     1048                print "    Name: %s" % (medium.name)
    10491049                if medium.hostDrive:
    1050                     print("    Host DVD %s" % (colPath(ctx, medium.location)))
     1050                    print "    Host DVD %s" % (colPath(ctx, medium.location))
    10511051                    if a.passthrough:
    1052                         print("    [passthrough mode]")
     1052                        print "    [passthrough mode]"
    10531053                else:
    1054                     print("    Virtual image at %s" % (colPath(ctx, medium.location)))
    1055                     print("    Size: %s" % (medium.size))
     1054                    print "    Virtual image at %s" % (colPath(ctx, medium.location))
     1055                    print "    Size: %s" % (medium.size)
    10561056
    10571057        if a.type == ctx['global'].constants.DeviceType_Floppy:
    1058             print("   Floppy:")
     1058            print "   Floppy:"
    10591059            if medium:
    1060                 print("    Id: %s" % (medium.id))
    1061                 print("    Name: %s" % (medium.name))
     1060                print "    Id: %s" % (medium.id)
     1061                print "    Name: %s" % (medium.name)
    10621062                if medium.hostDrive:
    1063                     print("    Host floppy %s" % (colPath(ctx, medium.location)))
     1063                    print "    Host floppy %s" % (colPath(ctx, medium.location))
    10641064                else:
    1065                     print("    Virtual image at %s" % (colPath(ctx, medium.location)))
    1066                     print("    Size: %s" % (medium.size))
    1067 
    1068     print()
    1069     print(colCat(ctx, "  Shared folders:"))
     1065                    print "    Virtual image at %s" % (colPath(ctx, medium.location))
     1066                    print "    Size: %s" % (medium.size)
     1067
     1068    print
     1069    print colCat(ctx, "  Shared folders:")
    10701070    for sf in ctx['global'].getArray(mach, 'sharedFolders'):
    10711071        printSf(ctx, sf)
     
    10751075def startCmd(ctx, args):
    10761076    if len(args) < 2:
    1077         print("usage: start name <frontend>")
     1077        print "usage: start name <frontend>"
    10781078        return 0
    10791079    mach = argsToMach(ctx, args)
     
    10881088
    10891089def createVmCmd(ctx, args):
    1090     if len(args) != 3:
    1091         print("usage: createvm name ostype")
     1090    if (len(args) != 3):
     1091        print "usage: createvm name ostype"
    10921092        return 0
    10931093    name = args[1]
     
    10961096        ctx['vb'].getGuestOSType(oskind)
    10971097    except Exception:
    1098         print('Unknown OS type:', oskind)
     1098        print 'Unknown OS type:', oskind
    10991099        return 0
    11001100    createVm(ctx, name, oskind)
     
    11021102
    11031103def ginfoCmd(ctx, args):
    1104     if len(args) < 2:
    1105         print("usage: ginfo [vmname|uuid]")
     1104    if (len(args) < 2):
     1105        print "usage: ginfo [vmname|uuid]"
    11061106        return 0
    11071107    mach = argsToMach(ctx, args)
     
    11131113def execInGuest(ctx, console, args, env, user, passwd, tmo, inputPipe=None, outputPipe=None):
    11141114    if len(args) < 1:
    1115         print("exec in guest needs at least program name")
     1115        print "exec in guest needs at least program name"
    11161116        return
    11171117    guest = console.guest
     
    11191119    # shall contain program name as argv[0]
    11201120    gargs = args
    1121     print("executing %s with args %s as %s" % (args[0], gargs, user))
     1121    print "executing %s with args %s as %s" % (args[0], gargs, user)
    11221122    flags = 0
    11231123    if inputPipe is not None:
    11241124        flags = 1 # set WaitForProcessStartOnly
    1125     print(args[0])
     1125    print args[0]
    11261126    process = guestSession.processCreate(args[0], gargs, env, [], tmo)
    1127     print("executed with pid %d" % (process.PID))
     1127    print "executed with pid %d" % (process.PID)
    11281128    if pid != 0:
    11291129        try:
     
    11611161
    11621162        except KeyboardInterrupt:
    1163             print("Interrupted.")
     1163            print "Interrupted."
    11641164            ctx['interrupt'] = True
    11651165            if progress.cancelable:
    11661166                progress.cancel()
    11671167        (_reason, code, _flags) = guest.getProcessStatus(pid)
    1168         print("Exit code: %d" % (code))
     1168        print "Exit code: %d" % (code)
    11691169        return 0
    11701170    else:
     
    11751175    dst = args[1]
    11761176    flags = 0
    1177     print("Copying host %s to guest %s" % (src, dst))
     1177    print "Copying host %s to guest %s" % (src, dst)
    11781178    progress = console.guest.copyToGuest(src, dst, user, passwd, flags)
    11791179    progressBar(ctx, progress)
     
    11961196    user = getpass.getuser()
    11971197    user_inp = nh_raw_input("User (%s): " % (user))
    1198     if len(user_inp) > 0:
     1198    if len (user_inp) > 0:
    11991199        user = user_inp
    12001200    passwd = getpass.getpass()
     
    12031203
    12041204def gexecCmd(ctx, args):
    1205     if len(args) < 2:
    1206         print("usage: gexec [vmname|uuid] command args")
     1205    if (len(args) < 2):
     1206        print "usage: gexec [vmname|uuid] command args"
    12071207        return 0
    12081208    mach = argsToMach(ctx, args)
     
    12171217
    12181218def gcopyCmd(ctx, args):
    1219     if len(args) < 2:
    1220         print("usage: gcopy [vmname|uuid] host_path guest_path")
     1219    if (len(args) < 2):
     1220        print "usage: gcopy [vmname|uuid] host_path guest_path"
    12211221        return 0
    12221222    mach = argsToMach(ctx, args)
     
    12361236
    12371237def gpipeCmd(ctx, args):
    1238     if len(args) < 4:
    1239         print("usage: gpipe [vmname|uuid] hostProgram guestProgram, such as gpipe linux  '/bin/uname -a' '/bin/sh -c \"/usr/bin/tee; /bin/uname -a\"'")
     1238    if (len(args) < 4):
     1239        print "usage: gpipe [vmname|uuid] hostProgram guestProgram, such as gpipe linux  '/bin/uname -a' '/bin/sh -c \"/usr/bin/tee; /bin/uname -a\"'"
    12401240        return 0
    12411241    mach = argsToMach(ctx, args)
     
    13091309
    13101310def guestCmd(ctx, args):
    1311     if len(args) < 3:
    1312         print("usage: guest name commands")
     1311    if (len(args) < 3):
     1312        print "usage: guest name commands"
    13131313        return 0
    13141314    mach = argsToMach(ctx, args)
     
    13221322
    13231323def screenshotCmd(ctx, args):
    1324     if len(args) < 2:
    1325         print("usage: screenshot vm <file> <width> <height> <monitor>")
     1324    if (len(args) < 2):
     1325        print "usage: screenshot vm <file> <width> <height> <monitor>"
    13261326        return 0
    13271327    mach = argsToMach(ctx, args)
     
    13321332
    13331333def teleportCmd(ctx, args):
    1334     if len(args) < 3:
    1335         print("usage: teleport name host:port <password>")
     1334    if (len(args) < 3):
     1335        print "usage: teleport name host:port <password>"
    13361336        return 0
    13371337    mach = argsToMach(ctx, args)
     
    13511351
    13521352def openportalCmd(ctx, args):
    1353     if len(args) < 3:
    1354         print("usage: openportal name port <password>")
     1353    if (len(args) < 3):
     1354        print "usage: openportal name port <password>"
    13551355        return 0
    13561356    mach = argsToMach(ctx, args)
     
    13581358        return 0
    13591359    port = int(args[2])
    1360     if len(args) > 3:
     1360    if (len(args) > 3):
    13611361        passwd = args[3]
    13621362    else:
     
    13681368
    13691369def closeportalCmd(ctx, args):
    1370     if len(args) < 2:
    1371         print("usage: closeportal name")
     1370    if (len(args) < 2):
     1371        print "usage: closeportal name"
    13721372        return 0
    13731373    mach = argsToMach(ctx, args)
     
    13791379
    13801380def gueststatsCmd(ctx, args):
    1381     if len(args) < 2:
    1382         print("usage: gueststats name <check interval>")
     1381    if (len(args) < 2):
     1382        print "usage: gueststats name <check interval>"
    13831383        return 0
    13841384    mach = argsToMach(ctx, args)
     
    13921392    cpu = args[1]
    13931393    if plug:
    1394         print("Adding CPU %d..." % (cpu))
     1394        print "Adding CPU %d..." % (cpu)
    13951395        mach.hotPlugCPU(cpu)
    13961396    else:
    1397         print("Removing CPU %d..." % (cpu))
     1397        print "Removing CPU %d..." % (cpu)
    13981398        mach.hotUnplugCPU(cpu)
    13991399
    14001400def plugcpuCmd(ctx, args):
    1401     if len(args) < 2:
    1402         print("usage: plugcpu name cpuid")
     1401    if (len(args) < 2):
     1402        print "usage: plugcpu name cpuid"
    14031403        return 0
    14041404    mach = argsToMach(ctx, args)
     
    14131413
    14141414def unplugcpuCmd(ctx, args):
    1415     if len(args) < 2:
    1416         print("usage: unplugcpu name cpuid")
     1415    if (len(args) < 2):
     1416        print "usage: unplugcpu name cpuid"
    14171417        return 0
    14181418    mach = argsToMach(ctx, args)
     
    14281428def setvar(_ctx, _mach, args):
    14291429    expr = 'mach.'+args[0]+' = '+args[1]
    1430     print("Executing", expr)
    1431     exec(expr)
     1430    print "Executing", expr
     1431    exec expr
    14321432
    14331433def setvarCmd(ctx, args):
    1434     if len(args) < 4:
    1435         print("usage: setvar [vmname|uuid] expr value")
     1434    if (len(args) < 4):
     1435        print "usage: setvar [vmname|uuid] expr value"
    14361436        return 0
    14371437    mach = argsToMach(ctx, args)
     
    14441444    key = args[0]
    14451445    value = args[1]
    1446     print("%s: setting %s to %s" % (mach.name, key, value if value else None))
     1446    print "%s: setting %s to %s" % (mach.name, key, value if value else None)
    14471447    mach.setExtraData(key, value)
    14481448
    14491449def setExtraDataCmd(ctx, args):
    1450     if len(args) < 3:
    1451         print("usage: setextra [vmname|uuid|global] key <value>")
     1450    if (len(args) < 3):
     1451        print "usage: setextra [vmname|uuid|global] key <value>"
    14521452        return 0
    14531453    key = args[2]
     
    14671467
    14681468def printExtraKey(obj, key, value):
    1469     print("%s: '%s' = '%s'" % (obj, key, value))
     1469    print "%s: '%s' = '%s'" % (obj, key, value)
    14701470
    14711471def getExtraDataCmd(ctx, args):
    1472     if len(args) < 2:
    1473         print("usage: getextra [vmname|uuid|global] <key>")
     1472    if (len(args) < 2):
     1473        print "usage: getextra [vmname|uuid|global] <key>"
    14741474        return 0
    14751475    if len(args) == 3:
     
    14981498
    14991499def aliasCmd(ctx, args):
    1500     if len(args) == 3:
     1500    if (len(args) == 3):
    15011501        aliases[args[1]] = args[2]
    15021502        return 0
    15031503
    1504     for (key, value) in list(aliases.items()):
    1505         print("'%s' is an alias for '%s'" % (key, value))
     1504    for (key, value) in aliases.items():
     1505        print "'%s' is an alias for '%s'" % (key, value)
    15061506    return 0
    15071507
    15081508def verboseCmd(ctx, args):
    15091509    global g_fVerbose
    1510     if len(args) > 1:
     1510    if (len(args) > 1):
    15111511        g_fVerbose = (args[1]=='on')
    15121512    else:
     
    15161516def colorsCmd(ctx, args):
    15171517    global g_fHasColors
    1518     if len(args) > 1:
     1518    if (len(args) > 1):
    15191519        g_fHasColors = (args[1] == 'on')
    15201520    else:
     
    15251525    vbox = ctx['vb']
    15261526    try:
    1527         print("VirtualBox version %s" % (colored(vbox.version, 'blue')))
    1528     except Exception as e:
     1527        print "VirtualBox version %s" % (colored(vbox.version, 'blue'))
     1528    except Exception, e:
    15291529        printErr(ctx, e)
    15301530        if g_fVerbose:
    15311531            traceback.print_exc()
    15321532    props = vbox.systemProperties
    1533     print("Machines: %s" % (colPath(ctx, props.defaultMachineFolder)))
    1534 
    1535     #print("Global shared folders:")
     1533    print "Machines: %s" % (colPath(ctx, props.defaultMachineFolder))
     1534
     1535    #print "Global shared folders:"
    15361536    #for ud in ctx['global'].getArray(vbox, 'sharedFolders'):
    15371537    #    printSf(ctx, sf)
    15381538    host = vbox.host
    15391539    cnt = host.processorCount
    1540     print(colCat(ctx, "Processors:"))
    1541     print("  available/online: %d/%d " % (cnt, host.processorOnlineCount))
     1540    print colCat(ctx, "Processors:")
     1541    print "  available/online: %d/%d " % (cnt, host.processorOnlineCount)
    15421542    for i in range(0, cnt):
    1543         print("  processor #%d speed: %dMHz %s" % (i, host.getProcessorSpeed(i), host.getProcessorDescription(i)))
    1544 
    1545     print(colCat(ctx, "RAM:"))
    1546     print("  %dM (free %dM)" % (host.memorySize, host.memoryAvailable))
    1547     print(colCat(ctx, "OS:"))
    1548     print("  %s (%s)" % (host.operatingSystem, host.OSVersion))
     1543        print "  processor #%d speed: %dMHz %s" % (i, host.getProcessorSpeed(i), host.getProcessorDescription(i))
     1544
     1545    print colCat(ctx, "RAM:")
     1546    print "  %dM (free %dM)" % (host.memorySize, host.memoryAvailable)
     1547    print colCat(ctx, "OS:")
     1548    print "  %s (%s)" % (host.operatingSystem, host.OSVersion)
    15491549    if host.acceleration3DAvailable:
    1550         print(colCat(ctx, "3D acceleration available"))
    1551     else:
    1552         print(colCat(ctx, "3D acceleration NOT available"))
    1553 
    1554     print(colCat(ctx, "Network interfaces:"))
     1550        print colCat(ctx, "3D acceleration available")
     1551    else:
     1552        print colCat(ctx, "3D acceleration NOT available")
     1553
     1554    print colCat(ctx, "Network interfaces:")
    15551555    for ni in ctx['global'].getArray(host, 'networkInterfaces'):
    1556         print("  %s (%s)" % (ni.name, ni.IPAddress))
    1557 
    1558     print(colCat(ctx, "DVD drives:"))
     1556        print "  %s (%s)" % (ni.name, ni.IPAddress)
     1557
     1558    print colCat(ctx, "DVD drives:")
    15591559    for dd in ctx['global'].getArray(host, 'DVDDrives'):
    1560         print("  %s - %s" % (dd.name, dd.description))
    1561 
    1562     print(colCat(ctx, "Floppy drives:"))
     1560        print "  %s - %s" % (dd.name, dd.description)
     1561
     1562    print colCat(ctx, "Floppy drives:")
    15631563    for dd in ctx['global'].getArray(host, 'floppyDrives'):
    1564         print("  %s - %s" % (dd.name, dd.description))
    1565 
    1566     print(colCat(ctx, "USB devices:"))
     1564        print "  %s - %s" % (dd.name, dd.description)
     1565
     1566    print colCat(ctx, "USB devices:")
    15671567    for ud in ctx['global'].getArray(host, 'USBDevices'):
    15681568        printHostUsbDev(ctx, ud)
     
    15701570    if ctx['perf']:
    15711571        for metric in ctx['perf'].query(["*"], [host]):
    1572             print(metric['name'], metric['values_as_string'])
     1572            print metric['name'], metric['values_as_string']
    15731573
    15741574    return 0
    15751575
    15761576def monitorGuestCmd(ctx, args):
    1577     if len(args) < 2:
    1578         print("usage: monitorGuest name (duration)")
     1577    if (len(args) < 2):
     1578        print "usage: monitorGuest name (duration)"
    15791579        return 0
    15801580    mach = argsToMach(ctx, args)
     
    15891589
    15901590def monitorGuestKbdCmd(ctx, args):
    1591     if len(args) < 2:
    1592         print("usage: monitorGuestKbd name (duration)")
     1591    if (len(args) < 2):
     1592        print "usage: monitorGuestKbd name (duration)"
    15931593        return 0
    15941594    mach = argsToMach(ctx, args)
     
    16031603
    16041604def monitorGuestMouseCmd(ctx, args):
    1605     if len(args) < 2:
    1606         print("usage: monitorGuestMouse name (duration)")
     1605    if (len(args) < 2):
     1606        print "usage: monitorGuestMouse name (duration)"
    16071607        return 0
    16081608    mach = argsToMach(ctx, args)
     
    16171617
    16181618def monitorGuestMultiTouchCmd(ctx, args):
    1619     if len(args) < 2:
    1620         print("usage: monitorGuestMultiTouch name (duration)")
     1619    if (len(args) < 2):
     1620        print "usage: monitorGuestMultiTouch name (duration)"
    16211621        return 0
    16221622    mach = argsToMach(ctx, args)
     
    16311631
    16321632def monitorVBoxCmd(ctx, args):
    1633     if len(args) > 2:
    1634         print("usage: monitorVBox (duration)")
     1633    if (len(args) > 2):
     1634        print "usage: monitorVBox (duration)"
    16351635        return 0
    16361636    dur = 5
     
    16591659
    16601660def portForwardCmd(ctx, args):
    1661     if len(args) != 5:
    1662         print("usage: portForward <vm> <adapter> <hostPort> <guestPort>")
     1661    if (len(args) != 5):
     1662        print "usage: portForward <vm> <adapter> <hostPort> <guestPort>"
    16631663        return 0
    16641664    mach = argsToMach(ctx, args)
     
    16901690
    16911691def showLogCmd(ctx, args):
    1692     if len(args) < 2:
    1693         print("usage: showLog vm <num>")
     1692    if (len(args) < 2):
     1693        print "usage: showLog vm <num>"
    16941694        return 0
    16951695    mach = argsToMach(ctx, args)
     
    16981698
    16991699    log = 0
    1700     if len(args) > 2:
     1700    if (len(args) > 2):
    17011701        log = args[2]
    17021702
     
    17041704    while True:
    17051705        data = mach.readLog(log, uOffset, 4096)
    1706         if len(data) == 0:
     1706        if (len(data) == 0):
    17071707            break
    17081708        # print adds either NL or space to chunks not ending with a NL
     
    17131713
    17141714def findLogCmd(ctx, args):
    1715     if len(args) < 3:
    1716         print("usage: findLog vm pattern <num>")
     1715    if (len(args) < 3):
     1716        print "usage: findLog vm pattern <num>"
    17171717        return 0
    17181718    mach = argsToMach(ctx, args)
     
    17211721
    17221722    log = 0
    1723     if len(args) > 3:
     1723    if (len(args) > 3):
    17241724        log = args[3]
    17251725
     
    17291729        # to reduce line splits on buffer boundary
    17301730        data = mach.readLog(log, uOffset, 512*1024)
    1731         if len(data) == 0:
     1731        if (len(data) == 0):
    17321732            break
    17331733        d = str(data).split("\n")
     
    17371737                for mt in match:
    17381738                    s = s.replace(mt, colored(mt, 'red'))
    1739                 print(s)
     1739                print s
    17401740        uOffset += len(data)
    17411741
     
    17441744
    17451745def findAssertCmd(ctx, args):
    1746     if len(args) < 2:
    1747         print("usage: findAssert vm <num>")
     1746    if (len(args) < 2):
     1747        print "usage: findAssert vm <num>"
    17481748        return 0
    17491749    mach = argsToMach(ctx, args)
     
    17521752
    17531753    log = 0
    1754     if len(args) > 2:
     1754    if (len(args) > 2):
    17551755        log = args[2]
    17561756
     
    17621762        # to reduce line splits on buffer boundary
    17631763        data = mach.readLog(log, uOffset, 512*1024)
    1764         if len(data) == 0:
     1764        if (len(data) == 0):
    17651765            break
    17661766        d = str(data).split("\n")
    17671767        for s in d:
    17681768            if active:
    1769                 print(s)
     1769                print s
    17701770                if context == 0:
    17711771                    active = False
     
    17771777                active = True
    17781778                context = 50
    1779                 print(s)
     1779                print s
    17801780        uOffset += len(data)
    17811781
     
    17851785    expr = ' '.join(args[1:])
    17861786    try:
    1787         exec(expr)
    1788     except Exception as e:
     1787        exec expr
     1788    except Exception, e:
    17891789        printErr(ctx, e)
    17901790        if g_fVerbose:
     
    17991799
    18001800def runScriptCmd(ctx, args):
    1801     if len(args) != 2:
    1802         print("usage: runScript <script>")
     1801    if (len(args) != 2):
     1802        print "usage: runScript <script>"
    18031803        return 0
    18041804    try:
    18051805        lf = open(args[1], 'r')
    1806     except IOError as e:
    1807         print("cannot open:", args[1], ":", e)
     1806    except IOError, e:
     1807        print "cannot open:", args[1], ":", e
    18081808        return 0
    18091809
     
    18191819                break
    18201820
    1821     except Exception as e:
     1821    except Exception, e:
    18221822        printErr(ctx, e)
    18231823        if g_fVerbose:
     
    18271827
    18281828def sleepCmd(ctx, args):
    1829     if len(args) != 2:
    1830         print("usage: sleep <secs>")
     1829    if (len(args) != 2):
     1830        print "usage: sleep <secs>"
    18311831        return 0
    18321832
     
    18401840
    18411841def shellCmd(ctx, args):
    1842     if len(args) < 2:
    1843         print("usage: shell <commands>")
     1842    if (len(args) < 2):
     1843        print "usage: shell <commands>"
    18441844        return 0
    18451845    cmd = ' '.join(args[1:])
     
    18541854
    18551855def connectCmd(ctx, args):
    1856     if len(args) > 4:
    1857         print("usage: connect url <username> <passwd>")
     1856    if (len(args) > 4):
     1857        print "usage: connect url <username> <passwd>"
    18581858        return 0
    18591859
    18601860    if ctx['vb'] is not None:
    1861         print("Already connected, disconnect first...")
    1862         return 0
    1863 
    1864     if len(args) > 1:
     1861        print "Already connected, disconnect first..."
     1862        return 0
     1863
     1864    if (len(args) > 1):
    18651865        url = args[1]
    18661866    else:
    18671867        url = None
    18681868
    1869     if len(args) > 2:
     1869    if (len(args) > 2):
    18701870        user = args[2]
    18711871    else:
    18721872        user = ""
    18731873
    1874     if len(args) > 3:
     1874    if (len(args) > 3):
    18751875        passwd = args[3]
    18761876    else:
     
    18811881    ctx['vb'] = vbox
    18821882    try:
    1883         print("Running VirtualBox version %s" % (vbox.version))
    1884     except Exception as e:
     1883        print "Running VirtualBox version %s" % (vbox.version)
     1884    except Exception, e:
    18851885        printErr(ctx, e)
    18861886        if g_fVerbose:
     
    18901890
    18911891def disconnectCmd(ctx, args):
    1892     if len(args) != 1:
    1893         print("usage: disconnect")
     1892    if (len(args) != 1):
     1893        print "usage: disconnect"
    18941894        return 0
    18951895
    18961896    if ctx['vb'] is None:
    1897         print("Not connected yet.")
     1897        print "Not connected yet."
    18981898        return 0
    18991899
     
    19091909def reconnectCmd(ctx, args):
    19101910    if ctx['wsinfo'] is None:
    1911         print("Never connected...")
     1911        print "Never connected..."
    19121912        return 0
    19131913
     
    19201920    ctx['vb'] = ctx['global'].platform.connect(url, user, passwd)
    19211921    try:
    1922         print("Running VirtualBox version %s" % (ctx['vb'].version))
    1923     except Exception as e:
     1922        print "Running VirtualBox version %s" % (ctx['vb'].version)
     1923    except Exception, e:
    19241924        printErr(ctx, e)
    19251925        if g_fVerbose:
     
    19291929def exportVMCmd(ctx, args):
    19301930    if len(args) < 3:
    1931         print("usage: exportVm <machine> <path> <format> <license>")
     1931        print "usage: exportVm <machine> <path> <format> <license>"
    19321932        return 0
    19331933    mach = argsToMach(ctx, args)
     
    19351935        return 0
    19361936    path = args[2]
    1937     if len(args) > 3:
     1937    if (len(args) > 3):
    19381938        fmt = args[3]
    19391939    else:
    19401940        fmt = "ovf-1.0"
    1941     if len(args) > 4:
     1941    if (len(args) > 4):
    19421942        lic = args[4]
    19431943    else:
     
    19491949    progress = app.write(fmt, path)
    19501950    if (progressBar(ctx, progress) and int(progress.resultCode) == 0):
    1951         print("Exported to %s in format %s" % (path, fmt))
     1951        print "Exported to %s in format %s" % (path, fmt)
    19521952    else:
    19531953        reportError(ctx, progress)
     
    20532053    extCode = extScancodes.get(ch, [])
    20542054    if len(extCode) == 0:
    2055         print("bad ext", ch)
     2055        print "bad ext", ch
    20562056    return extCode
    20572057
     
    21252125def typeGuestCmd(ctx, args):
    21262126    if len(args) < 3:
    2127         print("usage: typeGuest <machine> <text> <charDelay>")
     2127        print "usage: typeGuest <machine> <text> <charDelay>"
    21282128        return 0
    21292129    mach = argsToMach(ctx, args)
     
    21612161        verbose = False
    21622162    hdds = ctx['global'].getArray(ctx['vb'], 'hardDisks')
    2163     print(colCat(ctx, "Hard disks:"))
     2163    print colCat(ctx, "Hard disks:")
    21642164    for hdd in hdds:
    21652165        if hdd.state != ctx['global'].constants.MediumState_Created:
    21662166            hdd.refreshState()
    2167         print("   %s (%s)%s %s [logical %s]" % (colPath(ctx, hdd.location), hdd.format, optId(verbose, hdd.id), colSizeM(ctx, asSize(hdd.size, True)), colSizeM(ctx, asSize(hdd.logicalSize, True))))
     2167        print "   %s (%s)%s %s [logical %s]" % (colPath(ctx, hdd.location), hdd.format, optId(verbose, hdd.id), colSizeM(ctx, asSize(hdd.size, True)), colSizeM(ctx, asSize(hdd.logicalSize, True)))
    21682168
    21692169    dvds = ctx['global'].getArray(ctx['vb'], 'DVDImages')
    2170     print(colCat(ctx, "CD/DVD disks:"))
     2170    print colCat(ctx, "CD/DVD disks:")
    21712171    for dvd in dvds:
    21722172        if dvd.state != ctx['global'].constants.MediumState_Created:
    21732173            dvd.refreshState()
    2174         print("   %s (%s)%s %s" % (colPath(ctx, dvd.location), dvd.format, optId(verbose, dvd.id), colSizeM(ctx, asSize(dvd.size, True))))
     2174        print "   %s (%s)%s %s" % (colPath(ctx, dvd.location), dvd.format, optId(verbose, dvd.id), colSizeM(ctx, asSize(dvd.size, True)))
    21752175
    21762176    floppys = ctx['global'].getArray(ctx['vb'], 'floppyImages')
    2177     print(colCat(ctx, "Floppy disks:"))
     2177    print colCat(ctx, "Floppy disks:")
    21782178    for floppy in floppys:
    21792179        if floppy.state != ctx['global'].constants.MediumState_Created:
    21802180            floppy.refreshState()
    2181         print("   %s (%s)%s %s" % (colPath(ctx, floppy.location), floppy.format, optId(verbose, floppy.id), colSizeM(ctx, asSize(floppy.size, True))))
     2181        print "   %s (%s)%s %s" % (colPath(ctx, floppy.location), floppy.format, optId(verbose, floppy.id), colSizeM(ctx, asSize(floppy.size, True)))
    21822182
    21832183    return 0
    21842184
    21852185def listUsbCmd(ctx, args):
    2186     if len(args) > 1:
    2187         print("usage: listUsb")
     2186    if (len(args) > 1):
     2187        print "usage: listUsb"
    21882188        return 0
    21892189
     
    22022202
    22032203def createHddCmd(ctx, args):
    2204     if len(args) < 3:
    2205         print("usage: createHdd sizeM location type")
     2204    if (len(args) < 3):
     2205        print "usage: createHdd sizeM location type"
    22062206        return 0
    22072207
     
    22162216    progress = hdd.createBaseStorage(size, (ctx['global'].constants.MediumVariant_Standard, ))
    22172217    if progressBar(ctx,progress) and hdd.id:
    2218         print("created HDD at %s as %s" % (colPath(ctx,hdd.location), hdd.id))
    2219     else:
    2220        print("cannot create disk (file %s exist?)" % (loc))
     2218        print "created HDD at %s as %s" % (colPath(ctx,hdd.location), hdd.id)
     2219    else:
     2220       print "cannot create disk (file %s exist?)" % (loc)
    22212221       reportError(ctx,progress)
    22222222       return 0
     
    22252225
    22262226def registerHddCmd(ctx, args):
    2227     if len(args) < 2:
    2228         print("usage: registerHdd location")
     2227    if (len(args) < 2):
     2228        print "usage: registerHdd location"
    22292229        return 0
    22302230
     
    22362236    parentId = ""
    22372237    hdd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_HardDisk, ctx['global'].constants.AccessMode_ReadWrite, False)
    2238     print("registered HDD as %s" % (hdd.id))
     2238    print "registered HDD as %s" % (hdd.id)
    22392239    return 0
    22402240
     
    22442244
    22452245def attachHddCmd(ctx, args):
    2246     if len(args) < 3:
    2247         print("usage: attachHdd vm hdd controller port:slot")
     2246    if (len(args) < 3):
     2247        print "usage: attachHdd vm hdd controller port:slot"
    22482248        return 0
    22492249
     
    22562256        hdd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_HardDisk, ctx['global'].constants.AccessMode_ReadWrite, False)
    22572257    except:
    2258         print("no HDD with path %s registered" % (loc))
     2258        print "no HDD with path %s registered" % (loc)
    22592259        return 0
    22602260    if len(args) > 3:
     
    22792279
    22802280def detachHddCmd(ctx, args):
    2281     if len(args) < 3:
    2282         print("usage: detachHdd vm hdd")
     2281    if (len(args) < 3):
     2282        print "usage: detachHdd vm hdd"
    22832283        return 0
    22842284
     
    22912291        hdd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_HardDisk, ctx['global'].constants.AccessMode_ReadWrite, False)
    22922292    except:
    2293         print("no HDD with path %s registered" % (loc))
     2293        print "no HDD with path %s registered" % (loc)
    22942294        return 0
    22952295
     
    22982298
    22992299def unregisterHddCmd(ctx, args):
    2300     if len(args) < 2:
    2301         print("usage: unregisterHdd path <vmunreg>")
     2300    if (len(args) < 2):
     2301        print "usage: unregisterHdd path <vmunreg>"
    23022302        return 0
    23032303
    23042304    vbox = ctx['vb']
    23052305    loc = args[1]
    2306     if len(args) > 2:
     2306    if (len(args) > 2):
    23072307        vmunreg = int(args[2])
    23082308    else:
     
    23112311        hdd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_HardDisk, ctx['global'].constants.AccessMode_ReadWrite, False)
    23122312    except:
    2313         print("no HDD with path %s registered" % (loc))
     2313        print "no HDD with path %s registered" % (loc)
    23142314        return 0
    23152315
     
    23182318        try:
    23192319            for mach in machs:
    2320                 print("Trying to detach from %s" % (mach))
     2320                print "Trying to detach from %s" % (mach)
    23212321                detachMedium(ctx, mach, hdd)
    2322         except Exception as e:
    2323             print('failed: ', e)
     2322        except Exception, e:
     2323            print 'failed: ', e
    23242324            return 0
    23252325    hdd.close()
     
    23272327
    23282328def removeHddCmd(ctx, args):
    2329     if len(args) != 2:
    2330         print("usage: removeHdd path")
     2329    if (len(args) != 2):
     2330        print "usage: removeHdd path"
    23312331        return 0
    23322332
     
    23362336        hdd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_HardDisk, ctx['global'].constants.AccessMode_ReadWrite, False)
    23372337    except:
    2338         print("no HDD with path %s registered" % (loc))
     2338        print "no HDD with path %s registered" % (loc)
    23392339        return 0
    23402340
     
    23452345
    23462346def registerIsoCmd(ctx, args):
    2347     if len(args) < 2:
    2348         print("usage: registerIso location")
     2347    if (len(args) < 2):
     2348        print "usage: registerIso location"
    23492349        return 0
    23502350
     
    23522352    loc = args[1]
    23532353    iso = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    2354     print("registered ISO as %s" % (iso.id))
     2354    print "registered ISO as %s" % (iso.id)
    23552355    return 0
    23562356
    23572357def unregisterIsoCmd(ctx, args):
    2358     if len(args) != 2:
    2359         print("usage: unregisterIso path")
     2358    if (len(args) != 2):
     2359        print "usage: unregisterIso path"
    23602360        return 0
    23612361
     
    23652365        dvd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    23662366    except:
    2367         print("no DVD with path %s registered" % (loc))
     2367        print "no DVD with path %s registered" % (loc)
    23682368        return 0
    23692369
    23702370    progress = dvd.close()
    2371     print("Unregistered ISO at %s" % (colPath(ctx, loc)))
     2371    print "Unregistered ISO at %s" % (colPath(ctx, loc))
    23722372
    23732373    return 0
    23742374
    23752375def removeIsoCmd(ctx, args):
    2376     if len(args) != 2:
    2377         print("usage: removeIso path")
     2376    if (len(args) != 2):
     2377        print "usage: removeIso path"
    23782378        return 0
    23792379
     
    23832383        dvd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    23842384    except:
    2385         print("no DVD with path %s registered" % (loc))
     2385        print "no DVD with path %s registered" % (loc)
    23862386        return 0
    23872387
    23882388    progress = dvd.deleteStorage()
    23892389    if progressBar(ctx, progress):
    2390         print("Removed ISO at %s" % (colPath(ctx, dvd.location)))
     2390        print "Removed ISO at %s" % (colPath(ctx, dvd.location))
    23912391    else:
    23922392        reportError(ctx, progress)
     
    23942394
    23952395def attachIsoCmd(ctx, args):
    2396     if len(args) < 3:
    2397         print("usage: attachIso vm iso controller port:slot")
     2396    if (len(args) < 3):
     2397        print "usage: attachIso vm iso controller port:slot"
    23982398        return 0
    23992399
     
    24062406        dvd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    24072407    except:
    2408         print("no DVD with path %s registered" % (loc))
     2408        print "no DVD with path %s registered" % (loc)
    24092409        return 0
    24102410    if len(args) > 3:
     
    24172417
    24182418def detachIsoCmd(ctx, args):
    2419     if len(args) < 3:
    2420         print("usage: detachIso vm iso")
     2419    if (len(args) < 3):
     2420        print "usage: detachIso vm iso"
    24212421        return 0
    24222422
     
    24292429        dvd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    24302430    except:
    2431         print("no DVD with path %s registered" % (loc))
     2431        print "no DVD with path %s registered" % (loc)
    24322432        return 0
    24332433
     
    24362436
    24372437def mountIsoCmd(ctx, args):
    2438     if len(args) < 3:
    2439         print("usage: mountIso vm iso controller port:slot")
     2438    if (len(args) < 3):
     2439        print "usage: mountIso vm iso controller port:slot"
    24402440        return 0
    24412441
     
    24482448        dvd = vbox.openMedium(loc, ctx['global'].constants.DeviceType_DVD, ctx['global'].constants.AccessMode_ReadOnly, False)
    24492449    except:
    2450         print("no DVD with path %s registered" % (loc))
     2450        print "no DVD with path %s registered" % (loc)
    24512451        return 0
    24522452
     
    24632463
    24642464def unmountIsoCmd(ctx, args):
    2465     if len(args) < 2:
    2466         print("usage: unmountIso vm controller port:slot")
     2465    if (len(args) < 2):
     2466        print "usage: unmountIso vm controller port:slot"
    24672467        return 0
    24682468
     
    24902490
    24912491def attachCtrCmd(ctx, args):
    2492     if len(args) < 4:
    2493         print("usage: attachCtr vm cname bus <type>")
     2492    if (len(args) < 4):
     2493        print "usage: attachCtr vm cname bus <type>"
    24942494        return 0
    24952495
     
    24972497        ctrltype = enumFromString(ctx, 'StorageControllerType', args[4])
    24982498        if ctrltype == None:
    2499             print("Controller type %s unknown" % (args[4]))
     2499            print "Controller type %s unknown" % (args[4])
    25002500            return 0
    25012501    else:
     
    25072507    bus = enumFromString(ctx, 'StorageBus', args[3])
    25082508    if bus is None:
    2509         print("Bus type %s unknown" % (args[3]))
     2509        print "Bus type %s unknown" % (args[3])
    25102510        return 0
    25112511    name = args[2]
     
    25142514
    25152515def detachCtrCmd(ctx, args):
    2516     if len(args) < 3:
    2517         print("usage: detachCtr vm name")
     2516    if (len(args) < 3):
     2517        print "usage: detachCtr vm name"
    25182518        return 0
    25192519
     
    25262526
    25272527def usbctr(ctx, mach, console, args):
    2528     if args[0]:
     2528    if (args[0]):
    25292529        console.attachUSBDevice(args[1], "")
    25302530    else:
     
    25322532
    25332533def attachUsbCmd(ctx, args):
    2534     if len(args) < 3:
    2535         print("usage: attachUsb vm deviceuid")
     2534    if (len(args) < 3):
     2535        print "usage: attachUsb vm deviceuid"
    25362536        return 0
    25372537
     
    25442544
    25452545def detachUsbCmd(ctx, args):
    2546     if len(args) < 3:
    2547         print("usage: detachUsb vm deviceuid")
     2546    if (len(args) < 3):
     2547        print "usage: detachUsb vm deviceuid"
    25482548        return 0
    25492549
     
    25572557
    25582558def guiCmd(ctx, args):
    2559     if len(args) > 1:
    2560         print("usage: gui")
     2559    if (len(args) > 1):
     2560        print "usage: gui"
    25612561        return 0
    25622562
     
    25722572
    25732573def shareFolderCmd(ctx, args):
    2574     if len(args) < 4:
    2575         print("usage: shareFolder vm path name <writable> <persistent>")
     2574    if (len(args) < 4):
     2575        print "usage: shareFolder vm path name <writable> <persistent>"
    25762576        return 0
    25772577
     
    25962596
    25972597def unshareFolderCmd(ctx, args):
    2598     if len(args) < 3:
    2599         print("usage: unshareFolder vm name")
     2598    if (len(args) < 3):
     2599        print "usage: unshareFolder vm name"
    26002600        return 0
    26012601
     
    26172617def snapshotCmd(ctx, args):
    26182618    if (len(args) < 2 or args[1] == 'help'):
    2619         print("Take snapshot:    snapshot vm take name <description>")
    2620         print("Restore snapshot: snapshot vm restore name")
    2621         print("Merge snapshot:   snapshot vm merge name")
     2619        print "Take snapshot:    snapshot vm take name <description>"
     2620        print "Restore snapshot: snapshot vm restore name"
     2621        print "Merge snapshot:   snapshot vm merge name"
    26222622        return 0
    26232623
     
    26272627    cmd = args[2]
    26282628    if cmd == 'take':
    2629         if len(args) < 4:
    2630             print("usage: snapshot vm take name <description>")
     2629        if (len(args) < 4):
     2630            print "usage: snapshot vm take name <description>"
    26312631            return 0
    26322632        name = args[3]
    2633         if len(args) > 4:
     2633        if (len(args) > 4):
    26342634            desc = args[4]
    26352635        else:
     
    26392639
    26402640    if cmd == 'restore':
    2641         if len(args) < 4:
    2642             print("usage: snapshot vm restore name")
     2641        if (len(args) < 4):
     2642            print "usage: snapshot vm restore name"
    26432643            return 0
    26442644        name = args[3]
     
    26482648
    26492649    if cmd == 'restorecurrent':
    2650         if len(args) < 4:
    2651             print("usage: snapshot vm restorecurrent")
     2650        if (len(args) < 4):
     2651            print "usage: snapshot vm restorecurrent"
    26522652            return 0
    26532653        snap = mach.currentSnapshot()
     
    26562656
    26572657    if cmd == 'delete':
    2658         if len(args) < 4:
    2659             print("usage: snapshot vm delete name")
     2658        if (len(args) < 4):
     2659            print "usage: snapshot vm delete name"
    26602660            return 0
    26612661        name = args[3]
     
    26642664        return 0
    26652665
    2666     print("Command '%s' is unknown" % (cmd))
     2666    print "Command '%s' is unknown" % (cmd)
    26672667    return 0
    26682668
     
    26832683        first = 0
    26842684        msg = ''
    2685         for aliasmode, aliaskey in list(alias.items()):
     2685        for aliasmode, aliaskey in alias.iteritems():
    26862686            if first == 0:
    26872687                first = 1
     
    26892689                msg += ', '
    26902690            if int(nat.aliasMode) & aliaskey:
    2691                 msg += '%s: %s' % (aliasmode, 'on')
     2691                msg += '%d: %s' % (aliasmode, 'on')
    26922692            else:
    2693                 msg += '%s: %s' % (aliasmode, 'off')
     2693                msg += '%d: %s' % (aliasmode, 'off')
     2694        msg += ')'
    26942695        return (0, [msg])
    26952696    else:
     
    26972698        if 'default' not in args:
    26982699            for a in range(1, len(args)):
    2699                 if args[a] not in alias:
    2700                     print('Invalid alias mode: ' + args[a])
    2701                     print(natAlias.__doc__)
     2700                if not alias.has_key(args[a]):
     2701                    print 'Invalid alias mode: ' + args[a]
     2702                    print natAlias.__doc__
    27022703                    return (1, None)
    27032704                nat.aliasMode = int(nat.aliasMode) | alias[args[a]]
     
    27222723    else:
    27232724        if args[1] < 16000:
    2724             print('invalid mtu value (%s not in range [65 - 16000])' % (args[1]))
     2725            print 'invalid mtu value (%s not in range [65 - 16000])' % (args[1])
    27252726            return (1, None)
    27262727        for i in range(2, len(args)):
    27272728            if not args[i].isdigit() or int(args[i]) < 8 or int(args[i]) > 1024:
    2728                 print('invalid %s parameter (%i not in range [8-1024])' % (i, args[i]))
     2729                print 'invalid %s parameter (%i not in range [8-1024])' % (i, args[i])
    27292730                return (1, None)
    27302731        a = [args[1]]
     
    27342735        else:
    27352736            for i in range(2, len(args)): a.append(args[i])
    2736         #print(a)
     2737        #print a
    27372738        nat.setNetworkSettings(int(a[0]), int(a[1]), int(a[2]), int(a[3]), int(a[4]))
    27382739    return (0, None)
     
    27852786        cmd = args[1]
    27862787        if len(args) != 3:
    2787             print('invalid args:', args)
    2788             print(natTftp.__doc__)
     2788            print 'invalid args:', args
     2789            print natTftp.__doc__
    27892790            return (1, None)
    27902791        if cmd == 'prefix': nat.TFTPPrefix = args[2]
     
    27922793        elif cmd == 'server': nat.TFTPNextServer = args[2]
    27932794        else:
    2794             print("invalid cmd:", cmd)
     2795            print "invalid cmd:", cmd
    27952796            return (1, None)
    27962797    return (0, None)
     
    28172818        pfcmd = {
    28182819            'simple': {
    2819                 'validate': lambda: args[1] in list(pfcmd.keys()) and args[2] in list(proto.keys()) and len(args) == 5,
     2820                'validate': lambda: args[1] in pfcmd.keys() and args[2] in proto.keys() and len(args) == 5,
    28202821                'func':lambda: nat.addRedirect('', proto[args[2]], '', int(args[3]), '', int(args[4]))
    28212822            },
    28222823            'no_name': {
    2823                 'validate': lambda: args[1] in list(pfcmd.keys()) and args[2] in list(proto.keys()) and len(args) == 7,
     2824                'validate': lambda: args[1] in pfcmd.keys() and args[2] in proto.keys() and len(args) == 7,
    28242825                'func': lambda: nat.addRedirect('', proto[args[2]], args[3], int(args[4]), args[5], int(args[6]))
    28252826            },
    28262827            'ex': {
    2827                 'validate': lambda: args[1] in list(pfcmd.keys()) and args[2] in list(proto.keys()) and len(args) == 8,
     2828                'validate': lambda: args[1] in pfcmd.keys() and args[2] in proto.keys() and len(args) == 8,
    28282829                'func': lambda: nat.addRedirect(args[3], proto[args[2]], args[4], int(args[5]), args[6], int(args[7]))
    28292830            },
     
    28352836
    28362837        if not pfcmd[args[1]]['validate']():
    2837             print('invalid port-forwarding or args of sub command ', args[1])
    2838             print(natPortForwarding.__doc__)
     2838            print 'invalid port-forwarding or args of sub command ', args[1]
     2839            print natPortForwarding.__doc__
    28392840            return (1, None)
    28402841
     
    28552856        (addr, mask) = args[1].split('/')
    28562857        if addr.count('.') > 3 or int(mask) < 0 or int(mask) > 32:
    2857             print('Invalid arguments')
     2858            print 'Invalid arguments'
    28582859            return (1, None)
    28592860        nat.network = args[1]
     
    28792880    if len(args) < 2 or args[1] == 'help':
    28802881        if len(args) > 2:
    2881             print(natcommands[args[2]].__doc__)
     2882            print natcommands[args[2]].__doc__
    28822883        else:
    2883             print(natCmd.__doc__)
     2884            print natCmd.__doc__
    28842885        return 0
    28852886    if len(args) == 1 or len(args) < 4 or args[3] not in natcommands:
    2886         print(natCmd.__doc__)
     2887        print natCmd.__doc__
    28872888        return 0
    28882889    mach = ctx['argsToMach'](args)
    28892890    if mach == None:
    2890         print("please specify vm")
    2891         return 0
    2892     if len(args) < 3 or not args[2].isdigit() or int(args[2]) not in list(range(0, ctx['vb'].systemProperties.getMaxNetworkAdapters(mach.chipsetType))):
    2893         print('please specify adapter num %d isn\'t in range [0-%d]' % (args[2], ctx['vb'].systemProperties.getMaxNetworkAdapters(mach.chipsetType)))
     2891        print "please specify vm"
     2892        return 0
     2893    if len(args) < 3 or not args[2].isdigit() or int(args[2]) not in range(0, ctx['vb'].systemProperties.getMaxNetworkAdapters(mach.chipsetType)):
     2894        print 'please specify adapter num %d isn\'t in range [0-%d]' % (args[2], ctx['vb'].systemProperties.getMaxNetworkAdapters(mach.chipsetType))
    28942895        return 0
    28952896    nicnum = int(args[2])
     
    29182919        for r in report:
    29192920            msg ='%s nic%d %s: %s' % (mach.name, nicnum, func, r)
    2920             print(msg)
     2921            print msg
    29212922    return 0
    29222923
     
    29292930        yesno = {'off' : 0, 'on' : 1}
    29302931        if args[1] not in yesno:
    2931             print('%s isn\'t acceptable, please choose %s' % (args[1], list(yesno.keys())))
     2932            print '%s isn\'t acceptable, please choose %s' % (args[1], yesno.keys())
    29322933            return (1, None)
    29332934        adapter.__setattr__(attr, yesno[args[1]])
     
    29522953    else:
    29532954        if not args[1].isdigit():
    2954             print('%s isn\'t a number' % (args[1]))
    2955             return (1, None)
     2955            print '%s isn\'t a number' % (args[1])
     2956            print (1, None)
    29562957        adapter.lineSpeed = int(args[1])
    29572958    return (0, None)
     
    29752976    if len(args) == 1:
    29762977        nictypes = ctx['const'].all_values('NetworkAdapterType')
    2977         for key in list(nictypes.keys()):
     2978        for key in nictypes.keys():
    29782979            if str(adapter.adapterType) == str(nictypes[key]):
    29792980                return (0, str(key))
     
    29812982    else:
    29822983        nictypes = ctx['const'].all_values('NetworkAdapterType')
    2983         if args[1] not in list(nictypes.keys()):
    2984             print('%s not in acceptable values (%s)' % (args[1], list(nictypes.keys())))
     2984        if args[1] not in nictypes.keys():
     2985            print '%s not in acceptable values (%s)' % (args[1], nictypes.keys())
    29852986            return (1, None)
    29862987        adapter.adapterType = nictypes[args[1]]
     
    30013002            ctx['global'].constants.NetworkAttachmentType_Generic: ('Generic', ''),
    30023003        }
    3003         if type(adapter.attachmentType) != int:
     3004        import types
     3005        if type(adapter.attachmentType) != types.IntType:
    30043006            t = str(adapter.attachmentType)
    30053007        else:
     
    30353037                'f': lambda: ctx['global'].constants.NetworkAttachmentType_Generic}
    30363038        }
    3037         if args[1] not in list(nicAttachmentType.keys()):
    3038             print('%s not in acceptable values (%s)' % (args[1], list(nicAttachmentType.keys())))
     3039        if args[1] not in nicAttachmentType.keys():
     3040            print '%s not in acceptable values (%s)' % (args[1], nicAttachmentType.keys())
    30393041            return (1, None)
    30403042        if not nicAttachmentType[args[1]]['v']():
    3041             print(nicAttachmentType.__doc__)
     3043            print nicAttachmentType.__doc__
    30423044            return (1, None)
    30433045        nicAttachmentType[args[1]]['p']()
     
    30653067        if len(args) == 3 \
    30663068           and args[2] in niccomand:
    3067             print(niccomand[args[2]].__doc__)
     3069            print niccomand[args[2]].__doc__
    30683070        else:
    3069             print(nicCmd.__doc__)
     3071            print nicCmd.__doc__
    30703072        return 0
    30713073
    30723074    vm = ctx['argsToMach'](args)
    30733075    if vm is None:
    3074         print('please specify vm')
     3076        print 'please specify vm'
    30753077        return 0
    30763078
    30773079    if    len(args) < 3 \
    3078        or int(args[2]) not in list(range(0, ctx['vb'].systemProperties.getMaxNetworkAdapters(vm.chipsetType))):
    3079         print('please specify adapter num %d isn\'t in range [0-%d]'% (args[2], ctx['vb'].systemProperties.getMaxNetworkAdapters(vm.chipsetType)))
     3080       or int(args[2]) not in range(0, ctx['vb'].systemProperties.getMaxNetworkAdapters(vm.chipsetType)):
     3081        print 'please specify adapter num %d isn\'t in range [0-%d]'% (args[2], ctx['vb'].systemProperties.getMaxNetworkAdapters(vm.chipsetType))
    30803082        return 0
    30813083    nicnum = int(args[2])
     
    30903092        vm.saveSettings()
    30913093    if report is not None:
    3092         print('%s nic %d %s: %s' % (vm.name, nicnum, args[3], report))
     3094        print '%s nic %d %s: %s' % (vm.name, nicnum, args[3], report)
    30933095    session.unlockMachine()
    30943096    return 0
     
    30973099def promptCmd(ctx, args):
    30983100    if    len(args) < 2:
    3099         print("Current prompt: '%s'" % (ctx['prompt']))
     3101        print "Current prompt: '%s'" % (ctx['prompt'])
    31003102        return 0
    31013103
     
    31053107def foreachCmd(ctx, args):
    31063108    if len(args) < 3:
    3107         print("usage: foreach scope command, where scope is XPath-like expression //vms/vm[@CPUCount='2']")
     3109        print "usage: foreach scope command, where scope is XPath-like expression //vms/vm[@CPUCount='2']"
    31083110        return 0
    31093111
     
    31153117            e.apply(cmd)
    31163118    except:
    3117         print("Error executing")
     3119        print "Error executing"
    31183120        traceback.print_exc()
    31193121    return 0
     
    31213123def foreachvmCmd(ctx, args):
    31223124    if len(args) < 2:
    3123         print("foreachvm command <args>")
     3125        print "foreachvm command <args>"
    31243126        return 0
    31253127    cmdargs = args[1:]
     
    31313133
    31323134def recordDemoCmd(ctx, args):
    3133     if len(args) < 3:
    3134         print("usage: recordDemo vm filename (duration)")
     3135    if (len(args) < 3):
     3136        print "usage: recordDemo vm filename (duration)"
    31353137        return 0
    31363138    mach = argsToMach(ctx, args)
     
    31453147
    31463148def playbackDemoCmd(ctx, args):
    3147     if len(args) < 3:
    3148         print("usage: playbackDemo vm filename (duration)")
     3149    if (len(args) < 3):
     3150        print "usage: playbackDemo vm filename (duration)"
    31493151        return 0
    31503152    mach = argsToMach(ctx, args)
     
    31673169    for a in assigned:
    31683170        if a.isPhysicalDevice:
    3169             print("%s: assigned host device %s guest %s" % (colDev(ctx, a.name), pciAddr(ctx, a.hostAddress), pciAddr(ctx, a.guestAddress)))
     3171            print "%s: assigned host device %s guest %s" % (colDev(ctx, a.name), pciAddr(ctx, a.hostAddress), pciAddr(ctx, a.guestAddress))
    31703172
    31713173    atts = ctx['global'].getArray(console, 'attachedPCIDevices')
    31723174    for a in atts:
    31733175        if a.isPhysicalDevice:
    3174             print("%s: physical, guest %s, host %s" % (colDev(ctx, a.name), pciAddr(ctx, a.guestAddress), pciAddr(ctx, a.hostAddress)))
     3176            print "%s: physical, guest %s, host %s" % (colDev(ctx, a.name), pciAddr(ctx, a.guestAddress), pciAddr(ctx, a.hostAddress))
    31753177        else:
    3176             print("%s: virtual, guest %s" % (colDev(ctx, a.name), pciAddr(ctx, a.guestAddress)))
     3178            print "%s: virtual, guest %s" % (colDev(ctx, a.name), pciAddr(ctx, a.guestAddress))
    31773179    return
    31783180
     
    31863188
    31873189def lspciCmd(ctx, args):
    3188     if len(args) < 2:
    3189         print("usage: lspci vm")
     3190    if (len(args) < 2):
     3191        print "usage: lspci vm"
    31903192        return 0
    31913193    mach = argsToMach(ctx, args)
     
    31963198
    31973199def attachpciCmd(ctx, args):
    3198     if len(args) < 3:
    3199         print("usage: attachpci vm hostpci <guestpci>")
     3200    if (len(args) < 3):
     3201        print "usage: attachpci vm hostpci <guestpci>"
    32003202        return 0
    32013203    mach = argsToMach(ctx, args)
     
    32043206    hostaddr = parsePci(args[2])
    32053207    if hostaddr == -1:
    3206         print("invalid host PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[2]))
    3207         return 0
    3208 
    3209     if len(args) > 3:
     3208        print "invalid host PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[2])
     3209        return 0
     3210
     3211    if (len(args) > 3):
    32103212        guestaddr = parsePci(args[3])
    32113213        if guestaddr == -1:
    3212             print("invalid guest PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[3]))
     3214            print "invalid guest PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[3])
    32133215            return 0
    32143216    else:
     
    32183220
    32193221def detachpciCmd(ctx, args):
    3220     if len(args) < 3:
    3221         print("usage: detachpci vm hostpci")
     3222    if (len(args) < 3):
     3223        print "usage: detachpci vm hostpci"
    32223224        return 0
    32233225    mach = argsToMach(ctx, args)
     
    32263228    hostaddr = parsePci(args[2])
    32273229    if hostaddr == -1:
    3228         print("invalid host PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[2]))
     3230        print "invalid host PCI %s, accepted format 01:02.3 for bus 1, device 2, function 3" % (args[2])
    32293231        return 0
    32303232
     
    32333235
    32343236def gotoCmd(ctx, args):
    3235     if len(args) < 2:
    3236         print("usage: goto line")
     3237    if (len(args) < 2):
     3238        print "usage: goto line"
    32373239        return 0
    32383240
     
    32713273            'verbose':['Toggle verbosity', verboseCmd, 0],
    32723274            'setvar':['Set VMs variable: setvar Fedora BIOSSettings.ACPIEnabled True', setvarCmd, 0],
    3273             'eval':['Evaluate arbitrary Python construction: eval \'for m in getMachines(ctx): print(m.name, "has", m.memorySize, "M")\'', evalCmd, 0],
     3275            'eval':['Evaluate arbitrary Python construction: eval \'for m in getMachines(ctx): print m.name, "has", m.memorySize, "M"\'', evalCmd, 0],
    32743276            'quit':['Exits', quitCmd, 0],
    32753277            'host':['Show host information', hostCmd, 0],
     
    33273329            'prompt' : ['Control shell prompt', promptCmd, 0],
    33283330            'foreachvm' : ['Perform command for each VM', foreachvmCmd, 0],
    3329             'foreach' : ['Generic "for each" construction, using XPath-like notation: foreach //vms/vm[@OSTypeId=\'MacOS\'] "print(obj.name)"', foreachCmd, 0],
     3331            'foreach' : ['Generic "for each" construction, using XPath-like notation: foreach //vms/vm[@OSTypeId=\'MacOS\'] "print obj.name"', foreachCmd, 0],
    33303332            'recordDemo':['Record demo: recordDemo Win32 file.dmo 10', recordDemoCmd, 0],
    33313333            'playbackDemo':['Playback demo: playbackDemo Win32 file.dmo 10', playbackDemoCmd, 0],
     
    33423344    ci = commands.get(c, None)
    33433345    if ci == None:
    3344         print("Unknown command: '%s', type 'help' for list of known commands" % (c))
     3346        print "Unknown command: '%s', type 'help' for list of known commands" % (c)
    33453347        return 0
    33463348    if ctx['remote'] and ctx['vb'] is None:
    33473349        if c not in ['connect', 'reconnect', 'help', 'quit']:
    3348             print("First connect to remote server with %s command." % (colored('connect', 'blue')))
     3350            print "First connect to remote server with %s command." % (colored('connect', 'blue'))
    33493351            return 0
    33503352    return ci[1](ctx, args)
     
    33523354
    33533355def runCommand(ctx, cmd):
    3354     if not cmd: return 0
     3356    if len(cmd) == 0: return 0
    33553357    args = split_no_quotes(cmd)
    33563358    if len(args) == 0: return 0
     
    33623364#
    33633365# def runTestCmd(ctx, args):
    3364 #    print("Testy test", ctx['vb'])
     3366#    print "Testy test", ctx['vb']
    33653367#    return 0
    33663368#
     
    33793381    d = {}
    33803382    try:
    3381         exec(compile(open(filename).read(), filename, 'exec'), d, d)
    3382         for (k, v) in list(d['commands'].items()):
     3383        execfile(filename, d, d)
     3384        for (k, v) in d['commands'].items():
    33833385            if g_fVerbose:
    3384                 print("customize: adding \"%s\" - %s" % (k, v[0]))
     3386                print "customize: adding \"%s\" - %s" % (k, v[0])
    33853387            cmds[k] = [v[0], v[1], filename]
    33863388    except:
    3387         print("Error loading user extensions from %s" % (filename))
     3389        print "Error loading user extensions from %s" % (filename)
    33883390        traceback.print_exc()
    33893391
     
    34213423    if vbox is not None:
    34223424        try:
    3423             print("Running VirtualBox version %s" % (vbox.version))
    3424         except Exception as e:
     3425            print "Running VirtualBox version %s" % (vbox.version)
     3426        except Exception, e:
    34253427            printErr(ctx, e)
    34263428            if g_fVerbose:
     
    34593461                cmd = 'runScript %s'% (g_sScriptFile)
    34603462            elif g_sCmd is not None:
    3461                 cmd = next(it)
     3463                cmd = it.next()
    34623464            else:
    3463                 if sys.version_info[0] <= 2:
    3464                     cmd = raw_input(ctx['prompt'])
    3465                 else:
    3466                     cmd = input(ctx['prompt'])
     3465                cmd = raw_input(ctx['prompt'])
    34673466            done = runCommand(ctx, cmd)
    34683467            if done != 0: break
     
    34703469                break
    34713470        except KeyboardInterrupt:
    3472             print('====== You can type quit or q to leave')
     3471            print '====== You can type quit or q to leave'
    34733472        except StopIteration:
    34743473            break
    34753474        except EOFError:
    34763475            break
    3477         except Exception as e:
     3476        except Exception, e:
    34783477            printErr(ctx, e)
    34793478            if g_fVerbose:
     
    35373536
    35383537    if options.autopath:
    3539         asLocations = [ os.getcwd(), ]
    3540         try:    sScriptDir = os.path.dirname(os.path.abspath(__file__))
     3538        asLocations = [ os.getcwd(), ];
     3539        try:    sScriptDir = os.path.dirname(os.path.abspath(__file__));
    35413540        except: pass; # In case __file__ isn't there.
    35423541        else:
    35433542            if platform.system() in [ 'SunOS', ]:
    3544                 asLocations.append(os.path.join(sScriptDir, 'amd64'))
    3545             asLocations.append(sScriptDir)
     3543                asLocations.append(os.path.join(sScriptDir, 'amd64'));
     3544            asLocations.append(sScriptDir);
    35463545
    35473546
     
    35513550                if   os.path.isfile(os.path.join(sCurLoc, "VirtualBox")) \
    35523551                  or os.path.isfile(os.path.join(sCurLoc, "VirtualBox.exe")):
    3553                     print("Autodetected VBOX_PROGRAM_PATH as", sCurLoc)
     3552                    print "Autodetected VBOX_PROGRAM_PATH as", sCurLoc
    35543553                    os.environ["VBOX_PROGRAM_PATH"] = sCurLoc
    35553554                    sPath = sCurLoc
    3556                     break
     3555                    break;
    35573556        if sPath:
    35583557            sys.path.append(os.path.join(sPath, "sdk", "installer"))
     
    35623561            for sCurLoc in asLocations:
    35633562                if os.path.isfile(os.path.join(sCurLoc, "sdk", "bindings", "VirtualBox.xidl")):
    3564                     sCurLoc = os.path.join(sCurLoc, "sdk")
    3565                     print("Autodetected VBOX_SDK_PATH as", sCurLoc)
     3563                    sCurLoc = os.path.join(sCurLoc, "sdk");
     3564                    print "Autodetected VBOX_SDK_PATH as", sCurLoc
    35663565                    os.environ["VBOX_SDK_PATH"] = sCurLoc
    3567                     sPath = sCurLoc
    3568                     break
     3566                    sPath = sCurLoc;
     3567                    break;
    35693568        if sPath:
    3570             sTmp = os.path.join(sCurLoc, 'bindings', 'xpcom', 'python')
     3569            sTmp = os.path.join(sCurLoc, 'sdk', 'bindings', 'xpcom', 'python');
    35713570            if os.path.isdir(sTmp):
    3572                 sys.path.append(sTmp)
    3573             del sTmp
    3574         del sPath, asLocations
     3571                sys.path.append(sTmp);
     3572            del sTmp;
     3573        del sPath, asLocations;
    35753574
    35763575
  • trunk/src/VBox/Installer/common/vboxapisetup.py

    r59769 r59795  
    11"""
    2 Copyright (C) 2009-2016 Oracle Corporation
     2Copyright (C) 2009-2015 Oracle Corporation
    33
    44This file is part of VirtualBox Open Source Edition (OSE), as
     
    1919    comCache1 = os.path.join(get_python_lib(), 'win32com', 'gen_py')
    2020    comCache2 = os.path.join(os.environ.get("TEMP", "c:\\tmp"), 'gen_py')
    21     print("Cleaning COM cache at",comCache1,"and",comCache2)
     21    print "Cleaning COM cache at",comCache1,"and",comCache2
    2222    shutil.rmtree(comCache1, True)
    2323    shutil.rmtree(comCache2, True)
  • trunk/src/VBox/Main/glue/vboxapi.py

    r59769 r59795  
    77__copyright__ = \
    88    """
    9     Copyright (C) 2009-2016 Oracle Corporation
     9    Copyright (C) 2009-2015 Oracle Corporation
    1010
    1111    This file is part of VirtualBox Open Source Edition (OSE), as
     
    3232    xrange = range
    3333    long = int
     34    import builtins
     35    print_ = getattr(builtins, 'print', None)
     36elif sys.version_info >= (2, 6):
     37    import __builtin__
     38    print_ = getattr(__builtin__, 'print', None)
     39else:
     40    def print_(*args, **kwargs):
     41        """The new-style print function for Python 2.4 and 2.5."""
     42        fp = kwargs.pop("file", sys.stdout)
     43        if fp is None:
     44            return
     45
     46        def write(data):
     47            if not isinstance(data, basestring):
     48                data = str(data)
     49            # If the file has an encoding, encode unicode with it.
     50            if isinstance(fp, file) and isinstance(data, unicode) and fp.encoding is not None:
     51                errors = getattr(fp, "errors", None)
     52                if errors is None:
     53                    errors = "strict"
     54                data = data.encode(fp.encoding, errors)
     55            fp.write(data)
     56
     57        want_unicode = False
     58        sep = kwargs.pop("sep", None)
     59        if sep is not None:
     60            if isinstance(sep, unicode):
     61                want_unicode = True
     62            elif not isinstance(sep, str):
     63                raise TypeError("sep must be None or a string")
     64        end = kwargs.pop("end", None)
     65        if end is not None:
     66            if isinstance(end, unicode):
     67                want_unicode = True
     68            elif not isinstance(end, str):
     69                raise TypeError("end must be None or a string")
     70        if kwargs:
     71            raise TypeError("invalid keyword arguments to print()")
     72        if not want_unicode:
     73            for arg in args:
     74                if isinstance(arg, unicode):
     75                    want_unicode = True
     76                    break
     77        if want_unicode:
     78            newline = unicode("\n")
     79            space = unicode(" ")
     80        else:
     81            newline = "\n"
     82            space = " "
     83        if sep is None:
     84            sep = space
     85        if end is None:
     86            end = newline
     87        for i, arg in enumerate(args):
     88            if i:
     89                write(sep)
     90            write(arg)
     91        write(end)
    3492
    3593#
     
    167225    # Try case-insensitivity workaround for class attributes (COM methods).
    168226    sAttrLower = sAttr.lower()
    169     for k in list(self.__class__.__dict__.keys()):
     227    for k in self.__class__.__dict__.keys():
    170228        if k.lower() == sAttrLower:
    171229            setattr(self.__class__, sAttr, self.__class__.__dict__[k])
  • trunk/src/VBox/Main/webservice/websrv-python.xsl

    r59769 r59795  
    193193      if self.isarray:
    194194          return self.handle.__next()
    195       raise TypeError("iteration over non-sequence")
     195      raise TypeError, "iteration over non-sequence"
    196196
    197197   def __size(self):
    198198      if self.isarray:
    199199          return self.handle.__size()
    200       raise TypeError("iteration over non-sequence")
     200      raise TypeError, "iteration over non-sequence"
    201201
    202202   def __len__(self):
    203203      if self.isarray:
    204204          return self.handle.__len__()
    205       raise TypeError("iteration over non-sequence")
     205      raise TypeError, "iteration over non-sequence"
    206206
    207207   def __getitem__(self, index):
    208208      if self.isarray:
    209209          return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
    210       raise TypeError("iteration over non-sequence")
     210      raise TypeError, "iteration over non-sequence"
    211211
    212212   def __str__(self):
     
    326326
    327327    def <xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>(self):
    328        raise Error('setters not supported')
     328       raise Error, 'setters not supported'
    329329    </xsl:for-each>
    330330
     
    332332      if self.isarray:
    333333          return self.handle.__next()
    334       raise TypeError("iteration over non-sequence")
     334      raise TypeError, "iteration over non-sequence"
    335335
    336336    def __size(self):
    337337      if self.isarray:
    338338          return self.handle.__size()
    339       raise TypeError("iteration over non-sequence")
     339      raise TypeError, "iteration over non-sequence"
    340340
    341341    def __len__(self):
    342342      if self.isarray:
    343343          return self.handle.__len__()
    344       raise TypeError("iteration over non-sequence")
     344      raise TypeError, "iteration over non-sequence"
    345345
    346346    def __getitem__(self, index):
    347347      if self.isarray:
    348348          return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
    349       raise TypeError("iteration over non-sequence")
     349      raise TypeError, "iteration over non-sequence"
    350350<xsl:call-template name="xsltprocNewlineOutputHack"/>
    351351</xsl:template>
     
    511511     c = self.map.get(handle,-1)
    512512     if c == -1:
    513         raise Error('wrong refcount')
     513        raise Error, 'wrong refcount'
    514514     c = c - 1
    515515     if c == 0:
     
    533533      if self.isarray:
    534534          return self.handle.__next()
    535       raise TypeError("iteration over non-sequence")
     535      raise TypeError, "iteration over non-sequence"
    536536
    537537  def __size(self):
    538538      if self.isarray:
    539539          return self.handle.__size()
    540       raise TypeError("iteration over non-sequence")
     540      raise TypeError, "iteration over non-sequence"
    541541
    542542  def __len__(self):
    543543      if self.isarray:
    544544          return self.handle.__len__()
    545       raise TypeError("iteration over non-sequence")
     545      raise TypeError, "iteration over non-sequence"
    546546
    547547  def __getitem__(self, index):
    548548      if self.isarray:
    549549          return String(self.mgr, self.handle[index])
    550       raise TypeError("iteration over non-sequence")
     550      raise TypeError, "iteration over non-sequence"
    551551
    552552  def __str__(self):
     
    624624      if self.isarray:
    625625          return self.handle.__next()
    626       raise TypeError("iteration over non-sequence")
     626      raise TypeError, "iteration over non-sequence"
    627627
    628628  def __size(self):
    629629      if self.isarray:
    630630          return self.handle.__size()
    631       raise TypeError("iteration over non-sequence")
     631      raise TypeError, "iteration over non-sequence"
    632632
    633633  def __len__(self):
    634634      if self.isarray:
    635635          return self.handle.__len__()
    636       raise TypeError("iteration over non-sequence")
     636      raise TypeError, "iteration over non-sequence"
    637637
    638638  def __getitem__(self, index):
    639639      if self.isarray:
    640640          return Boolean(self.mgr, self.handle[index])
    641       raise TypeError("iteration over non-sequence")
     641      raise TypeError, "iteration over non-sequence"
    642642
    643643class Number:
     
    650650      if self.isarray:
    651651          return self.handle.__next()
    652       raise TypeError("iteration over non-sequence")
     652      raise TypeError, "iteration over non-sequence"
    653653
    654654  def __size(self):
    655655      if self.isarray:
    656656          return self.handle.__size()
    657       raise TypeError("iteration over non-sequence")
     657      raise TypeError, "iteration over non-sequence"
    658658
    659659  def __len__(self):
    660660      if self.isarray:
    661661          return self.handle.__len__()
    662       raise TypeError("iteration over non-sequence")
     662      raise TypeError, "iteration over non-sequence"
    663663
    664664  def __str__(self):
     
    711711           self.handle = mgr.decodebase64(handle)
    712712       else:
    713            raise TypeError("only octet arrays")
     713           raise TypeError, "only octet arrays"
    714714
    715715  def __getitem__(self, index):
     
    731731      if self.isarray:
    732732          return UnsignedInt(self.mgr, self.handle[index])
    733       raise TypeError("iteration over non-sequence")
     733      raise TypeError, "iteration over non-sequence"
    734734
    735735
     
    743743      if self.isarray:
    744744          return Int(self.mgr, self.handle[index])
    745       raise TypeError("iteration over non-sequence")
     745      raise TypeError, "iteration over non-sequence"
    746746
    747747class UnsignedShort(Number):
     
    754754      if self.isarray:
    755755          return UnsignedShort(self.mgr, self.handle[index])
    756       raise TypeError("iteration over non-sequence")
     756      raise TypeError, "iteration over non-sequence"
    757757
    758758class Short(Number):
     
    765765      if self.isarray:
    766766          return Short(self.mgr, self.handle[index])
    767       raise TypeError("iteration over non-sequence")
     767      raise TypeError, "iteration over non-sequence"
    768768
    769769class UnsignedLong(Number):
     
    776776      if self.isarray:
    777777          return UnsignedLong(self.mgr, self.handle[index])
    778       raise TypeError("iteration over non-sequence")
     778      raise TypeError, "iteration over non-sequence"
    779779
    780780class Long(Number):
     
    787787      if self.isarray:
    788788          return Long(self.mgr, self.handle[index])
    789       raise TypeError("iteration over non-sequence")
     789      raise TypeError, "iteration over non-sequence"
    790790
    791791class Double(Number):
     
    798798      if self.isarray:
    799799          return Double(self.mgr, self.handle[index])
    800       raise TypeError("iteration over non-sequence")
     800      raise TypeError, "iteration over non-sequence"
    801801
    802802class Float(Number):
     
    809809      if self.isarray:
    810810          return Float(self.mgr, self.handle[index])
    811       raise TypeError("iteration over non-sequence")
     811      raise TypeError, "iteration over non-sequence"
    812812
    813813class IUnknown:
     
    826826      if self.isarray:
    827827          return self.handle.__next()
    828       raise TypeError("iteration over non-sequence")
     828      raise TypeError, "iteration over non-sequence"
    829829
    830830  def __size(self):
    831831      if self.isarray:
    832832          return self.handle.__size()
    833       raise TypeError("iteration over non-sequence")
     833      raise TypeError, "iteration over non-sequence"
    834834
    835835  def __len__(self):
    836836      if self.isarray:
    837837          return self.handle.__len__()
    838       raise TypeError("iteration over non-sequence")
     838      raise TypeError, "iteration over non-sequence"
    839839
    840840  def __getitem__(self, index):
    841841      if self.isarray:
    842842          return IUnknown(self.mgr, self.handle[index])
    843       raise TypeError("iteration over non-sequence")
     843      raise TypeError, "iteration over non-sequence"
    844844
    845845  def __str__(self):
  • trunk/src/VBox/ValidationKit/testdriver/vbox.py

    r59777 r59795  
    99__copyright__ = \
    1010"""
    11 Copyright (C) 2010-2016 Oracle Corporation
     11Copyright (C) 2010-2015 Oracle Corporation
    1212
    1313This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/libs/xpcom18a4/python/Makefile.kmk

    r59769 r59795  
    55
    66#
    7 # Copyright (C) 2009-2016 Oracle Corporation
     7# Copyright (C) 2009-2015 Oracle Corporation
    88#
    99# This file is part of VirtualBox Open Source Edition (OSE), as
     
    2727#
    2828# List of supported Python versions, defining a number of
    29 # VBOX_PYTHON[26|27|31|32|33|34|35|DEF]_[INC|LIB] variables
    30 # which get picked up below.
     29# VBOX_PYTHON[25|26|27|DEF]_[INC|LIB] variables which get picked up below.
    3130#
    3231ifeq ($(KBUILD_TARGET),darwin) # Relatively predictable, don't script.
     32 ifeq ($(KBUILD_TARGET_ARCH),x86)
     33  VBOX_PYTHON25_INC = $(VBOX_PATH_MACOSX_SDK)/usr/include/python2.5
     34  VBOX_PYTHON25_LIB = $(VBOX_PATH_MACOSX_SDK)/usr/lib/libpython2.5.dylib
     35  VBOX_PYTHON25_LIB_X86 = $(VBOX_PYTHON25_LIB)
     36 endif
    3337 if  !defined(VBOX_WITHOUT_VBOXPYTHON_FOR_OSX_10_6) \
    3438  && (   !defined(VBOX_OSE) \
     
    4549  VBOX_PYTHON27_LIB_X86 = $(VBOX_PYTHON27_LIB)
    4650 endif
    47  # No Python 3.x yet as part of OSX versions including El Capitan, 10.11.
    4851
    4952else
     
    112115
    113116
     117ifdef VBOX_PYTHON23_INC
     118#
     119# Python 2.3 version
     120#
     121DLLS += VBoxPython2_3
     122VBoxPython2_3_EXTENDS    = VBoxPythonBase
     123VBoxPython2_3_EXTENDS_BY = appending
     124VBoxPython2_3_TEMPLATE   = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,)
     125VBoxPython2_3_INCS       = $(VBOX_PYTHON23_INC)
     126VBoxPython2_3_LIBS       = $(VBOX_PYTHON23_LIB)
     127
     128 ifdef VBOX_WITH_32_ON_64_MAIN_API
     129DLLS += VBoxPython2_3_x86
     130VBoxPython2_3_x86_EXTENDS    = VBoxPythonBase_x86
     131VBoxPython2_3_x86_EXTENDS_BY = appending
     132VBoxPython2_3_x86_TEMPLATE   = XPCOM$(if-expr "$(KBUILD_TARGET)" == "darwin",OSX104,-x86)
     133VBoxPython2_3_x86_INCS       = $(VBOX_PYTHON23_INC)
     134VBoxPython2_3_x86_LIBS       = $(VBOX_PYTHON23_LIB_X86)
     135 endif
     136endif
     137
     138ifdef VBOX_PYTHON24_INC
     139#
     140# Python 2.4 version
     141#
     142DLLS += VBoxPython2_4
     143VBoxPython2_4_EXTENDS    = VBoxPythonBase
     144VBoxPython2_4_EXTENDS_BY = appending
     145VBoxPython2_4_INCS       = $(VBOX_PYTHON24_INC)
     146VBoxPython2_4_LIBS       = $(VBOX_PYTHON24_LIB)
     147
     148 ifdef VBOX_WITH_32_ON_64_MAIN_API
     149DLLS += VBoxPython2_4_x86
     150VBoxPython2_4_x86_EXTENDS    = VBoxPythonBase_x86
     151VBoxPython2_4_x86_EXTENDS_BY = appending
     152VBoxPython2_4_x86_INCS       = $(VBOX_PYTHON24_INC)
     153VBoxPython2_4_x86_LIBS       = $(VBOX_PYTHON24_LIB_X86)
     154 endif
     155endif
     156
     157ifdef VBOX_PYTHON25_INC
     158#
     159# Python 2.5 version
     160#
     161DLLS += VBoxPython2_5
     162VBoxPython2_5_EXTENDS    = VBoxPythonBase
     163VBoxPython2_5_EXTENDS_BY = appending
     164VBoxPython2_5_INCS       = $(VBOX_PYTHON25_INC)
     165VBoxPython2_5_LIBS       = $(VBOX_PYTHON25_LIB)
     166
     167 ifdef VBOX_WITH_32_ON_64_MAIN_API
     168DLLS += VBoxPython2_5_x86
     169VBoxPython2_5_x86_EXTENDS    = VBoxPythonBase_x86
     170VBoxPython2_5_x86_EXTENDS_BY = appending
     171VBoxPython2_5_x86_INCS       = $(VBOX_PYTHON25_INC)
     172VBoxPython2_5_x86_LIBS       = $(VBOX_PYTHON25_LIB_X86)
     173 endif
     174endif
     175
    114176ifdef VBOX_PYTHON26_INC
    115177#
     
    151213VBoxPython2_7_x86_INCS       = $(VBOX_PYTHON27_INC)
    152214VBoxPython2_7_x86_LIBS       = $(VBOX_PYTHON27_LIB_X86)
    153  endif
    154 endif
    155 
    156 ifdef VBOX_PYTHON31_INC
    157 #
    158 # Python 3.1 version
    159 #
    160 DLLS += VBoxPython3_1
    161 VBoxPython3_1_EXTENDS    = VBoxPythonBase
    162 VBoxPython3_1_EXTENDS_BY = appending
    163 VBoxPython3_1_TEMPLATE   = XPCOM
    164 VBoxPython3_1_INCS       = $(VBOX_PYTHON31_INC)
    165 VBoxPython3_1_LIBS       = $(VBOX_PYTHON31_LIB)
    166 
    167  ifdef VBOX_WITH_32_ON_64_MAIN_API
    168 DLLS += VBoxPython3_1_x86
    169 VBoxPython3_1_x86_EXTENDS    = VBoxPythonBase_x86
    170 VBoxPython3_1_x86_EXTENDS_BY = appending
    171 VBoxPython3_1_x86_TEMPLATE   = XPCOM
    172 VBoxPython3_1_x86_INCS       = $(VBOX_PYTHON31_INC)
    173 VBoxPython3_1_x86_LIBS       = $(VBOX_PYTHON31_LIB_X86)
    174  endif
    175 endif
    176 
    177 ifdef VBOX_PYTHON32_INC
    178 #
    179 # Python 3.2 version
    180 #
    181 DLLS += VBoxPython3_2
    182 VBoxPython3_2_EXTENDS    = VBoxPythonBase
    183 VBoxPython3_2_EXTENDS_BY = appending
    184 VBoxPython3_2_TEMPLATE   = XPCOM
    185 VBoxPython3_2_INCS       = $(VBOX_PYTHON32_INC)
    186 VBoxPython3_2_LIBS       = $(VBOX_PYTHON32_LIB)
    187 
    188  ifdef VBOX_WITH_32_ON_64_MAIN_API
    189 DLLS += VBoxPython3_2_x86
    190 VBoxPython3_2_x86_EXTENDS    = VBoxPythonBase_x86
    191 VBoxPython3_2_x86_EXTENDS_BY = appending
    192 VBoxPython3_2_x86_TEMPLATE   = XPCOM
    193 VBoxPython3_2_x86_INCS       = $(VBOX_PYTHON32_INC)
    194 VBoxPython3_2_x86_LIBS       = $(VBOX_PYTHON32_LIB_X86)
    195  endif
    196 endif
    197 
    198 ifdef VBOX_PYTHON33_INC
    199 #
    200 # Python 3.3 version
    201 #
    202 DLLS += VBoxPython3_3
    203 VBoxPython3_3_EXTENDS    = VBoxPythonBase
    204 VBoxPython3_3_EXTENDS_BY = appending
    205 VBoxPython3_3_TEMPLATE   = XPCOM
    206 VBoxPython3_3_INCS       = $(VBOX_PYTHON33_INC)
    207 VBoxPython3_3_LIBS       = $(VBOX_PYTHON33_LIB)
    208 
    209  ifdef VBOX_WITH_32_ON_64_MAIN_API
    210 DLLS += VBoxPython3_3_x86
    211 VBoxPython3_3_x86_EXTENDS    = VBoxPythonBase_x86
    212 VBoxPython3_3_x86_EXTENDS_BY = appending
    213 VBoxPython3_3_x86_TEMPLATE   = XPCOM
    214 VBoxPython3_3_x86_INCS       = $(VBOX_PYTHON33_INC)
    215 VBoxPython3_3_x86_LIBS       = $(VBOX_PYTHON33_LIB_X86)
    216  endif
    217 endif
    218 
    219 ifdef VBOX_PYTHON34_INC
    220 #
    221 # Python 3.4 version
    222 #
    223 DLLS += VBoxPython3_4
    224 VBoxPython3_4_EXTENDS    = VBoxPythonBase
    225 VBoxPython3_4_EXTENDS_BY = appending
    226 VBoxPython3_4_TEMPLATE   = XPCOM
    227 VBoxPython3_4_INCS       = $(VBOX_PYTHON34_INC)
    228 VBoxPython3_4_LIBS       = $(VBOX_PYTHON34_LIB)
    229 
    230  ifdef VBOX_WITH_32_ON_64_MAIN_API
    231 DLLS += VBoxPython3_4_x86
    232 VBoxPython3_4_x86_EXTENDS    = VBoxPythonBase_x86
    233 VBoxPython3_4_x86_EXTENDS_BY = appending
    234 VBoxPython3_4_x86_TEMPLATE   = XPCOM
    235 VBoxPython3_4_x86_INCS       = $(VBOX_PYTHON34_INC)
    236 VBoxPython3_4_x86_LIBS       = $(VBOX_PYTHON34_LIB_X86)
    237  endif
    238 endif
    239 
    240 ifdef VBOX_PYTHON35_INC
    241 #
    242 # Python 3.5 version
    243 #
    244 DLLS += VBoxPython3_5
    245 VBoxPython3_5_EXTENDS    = VBoxPythonBase
    246 VBoxPython3_5_EXTENDS_BY = appending
    247 VBoxPython3_5_TEMPLATE   = XPCOM
    248 VBoxPython3_5_INCS       = $(VBOX_PYTHON35_INC)
    249 VBoxPython3_5_LIBS       = $(VBOX_PYTHON35_LIB)
    250 
    251  ifdef VBOX_WITH_32_ON_64_MAIN_API
    252 DLLS += VBoxPython3_5_x86
    253 VBoxPython3_5_x86_EXTENDS    = VBoxPythonBase_x86
    254 VBoxPython3_5_x86_EXTENDS_BY = appending
    255 VBoxPython3_5_x86_TEMPLATE   = XPCOM
    256 VBoxPython3_5_x86_INCS       = $(VBOX_PYTHON35_INC)
    257 VBoxPython3_5_x86_LIBS       = $(VBOX_PYTHON35_LIB_X86)
    258215 endif
    259216endif
  • trunk/src/libs/xpcom18a4/python/__init__.py

    r59769 r59795  
    3838
    3939# The XPCOM (Cross Platform COM) package.
    40 from __future__ import print_function
    41 import sys
    42 if sys.version_info[0] <= 2:
    43     import exceptions
    44     XPCOMBaseException = exceptions.Exception
    45 else:
    46     XPCOMBaseException = Exception
     40import exceptions
    4741
    4842# A global "verbose" flag - currently used by the
     
    5448# The standard XPCOM exception object.
    5549# Instances of this class are raised by the XPCOM extension module.
    56 class Exception(XPCOMBaseException):
     50class Exception(exceptions.Exception):
    5751    def __init__(self, errno, message = None):
    5852        assert int(errno) == errno, "The errno param must be an integer"
    5953        self.errno = errno
    6054        self.msg = message
    61         XPCOMBaseException.__init__(self, errno)
     55        exceptions.Exception.__init__(self, errno)
    6256    def __str__(self):
    6357        if not hr_map:
    64             from . import nsError
    65             for name, val in list(nsError.__dict__.items()):
     58            import nsError
     59            for name, val in nsError.__dict__.items():
    6660                if type(val)==type(0):
    6761                    hr_map[val] = name
     
    8680    def __init__(self, errno=None, *args, **kw):
    8781        if errno is None:
    88             from . import nsError
     82            import nsError
    8983            errno = nsError.NS_ERROR_FAILURE
    9084        Exception.__init__(self, errno, *args, **kw)
     
    10498        pass
    10599    def write(self, msg):
    106         import xpcom._xpcom as _xpcom
     100        import _xpcom
    107101        _xpcom.LogConsoleMessage(msg)
    108102    def close(self):
     
    110104
    111105def setupLogging():
    112     import os
    113     if sys.version_info[0] <= 2:
    114         import threading, thread
     106    import sys, os, threading, thread
    115107    hdlr = logging.StreamHandler(ConsoleServiceStream())
    116108    fmt = logging.Formatter(logging.BASIC_FORMAT)
     
    121113    # Later versions of logging use an RLock, so we detect an "old" style
    122114    # handler and update its lock
    123     if sys.version_info[0] <= 2:
    124         if type(hdlr.lock) == thread.LockType:
    125             hdlr.lock = threading.RLock()
     115    if type(hdlr.lock) == thread.LockType:
     116        hdlr.lock = threading.RLock()
    126117
    127118    logger.addHandler(hdlr)
     
    135126            # open without buffering so never pending output
    136127            stream = open(filename, "wU", 0)
    137         except IOError as why:
    138             print("pyxpcom failed to open log file '%s': %s"  % (filename, why), file=sys.stderr)
     128        except IOError, why:
     129            print >> sys.stderr, "pyxpcom failed to open log file '%s': %s" \
     130                                 % (filename, why)
    139131            # stream remains default
    140132
    141133    hdlr = logging.StreamHandler(stream)
    142134    # see above - fix a deadlock problem on this handler too.
    143     if sys.version_info[0] <= 2:
    144         if type(hdlr.lock) == thread.LockType:
    145             hdlr.lock = threading.RLock()
     135    if type(hdlr.lock) == thread.LockType:
     136        hdlr.lock = threading.RLock()
    146137
    147138    fmt = logging.Formatter(logging.BASIC_FORMAT)
  • trunk/src/libs/xpcom18a4/python/client/__init__.py

    r59769 r59795  
    3737
    3838import os
    39 from types import MethodType
     39import new
    4040import logging
    4141from xpcom import xpt, COMException, nsError, logger
     
    126126    # Exec the code object
    127127    tempNameSpace = {}
    128     exec(codeObject, globals(), tempNameSpace)
     128    exec codeObject in globals(), tempNameSpace
    129129    ret = tempNameSpace[name]
    130     if iid not in interface_method_cache:
     130    if not interface_method_cache.has_key(iid):
    131131        interface_method_cache[iid] = {}
    132132    interface_method_cache[iid][name] = ret
     
    153153            if flags & FLAGS_TO_IGNORE == 0:
    154154                if flags & XPT_MD_SETTER:
    155                     param_flags = list([(x.param_flags,) + xpt.MakeReprForInvoke(x) for x in m.params])
     155                    param_flags = map(lambda x: (x.param_flags,) + xpt.MakeReprForInvoke(x), m.params)
    156156                    setters[m.name] = m.method_index, param_flags
    157157                elif flags & XPT_MD_GETTER:
    158                     param_flags = list([(x.param_flags,) + xpt.MakeReprForInvoke(x) for x in m.params])
     158                    param_flags = map(lambda x: (x.param_flags,) + xpt.MakeReprForInvoke(x), m.params)
    159159                    getters[m.name] = m.method_index, param_flags
    160160                else:
     
    220220            except COMException:
    221221                pass
    222         raise ValueError("This object does not support automatic numeric conversion to this type")
     222        raise ValueError, "This object does not support automatic numeric conversion to this type"
    223223
    224224    def __int__(self):
     
    281281                for nominated_iid in interface_infos:
    282282                    # Interface may appear twice in the class info list, so check this here.
    283                     if nominated_iid not in self.__dict__['_interface_infos_']:
     283                    if not self.__dict__['_interface_infos_'].has_key(nominated_iid):
    284284                        # Just invoke our QI on the object
    285285                        self.queryInterface(nominated_iid)
     
    290290                    contractid_info_cache[real_cid] = contractid_info
    291291            else:
    292                 for key, val in list(contractid_info.items()):
     292                for key, val in contractid_info.items():
    293293                    self.__dict__[key].update(val)
    294294
     
    300300        # rebuild the world for each new object.
    301301        iis = self.__dict__['_interface_infos_']
    302         assert iid not in iis, "Already remembered this interface!"
     302        assert not iis.has_key(iid), "Already remembered this interface!"
    303303        try:
    304304            method_infos, getters, setters, constants = BuildInterfaceInfo(iid)
    305         except COMException as why:
     305        except COMException, why:
    306306            # Failing to build an interface info generally isn't a real
    307307            # problem - its probably just that the interface is non-scriptable.
     
    314314        iis[iid] = method_infos, getters, setters, constants
    315315        names = self.__dict__['_name_to_interface_iid_']
    316         for name in list(method_infos.keys()): names[name] = iid
    317         for name in list(getters.keys()): names[name] = iid
    318         for name in list(setters.keys()): names[name] = iid
    319         for name in list(constants.keys()):  names[name] = iid
     316        for name in method_infos.keys(): names[name] = iid
     317        for name in getters.keys(): names[name] = iid
     318        for name in setters.keys(): names[name] = iid
     319        for name in constants.keys():  names[name] = iid
    320320
    321321    def QueryInterface(self, iid):
    322         if iid in self._interfaces_:
    323             assert iid_name in self._interface_names_, "_interfaces_ has the key, but _interface_names_ does not!"
     322        if self._interfaces_.has_key(iid):
     323            assert self._interface_names_.has_key(iid.name), "_interfaces_ has the key, but _interface_names_ does not!"
    324324            return self
    325325        # Haven't seen this before - do a real QI.
    326         if iid not in self._interface_infos_:
     326        if not self._interface_infos_.has_key(iid):
    327327            self._remember_interface_info(iid)
    328328        iface_info = self._interface_infos_[iid]
     
    350350    def __getattr__(self, attr):
    351351        if attr in _special_getattr_names:
    352             raise AttributeError(attr)
     352            raise AttributeError, attr
    353353        # First allow the interface name to return the "raw" interface
    354354        interface = self.__dict__['_interface_names_'].get(attr, None)
     
    375375        # Some interfaces may provide this name via "native" support.
    376376        # Loop over all interfaces, and if found, cache it for next time.
    377         for interface in list(self.__dict__['_interfaces_'].values()):
     377        for interface in self.__dict__['_interfaces_'].values():
    378378            try:
    379379                ret = getattr(interface, attr)
     
    382382            except AttributeError:
    383383                pass
    384         raise AttributeError("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))
     384        raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr)
    385385       
    386386    def __setattr__(self, attr, val):
     
    397397            setattr(interface, attr, val)
    398398            return
    399         raise AttributeError("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))
     399        raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr)
    400400
    401401    def _get_classinfo_repr_(self):
     
    410410            self.__dict__['_tried_classinfo_'] = 0
    411411
    412         iface_names = list(self.__dict__['_interface_names_'].keys())
     412        iface_names = self.__dict__['_interface_names_'].keys()
    413413        try:
    414414            iface_names.remove("nsISupports")
     
    436436        self.__dict__.update(constants)
    437437        # We remember the constant names to prevent the user trying to assign to them!
    438         self.__dict__['_constant_names_'] = list(constants.keys())
     438        self.__dict__['_constant_names_'] = constants.keys()
    439439
    440440    def __getattr__(self, attr):
    441441        # Allow the underlying interface to provide a better implementation if desired.
    442442        if attr in _special_getattr_names:
    443             raise AttributeError(attr)
     443            raise AttributeError, attr
    444444
    445445        ret = getattr(self.__dict__['_comobj_'], attr, None)
     
    449449        unbound_method = self.__dict__['_methods_'].get(attr, None)
    450450        if unbound_method is not None:
    451             return MethodType(unbound_method, self)
     451            return new.instancemethod(unbound_method, self, self.__class__)
    452452
    453453        getters = self.__dict__['_property_getters_']
     
    456456            method_index, param_infos = info
    457457            if len(param_infos)!=1: # Only expecting a retval
    458                 raise RuntimeError("Can't get properties with this many args!")
     458                raise RuntimeError, "Can't get properties with this many args!"
    459459            args = ( param_infos, () )
    460460            return XPTC_InvokeByIndex(self._comobj_, method_index, args)
     
    467467            # Cache it locally
    468468            self.__dict__['_methods_'][attr] = unbound_method
    469             return MethodType(unbound_method, self)
    470 
    471         raise AttributeError("XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr))
     469            return new.instancemethod(unbound_method, self, self.__class__)
     470
     471        raise AttributeError, "XPCOM component '%s' has no attribute '%s'" % (self._object_name_, attr)
    472472
    473473    def __setattr__(self, attr, val):
    474474        # If we already have a __dict__ item of that name, and its not one of
    475475        # our constants, we just directly set it, and leave.
    476         if attr in self.__dict__ and attr not in self.__dict__['_constant_names_']:
     476        if self.__dict__.has_key(attr) and attr not in self.__dict__['_constant_names_']:
    477477            self.__dict__[attr] = val
    478478            return
     
    481481        info = setters.get(attr)
    482482        if info is None:
    483             raise AttributeError("XPCOM component '%s' can not set attribute '%s'" % (self._object_name_, attr))
     483            raise AttributeError, "XPCOM component '%s' can not set attribute '%s'" % (self._object_name_, attr)
    484484        method_index, param_infos = info
    485485        if len(param_infos)!=1: # Only expecting a single input val
    486             raise RuntimeError("Can't set properties with this many args!")
     486            raise RuntimeError, "Can't set properties with this many args!"
    487487        real_param_infos = ( param_infos, (val,) )
    488488        return XPTC_InvokeByIndex(self._comobj_, method_index, real_param_infos)
     
    527527        try:
    528528            return Component(self._comobj_.QueryReferent(iid)._comobj_, iid)
    529         except COMException as details:
     529        except COMException, details:
    530530            if details.errno != nsError.NS_ERROR_NULL_POINTER:
    531531                raise
  • trunk/src/libs/xpcom18a4/python/components.py

    r59769 r59795  
    3737
    3838# This module provides the JavaScript "components" interface
    39 from . import xpt
    40 import xpcom
    41 import xpcom._xpcom as _xpcom
     39import xpt
     40import xpcom, _xpcom
    4241import xpcom.client
    4342import xpcom.server
    44 
    45 StringTypes = [bytes, str]
     43import types
     44
     45StringTypes = [types.StringType, types.UnicodeType]
    4646
    4747def _get_good_iid(iid):
     
    7979        if self._dict_data is None:
    8080            self._dict_data = self._build_dict()
    81         return list(self._dict_data.keys())
     81        return self._dict_data.keys()
    8282    def items(self):
    8383        if self._dict_data is None:
    8484            self._dict_data = self._build_dict()
    85         return list(self._dict_data.items())
     85        return self._dict_data.items()
    8686    def values(self):
    8787        if self._dict_data is None:
    8888            self._dict_data = self._build_dict()
    89         return list(self._dict_data.values())
    90 #    def has_key(self, key):
    91 #        if self._dict_data is None:
    92 #            self._dict_data = self._build_dict()
    93 #        return self._dict_data.has_key(key)
     89        return self._dict_data.values()
     90    def has_key(self, key):
     91        if self._dict_data is None:
     92            self._dict_data = self._build_dict()
     93        return self._dict_data.has_key(key)
    9494
    9595    def __len__(self):
     
    9999
    100100    def __getattr__(self, attr):
    101         if self._dict_data is not None and attr in self._dict_data:
     101        if self._dict_data is not None and self._dict_data.has_key(attr):
    102102            return self._dict_data[attr]
    103103        return self._get_one(attr)
    104104    def __getitem__(self, item):
    105         if self._dict_data is not None and item in self._dict_data:
     105        if self._dict_data is not None and self._dict_data.has_key(item):
    106106            return self._dict_data[item]
    107107        return self._get_one(item)
     
    120120        other_iid = getattr(other, "_iidobj_", other)
    121121        return cmp(this_iid, other_iid)
    122     def __eq__(self, other):
    123         this_iid = self._iidobj_
    124         other_iid = getattr(other, "_iidobj_", other)
    125         return this_iid == other_iid
    126122    def __hash__(self):
    127123        return hash(self._iidobj_)
     
    129125        return str(self._iidobj_)
    130126    def __getitem__(self, item):
    131         raise TypeError("components.interface objects are not subscriptable")
     127        raise TypeError, "components.interface objects are not subscriptable"
    132128    def __setitem__(self, item, value):
    133         raise TypeError("components.interface objects are not subscriptable")
     129        raise TypeError, "components.interface objects are not subscriptable"
    134130    def __setattr__(self, attr, value):
    135         raise AttributeError("Can not set attributes on components.Interface objects")
     131        raise AttributeError, "Can not set attributes on components.Interface objects"
    136132    def __getattr__(self, attr):
    137133        # Support constants as attributes.
     
    143139                c[c_ob.name] = c_ob.value
    144140            _constants_by_iid_map[self._iidobj_] = c
    145         if attr in c:
     141        if c.has_key(attr):
    146142            return c[attr]
    147         raise AttributeError("'%s' interfaces do not define a constant '%s'" % (self.name, attr))
     143        raise AttributeError, "'%s' interfaces do not define a constant '%s'" % (self.name, attr)
    148144
    149145
     
    152148        try:
    153149            item = interfaceInfoManager.GetInfoForName(name)
    154         except xpcom.COMException as why:
     150        except xpcom.COMException, why:
    155151            # Present a better exception message, and give a more useful error code.
    156             from . import nsError
     152            import nsError
    157153            raise xpcom.COMException(nsError.NS_ERROR_NO_INTERFACE, "The interface '%s' does not exist" % (name,))
    158154        return _Interface(item.GetName(), item.GetIID())
     
    184180            self.clsid = rc
    185181            return rc
    186         raise AttributeError("%s class has no attribute '%s'" % (self.contractid, attr))
     182        raise AttributeError, "%s class has no attribute '%s'" % (self.contractid, attr)
    187183    def createInstance(self, iid = None):
    188184        import xpcom.client
    189185        try:
    190186            return xpcom.client.Component(self.contractid, _get_good_iid(iid))
    191         except xpcom.COMException as details:
    192             from . import nsError
     187        except xpcom.COMException, details:
     188            import nsError
    193189            # Handle "no such component" in a cleaner way for the user.
    194190            if details.errno == nsError.NS_ERROR_FACTORY_NOT_REGISTERED:
     
    223219
    224220# The ID function
    225 ID = _xpcom.ID
     221ID = _xpcom.IID
    226222
    227223# A helper to cleanup our namespace as xpcom shuts down.
  • trunk/src/libs/xpcom18a4/python/file.py

    r59769 r59795  
    156156        self.close()
    157157        if mode != "r":
    158             raise ValueError("only 'r' mode supported")
     158            raise ValueError, "only 'r' mode supported'"
    159159        io_service = components.classes["@mozilla.org/network/io-service;1"] \
    160160                        .getService(components.interfaces.nsIIOService)
     
    165165        # Mozilla asserts and starts saying "NULL POINTER" if this is wrong!
    166166        if not url_ob.scheme:
    167             raise ValueError("The URI '%s' is invalid (no scheme)"
     167            raise ValueError, ("The URI '%s' is invalid (no scheme)"
    168168                                  % (url_ob.spec,))
    169169        self.channel = io_service.newChannelFromURI(url_ob)
     
    202202            self.inputStream.init(self.fileIO)
    203203        else:
    204             raise ValueError("Unknown mode")
     204            raise ValueError, "Unknown mode"
    205205
    206206    def close(self):
     
    226226    got = got + file.read()
    227227    if got != expected:
    228         raise RuntimeError("Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)))
     228        raise RuntimeError, "Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected))
    229229
    230230def _DoTestBufferRead(file, expected):
     
    240240        got = got + str(buffer[:num])
    241241    if got != expected:
    242         raise RuntimeError("Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected)))
     242        raise RuntimeError, "Reading '%s' failed - got %d bytes, but expected %d bytes" % (file, len(got), len(expected))
    243243
    244244def _TestLocalFile():
     
    266266        # Open the same file again for writing - this should delete the old one.
    267267        if not os.path.isfile(fname):
    268             raise RuntimeError("The file '%s' does not exist, but we are explicitly testing create semantics when it does" % (fname,))
     268            raise RuntimeError, "The file '%s' does not exist, but we are explicitly testing create semantics when it does" % (fname,)
    269269        test_file = LocalFile(fname, "w")
    270270        test_file.write(data)
     
    305305def _TestURI(url):
    306306    test_file = URIFile(url)
    307     print("Opened file is", test_file)
     307    print "Opened file is", test_file
    308308    got = test_file.read()
    309     print("Read %d bytes of data from %r" % (len(got), url))
     309    print "Read %d bytes of data from %r" % (len(got), url)
    310310    test_file.close()
    311311
     
    313313    import sys
    314314    if len(sys.argv) < 2:
    315         print("No URL specified on command line - performing self-test")
     315        print "No URL specified on command line - performing self-test"
    316316        _TestAll()
    317317    else:
  • trunk/src/libs/xpcom18a4/python/gen_python_deps.py

    r59772 r59795  
    22
    33"""
    4 Copyright (C) 2009-2016 Oracle Corporation
     4Copyright (C) 2009-2013 Oracle Corporation
    55
    66This file is part of VirtualBox Open Source Edition (OSE), as
     
    1414
    1515import os,sys
    16 from distutils.version import StrictVersion
    1716
    18 versions = ["2.6", "2.7", "3.1", "3.2", "3.3", "3.4", "3.5"]
     17versions = ["2.3", "2.4", "2.5", "2.6", "2.7",]
    1918prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"]
    2019known = {}
     
    4241
    4342def print_vars(vers, known, sep, bitness_magic):
    44     print("VBOX_PYTHON%s_INC=%s%s" %(vers, known[0], sep))
     43    print "VBOX_PYTHON%s_INC=%s%s" %(vers, known[0], sep)
    4544    if bitness_magic > 0:
    46         print("VBOX_PYTHON%s_LIB=%s%s" %(vers, known[2], sep))
    47         print("VBOX_PYTHON%s_LIB_X86=%s%s" %(vers, known[1], sep))
     45        print "VBOX_PYTHON%s_LIB=%s%s" %(vers, known[2], sep)
     46        print "VBOX_PYTHON%s_LIB_X86=%s%s" %(vers, known[1], sep)
    4847    else:
    49         print("VBOX_PYTHON%s_LIB=%s%s" %(vers, known[1], sep))
     48        print "VBOX_PYTHON%s_LIB=%s%s" %(vers, known[1], sep)
    5049
    5150
     
    9291
    9392    for v in versions:
    94         if StrictVersion(v) < StrictVersion('2.6'):
    95             continue
    9693        for p in prefixes:
    9794            c = checkPair(p, v, dllpre, dllsuff, bitness_magic)
     
    9996                known[v] = c
    10097                break
    101     keys = list(known.keys())
     98    keys = known.keys()
    10299    # we want default to be the lowest versioned Python
    103100    keys.sort()
  • trunk/src/libs/xpcom18a4/python/primitives.py

    r59769 r59795  
    3535        better = _primitives_map[prin.type]
    3636    except KeyError:
    37         raise ValueError("This primitive type (%d) is not supported" % (prin.type,))
     37        raise ValueError, "This primitive type (%d) is not supported" % (prin.type,)
    3838    prin = prin.QueryInterface(better)
    3939    return prin.data
  • trunk/src/libs/xpcom18a4/python/server/__init__.py

    r59777 r59795  
    3838# The xpcom.server package.
    3939
    40 from xpcom.server.policy import DefaultPolicy
     40from policy import DefaultPolicy
    4141from xpcom import _xpcom
    4242
     
    8080# Python!
    8181def NS_GetModule( serviceManager, nsIFile ):
    82     from . import loader
     82    import loader
    8383    iid = _xpcom.IID_nsIModule
    8484    return WrapObject(loader.MakePythonComponentLoaderModule(serviceManager, nsIFile), iid, bWrapClient = 0)
    8585
    8686def _shutdown():
    87     from server.policy import _shutdown
     87    from policy import _shutdown
    8888    _shutdown()
  • trunk/src/libs/xpcom18a4/python/server/loader.py

    r59769 r59795  
    3838import xpcom
    3939from xpcom import components, logger
    40 from . import module
    41 import glob
    42 import os
     40
     41import module
     42
     43import glob, os, types
     44
    4345from xpcom.client import Component
    4446
     
    5557    # For now, just run over all classes looking for likely candidates.
    5658    comps = []
    57     for name, object in list(py_module.__dict__.items()):
     59    for name, object in py_module.__dict__.items():
    5860        try:
    59             if (type(object) == type or issubclass(object, object)) and \
     61            if (type(object) == types.ClassType or issubclass(object, object)) and \
    6062               _has_good_attr(object, "_com_interfaces_") and \
    6163               _has_good_attr(object, "_reg_clsid_") and \
     
    146148                    self.autoRegisterComponent(when, entry)
    147149                # Handle some common user errors
    148                 except xpcom.COMException as details:
     150                except xpcom.COMException, details:
    149151                    from xpcom import nsError
    150152                    # If the interface name does not exist, suppress the traceback
     
    154156                    else:
    155157                        logger.exception("Registration of '%s' failed!", entry.leafName)
    156                 except SyntaxError as details:
     158                except SyntaxError, details:
    157159                    # Syntax error in source file - no useful traceback here either.
    158160                    logger.error("Registration of '%s' failed\n %s",
     
    224226
    225227def MakePythonComponentLoaderModule(serviceManager, nsIFile):
    226     from . import module
     228    import module
    227229    return module.Module( [PythonComponentLoader] )
  • trunk/src/libs/xpcom18a4/python/server/module.py

    r59769 r59795  
    3939from xpcom import nsError
    4040
    41 from . import factory
     41import factory
    4242
    4343import types
     
    6666        # void function.
    6767        fname = os.path.basename(location.path)
    68         for klass in list(self.components.values()):
     68        for klass in self.components.values():
    6969            reg_contractid = klass._reg_contractid_
    70             print("Registering '%s' (%s)" % (reg_contractid, fname))
     70            print "Registering '%s' (%s)" % (reg_contractid, fname)
    7171            reg_desc = getattr(klass, "_reg_desc_", reg_contractid)
    7272            compMgr = compMgr.queryInterface(components.interfaces.nsIComponentRegistrar)
     
    8585    def unregisterSelf(self, compMgr, location, loaderStr):
    8686        # void function.
    87         for klass in list(self.components.values()):
     87        for klass in self.components.values():
    8888            ok = 1
    8989            try:
     
    9999                    ok = 0
    100100            if ok:
    101                 print("Successfully unregistered", klass.__name__)
     101                print "Successfully unregistered", klass.__name__
    102102            else:
    103                 print("Unregistration of", klass.__name__, "failed. (probably just not already registered)")
     103                print "Unregistration of", klass.__name__, "failed. (probably just not already registered)"
    104104       
    105105    def canUnload(self, compMgr):
  • trunk/src/libs/xpcom18a4/python/server/policy.py

    r59769 r59795  
    4343import types
    4444import logging
    45 import sys
    4645
    4746
     
    6261_supports_primitives_map_ = {} # Filled on first use.
    6362
    64 _interface_sequence_types_ = tuple, list
    65 if sys.version_info[0] <= 2:
    66     _string_types_ = str, unicode
    67 else:
    68     _string_types_ = bytes, str
     63_interface_sequence_types_ = types.TupleType, types.ListType
     64_string_types_ = types.StringType, types.UnicodeType
    6965XPTI_GetInterfaceInfoManager = _xpcom.XPTI_GetInterfaceInfoManager
    7066
     
    146142        self._iid_ = iid
    147143        if ni is None:
    148             raise ValueError("The object '%r' can not be used as a COM object" % (instance,))
     144            raise ValueError, "The object '%r' can not be used as a COM object" % (instance,)
    149145        # This is really only a check for the user
    150146        if __debug__:
     
    290286            if logger.isEnabledFor(logging.DEBUG):
    291287                try:
    292                     raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
     288                    raise exc_info[0], exc_info[1], exc_info[2]
    293289                except:
    294290                    logger.debug("'%s' raised COM Exception %s",
     
    298294        # As above, trick the logging module to handle Python 2.3
    299295        try:
    300             raise exc_info[0](exc_info[1]).with_traceback(exc_info[2])
     296            raise exc_info[0], exc_info[1], exc_info[2]
    301297        except:
    302298            logger.exception("Unhandled exception calling '%s'", func_name)
     
    335331_supports_primitives_data_ = [
    336332    ("nsISupportsCString", "__str__", str),
    337     ("nsISupportsString", "__unicode__", str),
    338     ("nsISupportsPRUint64", "__long__", int),
    339     ("nsISupportsPRInt64", "__long__", int),
     333    ("nsISupportsString", "__unicode__", unicode),
     334    ("nsISupportsPRUint64", "__long__", long),
     335    ("nsISupportsPRInt64", "__long__", long),
    340336    ("nsISupportsPRUint32", "__int__", int),
    341337    ("nsISupportsPRInt32", "__int__", int),
  • trunk/src/libs/xpcom18a4/python/src/ErrorUtils.cpp

    r59769 r59795  
    111111        c += "('%s', ";
    112112        // Pull a trick to ensure a valid string - use Python repr!
    113 #if PY_MAJOR_VERSION <= 2
    114113        PyObject *obMessage = PyString_FromString(pszMessageText);
    115 #else
    116         PyObject *obMessage = PyUnicode_FromString(pszMessageText);
    117 #endif
    118114        if (obMessage) {
    119115                PyObject *repr = PyObject_Repr(obMessage);
    120116                if (repr) {
    121 #if PY_MAJOR_VERSION <= 2
    122117                        c += PyString_AsString(repr);
    123 #else
    124                         c += PyUnicode_AsUTF8(repr);
    125 #endif
    126118                        Py_DECREF(repr);
    127119                }
     
    201193        PyObject *temp = PyObject_Str(exc_typ);
    202194        if (temp) {
    203 #if PY_MAJOR_VERSION <= 2
    204195                streamout += PyString_AsString(temp);
    205 #else
    206                 streamout += PyUnicode_AsUTF8(temp);
    207 #endif
    208196                Py_DECREF(temp);
    209197        } else
     
    213201                temp = PyObject_Str(exc_val);
    214202                if (temp) {
    215 #if PY_MAJOR_VERSION <= 2
    216203                        streamout += PyString_AsString(temp);
    217 #else
    218                         streamout += PyUnicode_AsUTF8(temp);
    219 #endif
    220204                        Py_DECREF(temp);
    221205                } else
     
    371355        PyObject *obResult = NULL;
    372356
    373 #if PY_MAJOR_VERSION <= 2
    374357        /* Import the modules we need - cStringIO and traceback */
    375358        modStringIO = PyImport_ImportModule("cStringIO");
     
    387370        if (obStringIO==NULL)
    388371                TRACEBACK_FETCH_ERROR("cStringIO.StringIO() failed\n");
    389 #else
    390         /* Import the modules we need - io and traceback */
    391         modStringIO = PyImport_ImportModule("io");
    392         if (modStringIO==NULL)
    393                 TRACEBACK_FETCH_ERROR("cant import io\n");
    394 
    395         modTB = PyImport_ImportModule("traceback");
    396         if (modTB==NULL)
    397                 TRACEBACK_FETCH_ERROR("cant import traceback\n");
    398         /* Construct a StringIO object */
    399         obFuncStringIO = PyObject_GetAttrString(modStringIO, "StringIO");
    400         if (obFuncStringIO==NULL)
    401                 TRACEBACK_FETCH_ERROR("cant find io.StringIO\n");
    402         obStringIO = PyObject_CallObject(obFuncStringIO, NULL);
    403         if (obStringIO==NULL)
    404                 TRACEBACK_FETCH_ERROR("io.StringIO() failed\n");
    405 #endif
    406372        /* Get the traceback.print_exception function, and call it. */
    407373        obFuncTB = PyObject_GetAttrString(modTB, "print_tb");
     
    430396
    431397        /* And it should be a string all ready to go - duplicate it. */
    432 #if PY_MAJOR_VERSION <= 2
    433398        if (!PyString_Check(obResult))
    434 #else
    435         if (!PyUnicode_Check(obResult))
    436 #endif
    437399                        TRACEBACK_FETCH_ERROR("getvalue() did not return a string\n");
    438400
    439401        { // a temp scope so I can use temp locals.
    440 #if PY_MAJOR_VERSION <= 2
    441402        char *tempResult = PyString_AsString(obResult);
    442 #else
    443         char *tempResult = PyUnicode_AsUTF8(obResult);
    444 #endif
    445403        result = (char *)PyMem_Malloc(strlen(tempResult)+1);
    446404        if (result==NULL)
  • trunk/src/libs/xpcom18a4/python/src/PyGBase.cpp

    r59769 r59795  
    6767PRBool CheckDefaultGateway(PyObject *real_inst, REFNSIID iid, nsISupports **ret_gateway);
    6868
    69 /*static*/ nsresult
     69/*static*/ nsresult 
    7070PyG_Base::CreateNew(PyObject *pPyInstance, const nsIID &iid, void **ppResult)
    7171{
     
    115115        }
    116116        else
    117 #if PY_MAJOR_VERSION <= 2
    118117                szRepr = PyString_AsString(r);
    119 #else
    120                 szRepr = PyUnicode_AsUTF8(r);
    121 #endif
    122118        if (szRepr==NULL) szRepr = "";
    123119        int reprOffset = *szRepr=='<' ? 1 : 0;
     
    189185        if (iid.Equals(NS_GET_IID(nsISupportsWeakReference)))
    190186                return (nsISupportsWeakReference *)this;
    191         if (iid.Equals(NS_GET_IID(nsIInternalPython)))
     187        if (iid.Equals(NS_GET_IID(nsIInternalPython))) 
    192188                return (nsISupports *)(nsIInternalPython *)this;
    193189        return NULL;
     
    196192// Call back into Python, passing a Python instance, and get back
    197193// an interface object that wraps the instance.
    198 /*static*/ PRBool
     194/*static*/ PRBool 
    199195PyG_Base::AutoWrapPythonInstance(PyObject *ob, const nsIID &iid, nsISupports **ppret)
    200196{
     
    249245// the object to actually use as the gateway parameter for this interface.
    250246// For example, it is expected that the policy will wrap the interface
    251 // object in one of the xpcom.client.Interface objects, allowing
     247// object in one of the xpcom.client.Interface objects, allowing 
    252248// natural usage of the interface from Python clients.
    253249// Note that piid will usually be NULL - this is because the runtime
     
    260256// so at least the user can simply QI the object.
    261257PyObject *
    262 PyG_Base::MakeInterfaceParam(nsISupports *pis,
    263                              const nsIID *piid,
     258PyG_Base::MakeInterfaceParam(nsISupports *pis, 
     259                             const nsIID *piid, 
    264260                             int methodIndex /* = -1 */,
    265                              const XPTParamDescriptor *d /* = NULL */,
     261                             const XPTParamDescriptor *d /* = NULL */, 
    266262                             int paramIndex /* = -1 */)
    267263{
     
    306302                goto done;
    307303
    308         result = PyObject_CallMethod(m_pPyObject,
     304        result = PyObject_CallMethod(m_pPyObject, 
    309305                                       (char*)"_MakeInterfaceParam_",
    310306                                       (char*)"OOiOi",
     
    355351                return NS_OK;
    356352        }
    357         // If we have a "base object", then we need to delegate _every_ remaining
     353        // If we have a "base object", then we need to delegate _every_ remaining 
    358354        // QI to it.
    359355        if (m_pBaseObject != NULL)
     
    378374
    379375                PyObject *result = PyObject_CallMethod(m_pPyObject, (char*)"_QueryInterface_",
    380                                                                     (char*)"OO",
     376                                                                    (char*)"OO", 
    381377                                                                    this_interface_ob, ob);
    382378                Py_DECREF(ob);
     
    466462        if (PyErr_Occurred()) {
    467463                // The error handling - fairly involved, but worth it as
    468                 // good error reporting is critical for users to know WTF
     464                // good error reporting is critical for users to know WTF 
    469465                // is going on - especially with TypeErrors etc in their
    470466                // return values (ie, after the Python code has successfully
    471467                // exited, but we encountered errors unpacking their
    472                 // result values for the COM caller - there is literally no
     468                // result values for the COM caller - there is literally no 
    473469                // way to catch these exceptions from Python code, as their
    474470                // is no Python function directly on the call-stack)
     
    485481                PyErr_Fetch(&exc_typ, &exc_val, &exc_tb);
    486482
    487                 PyObject *err_result = PyObject_CallMethod(m_pPyObject,
     483                PyObject *err_result = PyObject_CallMethod(m_pPyObject, 
    488484                                               (char*)"_GatewayException_",
    489485                                               (char*)"z(OOO)",
     
    645641                ob_ret = PyObject_GetAttrString(real_ob, (char *)szPropertyName);
    646642                if (ob_ret==NULL) {
    647                         PyErr_Format(PyExc_AttributeError,
    648                                      "The object does not have a 'get_%s' function, or a '%s attribute.",
     643                        PyErr_Format(PyExc_AttributeError, 
     644                                     "The object does not have a 'get_%s' function, or a '%s attribute.", 
    649645                                     szPropertyName, szPropertyName);
    650646                } else {
     
    699695                        ret = NS_OK;
    700696                else {
    701                         PyErr_Format(PyExc_AttributeError,
    702                                      "The object does not have a 'set_%s' function, or a '%s attribute.",
     697                        PyErr_Format(PyExc_AttributeError, 
     698                                     "The object does not have a 'set_%s' function, or a '%s attribute.", 
    703699                                     szPropertyName, szPropertyName);
    704700                }
     
    741737  first thing we do is see if it has been auto-wrapped before.
    742738
    743   If not, we create a new wrapper, then make a COM weak reference
     739  If not, we create a new wrapper, then make a COM weak reference 
    744740  to that wrapper, and store it directly back into the instance
    745741  we are auto-wrapping!  The use of a weak-reference prevents
     
    765761                PRBool ok = PR_TRUE;
    766762                nsCOMPtr<nsIWeakReference> pWeakRef;
    767                 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak,
    768                                                        NS_GET_IID(nsIWeakReference),
     763                ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 
     764                                                       NS_GET_IID(nsIWeakReference), 
    769765                                                       getter_AddRefs(pWeakRef),
    770766                                                       PR_FALSE));
     
    795791                PRBool ok = PR_TRUE;
    796792                nsCOMPtr<nsIWeakReference> pWeakRef;
    797                 ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak,
    798                                                        NS_GET_IID(nsIWeakReference),
    799                                                        getter_AddRefs(pWeakRef),
     793                ok = NS_SUCCEEDED(Py_nsISupports::InterfaceFromPyObject(ob_existing_weak, 
     794                                                       NS_GET_IID(nsIWeakReference), 
     795                                                       getter_AddRefs(pWeakRef), 
    800796                                                       PR_FALSE));
    801797                Py_DECREF(ob_existing_weak);
     
    831827                        swr->GetWeakReference( getter_AddRefs(pWeakReference) );
    832828                        if (pWeakReference) {
    833                                 PyObject *ob_new_weak = Py_nsISupports::PyObjectFromInterface(pWeakReference,
     829                                PyObject *ob_new_weak = Py_nsISupports::PyObjectFromInterface(pWeakReference, 
    834830                                                                                   NS_GET_IID(nsIWeakReference),
    835831                                                                                   PR_FALSE ); /* bMakeNicePyObject */
  • trunk/src/libs/xpcom18a4/python/src/PyIClassInfo.cpp

    r59769 r59795  
    107107{
    108108        if (v)
    109 #if PY_MAJOR_VERSION <= 2
    110109                return PyString_FromString(v);
    111 #else
    112                 return PyUnicode_FromString(v);
    113 #endif
    114110        Py_INCREF(Py_None);
    115111        return Py_None;
     
    171167}
    172168
    173 struct PyMethodDef
     169struct PyMethodDef 
    174170PyMethods_IClassInfo[] =
    175171{
  • trunk/src/libs/xpcom18a4/python/src/PyIComponentManagerObsolete.cpp

    r59769 r59795  
    133133                return PyXPCOM_BuildPyException(r);
    134134
    135 #if PY_MAJOR_VERSION <= 2
    136135        PyObject *ob_pid = PyString_FromString(ret_pid);
    137136        PyObject *ob_class = PyString_FromString(ret_class);
    138 #else
    139         PyObject *ob_pid = PyUnicode_FromString(ret_pid);
    140         PyObject *ob_class = PyUnicode_FromString(ret_class);
    141 #endif
    142137        PyObject *ret = Py_BuildValue("OO", ob_pid, ob_class);
    143138        nsMemory::Free(ret_pid);
     
    188183}
    189184
    190 struct PyMethodDef
     185struct PyMethodDef 
    191186PyMethods_IComponentManagerObsolete[] =
    192187{
  • trunk/src/libs/xpcom18a4/python/src/PyIID.cpp

    r59769 r59795  
    6060        PyObject *obBuf;
    6161        if ( PyArg_ParseTuple(args, "O", &obBuf)) {
    62 #if PY_MAJOR_VERSION <= 2
    6362                if (PyBuffer_Check(obBuf)) {
    6463                        PyBufferProcs *pb = NULL;
     
    6665                        void *buf = NULL;
    6766                        int size = (*pb->bf_getreadbuffer)(obBuf, 0, &buf);
    68 #else
    69                 if (PyObject_CheckBuffer(obBuf)) {
    70                         void *buf = NULL;
    71             Py_buffer view;
    72             if (PyObject_GetBuffer(obBuf, &view, PyBUF_CONTIG_RO) != 0)
    73             {
    74                 PyErr_Format(PyExc_ValueError, "Could not get contiguous buffer from object");
    75                 return NULL;
    76             }
    77             Py_ssize_t size = view.len;
    78             buf = view.buf;
    79 #endif
    8067                        if (size != sizeof(nsIID) || buf==NULL) {
    81 #if PY_MAJOR_VERSION >= 3
    82                 PyBuffer_Release(&view);
    83 #endif
    8468#ifdef VBOX
    85                 PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", (int)sizeof(nsIID));
     69                                PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", (int)sizeof(nsIID));
    8670#else
    8771                                PyErr_Format(PyExc_ValueError, "A buffer object to be converted to an IID must be exactly %d bytes long", sizeof(nsIID));
     
    10185                                ptr += sizeof(PRUint8);
    10286                        }
    103 #if PY_MAJOR_VERSION >= 3
    104             PyBuffer_Release(&view);
    105 #endif
    10687                        return new Py_nsIID(iid);
    10788                }
     
    126107                return PR_FALSE;
    127108        }
    128 #if PY_MAJOR_VERSION <= 2
    129109        if (PyString_Check(ob)) {
    130110                ok = iid.Parse(PyString_AsString(ob));
    131 #else
    132         if (PyUnicode_Check(ob)) {
    133                 ok = iid.Parse(PyUnicode_AsUTF8(ob));
    134 #endif
    135111                if (!ok) {
    136112                        PyXPCOM_BuildPyException(NS_ERROR_ILLEGAL_VALUE);
     
    168144PyTypeObject Py_nsIID::type =
    169145{
    170         PyVarObject_HEAD_INIT(&PyType_Type, 0)
     146        PyObject_HEAD_INIT(&PyType_Type)
     147        0,
    171148        "IID",
    172149        sizeof(Py_nsIID),
     
    176153        PyTypeMethod_getattr,                           /* tp_getattr */
    177154        0,                                              /* tp_setattr */
    178 #if PY_MAJOR_VERSION <= 2
    179155        PyTypeMethod_compare,                           /* tp_compare */
    180 #else
    181         0,                                              /* reserved */
    182 #endif
    183156        PyTypeMethod_repr,                              /* tp_repr */
    184157        0,                                              /* tp_as_number */
     
    188161        0,                                              /* tp_call */
    189162        PyTypeMethod_str,                               /* tp_str */
    190         0,                                              /* tp_getattro */
    191         0,                                              /* tp_setattro */
    192         0,                                              /* tp_as_buffer */
    193         0,                                              /* tp_flags */
    194         0,                                              /* tp_doc */
    195         0,                                              /* tp_traverse */
    196         0,                                              /* tp_clear */
    197         PyTypeMethod_richcompare,                       /* tp_richcompare */
    198         0,                                              /* tp_weaklistoffset */
    199         0,                                              /* tp_iter */
    200         0,                                              /* tp_iternext */
    201         0,                                              /* tp_methods */
    202         0,                                              /* tp_members */
    203         0,                                              /* tp_getset */
    204         0,                                              /* tp_base */
    205163};
    206164
     
    226184                PyObject *ret;
    227185                if (iid_repr != nsnull) {
    228 #if PY_MAJOR_VERSION <= 2
    229186                        ret = PyString_FromString(iid_repr);
    230 #else
    231                         ret = PyUnicode_FromString(iid_repr);
    232 #endif
    233187                        nsMemory::Free(iid_repr);
    234188                } else
    235 #if PY_MAJOR_VERSION <= 2
    236189                        ret = PyString_FromString("<cant get IID info!>");
    237 #else
    238                         ret = PyUnicode_FromString("<cant get IID info!>");
    239 #endif
    240190                return ret;
    241191        }
     
    243193}
    244194
    245 #if PY_MAJOR_VERSION <= 2
    246195/* static */ int
    247196Py_nsIID::PyTypeMethod_compare(PyObject *self, PyObject *other)
     
    252201        return rc == 0 ? 0 : (rc < 0 ? -1 : 1);
    253202}
    254 #endif
    255 
    256 /* static */ PyObject *
    257 Py_nsIID::PyTypeMethod_richcompare(PyObject *self, PyObject *other, int op)
    258 {
    259     PyObject *result = NULL;
    260         Py_nsIID *s_iid = (Py_nsIID *)self;
    261         Py_nsIID *o_iid = (Py_nsIID *)other;
    262         int rc = memcmp(&s_iid->m_iid, &o_iid->m_iid, sizeof(s_iid->m_iid));
    263     switch (op)
    264     {
    265         case Py_LT:
    266             result = rc < 0 ? Py_True : Py_False;
    267             break;
    268         case Py_LE:
    269             result = rc <= 0 ? Py_True : Py_False;
    270             break;
    271         case Py_EQ:
    272             result = rc == 0 ? Py_True : Py_False;
    273             break;
    274         case Py_NE:
    275             result = rc != 0 ? Py_True : Py_False;
    276             break;
    277         case Py_GT:
    278             result = rc > 0 ? Py_True : Py_False;
    279             break;
    280         case Py_GE:
    281             result = rc >= 0 ? Py_True : Py_False;
    282             break;
    283     }
    284     Py_XINCREF(result);
    285     return result;
    286 }
    287203
    288204/* static */ PyObject *
     
    293209        char *sziid = s_iid->m_iid.ToString();
    294210#ifdef VBOX
    295         snprintf(buf, sizeof(buf), "_xpcom.ID('%s')", sziid);
     211        snprintf(buf, sizeof(buf), "_xpcom.IID('%s')", sziid);
    296212#else
    297213        sprintf(buf, "_xpcom.IID('%s')", sziid);
    298214#endif
    299215        nsMemory::Free(sziid);
    300 #if PY_MAJOR_VERSION <= 2
    301216        return PyString_FromString(buf);
    302 #else
    303         return PyUnicode_FromString(buf);
    304 #endif
    305217}
    306218
     
    310222        Py_nsIID *s_iid = (Py_nsIID *)self;
    311223        char *sziid = s_iid->m_iid.ToString();
    312 #if PY_MAJOR_VERSION <= 2
    313224        PyObject *ret = PyString_FromString(sziid);
    314 #else
    315         PyObject *ret = PyUnicode_FromString(sziid);
    316 #endif
    317225        nsMemory::Free(sziid);
    318226        return ret;
  • trunk/src/libs/xpcom18a4/python/src/PyIInputStream.cpp

    r59769 r59795  
    109109        }
    110110        if (n==0) { // mozilla will assert if we alloc zero bytes.
    111 #if PY_MAJOR_VERSION <= 2
    112111                return PyBuffer_New(0);
    113 #else
    114                 return PyBytes_FromString("");
    115 #endif
    116112        }
    117113        char *buf = (char *)nsMemory::Alloc(n);
     
    127123        PyObject *rc = NULL;
    128124        if ( NS_SUCCEEDED(r) ) {
    129 #if PY_MAJOR_VERSION <= 2
    130125                rc = PyBuffer_New(nread);
    131126                if (rc != NULL) {
     
    151146                        memcpy(ob_buf, buf, nread);
    152147                }
    153 #else
    154         rc = PyBytes_FromStringAndSize(buf, nread);
    155 #endif
    156148        } else
    157149                PyXPCOM_BuildPyException(r);
  • trunk/src/libs/xpcom18a4/python/src/PyIInterfaceInfo.cpp

    r59769 r59795  
    7575        if ( NS_FAILED(r) )
    7676                return PyXPCOM_BuildPyException(r);
    77 #if PY_MAJOR_VERSION <= 2
    7877        PyObject *ret = PyString_FromString(name);
    79 #else
    80         PyObject *ret = PyUnicode_FromString(name);
    81 #endif
    8278        nsMemory::Free(name);
    8379        return ret;
     
    397393}
    398394
    399 struct PyMethodDef
     395struct PyMethodDef 
    400396PyMethods_IInterfaceInfo[] =
    401397{
  • trunk/src/libs/xpcom18a4/python/src/PyIInterfaceInfoManager.cpp

    r59769 r59795  
    135135                return PyXPCOM_BuildPyException(r);
    136136
    137 #if PY_MAJOR_VERSION <= 2
    138137        PyObject *ret = PyString_FromString(ret_name);
    139 #else
    140         PyObject *ret = PyUnicode_FromString(ret_name);
    141 #endif
    142138        nsMemory::Free(ret_name);
    143139        return ret;
     
    190186// void autoRegisterInterfaces();
    191187
    192 PyMethodDef
     188PyMethodDef 
    193189PyMethods_IInterfaceInfoManager[] =
    194190{
  • trunk/src/libs/xpcom18a4/python/src/PyISupports.cpp

    r59769 r59795  
    218218        }
    219219        PyXPCOM_TypeObject *this_type = (PyXPCOM_TypeObject *)ob_type;
    220 #if PY_MAJOR_VERSION <= 2
    221220        return Py_FindMethodInChain(&this_type->chain, this, (char *)name);
    222 #else
    223     PyMethodChain *chain = &this_type->chain;
    224     if (name[0] == '_' && name[1] == '_')
    225     {
    226         if (!strcmp(name, "__doc__"))
    227         {
    228             const char *doc = ob_type->tp_doc;
    229             if (doc)
    230 #if PY_MAJOR_VERSION <= 2
    231                 return PyString_FromString(doc);
    232 #else
    233                 return PyUnicode_FromString(doc);
    234 #endif
    235         }
    236     }
    237     while (chain)
    238     {
    239         PyMethodDef *ml = chain->methods;
    240         for (; ml->ml_name; ml++)
    241         {
    242             if (!strcmp(name, ml->ml_name))
    243                 return PyCFunction_New(ml, this);
    244         }
    245         chain = chain->link;
    246     }
    247     PyErr_SetString(PyExc_AttributeError, name);
    248     return NULL;
    249 #endif
    250221}
    251222
  • trunk/src/libs/xpcom18a4/python/src/PyIVariant.cpp

    r59769 r59795  
    6262}
    6363static PyObject *MyChar( char c) {
    64 #if PY_MAJOR_VERSION <= 2
    6564        return PyString_FromStringAndSize(&c, 1);
    66 #else
    67         return PyUnicode_FromStringAndSize(&c, 1);
    68 #endif
    6965}
    7066static PyObject *MyUChar( PRUnichar c) {
     
    127123GET_SIMPLE(nsIID, GetAsID, Py_nsIID::PyObjectFromIID)
    128124
    129 #if PY_MAJOR_VERSION <= 2
    130125GET_ALLOCATED(char *, GetAsString, PyString_FromString, nsMemory::Free)
    131 #else
    132 GET_ALLOCATED(char *, GetAsString, PyUnicode_FromString, nsMemory::Free)
    133 #endif
    134126GET_ALLOCATED(PRUnichar *, GetAsWString, MyUnicode, nsMemory::Free)
    135 #if PY_MAJOR_VERSION <= 2
    136127GET_ALLOCATED_SIZE(char *, GetAsStringWithSize, PyString_FromStringAndSize, nsMemory::Free)
    137 #else
    138 GET_ALLOCATED_SIZE(char *, GetAsStringWithSize, PyUnicode_FromStringAndSize, nsMemory::Free)
    139 #endif
    140128GET_ALLOCATED_SIZE(PRUnichar *, GetAsWStringWithSize, PyObject_FromNSString, nsMemory::Free)
    141129
     
    178166}
    179167
    180 struct PyMethodDef
     168struct PyMethodDef 
    181169PyMethods_IVariant[] =
    182170{
  • trunk/src/libs/xpcom18a4/python/src/PyXPCOM.h

    r59769 r59795  
    133133# endif
    134134
    135 # if PY_MAJOR_VERSION >= 3
    136 #  define PyInt_FromLong(l) PyLong_FromLong(l)
    137 #  define PyInt_Check(o) PyLong_Check(o)
    138 #  define PyInt_AsLong(o) PyLong_AsLong(o)
    139 #  define PyNumber_Int(o) PyNumber_Long(o)
    140 #  ifndef PyUnicode_AsUTF8
    141 #   define PyUnicode_AsUTF8(o) _PyUnicode_AsString(o)
    142 #  endif
    143 #  ifndef PyUnicode_AsUTF8AndSize
    144 #   define PyUnicode_AsUTF8AndSize(o,s) _PyUnicode_AsStringAndSize(o,s)
    145 #  endif
    146 typedef struct PyMethodChain
    147 {
    148     PyMethodDef *methods;
    149     struct PyMethodChain *link;
    150 } PyMethodChain;
    151 # endif
    152 
    153135#endif /* VBOX_PYXPCOM */
    154136
     
    286268        static int Py_setattr(PyObject *op, char *name, PyObject *v);
    287269        static int Py_cmp(PyObject *ob1, PyObject *ob2);
    288         static PyObject *Py_richcmp(PyObject *ob1, PyObject *ob2, int op);
    289270        static long Py_hash(PyObject *self);
    290271};
     
    438419        /* Python support */
    439420        static PyObject *PyTypeMethod_getattr(PyObject *self, char *name);
    440 #if PY_MAJOR_VERSION <= 2
    441421        static int PyTypeMethod_compare(PyObject *self, PyObject *ob);
    442 #endif
    443         static PyObject *PyTypeMethod_richcompare(PyObject *self, PyObject *ob, int op);
    444422        static PyObject *PyTypeMethod_repr(PyObject *self);
    445423        static long PyTypeMethod_hash(PyObject *self);
  • trunk/src/libs/xpcom18a4/python/src/Pyxpt_info.cpp

    r59769 r59795  
    5555        }
    5656    // build an object using the same format as a TypeDescriptor.
    57         return Py_BuildValue("bzzz",
     57        return Py_BuildValue("bzzz", 
    5858                d->flags,
    5959                NULL, NULL, NULL);
     
    6666                return Py_None;
    6767        }
    68         return Py_BuildValue("bbbh",
     68        return Py_BuildValue("bbbh", 
    6969                d->prefix.flags,
    7070                d->argnum,
     
    150150                        break;
    151151                case TD_CHAR:
    152 #if PY_MAJOR_VERSION <= 2
    153152                        v = PyString_FromStringAndSize(&c->value.ch, 1);
    154 #else
    155                         v = PyUnicode_FromStringAndSize(&c->value.ch, 1);
    156 #endif
    157153                        break;
    158154                case TD_WCHAR:
    159155                        v = PyObject_FromNSString((PRUnichar *)&c->value.wch, 1);
    160156                        break;
    161         //    TD_VOID              = 13,
     157        //    TD_VOID              = 13, 
    162158                case TD_PNSIID:
    163159                        v = Py_nsIID::PyObjectFromIID(*c->value.iid);
     
    165161        //    TD_DOMSTRING         = 15,
    166162                case TD_PSTRING:
    167 #if PY_MAJOR_VERSION <= 2
    168163                        v = PyString_FromString(c->value.str);
    169 #else
    170                         v = PyUnicode_FromString(c->value.str);
    171 #endif
    172164                        break;
    173165                case TD_PWSTRING:
     
    183175        //    TD_ASTRING           = 25
    184176                default:
    185 #if PY_MAJOR_VERSION <= 2
    186177                        v = PyString_FromString("Unknown type code!!");
    187 #else
    188                         v = PyUnicode_FromString("Unknown type code!!");
    189 #endif
    190178                        break;
    191179
  • trunk/src/libs/xpcom18a4/python/src/TypeObject.cpp

    r59769 r59795  
    5353
    5454static PyTypeObject PyInterfaceType_Type = {
    55         PyVarObject_HEAD_INIT(&PyType_Type, 0)
     55        PyObject_HEAD_INIT(&PyType_Type)
     56        0,                      /* Number of items for varobject */
    5657        "interface-type",                       /* Name of this type */
    5758        sizeof(PyTypeObject),   /* Basic object size */
     
    7980PyXPCOM_TypeObject::IsType(PyTypeObject *t)
    8081{
    81 #if PY_MAJOR_VERSION <= 2
    8282        return t->ob_type == &PyInterfaceType_Type;
    83 #else
    84         return Py_TYPE(t) == &PyInterfaceType_Type;
    85 #endif
    8683}
    8784
     
    125122}
    126123
    127 /*static*/PyObject *
    128 PyXPCOM_TypeObject::Py_richcmp(PyObject *self, PyObject *other, int op)
    129 {
    130     PyObject *result = NULL;
    131     int rc = Py_cmp(self, other);
    132     switch (op)
    133     {
    134         case Py_LT:
    135             result = rc < 0 ? Py_True : Py_False;
    136             break;
    137         case Py_LE:
    138             result = rc <= 0 ? Py_True : Py_False;
    139             break;
    140         case Py_EQ:
    141             result = rc == 0 ? Py_True : Py_False;
    142             break;
    143         case Py_NE:
    144             result = rc != 0 ? Py_True : Py_False;
    145             break;
    146         case Py_GT:
    147             result = rc > 0 ? Py_True : Py_False;
    148             break;
    149         case Py_GE:
    150             result = rc >= 0 ? Py_True : Py_False;
    151             break;
    152     }
    153     Py_XINCREF(result);
    154     return result;
    155 }
    156 
    157124// @pymethod int|Py_nsISupports|__hash__|Implement a hash-code for the XPCOM object using XPCOM identity rules.
    158125/*static*/long PyXPCOM_TypeObject::Py_hash(PyObject *self)
     
    185152        char buf[512];
    186153#ifdef VBOX
    187         snprintf(buf, sizeof(buf), "<XPCOM object (%s) at %p/%p>",
     154        snprintf(buf, sizeof(buf), "<XPCOM object (%s) at 0x%p/0x%p>",
    188155                iid_repr, (void *)self, (void *)pis->m_obj.get());
    189156#else
     
    192159#endif
    193160        nsMemory::Free(iid_repr);
    194 #if PY_MAJOR_VERSION <= 2
    195161        return PyString_FromString(buf);
    196 #else
    197         return PyUnicode_FromString(buf);
    198 #endif
    199162}
    200163
     
    210173        if (NS_SUCCEEDED(rv))
    211174                rv = ss->ToString(&val);
    212         } // end-scope
     175        } // end-scope 
    213176        Py_END_ALLOW_THREADS;
    214177        PyObject *ret;
     
    216179                ret = Py_repr(self);
    217180        else
    218 #if PY_MAJOR_VERSION <= 2
    219181                ret = PyString_FromString(val);
    220 #else
    221                 ret = PyUnicode_FromString(val);
    222 #endif
    223182        if (val) nsMemory::Free(val);
    224183        return ret;
     
    234193{
    235194        static const PyTypeObject type_template = {
    236                 PyVarObject_HEAD_INIT(&PyInterfaceType_Type, 0)
     195                PyObject_HEAD_INIT(&PyInterfaceType_Type)
     196                0,                                           /*ob_size*/
    237197                "XPCOMTypeTemplate",                         /*tp_name*/
    238                 sizeof(Py_nsISupports),                      /*tp_basicsize*/
     198                sizeof(Py_nsISupports),                 /*tp_basicsize*/
    239199                0,                                           /*tp_itemsize*/
    240200                Py_dealloc,                                  /* tp_dealloc */
     
    242202                Py_getattr,                                  /* tp_getattr */
    243203                Py_setattr,                                  /* tp_setattr */
    244 #if PY_MAJOR_VERSION <= 2
    245204                Py_cmp,                                      /* tp_compare */
    246 #else
    247                 0,                                           /* reserved */
    248 #endif
    249205                Py_repr,                                     /* tp_repr */
    250                 0,                                           /* tp_as_number*/
     206                0,                                           /* tp_as_number*/
    251207                0,                                           /* tp_as_sequence */
    252208                0,                                           /* tp_as_mapping */
     
    255211                Py_str,                                      /* tp_str */
    256212                0,                                           /* tp_getattro */
    257                 0,                                           /* tp_setattro */
     213                0,                                           /*tp_setattro */
    258214                0,                                           /* tp_as_buffer */
    259215                0,                                           /* tp_flags */
     
    261217                0,                                           /* tp_traverse */
    262218                0,                                           /* tp_clear */
    263                 Py_richcmp,                                  /* tp_richcompare */
     219                0,                                           /* tp_richcompare */
    264220                0,                                           /* tp_weaklistoffset */
    265221                0,                                           /* tp_iter */
  • trunk/src/libs/xpcom18a4/python/src/VariantUtils.cpp

    r59769 r59795  
    8484        PRUint32 size;
    8585        PyObject *s;
    86         void *src;
    8786        PRUnichar *dest;
    8887
     
    9089        if (!s)
    9190                return -1;
    92         // Drop the UTF-16 byte order mark at the beginning of
    93         // the string.  (See the docs on PyUnicode_AsUTF16String.)
    94         // Some Mozilla libraries don't like the mark.
    95 #if PY_MAJOR_VERSION <= 2
    9691        size = (PyString_GET_SIZE(s) - 2) / sizeof(PRUnichar);
    97         src = PyString_AS_STRING(s) + 2;
    98 #else
    99     if (!PyBytes_Check(obj))
    100     {
    101         PyErr_SetString(PyExc_TypeError, "internal error in PyXPCOM, parameter must be a bytes object");
    102         return -1;
    103     }
    104     size = (PyBytes_GET_SIZE(obj) - 2) / sizeof(PRUnichar);
    105     src = PyBytes_AS_STRING(obj) + 2;
    106 #endif
    10792        dest = (PRUnichar *)nsMemory::Alloc(sizeof(PRUnichar) * (size + 1));
    10893        if (!dest) {
     
    11196                return -1;
    11297        }
    113         memcpy(dest, src, sizeof(PRUnichar) * size);
     98        // Drop the UTF-16 byte order mark at the beginning of
     99        // the string.  (See the docs on PyUnicode_AsUTF16String.)
     100        // Some Mozilla libraries don't like the mark.
     101        memcpy(dest, PyString_AS_STRING(s) + 2, sizeof(PRUnichar) * size);
    114102        Py_DECREF(s);
    115103        dest[size] = 0;
     
    128116        } else {
    129117                if (bAssumeUTF8) {
    130                         const nsPromiseFlatCString& temp = PromiseFlatCString(s);
    131                         ret = PyUnicode_DecodeUTF8(temp.get(), temp.Length(), NULL);
     118                        const nsPromiseFlatCString& temp = PromiseFlatCString(s);
     119                        ret = PyUnicode_DecodeUTF8(temp.get(), temp.Length(), NULL);
    132120                } else {
    133 #if PY_MAJOR_VERSION <= 2
    134121                        ret = PyString_FromStringAndSize(NULL, s.Length());
    135 #else
    136                         ret = PyUnicode_FromStringAndSize(NULL, s.Length());
    137 #endif
    138122                        if (!ret)
    139123                                return NULL;
    140124                        // Need "CopyAsciiTo"!?
    141125                        nsACString::const_iterator fromBegin, fromEnd;
    142 #if PY_MAJOR_VERSION <= 2
    143                         char* dest = (char *)PyString_AS_STRING(ret);
    144 #else
    145                         char* dest = (char *)PyUnicode_AsUTF8(ret);
    146 #endif
     126                        char* dest = PyString_AS_STRING(ret);
    147127                        copy_string(s.BeginReading(fromBegin), s.EndReading(fromEnd), dest);
    148128                }
     
    179159        PyObject *val_use = NULL;
    180160        PRBool ok = PR_TRUE;
    181 #if PY_MAJOR_VERSION <= 2
    182161        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    183162                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    186165        if (ok && (val_use = PyUnicode_FromObject(val))==NULL)
    187166                ok = PR_FALSE;
    188 #else
    189     if (!PyUnicode_Check(val)) {
    190         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    191         ok = PR_FALSE;
    192     }
    193     val_use = val;
    194     Py_INCREF(val_use);
    195 #endif
    196167        if (ok) {
    197168                if (PyUnicode_GET_SIZE(val_use) == 0) {
     
    382353        // If it is NOT a string, we just fall through and allow the standard
    383354        // sequence unpack code process it (just slower!)
    384 #if PY_MAJOR_VERSION <= 2
    385355        if ( array_type == nsXPTType::T_U8 &&
    386356                (PyString_Check(sequence_ob) || PyUnicode_Check(sequence_ob))) {
    387 #else
    388         if ( array_type == nsXPTType::T_U8 && PyUnicode_Check(sequence_ob)) {
    389 #endif
    390357
    391358                PRBool release_seq;
    392359                if (PyUnicode_Check(sequence_ob)) {
    393360                        release_seq = PR_TRUE;
    394 #if PY_MAJOR_VERSION <= 2
    395361                        sequence_ob = PyObject_Str(sequence_ob);
    396 #else
    397                         sequence_ob = PyUnicode_AsUTF8String(sequence_ob);
    398 #endif
    399362                } else
    400363                        release_seq = PR_FALSE;
    401364                if (!sequence_ob) // presumably a memory error, or Unicode encoding error.
    402365                        return PR_FALSE;
    403 #if PY_MAJOR_VERSION <= 2
    404366                memcpy(pthis, PyString_AS_STRING(sequence_ob), sequence_size);
    405 #else
    406                 memcpy(pthis, PyUnicode_AsUTF8(sequence_ob), sequence_size);
    407 #endif
    408367                if (release_seq)
    409368                {
     
    464423                                break;
    465424                          case nsXPTType::T_CHAR:
    466 #if PY_MAJOR_VERSION <= 2
    467425                                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    468426                                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    474432                                NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!");
    475433                                FILL_SIMPLE_POINTER( char, *PyString_AS_STRING(val_use) );
    476 #else
    477                                 if (!PyUnicode_Check(val)) {
    478                                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    479                                         BREAK_FALSE;
    480                                 }
    481                                 FILL_SIMPLE_POINTER( char, *PyUnicode_AsUTF8(val) );
    482 #endif
    483434                                break;
    484435
    485436                          case nsXPTType::T_WCHAR:
    486 #if PY_MAJOR_VERSION <= 2
    487437                                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    488438                                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
    489439                                        BREAK_FALSE;
    490440                                }
    491 #else
    492                                 if (!PyUnicode_Check(val)) {
    493                                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    494                                         BREAK_FALSE;
    495                                 }
    496 #endif
    497441                                if ((val_use = PyUnicode_FromObject(val)) == NULL)
    498442                                        BREAK_FALSE;
     
    530474                                if (val == Py_None)
    531475                                        break; // Remains NULL.
    532 #if PY_MAJOR_VERSION <= 2
    533476                                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    534477                                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    542485                                const char *sz = PyString_AS_STRING(val_use);
    543486                                int nch = PyString_GET_SIZE(val_use);
    544 #else
    545                                 if (!PyUnicode_Check(val)) {
    546                                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    547                                         BREAK_FALSE;
    548                                 }
    549                                 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
    550                                         BREAK_FALSE;
    551 
    552                                 const char *sz = PyBytes_AS_STRING(val_use);
    553                                 int nch = PyBytes_GET_SIZE(val_use);
    554 #endif
    555487
    556488                                *pp = (char *)nsMemory::Alloc(nch+1);
     
    570502                                if (val == Py_None)
    571503                                        break; // Remains NULL.
    572 #if PY_MAJOR_VERSION <= 2
    573504                                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    574505                                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    578509                                        BREAK_FALSE;
    579510                                NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!");
    580 #else
    581                                 if (!PyUnicode_Check(val)) {
    582                                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    583                                         BREAK_FALSE;
    584                                 }
    585                                 val_use = val;
    586                 Py_INCREF(val_use);
    587 #endif
    588511                                if (PyUnicode_AsPRUnichar(val_use, pp, NULL) < 0)
    589512                                        BREAK_FALSE;
     
    626549        }
    627550        if (array_type == nsXPTType::T_U8)
    628 #if PY_MAJOR_VERSION <= 2
    629551                return PyString_FromStringAndSize( (char *)array_ptr, sequence_size );
    630 #else
    631                 return PyUnicode_FromStringAndSize( (char *)array_ptr, sequence_size );
    632 #endif
    633552
    634553        PRUint32 array_element_size = GetArrayElementSize(array_type);
     
    680599                                        val = Py_None;
    681600                                } else
    682 #if PY_MAJOR_VERSION <= 2
    683601                                        val = PyString_FromString(*pp);
    684 #else
    685                                         val = PyUnicode_FromString(*pp);
    686 #endif
    687602                                break;
    688603                                }
     
    717632                                sprintf(buf, "Unknown XPCOM array type flags (0x%x)", array_type);
    718633                                PyXPCOM_LogWarning("%s - returning a string object with this message!\n", buf);
    719 #if PY_MAJOR_VERSION <= 2
    720634                                val = PyString_FromString(buf);
    721 #else
    722                                 val = PyUnicode_FromString(buf);
    723 #endif
    724635                                break;
    725636                                }
     
    759670        if (PyFloat_Check(ob))
    760671                return nsIDataType::VTYPE_DOUBLE;
    761 #if PY_MAJOR_VERSION <= 2
    762672        if (PyString_Check(ob))
    763673                return nsIDataType::VTYPE_STRING_SIZE_IS;
    764 #endif
    765674        if (PyUnicode_Check(ob))
    766675                return nsIDataType::VTYPE_WSTRING_SIZE_IS;
     
    817726                        break;
    818727                case nsIDataType::VTYPE_STRING_SIZE_IS:
    819 #if PY_MAJOR_VERSION <= 2
    820728                        nr = v->SetAsStringWithSize(PyString_Size(ob), PyString_AsString(ob));
    821 #else
    822             Py_ssize_t cb;
    823             const char *psz;
    824             psz = PyUnicode_AsUTF8AndSize(ob, &cb);
    825                         nr = v->SetAsStringWithSize(cb, psz);
    826 #endif
    827729                        break;
    828730                case nsIDataType::VTYPE_WSTRING_SIZE_IS:
     
    13941296                        break;
    13951297                  case nsXPTType::T_CHAR:{
    1396 #if PY_MAJOR_VERSION <= 2
    13971298                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    13981299                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    14091310
    14101311                        ns_v.val.c = *PyString_AS_STRING(val_use);
    1411 #else
    1412                         if (!PyUnicode_Check(val)) {
    1413                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1414                                 BREAK_FALSE;
    1415                         }
    1416                         if (PyUnicode_GET_SIZE(val) != 1) {
    1417                                 PyErr_SetString(PyExc_ValueError, "Must specify a one character string for a character");
    1418                                 BREAK_FALSE;
    1419                         }
    1420 
    1421                         ns_v.val.c = *PyUnicode_AS_UNICODE(val_use);
    1422 #endif
    14231312                        break;
    14241313                        }
    14251314
    14261315                  case nsXPTType::T_WCHAR: {
    1427 #if PY_MAJOR_VERSION <= 2
    14281316                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    14291317                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
    14301318                                BREAK_FALSE;
    14311319                        }
    1432 #else
    1433                         if (!PyUnicode_Check(val)) {
    1434                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1435                                 BREAK_FALSE;
    1436                         }
    1437 #endif
    14381320                        if ((val_use = PyUnicode_FromObject(val))==NULL)
    14391321                                BREAK_FALSE;
    1440                         // Sanity check should PyUnicode_FromObject() ever loosen its semantics wrt Unicode!
     1322                        // Sanity check should PyObject_Str() ever loosen its semantics wrt Unicode!
    14411323                        NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a unicode object!");
    1442                         if (PyUnicode_GET_SIZE(val_use) != 1) {
     1324                        if (PyUnicode_GetSize(val_use) != 1) {
    14431325                                PyErr_SetString(PyExc_ValueError, "Must specify a one character string for a character");
    14441326                                BREAK_FALSE;
     
    14781360                                ns_v.val.p = new nsCString();
    14791361                        } else {
    1480 #if PY_MAJOR_VERSION <= 2
     1362                                // strings are assumed to already be UTF8 encoded.
    14811363                                if (PyString_Check(val)) {
    1482                     // strings are assumed to already be UTF8 encoded.
    14831364                                        val_use = val;
    14841365                                        Py_INCREF(val);
    1485                                 }
    1486                 else
    1487 #endif
    1488                 if (PyUnicode_Check(val)) {
    1489                     // Unicode objects are encoded by us.
     1366                                // Unicode objects are encoded by us.
     1367                                } else if (PyUnicode_Check(val)) {
    14901368                                        if (bIsUTF8)
    14911369                                                val_use = PyUnicode_AsUTF8String(val);
    14921370                                        else
    1493 #if PY_MAJOR_VERSION <= 2
    14941371                                                val_use = PyObject_Str(val);
    1495 #else
    1496                                                 val_use = PyUnicode_AsUTF8String(val);
    1497 #endif
    14981372                                } else {
    1499 #if PY_MAJOR_VERSION <= 2
    15001373                                        PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be string or Unicode objects");
    1501 #else
    1502                                         PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be unicode objects");
    1503 #endif
    15041374                                        BREAK_FALSE;
    15051375                                }
    15061376                                if (!val_use)
    15071377                                        BREAK_FALSE;
    1508 #if PY_MAJOR_VERSION <= 2
    15091378                                ns_v.val.p = new nsCString(PyString_AS_STRING(val_use),
    15101379                                                           PyString_GET_SIZE(val_use));
    1511 #else
    1512                                 ns_v.val.p = new nsCString(PyBytes_AS_STRING(val_use),
    1513                                                            PyBytes_GET_SIZE(val_use));
    1514 #endif
    15151380                        }
    15161381
     
    15281393                                break;
    15291394                        }
    1530 #if PY_MAJOR_VERSION <= 2
    15311395                        // If an "in" char *, and we have a PyString, then pass the
    15321396                        // pointer (hoping everyone else plays by the rules too.
    15331397                        if (!XPT_PD_IS_OUT(td.param_flags) && PyString_Check(val)) {
    1534                                 ns_v.val.p = (void *)PyString_AS_STRING(val);
     1398                                ns_v.val.p = PyString_AS_STRING(val);
    15351399                                break;
    15361400                        }
     
    15481412                        MAKE_VALUE_BUFFER(cb_this_buffer_pointer);
    15491413                        memcpy(this_buffer_pointer, PyString_AS_STRING(val_use), cb_this_buffer_pointer);
    1550 #else
    1551 
    1552                         if (!PyUnicode_Check(val)) {
    1553                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1554                                 BREAK_FALSE;
    1555                         }
    1556                         if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
    1557                                 BREAK_FALSE;
    1558 
    1559                         cb_this_buffer_pointer = PyBytes_GET_SIZE(val_use)+1;
    1560                         MAKE_VALUE_BUFFER(cb_this_buffer_pointer);
    1561                         memcpy(this_buffer_pointer, PyBytes_AS_STRING(val_use), cb_this_buffer_pointer);
    1562 #endif
    15631414                        ns_v.val.p = this_buffer_pointer;
    15641415                        break;
     
    15701421                                break;
    15711422                        }
    1572 #if PY_MAJOR_VERSION <= 2
    15731423                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    15741424                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    15781428                                BREAK_FALSE;
    15791429                        NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!");
    1580 #else
    1581                         if (!PyUnicode_Check(val)) {
    1582                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1583                                 BREAK_FALSE;
    1584                         }
    1585             val_use = val;
    1586             Py_INCREF(val_use);
    1587 #endif
    15881430                        PRUnichar *sv;
    15891431                        PRUint32 nch;
     
    16421484                                break;
    16431485                        }
    1644 #if PY_MAJOR_VERSION <= 2
    16451486                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    16461487                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    16551496                        MAKE_VALUE_BUFFER(cb_this_buffer_pointer);
    16561497                        memcpy(this_buffer_pointer, PyString_AS_STRING(val_use), cb_this_buffer_pointer);
    1657 #else
    1658                         if (!PyUnicode_Check(val)) {
    1659                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1660                                 BREAK_FALSE;
    1661                         }
    1662                         if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
    1663                                 BREAK_FALSE;
    1664 
    1665                         cb_this_buffer_pointer = PyBytes_GET_SIZE(val_use);
    1666                         MAKE_VALUE_BUFFER(cb_this_buffer_pointer);
    1667                         memcpy(this_buffer_pointer, PyBytes_AS_STRING(val_use), cb_this_buffer_pointer);
    1668 #endif
    16691498                        ns_v.val.p = this_buffer_pointer;
    16701499                        rc = SetSizeIs(value_index, PR_TRUE, cb_this_buffer_pointer);
     
    16771506                                break;
    16781507                        }
    1679 #if PY_MAJOR_VERSION <= 2
    16801508                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    16811509                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    16861514                        // Sanity check should PyObject_Str() ever loosen its semantics wrt Unicode!
    16871515                        NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyObject_Unicode didnt return a unicode object!");
    1688 #else
    1689                         if (!PyUnicode_Check(val)) {
    1690                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    1691                                 BREAK_FALSE;
    1692                         }
    1693             val_use = val;
    1694             Py_INCREF(val_use);
    1695 #endif
    16961516                        PRUnichar *sv;
    16971517                        PRUint32 nch;
     
    18991719                break;
    19001720          case nsXPTType::T_CHAR:
    1901 #if PY_MAJOR_VERSION <= 2
    19021721                ret = PyString_FromStringAndSize( ((char *)ns_v.ptr), 1 );
    1903 #else
    1904                 ret = PyUnicode_FromStringAndSize( ((char *)ns_v.ptr), 1 );
    1905 #endif
    19061722                break;
    19071723
     
    19311747                        Py_INCREF(Py_None);
    19321748                } else
    1933 #if PY_MAJOR_VERSION <= 2
    19341749                        ret = PyString_FromString( *((char **)ns_v.ptr) );
    1935 #else
    1936                         ret = PyUnicode_FromString( *((char **)ns_v.ptr) );
    1937 #endif
    19381750                break;
    19391751
     
    20161828                } else {
    20171829                        PRUint32 string_size = GetSizeIs(index, PR_TRUE);
    2018 #if PY_MAJOR_VERSION <= 2
    20191830                        ret = PyString_FromStringAndSize( *((char **)ns_v.ptr), string_size );
    2020 #else
    2021                         ret = PyUnicode_FromStringAndSize( *((char **)ns_v.ptr), string_size );
    2022 #endif
    20231831                }
    20241832                break;
     
    22752083          case nsXPTType::T_CHAR: {
    22762084                char temp = DEREF_IN_OR_OUT(ns_v.val.c, char);
    2277 #if PY_MAJOR_VERSION <= 2
    22782085                ret = PyString_FromStringAndSize(&temp, 1);
    2279 #else
    2280                 ret = PyUnicode_FromStringAndSize(&temp, 1);
    2281 #endif
    22822086                break;
    22832087                }
     
    23122116                        Py_INCREF(Py_None);
    23132117                } else
    2314 #if PY_MAJOR_VERSION <= 2
    23152118                        ret = PyString_FromString(t);
    2316 #else
    2317                         ret = PyUnicode_FromString(t);
    2318 #endif
    23192119                break;
    23202120                }
     
    23782178                        Py_INCREF(Py_None);
    23792179                } else
    2380 #if PY_MAJOR_VERSION <= 2
    23812180                        ret = PyString_FromStringAndSize(t, string_size);
    2382 #else
    2383                         ret = PyUnicode_FromStringAndSize(t, string_size);
    2384 #endif
    23852181                break;
    23862182                }
     
    24032199                sprintf(buf, "Unknown XPCOM type flags (0x%x)", td.type_flags);
    24042200                PyXPCOM_LogWarning("%s - returning a string object with this message!\n", buf);
    2405 #if PY_MAJOR_VERSION <= 2
    24062201                ret = PyString_FromString(buf);
    2407 #else
    2408                 ret = PyUnicode_FromString(buf);
    2409 #endif
    24102202                break;
    24112203                }
     
    25482340                break;
    25492341          case nsXPTType::T_CHAR:
    2550 #if PY_MAJOR_VERSION <= 2
    25512342                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    25522343                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    25582349                NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!");
    25592350                FILL_SIMPLE_POINTER( char, *PyString_AS_STRING(val_use) );
    2560 #else
    2561                 if (!PyUnicode_Check(val)) {
    2562                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2563                         BREAK_FALSE;
    2564                 }
    2565                 FILL_SIMPLE_POINTER( char, *PyUnicode_AS_UNICODE(val) );
    2566 #endif
    25672351                break;
    25682352
    25692353          case nsXPTType::T_WCHAR:
    2570 #if PY_MAJOR_VERSION <= 2
    25712354                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    25722355                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
    25732356                        BREAK_FALSE;
    25742357                }
    2575 #else
    2576                 if (!PyUnicode_Check(val)) {
    2577                         PyErr_SetString(PyExc_TypeError, "This parameter must be a Unicode object");
    2578                         BREAK_FALSE;
    2579                 }
    2580 #endif
    25812358                if ((val_use = PyUnicode_FromObject(val))==NULL)
    25822359                        BREAK_FALSE;
     
    26182395                        NS_ABORT_IF_FALSE(0, "dont handle None here yet");
    26192396                } else {
    2620 #if PY_MAJOR_VERSION <= 2
    26212397                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    26222398                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    26262402                        NS_ABORT_IF_FALSE(PyString_Check(val_use), "PyObject_Str didnt return a string object!");
    26272403                        const char *sz = PyString_AS_STRING(val_use);
    2628                         ws->Assign(sz, PyString_GET_SIZE(val_use));
    2629 #else
    2630                         if (!PyUnicode_Check(val)) {
    2631                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2632                                 BREAK_FALSE;
    2633                         }
    2634                         val_use = PyUnicode_AsUTF8String(val);
    2635                         const char *sz = PyBytes_AS_STRING(val_use);
    2636                         ws->Assign(sz, PyBytes_GET_SIZE(val_use));
    2637 #endif
     2404                        ws->Assign(sz, PyString_Size(val_use));
    26382405                }
    26392406                break;
     
    26452412                        NS_ABORT_IF_FALSE(0, "dont handle None here yet");
    26462413                } else {
    2647 #if PY_MAJOR_VERSION <= 2
    26482414                        if (PyString_Check(val)) {
    26492415                                val_use = val;
    26502416                                Py_INCREF(val);
    2651                         }
    2652             else
    2653 #endif
    2654             if (PyUnicode_Check(val)) {
     2417                        } else if (PyUnicode_Check(val)) {
    26552418                                val_use = PyUnicode_AsUTF8String(val);
    26562419                        } else {
    2657 #if PY_MAJOR_VERSION <= 2
    26582420                                PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be string or Unicode objects");
    2659 #else
    2660                                 PyErr_SetString(PyExc_TypeError, "UTF8 parameters must be unicode objects");
    2661 #endif
    2662                                 BREAK_FALSE;
    2663                         }
    2664 #if PY_MAJOR_VERSION <= 2
     2421                                BREAK_FALSE;
     2422                        }
    26652423                        NS_ABORT_IF_FALSE(PyString_Check(val_use), "must have a string object!");
    26662424                        const char *sz = PyString_AS_STRING(val_use);
    2667                         ws->Assign(sz, PyString_GET_SIZE(val_use));
    2668 #else
    2669                         NS_ABORT_IF_FALSE(PyBytes_Check(val_use), "must have a bytes object!");
    2670                         const char *sz = PyBytes_AS_STRING(val_use);
    2671                         ws->Assign(sz, PyBytes_GET_SIZE(val_use));
    2672 #endif
     2425                        ws->Assign(sz, PyString_Size(val_use));
    26732426                }
    26742427                break;
     
    26842437                if (val == Py_None)
    26852438                        break; // Remains NULL.
    2686 #if PY_MAJOR_VERSION <= 2
    26872439                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    26882440                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    26962448                const char *sz = PyString_AS_STRING(val_use);
    26972449                int nch = PyString_GET_SIZE(val_use);
    2698 #else
    2699                 if (!PyUnicode_Check(val)) {
    2700                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2701                         BREAK_FALSE;
    2702                 }
    2703                 if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
    2704                         BREAK_FALSE;
    2705 
    2706                 const char *sz = PyBytes_AS_STRING(val_use);
    2707                 int nch = PyBytes_GET_SIZE(val_use);
    2708 #endif
    27092450
    27102451                *pp = (char *)nsMemory::Alloc(nch+1);
     
    27242465                if (val == Py_None)
    27252466                        break; // Remains NULL.
    2726 #if PY_MAJOR_VERSION <= 2
    27272467                if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    27282468                        PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    27312471                val_use = PyUnicode_FromObject(val);
    27322472                NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!");
    2733 #else
    2734                 if (!PyUnicode_Check(val)) {
    2735                         PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2736                         BREAK_FALSE;
    2737                 }
    2738         val_use = val;
    2739         Py_INCREF(val_use);
    2740 #endif
    27412473                if (PyUnicode_AsPRUnichar(val_use, pp, NULL) < 0)
    27422474                        BREAK_FALSE;
     
    27932525                PRUint32 nch = 0;
    27942526                if (val != Py_None) {
    2795 #if PY_MAJOR_VERSION <= 2
    27962527                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    27972528                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    28052536                        sz = PyString_AS_STRING(val_use);
    28062537                        nch = PyString_GET_SIZE(val_use);
    2807 #else
    2808                         if (!PyUnicode_Check(val)) {
    2809                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2810                                 BREAK_FALSE;
    2811                         }
    2812                         if ((val_use = PyUnicode_AsUTF8String(val))==NULL)
    2813                                 BREAK_FALSE;
    2814 
    2815                         sz = PyBytes_AS_STRING(val_use);
    2816                         nch = PyBytes_GET_SIZE(val_use);
    2817 #endif
    28182538                }
    28192539                PRBool bBackFill = PR_FALSE;
     
    28622582
    28632583                if (val != Py_None) {
    2864 #if PY_MAJOR_VERSION <= 2
    28652584                        if (!PyString_Check(val) && !PyUnicode_Check(val)) {
    28662585                                PyErr_SetString(PyExc_TypeError, "This parameter must be a string or Unicode object");
     
    28692588                        val_use = PyUnicode_FromObject(val);
    28702589                        NS_ABORT_IF_FALSE(PyUnicode_Check(val_use), "PyUnicode_FromObject didnt return a Unicode object!");
    2871 #else
    2872                         if (!PyUnicode_Check(val)) {
    2873                                 PyErr_SetString(PyExc_TypeError, "This parameter must be a unicode object");
    2874                                 BREAK_FALSE;
    2875                         }
    2876             val_use = val;
    2877             Py_INCREF(val_use);
    2878 #endif
    28792590                        if (PyUnicode_AsPRUnichar(val_use, &sz, &nch) < 0)
    28802591                                BREAK_FALSE;
     
    30392750                // But the retval is often the last param described in the info.
    30402751                if (!PySequence_Check(user_result) ||
    3041 #if PY_MAJOR_VERSION <= 2
    30422752                     PyString_Check(user_result) ||
    3043 #else
    3044                      PyBytes_Check(user_result) ||
    3045 #endif
    30462753                     PyUnicode_Check(user_result)) {
    30472754                        PyErr_SetString(PyExc_TypeError, "This function has multiple results, but a sequence was not given to fill them");
  • trunk/src/libs/xpcom18a4/python/src/dllmain.cpp

    r59769 r59795  
    196196        CEnterLeaveXPCOMFramework _celf;
    197197        PRInt32 cnt = PR_AtomicIncrement(&g_cLockCount);
    198         if (cnt==1) { // First call
     198        if (cnt==1) { // First call 
    199199                if (!Py_IsInitialized()) {
    200200                        Py_Initialize();
     
    204204                        if (PySys_GetObject((char*)"argv")==NULL) {
    205205                                PyObject *path = PyList_New(0);
    206 #if PY_MAJOR_VERSION <= 2
    207206                                PyObject *str = PyString_FromString("");
    208 #else
    209                                 PyObject *str = PyUnicode_FromString("");
    210 #endif
    211207                                PyList_Append(path, str);
    212208                                PySys_SetObject((char*)"argv", path);
     
    250246        PR_DestroyLock(g_lockMain);
    251247#ifndef PYXPCOM_USE_PYGILSTATE
    252         // I can't locate a way to kill this -
     248        // I can't locate a way to kill this - 
    253249        // should I pass a dtor to PR_NewThreadPrivateIndex??
    254250        // TlsFree(tlsIndex);
     
    334330                bHaveInitXPCOM = PR_TRUE;
    335331                // Register our custom interfaces.
    336 
     332       
    337333                Py_nsISupports::InitType();
    338334                Py_nsIComponentManager::InitType();
     
    346342                // for backward compatibility:
    347343                Py_nsIComponentManagerObsolete::InitType();
    348 
     344               
    349345        }
    350346        return rc;
  • trunk/src/libs/xpcom18a4/python/src/module/_xpcom.cpp

    r59769 r59795  
    8484# endif
    8585# ifdef VBOX_PYXPCOM_VERSIONED
    86 #  if   PY_VERSION_HEX >= 0x03080000 && PY_VERSION_HEX < 0x03090000
    87 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_8")
    88 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_8)
    89 
    90 #  elif PY_VERSION_HEX >= 0x03070000 && PY_VERSION_HEX < 0x03080000
    91 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_7")
    92 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_7)
    93 
    94 #  elif PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x03070000
    95 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_6")
    96 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_6)
    97 
    98 #  elif PY_VERSION_HEX >= 0x03050000 && PY_VERSION_HEX < 0x03060000
    99 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_5")
    100 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_5)
    101 
    102 #  elif PY_VERSION_HEX >= 0x03040000 && PY_VERSION_HEX < 0x03050000
    103 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_4")
    104 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_4)
    105 
    106 #  elif PY_VERSION_HEX >= 0x03030000 && PY_VERSION_HEX < 0x03040000
    107 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_3")
    108 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_3)
    109 
    110 #  elif PY_VERSION_HEX >= 0x03020000 && PY_VERSION_HEX < 0x03030000
    111 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_2")
    112 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_2)
    113 
    114 #  elif PY_VERSION_HEX >= 0x03010000 && PY_VERSION_HEX < 0x03020000
    115 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_1")
    116 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_1)
    117 
    118 #  elif PY_VERSION_HEX >= 0x02080000 && PY_VERSION_HEX < 0x02090000
     86#  if   PY_VERSION_HEX >= 0x02080000
    11987#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_8")
    12088#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_8)
    12189
    122 #  elif PY_VERSION_HEX >= 0x02070000 && PY_VERSION_HEX < 0x02080000
     90#  elif PY_VERSION_HEX >= 0x02070000
    12391#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_7")
    12492#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_7)
    12593
    126 #  elif PY_VERSION_HEX >= 0x02060000 && PY_VERSION_HEX < 0x02070000
     94#  elif PY_VERSION_HEX >= 0x02060000
    12795#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_6")
    12896#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_6)
     97
     98#  elif PY_VERSION_HEX >= 0x02050000
     99#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_5")
     100#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_5)
     101
     102#  elif PY_VERSION_HEX >= 0x02040000
     103#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_4")
     104#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_4)
     105
     106#  elif PY_VERSION_HEX >= 0x02030000
     107#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython2_3")
     108#   define initVBoxPython MANGLE_MODULE_INIT(initVBoxPython2_3)
    129109#  else
    130 #   error "Fix module versioning. This Python version is not recognized."
     110#   error "Fix module versioning."
    131111#  endif
    132112# else
    133113#  define MODULE_NAME     MANGLE_MODULE_NAME("VBoxPython")
    134 #  if PY_MAJOR_VERSION <= 2
    135 #   define initVBoxPython  MANGLE_MODULE_INIT(initVBoxPython)
    136 #  else
    137 #   define initVBoxPython  MANGLE_MODULE_INIT(PyInit_VBoxPython)
    138 #  endif
     114#  define initVBoxPython  MANGLE_MODULE_INIT(initVBoxPython)
    139115# endif
    140116#else
     
    145121// interface support!
    146122
    147 #ifndef VBOX
    148123/* deprecated, included for backward compatibility */
    149124static PyObject *
     
    168143        return Py_nsISupports::PyObjectFromInterface(ocm, NS_GET_IID(nsIComponentManagerObsolete), PR_FALSE);
    169144}
    170 #endif
    171145
    172146static PyObject *
     
    221195}
    222196
    223 #ifndef VBOX
    224197/* deprecated, included for backward compatibility */
    225198static PyObject *
     
    231204        return PyXPCOMMethod_GetComponentManager(self, args);
    232205}
    233 #endif
    234206
    235207static PyObject *
     
    528500        if (!PyArg_ParseTuple(args, "i", &bufSize))
    529501                return NULL;
    530 #if PY_MAJOR_VERSION <= 2
    531502        return PyBuffer_New(bufSize);
    532 #else
    533     return PyBytes_FromStringAndSize(NULL, bufSize);
    534 #endif
    535503}
    536504
     
    703671        {"GetComponentManager", PyXPCOMMethod_GetComponentManager, 1},
    704672        {"GetComponentRegistrar", PyXPCOMMethod_GetComponentRegistrar, 1},
    705 #ifndef VBOX
    706673        {"NS_GetGlobalComponentManager", PyXPCOMMethod_NS_GetGlobalComponentManager, 1}, // deprecated
    707 #endif
    708674        {"XPTI_GetInterfaceInfoManager", PyXPCOMMethod_XPTI_GetInterfaceInfoManager, 1},
    709675        {"XPTC_InvokeByIndex", PyXPCOMMethod_XPTC_InvokeByIndex, 1},
    710676        {"GetServiceManager", PyXPCOMMethod_GetServiceManager, 1},
    711 #ifndef VBOX
    712677        {"GetGlobalServiceManager", PyXPCOMMethod_GetGlobalServiceManager, 1}, // deprecated
    713678        {"IID", PyXPCOMMethod_IID, 1}, // IID is wrong - deprecated - not just IID, but CID, etc.
    714 #endif
    715679        {"ID", PyXPCOMMethod_IID, 1}, // This is the official name.
    716680        {"NS_ShutdownXPCOM", PyXPCOMMethod_NS_ShutdownXPCOM, 1},
     
    727691        {"GetVariantValue", PyXPCOMMethod_GetVariantValue, 1},
    728692#ifdef VBOX
    729     {"WaitForEvents", PyXPCOMMethod_WaitForEvents, 1},
    730     {"InterruptWait", PyXPCOMMethod_InterruptWait, 1},
    731     {"DeinitCOM",     PyXPCOMMethod_DeinitCOM, 1},
    732     {"AttachThread",  PyXPCOMMethod_AttachThread, 1},
    733     {"DetachThread",  PyXPCOMMethod_DetachThread, 1},
     693        {"WaitForEvents", PyXPCOMMethod_WaitForEvents, 1},
     694        {"InterruptWait", PyXPCOMMethod_InterruptWait, 1},
     695        {"DeinitCOM",     PyXPCOMMethod_DeinitCOM, 1},
     696        {"AttachThread",  PyXPCOMMethod_AttachThread, 1},
     697        {"DetachThread",  PyXPCOMMethod_DetachThread, 1},
    734698#endif
    735699#ifdef VBOX_DEBUG_LIFETIMES
     
    741705};
    742706
    743 #if PY_MAJOR_VERSION >= 3
    744 static struct PyModuleDef xpcom_module =
    745 {
    746     PyModuleDef_HEAD_INIT,
    747     MODULE_NAME,    /* name of module */
    748     NULL,           /* module documentation */
    749     -1,             /* size of per-interpreter state or -1 if using globals */
    750     xpcom_methods
    751 };
    752 #endif
    753 
    754 
    755707#define REGISTER_IID(t) { \
    756708        PyObject *iid_ob = Py_nsIID::PyObjectFromIID(NS_GET_IID(t)); \
     
    769721// The module init code.
    770722//
    771 #if PY_MAJOR_VERSION <= 2
    772723extern "C" NS_EXPORT
    773724void
    774 #else
    775 PyObject *
    776 #endif
    777725init_xpcom() {
    778726        PyObject *oModule;
     
    780728        // ensure the framework has valid state to work with.
    781729        if (!PyXPCOM_Globals_Ensure())
    782 #if PY_MAJOR_VERSION <= 2
    783730                return;
    784 #else
    785                 return NULL;
    786 #endif
    787731
    788732        // Must force Python to start using thread locks
     
    790734
    791735        // Create the module and add the functions
    792 #if PY_MAJOR_VERSION <= 2
    793736        oModule = Py_InitModule(MODULE_NAME, xpcom_methods);
    794 #else
    795         oModule = PyModule_Create(&xpcom_module);
    796 #endif
    797737
    798738        PyObject *dict = PyModule_GetDict(oModule);
     
    801741        {
    802742                PyErr_SetString(PyExc_MemoryError, "can't define error");
    803 #if PY_MAJOR_VERSION <= 2
    804743                return;
    805 #else
    806                 return NULL;
    807 #endif
    808744        }
    809745        PyDict_SetItemString(dict, "IIDType", (PyObject *)&Py_nsIID::type);
     
    848784    PyDict_SetItemString(dict, "NS_DEBUG", ob);
    849785    Py_DECREF(ob);
    850 #if PY_MAJOR_VERSION >= 3
    851     return oModule;
    852 #endif
    853786}
    854787
     
    862795#include <iprt/stream.h>
    863796
    864 #if PY_MAJOR_VERSION <= 2
    865797extern "C" NS_EXPORT
    866798void
    867 #else
    868 /** @todo r=klaus this is hacky, but as Python3 doesn't deal with ELF
    869  * visibility, assuming that all globals are visible (which is ugly and not
    870  * true in our case). */
    871 #undef PyMODINIT_FUNC
    872 #define PyMODINIT_FUNC extern "C" NS_EXPORT PyObject*
    873 PyMODINIT_FUNC
    874 #endif
    875799initVBoxPython() { /* NOTE! This name is redefined at the top of the file! */
    876800  static bool s_vboxInited = false;
     
    895819    rc = com::Initialize();
    896820
    897 #if PY_MAJOR_VERSION <= 2
    898821    init_xpcom();
    899 #else
    900     return init_xpcom();
    901 #endif
    902822  }
    903 #if PY_MAJOR_VERSION >= 3
    904   return NULL;
    905 #endif
    906823}
    907824
  • trunk/src/libs/xpcom18a4/python/test/test_test_component.py

    r59769 r59795  
    253253    test_attribute(c, "iid_value", component_iid, new_iid)
    254254    test_attribute(c, "iid_value", component_iid, str(new_iid), new_iid)
    255     test_attribute(c, "iid_value", component_iid, xpcom._xpcom.ID(new_iid))
     255    test_attribute(c, "iid_value", component_iid, xpcom._xpcom.IID(new_iid))
    256256
    257257    test_attribute_failure(c, "no_attribute", "boo", AttributeError)
  • trunk/src/libs/xpcom18a4/python/vboxxpcom.py

    r59769 r59795  
    11"""
    2 Copyright (C) 2008-2016 Oracle Corporation
     2Copyright (C) 2008-2012 Oracle Corporation
    33
    44This file is part of VirtualBox Open Source Edition (OSE), as
     
    4747        _oVBoxPythonMod =  __import__(m)
    4848        break
    49     except Exception as x:
    50         print('m=%s x=%s' % (m, x))
     49    except Exception, x:
     50        print 'm=%s x=%s' % (m, x);
    5151    #except:
    5252    #    pass
  • trunk/src/libs/xpcom18a4/python/xpt.py

    r59769 r59795  
    7272import xpcom._xpcom
    7373
    74 from .xpcom_consts import *
     74from xpcom_consts import *
    7575
    7676class Interface:
     
    100100            if xpcom.verbose:
    101101                # The user may be confused as to why this is happening!
    102                 print("The parent interface of IID '%s' can not be located - assuming nsISupports")
     102                print "The parent interface of IID '%s' can not be located - assuming nsISupports"
    103103            return Interface(xpcom._xpcom.IID_nsISupports)
    104104
    105105    def Describe_Python(self):
    106106        method_reprs = []
    107         methods = [m for m in self.methods if not m.IsNotXPCOM()]
     107        methods = filter(lambda m: not m.IsNotXPCOM(), self.methods)
    108108        for m in methods:
    109109            method_reprs.append(m.Describe_Python())
     
    130130        s = s + '         Scriptable: ' + word + '\n'
    131131        s = s + '      Methods:\n'
    132         methods = [m for m in self.methods if not m.IsNotXPCOM()]
     132        methods = filter(lambda m: not m.IsNotXPCOM(), self.methods)
    133133        if len(methods):
    134134            for m in methods:
     
    153153        except xpcom.Exception:
    154154            if xpcom.verbose:
    155                 print("** GetMethodCount failed?? - assuming no methods")
     155                print "** GetMethodCount failed?? - assuming no methods"
    156156            self.items = []
    157157    def __len__(self):
     
    252252
    253253        def desc(a): return a.Describe()
    254         method_desc = string.join(list(map(desc, self.params)), ', ')
     254        method_desc = string.join(map(desc, self.params), ', ')
    255255        result_type = TypeDescriber(self.result_desc[0], None)
    256256        return_desc = result_type.Describe()
     
    329329        except xpcom.Exception:
    330330            if xpcom.verbose:
    331                 print("** GetConstantCount failed?? - assuming no constants")
     331                print "** GetConstantCount failed?? - assuming no constants"
    332332            self.items = []
    333333    def __len__(self):
     
    452452        describer_name = describer_name + "_" + mode.capitalize()
    453453    describer = getattr(interface, describer_name)
    454     print(describer())
     454    print describer()
    455455
    456456if __name__=='__main__':
    457457    if len(sys.argv) == 1:
    458         print("Usage: xpt.py [-xptinfo] interface_name, ...")
    459         print("  -info: Dump in a style similar to the xptdump tool")
    460         print("Dumping nsISupports and nsIInterfaceInfo")
     458        print "Usage: xpt.py [-xptinfo] interface_name, ..."
     459        print "  -info: Dump in a style similar to the xptdump tool"
     460        print "Dumping nsISupports and nsIInterfaceInfo"
    461461        sys.argv.append('nsIInterfaceInfo')
    462462        sys.argv.append('-xptinfo')
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette