Changeset 56349 in vbox
- Timestamp:
- Jun 10, 2015 11:38:30 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 100938
- Location:
- trunk/src/VBox/Frontends/VBoxManage
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
r56118 r56349 54 54 #define VBMG_CMD_F_NO_COM RT_BIT_32(0) 55 55 56 #define VBMG_CMD_TODO HELP_CMD_VBOXMANAGE_INVALID 57 56 58 57 59 /******************************************************************************* … … 64 66 { 65 67 /** The command. */ 66 const char *pszCommand;68 const char *pszCommand; 67 69 /** The help category. */ 68 USAGECATEGORY enmHelpCat; 70 USAGECATEGORY enmHelpCat; 71 /** The new help command. */ 72 enum HELP_CMD_VBOXMANAGE enmCmdHelp; 69 73 /** The handler. */ 70 RTEXITCODE (*pfnHandler)(HandlerArg *pArg);74 RTEXITCODE (*pfnHandler)(HandlerArg *pArg); 71 75 /** VBMG_CMD_F_XXX, */ 72 uint32_t fFlags;76 uint32_t fFlags; 73 77 } VBMGCMD; 74 78 /** Pointer to a const VBoxManage command descriptor. */ … … 95 99 static const VBMGCMD g_aCommands[] = 96 100 { 97 { "internalcommands", 0, 98 { "list", USAGE_LIST, 99 { "showvminfo", USAGE_SHOWVMINFO, 100 { "registervm", USAGE_REGISTERVM, 101 { "unregistervm", USAGE_UNREGISTERVM, 102 { "clonevm", USAGE_CLONEVM, 103 { "mediumproperty", USAGE_MEDIUMPROPERTY, 104 { "hdproperty", USAGE_MEDIUMPROPERTY, 105 { "createmedium", USAGE_CREATEMEDIUM, 106 { "createhd", USAGE_CREATEMEDIUM, 107 { "createvdi", USAGE_CREATEMEDIUM, 108 { "modifymedium", USAGE_MODIFYMEDIUM, 109 { "modifyhd", USAGE_MODIFYMEDIUM, 110 { "modifyvdi", USAGE_MODIFYMEDIUM, 111 { "clonemedium", USAGE_CLONEMEDIUM, 112 { "clonehd", USAGE_CLONEMEDIUM, 113 { "clonevdi", USAGE_CLONEMEDIUM, 114 { "encryptmedium", USAGE_ENCRYPTMEDIUM, 115 { "checkmediumpwd", USAGE_MEDIUMENCCHKPWD, 116 { "createvm", USAGE_CREATEVM, 117 { "modifyvm", USAGE_MODIFYVM, 118 { "startvm", USAGE_STARTVM, 119 { "controlvm", USAGE_CONTROLVM, 120 { "discardstate", USAGE_DISCARDSTATE, 121 { "adoptstate", USAGE_ADOPTSTATE, 122 { "snapshot", USAGE_SNAPSHOT, 123 { "closemedium", USAGE_CLOSEMEDIUM, 124 { "storageattach", USAGE_STORAGEATTACH, 125 { "storagectl", USAGE_STORAGECONTROLLER, 126 { "showmediuminfo", USAGE_SHOWMEDIUMINFO, 127 { "showhdinfo", USAGE_SHOWMEDIUMINFO, 128 { "showvdiinfo", USAGE_SHOWMEDIUMINFO, 129 { "getextradata", USAGE_GETEXTRADATA, 130 { "setextradata", USAGE_SETEXTRADATA, 131 { "setproperty", USAGE_SETPROPERTY, 132 { "usbfilter", USAGE_USBFILTER, 133 { "sharedfolder", USAGE_SHAREDFOLDER, 101 { "internalcommands", 0, VBMG_CMD_TODO, handleInternalCommands, 0 }, 102 { "list", USAGE_LIST, VBMG_CMD_TODO, handleList, 0 }, 103 { "showvminfo", USAGE_SHOWVMINFO, VBMG_CMD_TODO, handleShowVMInfo, 0 }, 104 { "registervm", USAGE_REGISTERVM, VBMG_CMD_TODO, handleRegisterVM, 0 }, 105 { "unregistervm", USAGE_UNREGISTERVM, VBMG_CMD_TODO, handleUnregisterVM, 0 }, 106 { "clonevm", USAGE_CLONEVM, VBMG_CMD_TODO, handleCloneVM, 0 }, 107 { "mediumproperty", USAGE_MEDIUMPROPERTY, VBMG_CMD_TODO, handleMediumProperty, 0 }, 108 { "hdproperty", USAGE_MEDIUMPROPERTY, VBMG_CMD_TODO, handleMediumProperty, 0 }, /* backward compatibility */ 109 { "createmedium", USAGE_CREATEMEDIUM, VBMG_CMD_TODO, handleCreateMedium, 0 }, 110 { "createhd", USAGE_CREATEMEDIUM, VBMG_CMD_TODO, handleCreateMedium, 0 }, /* backward compatibility */ 111 { "createvdi", USAGE_CREATEMEDIUM, VBMG_CMD_TODO, handleCreateMedium, 0 }, /* backward compatibility */ 112 { "modifymedium", USAGE_MODIFYMEDIUM, VBMG_CMD_TODO, handleModifyMedium, 0 }, 113 { "modifyhd", USAGE_MODIFYMEDIUM, VBMG_CMD_TODO, handleModifyMedium, 0 }, /* backward compatibility */ 114 { "modifyvdi", USAGE_MODIFYMEDIUM, VBMG_CMD_TODO, handleModifyMedium, 0 }, /* backward compatibility */ 115 { "clonemedium", USAGE_CLONEMEDIUM, VBMG_CMD_TODO, handleCloneMedium, 0 }, 116 { "clonehd", USAGE_CLONEMEDIUM, VBMG_CMD_TODO, handleCloneMedium, 0 }, /* backward compatibility */ 117 { "clonevdi", USAGE_CLONEMEDIUM, VBMG_CMD_TODO, handleCloneMedium, 0 }, /* backward compatibility */ 118 { "encryptmedium", USAGE_ENCRYPTMEDIUM, VBMG_CMD_TODO, handleEncryptMedium, 0 }, 119 { "checkmediumpwd", USAGE_MEDIUMENCCHKPWD, VBMG_CMD_TODO, handleCheckMediumPassword, 0 }, 120 { "createvm", USAGE_CREATEVM, VBMG_CMD_TODO, handleCreateVM, 0 }, 121 { "modifyvm", USAGE_MODIFYVM, VBMG_CMD_TODO, handleModifyVM, 0 }, 122 { "startvm", USAGE_STARTVM, VBMG_CMD_TODO, handleStartVM, 0 }, 123 { "controlvm", USAGE_CONTROLVM, VBMG_CMD_TODO, handleControlVM, 0 }, 124 { "discardstate", USAGE_DISCARDSTATE, VBMG_CMD_TODO, handleDiscardState, 0 }, 125 { "adoptstate", USAGE_ADOPTSTATE, VBMG_CMD_TODO, handleAdoptState, 0 }, 126 { "snapshot", USAGE_SNAPSHOT, VBMG_CMD_TODO, handleSnapshot, 0 }, 127 { "closemedium", USAGE_CLOSEMEDIUM, VBMG_CMD_TODO, handleCloseMedium, 0 }, 128 { "storageattach", USAGE_STORAGEATTACH, VBMG_CMD_TODO, handleStorageAttach, 0 }, 129 { "storagectl", USAGE_STORAGECONTROLLER,VBMG_CMD_TODO, handleStorageController, 0 }, 130 { "showmediuminfo", USAGE_SHOWMEDIUMINFO, VBMG_CMD_TODO, handleShowMediumInfo, 0 }, 131 { "showhdinfo", USAGE_SHOWMEDIUMINFO, VBMG_CMD_TODO, handleShowMediumInfo, 0 }, /* backward compatibility */ 132 { "showvdiinfo", USAGE_SHOWMEDIUMINFO, VBMG_CMD_TODO, handleShowMediumInfo, 0 }, /* backward compatibility */ 133 { "getextradata", USAGE_GETEXTRADATA, VBMG_CMD_TODO, handleGetExtraData, 0 }, 134 { "setextradata", USAGE_SETEXTRADATA, VBMG_CMD_TODO, handleSetExtraData, 0 }, 135 { "setproperty", USAGE_SETPROPERTY, VBMG_CMD_TODO, handleSetProperty, 0 }, 136 { "usbfilter", USAGE_USBFILTER, VBMG_CMD_TODO, handleUSBFilter, 0 }, 137 { "sharedfolder", USAGE_SHAREDFOLDER, VBMG_CMD_TODO, handleSharedFolder, 0 }, 134 138 #ifdef VBOX_WITH_GUEST_PROPS 135 { "guestproperty", USAGE_GUESTPROPERTY, 139 { "guestproperty", USAGE_GUESTPROPERTY, VBMG_CMD_TODO, handleGuestProperty, 0 }, 136 140 #endif 137 141 #ifdef VBOX_WITH_GUEST_CONTROL 138 { "guestcontrol", USAGE_GUESTCONTROL, 142 { "guestcontrol", USAGE_GUESTCONTROL, VBMG_CMD_TODO, handleGuestControl, 0 }, 139 143 #endif 140 { "metrics", USAGE_METRICS, 141 { "import", USAGE_IMPORTAPPLIANCE, 142 { "export", USAGE_EXPORTAPPLIANCE, 144 { "metrics", USAGE_METRICS, VBMG_CMD_TODO, handleMetrics, 0 }, 145 { "import", USAGE_IMPORTAPPLIANCE, VBMG_CMD_TODO, handleImportAppliance, 0 }, 146 { "export", USAGE_EXPORTAPPLIANCE, VBMG_CMD_TODO, handleExportAppliance, 0 }, 143 147 #ifdef VBOX_WITH_NETFLT 144 { "hostonlyif", USAGE_HOSTONLYIFS, 148 { "hostonlyif", USAGE_HOSTONLYIFS, VBMG_CMD_TODO, handleHostonlyIf, 0 }, 145 149 #endif 146 { "dhcpserver", USAGE_DHCPSERVER, 150 { "dhcpserver", USAGE_DHCPSERVER, VBMG_CMD_TODO, handleDHCPServer, 0 }, 147 151 #ifdef VBOX_WITH_NAT_SERVICE 148 { "natnetwork", USAGE_NATNETWORK, 152 { "natnetwork", USAGE_NATNETWORK, VBMG_CMD_TODO, handleNATNetwork, 0 }, 149 153 #endif 150 { "extpack", USAGE_EXTPACK, 151 { "bandwidthctl", USAGE_BANDWIDTHCONTROL, 152 { "debugvm", USAGE_DEBUGVM, 153 { "convertfromraw", USAGE_CONVERTFROMRAW, 154 { "convertdd", USAGE_CONVERTFROMRAW, 154 { "extpack", USAGE_EXTPACK, HELP_CMD_EXTPACK, handleExtPack, 0 }, 155 { "bandwidthctl", USAGE_BANDWIDTHCONTROL, VBMG_CMD_TODO, handleBandwidthControl, 0 }, 156 { "debugvm", USAGE_DEBUGVM, VBMG_CMD_TODO, handleDebugVM, 0 }, 157 { "convertfromraw", USAGE_CONVERTFROMRAW, VBMG_CMD_TODO, handleConvertFromRaw, VBMG_CMD_F_NO_COM }, 158 { "convertdd", USAGE_CONVERTFROMRAW, VBMG_CMD_TODO, handleConvertFromRaw, VBMG_CMD_F_NO_COM }, 155 159 }; 156 160 … … 549 553 #ifndef VBOX_ONLY_DOCS 550 554 PCVBMGCMD pCmd = lookupCommand(argv[iCmd]); 555 if (pCmd && pCmd->enmCmdHelp != VBMG_CMD_TODO) 556 setCurrentCommand(pCmd->enmCmdHelp); 557 551 558 if ( pCmd 552 559 && ( fShowHelp … … 554 561 && pCmd->enmHelpCat != 0))) 555 562 { 556 printUsage(pCmd->enmHelpCat, ~0U, g_pStdOut); 563 if (pCmd->enmCmdHelp == VBMG_CMD_TODO) 564 printUsage(pCmd->enmHelpCat, ~0U, g_pStdOut); 565 else if (fShowHelp) 566 printHelp(g_pStdOut); 567 else 568 printUsage(g_pStdOut); 557 569 return RTEXITCODE_FAILURE; /* error */ 558 570 } -
trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
r56344 r56349 190 190 void setCurrentSubcommand(uint64_t fCurSubcommandScope); 191 191 192 void printUsage(PRTSTREAM pStrm); 193 void printHelp(PRTSTREAM pStrm); 192 194 RTEXITCODE errorNoSubcommand(void); 193 195 RTEXITCODE errorUnknownSubcommand(const char *pszSubCmd); 196 RTEXITCODE errorTooManyParameters(char **papszArgs); 194 197 RTEXITCODE errorGetOpt(int rcGetOpt, union RTGETOPTUNION const *pValueUnion); 195 198 RTEXITCODE errorSyntax(const char *pszFormat, ...); -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
r56345 r56349 282 282 283 283 /** 284 * Prints the brief usage information for the current (sub)command. 285 * 286 * @param pStrm The output stream. 287 */ 288 void printUsage(PRTSTREAM pStrm) 289 { 290 printBriefCommandOrSubcommandHelp(g_enmCurCommand, g_fCurSubcommandScope, pStrm); 291 } 292 293 294 /** 284 295 * Prints full help for a command or subcommand. 285 296 * … … 309 320 310 321 /** 322 * Prints the full help for the current (sub)command. 323 * 324 * @param pStrm The output stream. 325 */ 326 void printHelp(PRTSTREAM pStrm) 327 { 328 printFullCommandOrSubcommandHelp(g_enmCurCommand, g_fCurSubcommandScope, pStrm); 329 } 330 331 332 /** 311 333 * Display no subcommand error message and current command usage. 312 334 * … … 346 368 return errorSyntax("Unknown subcommand: %s", pszSubcommand); 347 369 } 370 371 372 /** 373 * Display too many parameters error message and current command usage. 374 * 375 * May show full command help instead if the subcommand is a common help option. 376 * 377 * @returns RTEXITCODE_SYNTAX, or RTEXITCODE_SUCCESS if common help option. 378 * @param papszArgs The first unwanted parameter. Terminated by 379 * NULL entry. 380 */ 381 RTEXITCODE errorTooManyParameters(char **papszArgs) 382 { 383 Assert(g_enmCurCommand != HELP_CMD_VBOXMANAGE_INVALID); 384 Assert(g_fCurSubcommandScope != UINT64_MAX); 385 386 /* check if help was requested. */ 387 if (papszArgs) 388 for (uint32_t i = 0; papszArgs[i]; i++) 389 if ( strcmp(papszArgs[i], "--help") == 0 390 || strcmp(papszArgs[i], "-h") == 0 391 || strcmp(papszArgs[i], "-?") == 0) 392 { 393 printFullCommandOrSubcommandHelp(g_enmCurCommand, g_fCurSubcommandScope, g_pStdOut); 394 return RTEXITCODE_SUCCESS; 395 } 396 397 return errorSyntax("Too many parameters"); 398 } 399 348 400 349 401 /** -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
r56344 r56349 1099 1099 RTEXITCODE handleExtPack(HandlerArg *a) 1100 1100 { 1101 setCurrentCommand(HELP_CMD_EXTPACK);1102 1101 if (a->argc < 1) 1103 1102 return errorNoSubcommand(); … … 1206 1205 setCurrentSubcommand(HELP_SCOPE_EXTPACK_CLEANUP); 1207 1206 if (a->argc > 1) 1208 return error Syntax("Too many parameters given to \"extpack cleanup\"");1207 return errorTooManyParameters(&a->argv[1]); 1209 1208 CHECK_ERROR2I_RET(ptrExtPackMgr, Cleanup(), RTEXITCODE_FAILURE); 1210 1209 RTPrintf("Successfully performed extension pack cleanup\n");
Note:
See TracChangeset
for help on using the changeset viewer.