VirtualBox

Ignore:
Timestamp:
Mar 7, 2019 12:42:31 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
129222
Message:

VBoxManage: Re-do help category handling (command/sub-command specific help) for old-style commands to lift the low limit of the bit field approach for everything. This is now much closer to the handling of new-style commands, but far from converting anything old. While at it I eliminated the need to define an entry in the (old-style) USAGECATEGORY enum for new-style commands.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp

    r76553 r77595  
    135135 * Print the usage info.
    136136 */
    137 void printUsageInternal(USAGECATEGORY u64Cmd, PRTSTREAM pStrm)
    138 {
     137void printUsageInternal(USAGECATEGORY enmCommand, PRTSTREAM pStrm)
     138{
     139    Assert(enmCommand != USAGE_INVALID);
     140    Assert(enmCommand != USAGE_S_NEWCMD);
     141    Assert(enmCommand != USAGE_S_DUMPOPTS);
    139142    RTStrmPrintf(pStrm,
    140143        "Usage: VBoxManage internalcommands <command> [command arguments]\n"
     
    147150        "         incompatible ways without warning.\n",
    148151
    149         (u64Cmd & USAGE_LOADMAP)
     152        (enmCommand == USAGE_I_LOADMAP || enmCommand == USAGE_S_ALL)
    150153        ? "  loadmap <vmname|uuid> <symfile> <address> [module] [subtrahend] [segment]\n"
    151154          "      This will instruct DBGF to load the given map file\n"
     
    153156          "\n"
    154157        : "",
    155         (u64Cmd & USAGE_LOADSYMS)
     158        (enmCommand == USAGE_I_LOADSYMS || enmCommand == USAGE_S_ALL)
    156159        ? "  loadsyms <vmname|uuid> <symfile> [delta] [module] [module address]\n"
    157160          "      This will instruct DBGF to load the given symbol file\n"
     
    159162          "\n"
    160163        : "",
    161         (u64Cmd & USAGE_SETHDUUID)
     164        (enmCommand == USAGE_I_SETHDUUID || enmCommand == USAGE_S_ALL)
    162165        ? "  sethduuid <filepath> [<uuid>]\n"
    163166          "       Assigns a new UUID to the given image file. This way, multiple copies\n"
     
    165168          "\n"
    166169        : "",
    167         (u64Cmd & USAGE_SETHDPARENTUUID)
     170        (enmCommand == USAGE_I_SETHDPARENTUUID || enmCommand == USAGE_S_ALL)
    168171        ? "  sethdparentuuid <filepath> <uuid>\n"
    169172          "       Assigns a new parent UUID to the given image file.\n"
    170173          "\n"
    171174        : "",
    172         (u64Cmd & USAGE_DUMPHDINFO)
     175        (enmCommand == USAGE_I_DUMPHDINFO || enmCommand == USAGE_S_ALL)
    173176        ?  "  dumphdinfo <filepath>\n"
    174177           "       Prints information about the image at the given location.\n"
    175178           "\n"
    176179        : "",
    177         (u64Cmd & USAGE_LISTPARTITIONS)
     180        (enmCommand == USAGE_I_LISTPARTITIONS || enmCommand == USAGE_S_ALL)
    178181        ? "  listpartitions -rawdisk <diskname>\n"
    179182          "       Lists all partitions on <diskname>.\n"
    180183          "\n"
    181184        : "",
    182         (u64Cmd & USAGE_CREATERAWVMDK)
     185        (enmCommand == USAGE_I_CREATERAWVMDK || enmCommand == USAGE_S_ALL)
    183186        ? "  createrawvmdk -filename <filename> -rawdisk <diskname>\n"
    184187          "                [-partitions <list of partition numbers> [-mbr <filename>] ]\n"
     
    198201          "\n"
    199202        : "",
    200         (u64Cmd & USAGE_RENAMEVMDK)
     203        (enmCommand == USAGE_I_RENAMEVMDK || enmCommand == USAGE_S_ALL)
    201204        ? "  renamevmdk -from <filename> -to <filename>\n"
    202205          "       Renames an existing VMDK image, including the base file and all its extents.\n"
    203206          "\n"
    204207        : "",
    205         (u64Cmd & USAGE_CONVERTTORAW)
     208        (enmCommand == USAGE_I_CONVERTTORAW || enmCommand == USAGE_S_ALL)
    206209        ? "  converttoraw [-format <fileformat>] <filename> <outputfile>"
    207210#ifdef ENABLE_CONVERT_RAW_TO_STDOUT
     
    216219          "\n"
    217220        : "",
    218         (u64Cmd & USAGE_CONVERTHD)
     221        (enmCommand == USAGE_I_CONVERTHD || enmCommand == USAGE_S_ALL)
    219222        ? "  converthd [-srcformat VDI|VMDK|VHD|RAW]\n"
    220223          "            [-dstformat VDI|VMDK|VHD|RAW]\n"
     
    223226          "\n"
    224227        : "",
    225         (u64Cmd & USAGE_REPAIRHD)
     228        (enmCommand == USAGE_I_REPAIRHD || enmCommand == USAGE_S_ALL)
    226229        ? "  repairhd [-dry-run]\n"
    227230          "           [-format VDI|VMDK|VHD|...]\n"
     
    231234        : "",
    232235#ifdef RT_OS_WINDOWS
    233         (u64Cmd & USAGE_MODINSTALL)
     236        (enmCommand == USAGE_I_MODINSTALL || enmCommand == USAGE_S_ALL)
    234237        ? "  modinstall\n"
    235238          "       Installs the necessary driver for the host OS\n"
    236239          "\n"
    237240        : "",
    238         (u64Cmd & USAGE_MODUNINSTALL)
     241        (enmCommand == USAGE_I_MODUNINSTALL || enmCommand == USAGE_S_ALL)
    239242        ? "  moduninstall\n"
    240243          "       Deinstalls the driver\n"
     
    245248        "",
    246249#endif
    247         (u64Cmd & USAGE_DEBUGLOG)
     250        (enmCommand == USAGE_I_DEBUGLOG || enmCommand == USAGE_S_ALL)
    248251        ? "  debuglog <vmname|uuid> [--enable|--disable] [--flags todo]\n"
    249252          "           [--groups todo] [--destinations todo]\n"
     
    251254          "\n"
    252255        : "",
    253         (u64Cmd & USAGE_PASSWORDHASH)
    254         ? "  passwordhash <passsword>\n"
     256        (enmCommand == USAGE_I_PASSWORDHASH || enmCommand == USAGE_S_ALL)
     257        ? "  passwordhash <password>\n"
    255258          "       Generates a password hash.\n"
    256259          "\n"
    257260        : "",
    258         (u64Cmd & USAGE_GUESTSTATS)
     261        (enmCommand == USAGE_I_GUESTSTATS || enmCommand == USAGE_S_ALL)
    259262        ? "  gueststats <vmname|uuid> [--interval <seconds>]\n"
    260263          "       Obtains and prints internal guest statistics.\n"
     
    627630        uuidType = HDUUID;
    628631        if (argc != 3 && argc != 2)
    629             return errorSyntax(USAGE_SETHDUUID, "Not enough parameters");
     632            return errorSyntax(USAGE_I_SETHDUUID, "Not enough parameters");
    630633        /* if specified, take UUID, otherwise generate a new one */
    631634        if (argc == 3)
    632635        {
    633636            if (RT_FAILURE(RTUuidFromStr(&rtuuid, argv[2])))
    634                 return errorSyntax(USAGE_SETHDUUID, "Invalid UUID parameter");
     637                return errorSyntax(USAGE_I_SETHDUUID, "Invalid UUID parameter");
    635638            uuid = argv[2];
    636639        } else
     
    641644        uuidType = HDPARENTUUID;
    642645        if (argc != 3)
    643             return errorSyntax(USAGE_SETHDPARENTUUID, "Not enough parameters");
     646            return errorSyntax(USAGE_I_SETHDPARENTUUID, "Not enough parameters");
    644647        if (RT_FAILURE(RTUuidFromStr(&rtuuid, argv[2])))
    645             return errorSyntax(USAGE_SETHDPARENTUUID, "Invalid UUID parameter");
     648            return errorSyntax(USAGE_I_SETHDPARENTUUID, "Invalid UUID parameter");
    646649        uuid = argv[2];
    647650    }
    648651    else
    649         return errorSyntax(USAGE_SETHDUUID, "Invalid invocation");
     652        return errorSyntax(USAGE_I_SETHDUUID, "Invalid invocation");
    650653
    651654    /* just try it */
     
    699702    if (argc != 1)
    700703    {
    701         return errorSyntax(USAGE_DUMPHDINFO, "Not enough parameters");
     704        return errorSyntax(USAGE_I_DUMPHDINFO, "Not enough parameters");
    702705    }
    703706
     
    10931096        else
    10941097        {
    1095             return errorSyntax(USAGE_LISTPARTITIONS, "Invalid parameter '%s'", argv[i]);
     1098            return errorSyntax(USAGE_I_LISTPARTITIONS, "Invalid parameter '%s'", argv[i]);
    10961099        }
    10971100    }
    10981101
    10991102    if (rawdisk.isEmpty())
    1100         return errorSyntax(USAGE_LISTPARTITIONS, "Mandatory parameter -rawdisk missing");
     1103        return errorSyntax(USAGE_I_LISTPARTITIONS, "Mandatory parameter -rawdisk missing");
    11011104
    11021105    RTFILE hRawFile;
     
    12101213#endif /* RT_OS_LINUX || RT_OS_FREEBSD */
    12111214        else
    1212             return errorSyntax(USAGE_CREATERAWVMDK, "Invalid parameter '%s'", argv[i]);
     1215            return errorSyntax(USAGE_I_CREATERAWVMDK, "Invalid parameter '%s'", argv[i]);
    12131216    }
    12141217
    12151218    if (filename.isEmpty())
    1216         return errorSyntax(USAGE_CREATERAWVMDK, "Mandatory parameter -filename missing");
     1219        return errorSyntax(USAGE_I_CREATERAWVMDK, "Mandatory parameter -filename missing");
    12171220    if (rawdisk.isEmpty())
    1218         return errorSyntax(USAGE_CREATERAWVMDK, "Mandatory parameter -rawdisk missing");
     1221        return errorSyntax(USAGE_I_CREATERAWVMDK, "Mandatory parameter -rawdisk missing");
    12191222    if (!pszPartitions && pszMBRFilename)
    1220         return errorSyntax(USAGE_CREATERAWVMDK, "The parameter -mbr is only valid when the parameter -partitions is also present");
     1223        return errorSyntax(USAGE_I_CREATERAWVMDK, "The parameter -mbr is only valid when the parameter -partitions is also present");
    12211224
    12221225#ifdef RT_OS_DARWIN
     
    18971900        else
    18981901        {
    1899             return errorSyntax(USAGE_RENAMEVMDK, "Invalid parameter '%s'", argv[i]);
     1902            return errorSyntax(USAGE_I_RENAMEVMDK, "Invalid parameter '%s'", argv[i]);
    19001903        }
    19011904    }
    19021905
    19031906    if (src.isEmpty())
    1904         return errorSyntax(USAGE_RENAMEVMDK, "Mandatory parameter -from missing");
     1907        return errorSyntax(USAGE_I_RENAMEVMDK, "Mandatory parameter -from missing");
    19051908    if (dst.isEmpty())
    1906         return errorSyntax(USAGE_RENAMEVMDK, "Mandatory parameter -to missing");
     1909        return errorSyntax(USAGE_I_RENAMEVMDK, "Mandatory parameter -to missing");
    19071910
    19081911    PVDISK pDisk = NULL;
     
    19701973        else
    19711974        {
    1972             return errorSyntax(USAGE_CONVERTTORAW, "Invalid parameter '%s'", argv[i]);
     1975            return errorSyntax(USAGE_I_CONVERTTORAW, "Invalid parameter '%s'", argv[i]);
    19731976        }
    19741977    }
    19751978
    19761979    if (src.isEmpty())
    1977         return errorSyntax(USAGE_CONVERTTORAW, "Mandatory filename parameter missing");
     1980        return errorSyntax(USAGE_I_CONVERTTORAW, "Mandatory filename parameter missing");
    19781981    if (dst.isEmpty())
    1979         return errorSyntax(USAGE_CONVERTTORAW, "Mandatory outputfile parameter missing");
     1982        return errorSyntax(USAGE_I_CONVERTTORAW, "Mandatory outputfile parameter missing");
    19801983
    19811984    PVDISK pDisk = NULL;
     
    21352138        else
    21362139        {
    2137             return errorSyntax(USAGE_CONVERTHD, "Invalid parameter '%s'", argv[i]);
     2140            return errorSyntax(USAGE_I_CONVERTHD, "Invalid parameter '%s'", argv[i]);
    21382141        }
    21392142    }
    21402143
    21412144    if (src.isEmpty())
    2142         return errorSyntax(USAGE_CONVERTHD, "Mandatory input image parameter missing");
     2145        return errorSyntax(USAGE_I_CONVERTHD, "Mandatory input image parameter missing");
    21432146    if (dst.isEmpty())
    2144         return errorSyntax(USAGE_CONVERTHD, "Mandatory output image parameter missing");
     2147        return errorSyntax(USAGE_I_CONVERTHD, "Mandatory output image parameter missing");
    21452148
    21462149
     
    22542257        else
    22552258        {
    2256             return errorSyntax(USAGE_REPAIRHD, "Invalid parameter '%s'", argv[i]);
     2259            return errorSyntax(USAGE_I_REPAIRHD, "Invalid parameter '%s'", argv[i]);
    22572260        }
    22582261    }
    22592262
    22602263    if (image.isEmpty())
    2261         return errorSyntax(USAGE_REPAIRHD, "Mandatory input image parameter missing");
     2264        return errorSyntax(USAGE_I_REPAIRHD, "Mandatory input image parameter missing");
    22622265
    22632266    PVDINTERFACE     pVDIfs = NULL;
     
    23332336     */
    23342337    if (argc < 1)
    2335         return errorSyntax(USAGE_DEBUGLOG, "Missing VM name/UUID");
     2338        return errorSyntax(USAGE_I_DEBUGLOG, "Missing VM name/UUID");
    23362339
    23372340    ComPtr<IMachine> ptrMachine;
     
    24212424
    24222425            default:
    2423                 return errorGetOpt(USAGE_DEBUGLOG, ch, &ValueUnion);
     2426                return errorGetOpt(USAGE_I_DEBUGLOG, ch, &ValueUnion);
    24242427        }
    24252428    }
     
    24492452    /* one parameter, the password to hash */
    24502453    if (argc != 1)
    2451         return errorSyntax(USAGE_PASSWORDHASH, "password to hash required");
     2454        return errorSyntax(USAGE_I_PASSWORDHASH, "password to hash required");
    24522455
    24532456    uint8_t abDigest[RTSHA256_HASH_SIZE];
     
    24682471    /* one parameter, guest name */
    24692472    if (argc < 1)
    2470         return errorSyntax(USAGE_GUESTSTATS, "Missing VM name/UUID");
     2473        return errorSyntax(USAGE_I_GUESTSTATS, "Missing VM name/UUID");
    24712474
    24722475    /*
     
    24932496
    24942497            default:
    2495                 return errorGetOpt(USAGE_GUESTSTATS, ch, &ValueUnion);
     2498                return errorGetOpt(USAGE_I_GUESTSTATS, ch, &ValueUnion);
    24962499        }
    24972500    }
    24982501
    24992502    if (argc > 1 && aUpdateInterval == 0)
    2500         return errorSyntax(USAGE_GUESTSTATS, "Invalid update interval specified");
     2503        return errorSyntax(USAGE_I_GUESTSTATS, "Invalid update interval specified");
    25012504
    25022505    RTPrintf("argc=%d interval=%u\n", argc, aUpdateInterval);
     
    25532556    /* at least a command is required */
    25542557    if (a->argc < 1)
    2555         return errorSyntax(USAGE_ALL, "Command missing");
     2558        return errorSyntax(USAGE_S_ALL, "Command missing");
    25562559
    25572560    /*
     
    25932596
    25942597    /* default: */
    2595     return errorSyntax(USAGE_ALL, "Invalid command '%s'", a->argv[0]);
     2598    return errorSyntax(USAGE_S_ALL, "Invalid command '%s'", a->argv[0]);
    25962599}
    25972600
Note: See TracChangeset for help on using the changeset viewer.

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