VirtualBox

Ignore:
Timestamp:
Jul 17, 2012 12:23:50 PM (13 years ago)
Author:
vboxsync
Message:

Main+Frontends/VBoxManage: implement saving the settings, and add the matching VBoxManage support

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h

    r41347 r42176  
    2424#include <VBox/com/VirtualBox.h>
    2525#include <VBox/com/string.h>
     26#include <VBox/com/array.h>
    2627#endif /* !VBOX_ONLY_DOCS */
    2728
     
    171172
    172173/* VBoxManageModifyVM.cpp */
     174#ifndef VBOX_ONLY_DOCS
     175void parseGroups(const char *pcszGroups, com::SafeArray<BSTR> *pGroups);
     176#endif
    173177int handleModifyVM(HandlerArg *a);
    174178
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r42129 r42176  
    137137        RTStrmPrintf(pStrm,
    138138                     "VBoxManage createvm         --name <name>\n"
     139                     "                            [--groups <group>, ...]\n"
    139140                     "                            [--ostype <ostype>]\n"
    140141                     "                            [--register]\n"
     
    148149                     "VBoxManage modifyvm         <uuid|name>\n"
    149150                     "                            [--name <name>]\n"
     151                     "                            [--groups <group>, ...]\n"
    150152                     "                            [--ostype <ostype>]\n"
    151153                     "                            [--memory <memorysize in MB>]\n"
     
    355357                     "                                       keepdisknames]\n"
    356358                     "                            [--name <name>]\n"
     359                     "                            [--groups <group>, ...]\n"
    357360                     "                            [--basefolder <basefolder>]\n"
    358361                     "                            [--uuid <uuid>]\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp

    r42131 r42176  
    191191    Bstr bstrBaseFolder;
    192192    Bstr bstrName;
    193     Bstr bstrGroups;
    194193    Bstr bstrOsTypeId;
    195194    Bstr bstrUuid;
    196195    bool fRegister = false;
     196    com::SafeArray<BSTR> groups;
    197197
    198198    int c;
     
    211211
    212212            case 'g':   // --groups
    213                 bstrGroups = ValueUnion.psz;
    214                 /// @todo implement group string parsing to safearray
     213                parseGroups(ValueUnion.psz, &groups);
    215214                break;
    216215
     
    242241    do
    243242    {
     243        Bstr bstrPrimaryGroup;
     244        if (groups.size())
     245            bstrPrimaryGroup = groups[0];
    244246        Bstr bstrSettingsFile;
    245247        CHECK_ERROR_BREAK(a->virtualBox,
    246248                          ComposeMachineFilename(bstrName.raw(),
    247                                                  NULL /* aGroup */,
     249                                                 bstrPrimaryGroup.raw(),
    248250                                                 bstrBaseFolder.raw(),
    249251                                                 bstrSettingsFile.asOutParam()));
    250252        ComPtr<IMachine> machine;
    251         com::SafeArray<BSTR> groups; /* no groups */
    252253        CHECK_ERROR_BREAK(a->virtualBox,
    253254                          CreateMachine(bstrSettingsFile.raw(),
     
    347348    com::SafeArray<CloneOptions_T> options;
    348349    const char                    *pszTrgName       = NULL;
    349     const char                    *pszTrgGroups     = NULL;
    350350    const char                    *pszTrgBaseFolder = NULL;
    351351    bool                           fRegister        = false;
    352352    Bstr                           bstrUuid;
     353    com::SafeArray<BSTR> groups;
    353354
    354355    int c;
     
    371372
    372373            case 'g':   // --groups
    373                 pszTrgGroups = ValueUnion.psz;
    374                 /// @todo implement group string parsing to safearray
     374                parseGroups(ValueUnion.psz, &groups);
    375375                break;
    376376
     
    435435        pszTrgName = RTStrAPrintf2("%s Clone", pszSrcName);
    436436
     437    Bstr bstrPrimaryGroup;
     438    if (groups.size())
     439        bstrPrimaryGroup = groups[0];
    437440    Bstr bstrSettingsFile;
    438441    CHECK_ERROR_RET(a->virtualBox,
    439442                    ComposeMachineFilename(Bstr(pszTrgName).raw(),
    440                                            NULL /* aGroup */,
     443                                           bstrPrimaryGroup.raw(),
    441444                                           Bstr(pszTrgBaseFolder).raw(),
    442445                                           bstrSettingsFile.asOutParam()),
     
    444447
    445448    ComPtr<IMachine> trgMachine;
    446     com::SafeArray<BSTR> groups; /* no groups */
    447449    CHECK_ERROR_RET(a->virtualBox, CreateMachine(bstrSettingsFile.raw(),
    448450                                                 Bstr(pszTrgName).raw(),
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r41925 r42176  
    5353{
    5454    MODIFYVM_NAME = 1000,
     55    MODIFYVM_GROUPS,
    5556    MODIFYVM_OSTYPE,
    5657    MODIFYVM_MEMORY,
     
    196197{
    197198    { "--name",                     MODIFYVM_NAME,                      RTGETOPT_REQ_STRING },
     199    { "--groups",                   MODIFYVM_GROUPS,                    RTGETOPT_REQ_STRING },
    198200    { "--ostype",                   MODIFYVM_OSTYPE,                    RTGETOPT_REQ_STRING },
    199201    { "--memory",                   MODIFYVM_MEMORY,                    RTGETOPT_REQ_UINT32 },
     
    364366}
    365367
     368void parseGroups(const char *pcszGroups, com::SafeArray<BSTR> *pGroups)
     369{
     370    while (pcszGroups)
     371    {
     372        char *pComma = RTStrStr(pcszGroups, ",");
     373        if (pComma)
     374        {
     375            Bstr(pcszGroups, pComma - pcszGroups).detachTo(pGroups->appendedRaw());
     376            pcszGroups = pComma + 1;
     377        }
     378        else
     379        {
     380            Bstr(pcszGroups).detachTo(pGroups->appendedRaw());
     381            pcszGroups = NULL;
     382        }
     383    }
     384}
     385
    366386int handleModifyVM(HandlerArg *a)
    367387{
     
    405425            {
    406426                CHECK_ERROR(machine, COMSETTER(Name)(Bstr(ValueUnion.psz).raw()));
     427                break;
     428            }
     429            case MODIFYVM_GROUPS:
     430            {
     431                com::SafeArray<BSTR> groups;
     432                parseGroups(ValueUnion.psz, &groups);
     433                CHECK_ERROR(machine, COMSETTER(Groups)(ComSafeArrayAsInParam(groups)));
    407434                break;
    408435            }
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