Changeset 18782 in vbox
- Timestamp:
- Apr 6, 2009 3:58:23 PM (16 years ago)
- Location:
- trunk/src/VBox/Frontends/VBoxManage
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk
r18023 r18782 35 35 VBoxManage_TEMPLATE = VBOXMAINCLIENTEXE 36 36 VBoxManage_DEFS += \ 37 $(if $(VBOX_WITH_VBOXSDL), VBOX_WITH_VBOXSDL) \ 37 38 $(if $(VBOX_WITH_VRDP), VBOX_WITH_VRDP) \ 38 39 $(if $(VBOX_WITH_ALSA), VBOX_WITH_ALSA) \ -
trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
r18516 r18782 54 54 #include <iprt/thread.h> 55 55 #include <iprt/uuid.h> 56 #include <iprt/getopt.h> 57 #include <iprt/ctype.h> 56 58 #include <VBox/version.h> 57 59 #include <VBox/log.h> … … 208 210 } 209 211 212 static const RTGETOPTDEF g_aUnregisterVMOptions[] = 213 { 214 { "--delete", 'd', RTGETOPT_REQ_STRING }, 215 { "-delete", 'd', RTGETOPT_REQ_STRING }, // deprecated 216 }; 217 210 218 static int handleUnregisterVM(HandlerArg *a) 211 219 { 212 220 HRESULT rc; 213 214 if ((a->argc != 1) && (a->argc != 2)) 215 return errorSyntax(USAGE_UNREGISTERVM, "Incorrect number of parameters"); 221 const char *VMName = NULL; 222 bool fDelete = false; 223 224 int c; 225 RTGETOPTUNION ValueUnion; 226 RTGETOPTSTATE GetState; 227 // start at 0 because main() has hacked both the argc and argv given to us 228 RTGetOptInit(&GetState, a->argc, a->argv, g_aUnregisterVMOptions, RT_ELEMENTS(g_aUnregisterVMOptions), 0, 0 /* fFlags */); 229 while ((c = RTGetOpt(&GetState, &ValueUnion))) 230 { 231 switch (c) 232 { 233 case 'd': // --delete 234 fDelete = true; 235 break; 236 237 case VINF_GETOPT_NOT_OPTION: 238 if (!VMName) 239 VMName = ValueUnion.psz; 240 else 241 return errorSyntax(USAGE_UNREGISTERVM, "Invalid parameter '%s'", ValueUnion.psz); 242 break; 243 244 default: 245 if (c > 0) 246 { 247 if (RT_C_IS_PRINT(c)) 248 return errorSyntax(USAGE_UNREGISTERVM, "Invalid option -%c", c); 249 else 250 return errorSyntax(USAGE_UNREGISTERVM, "Invalid option case %i", c); 251 } 252 else if (c == VERR_GETOPT_UNKNOWN_OPTION) 253 return errorSyntax(USAGE_UNREGISTERVM, "unknown option: %s\n", ValueUnion.psz); 254 else if (ValueUnion.pDef) 255 return errorSyntax(USAGE_UNREGISTERVM, "%s: %Rrs", ValueUnion.pDef->pszLong, c); 256 else 257 return errorSyntax(USAGE_UNREGISTERVM, "error: %Rrs", c); 258 } 259 } 260 261 /* check for required options */ 262 if (!VMName) 263 return errorSyntax(USAGE_UNREGISTERVM, "VM name required"); 216 264 217 265 ComPtr<IMachine> machine; 218 266 /* assume it's a UUID */ 219 rc = a->virtualBox->GetMachine(Guid( a->argv[0]), machine.asOutParam());267 rc = a->virtualBox->GetMachine(Guid(VMName), machine.asOutParam()); 220 268 if (FAILED(rc) || !machine) 221 269 { 222 270 /* must be a name */ 223 CHECK_ERROR(a->virtualBox, FindMachine(Bstr( a->argv[0]), machine.asOutParam()));271 CHECK_ERROR(a->virtualBox, FindMachine(Bstr(VMName), machine.asOutParam())); 224 272 } 225 273 if (machine) … … 229 277 machine = NULL; 230 278 CHECK_ERROR(a->virtualBox, UnregisterMachine(uuid, machine.asOutParam())); 231 if (SUCCEEDED(rc) && machine) 232 { 233 /* are we supposed to delete the config file? */ 234 if ((a->argc == 2) && (strcmp(a->argv[1], "-delete") == 0)) 235 { 236 CHECK_ERROR(machine, DeleteSettings()); 237 } 238 } 279 if (SUCCEEDED(rc) && machine && fDelete) 280 CHECK_ERROR(machine, DeleteSettings()); 239 281 } 240 282 return SUCCEEDED(rc) ? 0 : 1; … … 254 296 for (int i = 0; i < a->argc; i++) 255 297 { 256 if (strcmp(a->argv[i], "-basefolder") == 0) 298 if ( !strcmp(a->argv[i], "--basefolder") 299 || !strcmp(a->argv[i], "-basefolder")) 257 300 { 258 301 if (a->argc <= i + 1) … … 261 304 baseFolder = a->argv[i]; 262 305 } 263 else if (strcmp(a->argv[i], "-settingsfile") == 0) 306 else if ( !strcmp(a->argv[i], "--settingsfile") 307 || !strcmp(a->argv[i], "-settingsfile")) 264 308 { 265 309 if (a->argc <= i + 1) … … 268 312 settingsFile = a->argv[i]; 269 313 } 270 else if (strcmp(a->argv[i], "-name") == 0) 314 else if ( !strcmp(a->argv[i], "--name") 315 || !strcmp(a->argv[i], "-name")) 271 316 { 272 317 if (a->argc <= i + 1) … … 275 320 name = a->argv[i]; 276 321 } 277 else if (strcmp(a->argv[i], "-ostype") == 0) 322 else if ( !strcmp(a->argv[i], "--ostype") 323 || !strcmp(a->argv[i], "-ostype")) 278 324 { 279 325 if (a->argc <= i + 1) … … 282 328 osTypeId = a->argv[i]; 283 329 } 284 else if (strcmp(a->argv[i], "-uuid") == 0) 330 else if ( !strcmp(a->argv[i], "--uuid") 331 || !strcmp(a->argv[i], "-uuid")) 285 332 { 286 333 if (a->argc <= i + 1) … … 290 337 return errorArgument("Invalid UUID format %s\n", a->argv[i]); 291 338 } 292 else if (strcmp(a->argv[i], "-register") == 0) 339 else if ( !strcmp(a->argv[i], "--register") 340 || !strcmp(a->argv[i], "-register")) 293 341 { 294 342 fRegister = true; … … 298 346 } 299 347 if (!name) 300 return errorSyntax(USAGE_CREATEVM, "Parameter - name is required");348 return errorSyntax(USAGE_CREATEVM, "Parameter --name is required"); 301 349 302 350 if (!!baseFolder && !!settingsFile) 303 return errorSyntax(USAGE_CREATEVM, "Either - basefolder or-settingsfile must be specified");351 return errorSyntax(USAGE_CREATEVM, "Either --basefolder or --settingsfile must be specified"); 304 352 305 353 do … … 360 408 #endif 361 409 410 static const RTGETOPTDEF g_aStartVMOptions[] = 411 { 412 { "--type", 't', RTGETOPT_REQ_STRING }, 413 { "-type", 't', RTGETOPT_REQ_STRING }, // deprecated 414 }; 415 362 416 static int handleStartVM(HandlerArg *a) 363 417 { 364 418 HRESULT rc; 365 366 if (a->argc < 1) 367 return errorSyntax(USAGE_STARTVM, "Not enough parameters"); 419 const char *VMName = NULL; 420 Bstr sessionType = "gui"; 421 422 int c; 423 RTGETOPTUNION ValueUnion; 424 RTGETOPTSTATE GetState; 425 // start at 0 because main() has hacked both the argc and argv given to us 426 RTGetOptInit(&GetState, a->argc, a->argv, g_aStartVMOptions, RT_ELEMENTS(g_aStartVMOptions), 0, 0 /* fFlags */); 427 while ((c = RTGetOpt(&GetState, &ValueUnion))) 428 { 429 switch (c) 430 { 431 case 't': // --type 432 if (!RTStrICmp(ValueUnion.psz, "gui")) 433 { 434 sessionType = "gui"; 435 } 436 #ifdef VBOX_WITH_VBOXSDL 437 else if (!RTStrICmp(ValueUnion.psz, "sdl")) 438 { 439 sessionType = "sdl"; 440 } 441 #endif 442 #ifdef VBOX_WITH_VRDP 443 else if (!RTStrICmp(ValueUnion.psz, "vrdp")) 444 { 445 sessionType = "vrdp"; 446 } 447 #endif 448 else if (!RTStrICmp(ValueUnion.psz, "capture")) 449 { 450 sessionType = "capture"; 451 } 452 else 453 return errorArgument("Invalid session type '%s'", ValueUnion.psz); 454 break; 455 456 case VINF_GETOPT_NOT_OPTION: 457 if (!VMName) 458 VMName = ValueUnion.psz; 459 else 460 return errorSyntax(USAGE_STARTVM, "Invalid parameter '%s'", ValueUnion.psz); 461 break; 462 463 default: 464 if (c > 0) 465 { 466 if (RT_C_IS_PRINT(c)) 467 return errorSyntax(USAGE_STARTVM, "Invalid option -%c", c); 468 else 469 return errorSyntax(USAGE_STARTVM, "Invalid option case %i", c); 470 } 471 else if (c == VERR_GETOPT_UNKNOWN_OPTION) 472 return errorSyntax(USAGE_STARTVM, "unknown option: %s\n", ValueUnion.psz); 473 else if (ValueUnion.pDef) 474 return errorSyntax(USAGE_STARTVM, "%s: %Rrs", ValueUnion.pDef->pszLong, c); 475 else 476 return errorSyntax(USAGE_STARTVM, "error: %Rrs", c); 477 } 478 } 479 480 /* check for required options */ 481 if (!VMName) 482 return errorSyntax(USAGE_STARTVM, "VM name required"); 368 483 369 484 ComPtr<IMachine> machine; 370 485 /* assume it's a UUID */ 371 rc = a->virtualBox->GetMachine(Guid( a->argv[0]), machine.asOutParam());486 rc = a->virtualBox->GetMachine(Guid(VMName), machine.asOutParam()); 372 487 if (FAILED(rc) || !machine) 373 488 { 374 489 /* must be a name */ 375 CHECK_ERROR(a->virtualBox, FindMachine(Bstr( a->argv[0]), machine.asOutParam()));490 CHECK_ERROR(a->virtualBox, FindMachine(Bstr(VMName), machine.asOutParam())); 376 491 } 377 492 if (machine) … … 380 495 machine->COMGETTER(Id)(uuid.asOutParam()); 381 496 382 /* default to GUI session type */383 Bstr sessionType = "gui";384 /* has a session type been specified? */385 if ((a->argc > 2) && (strcmp(a->argv[1], "-type") == 0))386 {387 if (strcmp(a->argv[2], "gui") == 0)388 {389 sessionType = "gui";390 }391 #ifdef VBOX_WITH_VRDP392 else if (strcmp(a->argv[2], "vrdp") == 0)393 {394 sessionType = "vrdp";395 }396 #endif397 else if (strcmp(a->argv[2], "capture") == 0)398 {399 sessionType = "capture";400 }401 else402 return errorArgument("Invalid session type argument '%s'", a->argv[2]);403 }404 497 405 498 Bstr env; 406 #if def RT_OS_LINUX499 #if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) 407 500 /* make sure the VM process will start on the same display as VBoxManage */ 408 501 { … … 479 572 480 573 /* which command? */ 481 if ( strcmp(a->argv[1], "pause") == 0)574 if (!strcmp(a->argv[1], "pause")) 482 575 { 483 576 CHECK_ERROR_BREAK (console, Pause()); 484 577 } 485 else if ( strcmp(a->argv[1], "resume") == 0)578 else if (!strcmp(a->argv[1], "resume")) 486 579 { 487 580 CHECK_ERROR_BREAK (console, Resume()); 488 581 } 489 else if ( strcmp(a->argv[1], "reset") == 0)582 else if (!strcmp(a->argv[1], "reset")) 490 583 { 491 584 CHECK_ERROR_BREAK (console, Reset()); 492 585 } 493 else if ( strcmp(a->argv[1], "poweroff") == 0)586 else if (!strcmp(a->argv[1], "poweroff")) 494 587 { 495 588 CHECK_ERROR_BREAK (console, PowerDown()); 496 589 } 497 else if ( strcmp(a->argv[1], "savestate") == 0)590 else if (!strcmp(a->argv[1], "savestate")) 498 591 { 499 592 ComPtr<IProgress> progress; … … 516 609 } 517 610 } 518 else if ( strcmp(a->argv[1], "acpipowerbutton") == 0)611 else if (!strcmp(a->argv[1], "acpipowerbutton")) 519 612 { 520 613 CHECK_ERROR_BREAK (console, PowerButton()); 521 614 } 522 else if ( strcmp(a->argv[1], "acpisleepbutton") == 0)615 else if (!strcmp(a->argv[1], "acpisleepbutton")) 523 616 { 524 617 CHECK_ERROR_BREAK (console, SleepButton()); 525 618 } 526 else if ( strcmp(a->argv[1], "injectnmi") == 0)619 else if (!strcmp(a->argv[1], "injectnmi")) 527 620 { 528 621 /* get the machine debugger. */ … … 531 624 CHECK_ERROR_BREAK(debugger, InjectNMI()); 532 625 } 533 else if ( strcmp(a->argv[1], "keyboardputscancode") == 0)626 else if (!strcmp(a->argv[1], "keyboardputscancode")) 534 627 { 535 628 ComPtr<IKeyboard> keyboard; … … 594 687 } 595 688 } 596 else if ( strncmp(a->argv[1], "setlinkstate", 12) == 0)689 else if (!strncmp(a->argv[1], "setlinkstate", 12)) 597 690 { 598 691 /* Get the number of network adapters */ … … 619 712 if (adapter) 620 713 { 621 if ( strcmp(a->argv[2], "on") == 0)714 if (!strcmp(a->argv[2], "on")) 622 715 { 623 716 CHECK_ERROR_BREAK (adapter, COMSETTER(CableConnected)(TRUE)); 624 717 } 625 else if ( strcmp(a->argv[2], "off") == 0)718 else if (!strcmp(a->argv[2], "off")) 626 719 { 627 720 CHECK_ERROR_BREAK (adapter, COMSETTER(CableConnected)(FALSE)); … … 636 729 } 637 730 #ifdef VBOX_WITH_VRDP 638 else if ( strcmp(a->argv[1], "vrdp") == 0)731 else if (!strcmp(a->argv[1], "vrdp")) 639 732 { 640 733 if (a->argc <= 1 + 1) … … 650 743 if (vrdpServer) 651 744 { 652 if ( strcmp(a->argv[2], "on") == 0)745 if (!strcmp(a->argv[2], "on")) 653 746 { 654 747 CHECK_ERROR_BREAK (vrdpServer, COMSETTER(Enabled)(TRUE)); 655 748 } 656 else if ( strcmp(a->argv[2], "off") == 0)749 else if (!strcmp(a->argv[2], "off")) 657 750 { 658 751 CHECK_ERROR_BREAK (vrdpServer, COMSETTER(Enabled)(FALSE)); … … 667 760 } 668 761 #endif /* VBOX_WITH_VRDP */ 669 else if ( strcmp (a->argv[1], "usbattach") == 0 ||670 strcmp (a->argv[1], "usbdetach") == 0)762 else if ( !strcmp (a->argv[1], "usbattach") 763 || !strcmp (a->argv[1], "usbdetach")) 671 764 { 672 765 if (a->argc < 3) … … 677 770 } 678 771 679 bool attach = strcmp (a->argv[1], "usbattach") == 0;772 bool attach = !strcmp(a->argv[1], "usbattach"); 680 773 681 774 Guid usbId = a->argv [2]; … … 712 805 } 713 806 } 714 else if ( strcmp(a->argv[1], "setvideomodehint") == 0)807 else if (!strcmp(a->argv[1], "setvideomodehint")) 715 808 { 716 809 if (a->argc != 5 && a->argc != 6) … … 731 824 CHECK_ERROR_BREAK(display, SetVideoModeHint(xres, yres, bpp, displayIdx)); 732 825 } 733 else if ( strcmp(a->argv[1], "setcredentials") == 0)826 else if (!strcmp(a->argv[1], "setcredentials")) 734 827 { 735 828 bool fAllowLocalLogon = true; 736 829 if (a->argc == 7) 737 830 { 738 if (strcmp(a->argv[5], "-allowlocallogon") != 0) 831 if ( strcmp(a->argv[5], "--allowlocallogon") 832 && strcmp(a->argv[5], "-allowlocallogon")) 739 833 { 740 834 errorArgument("Invalid parameter '%s'", a->argv[5]); … … 742 836 break; 743 837 } 744 if ( strcmp(a->argv[6], "no") == 0)838 if (!strcmp(a->argv[6], "no")) 745 839 fAllowLocalLogon = false; 746 840 } … … 756 850 CHECK_ERROR_BREAK(guest, SetCredentials(Bstr(a->argv[2]), Bstr(a->argv[3]), Bstr(a->argv[4]), fAllowLocalLogon)); 757 851 } 758 else if ( strcmp(a->argv[1], "dvdattach") == 0)852 else if (!strcmp(a->argv[1], "dvdattach")) 759 853 { 760 854 if (a->argc != 3) … … 769 863 770 864 /* unmount? */ 771 if ( strcmp(a->argv[2], "none") == 0)865 if (!strcmp(a->argv[2], "none")) 772 866 { 773 867 CHECK_ERROR(dvdDrive, Unmount()); 774 868 } 775 869 /* host drive? */ 776 else if ( strncmp(a->argv[2], "host:", 5) == 0)870 else if (!strncmp(a->argv[2], "host:", 5)) 777 871 { 778 872 ComPtr<IHost> host; … … 817 911 } 818 912 } 819 else if ( strcmp(a->argv[1], "floppyattach") == 0)913 else if (!strcmp(a->argv[1], "floppyattach")) 820 914 { 821 915 if (a->argc != 3) … … 831 925 832 926 /* unmount? */ 833 if ( strcmp(a->argv[2], "none") == 0)927 if (!strcmp(a->argv[2], "none")) 834 928 { 835 929 CHECK_ERROR(floppyDrive, Unmount()); 836 930 } 837 931 /* host drive? */ 838 else if ( strncmp(a->argv[2], "host:", 5) == 0)932 else if (!strncmp(a->argv[2], "host:", 5)) 839 933 { 840 934 ComPtr<IHost> host; … … 842 936 com::SafeIfaceArray <IHostFloppyDrive> hostFloppies; 843 937 rc = host->COMGETTER(FloppyDrives)(ComSafeArrayAsOutParam(hostFloppies)); 844 938 CheckComRCReturnRC (rc); 845 939 ComPtr<IHostFloppyDrive> hostFloppyDrive; 846 940 host->FindHostFloppyDrive(Bstr(a->argv[2] + 5), hostFloppyDrive.asOutParam()); … … 880 974 } 881 975 #ifdef VBOX_WITH_MEM_BALLOONING 882 else if (strncmp(a->argv[1], "-guestmemoryballoon", 19) == 0) 976 else if ( !strcmp(a->argv[1], "--guestmemoryballoon") 977 || !strcmp(a->argv[1], "-guestmemoryballoon")) 883 978 { 884 979 if (a->argc != 3) … … 906 1001 } 907 1002 #endif 908 else if (strncmp(a->argv[1], "-gueststatisticsinterval", 24) == 0) 1003 else if ( !strcmp(a->argv[1], "--gueststatisticsinterval") 1004 || !strcmp(a->argv[1], "-gueststatisticsinterval")) 909 1005 { 910 1006 if (a->argc != 3) … … 1028 1124 1029 1125 /* global data? */ 1030 if ( strcmp(a->argv[0], "global") == 0)1126 if (!strcmp(a->argv[0], "global")) 1031 1127 { 1032 1128 /* enumeration? */ 1033 if ( strcmp(a->argv[1], "enumerate") == 0)1129 if (!strcmp(a->argv[1], "enumerate")) 1034 1130 { 1035 1131 Bstr extraDataKey; … … 1070 1166 { 1071 1167 /* enumeration? */ 1072 if ( strcmp(a->argv[1], "enumerate") == 0)1168 if (!strcmp(a->argv[1], "enumerate")) 1073 1169 { 1074 1170 Bstr extraDataKey; … … 1110 1206 1111 1207 /* global data? */ 1112 if ( strcmp(a->argv[0], "global") == 0)1208 if (!strcmp(a->argv[0], "global")) 1113 1209 { 1114 1210 if (a->argc < 3) … … 1153 1249 a->virtualBox->COMGETTER(SystemProperties)(systemProperties.asOutParam()); 1154 1250 1155 if ( strcmp(a->argv[0], "hdfolder") == 0)1251 if (!strcmp(a->argv[0], "hdfolder")) 1156 1252 { 1157 1253 /* reset to default? */ 1158 if ( strcmp(a->argv[1], "default") == 0)1254 if (!strcmp(a->argv[1], "default")) 1159 1255 CHECK_ERROR(systemProperties, COMSETTER(DefaultHardDiskFolder)(NULL)); 1160 1256 else 1161 1257 CHECK_ERROR(systemProperties, COMSETTER(DefaultHardDiskFolder)(Bstr(a->argv[1]))); 1162 1258 } 1163 else if ( strcmp(a->argv[0], "machinefolder") == 0)1259 else if (!strcmp(a->argv[0], "machinefolder")) 1164 1260 { 1165 1261 /* reset to default? */ 1166 if ( strcmp(a->argv[1], "default") == 0)1262 if (!strcmp(a->argv[1], "default")) 1167 1263 CHECK_ERROR(systemProperties, COMSETTER(DefaultMachineFolder)(NULL)); 1168 1264 else 1169 1265 CHECK_ERROR(systemProperties, COMSETTER(DefaultMachineFolder)(Bstr(a->argv[1]))); 1170 1266 } 1171 else if ( strcmp(a->argv[0], "vrdpauthlibrary") == 0)1267 else if (!strcmp(a->argv[0], "vrdpauthlibrary")) 1172 1268 { 1173 1269 /* reset to default? */ 1174 if ( strcmp(a->argv[1], "default") == 0)1270 if (!strcmp(a->argv[1], "default")) 1175 1271 CHECK_ERROR(systemProperties, COMSETTER(RemoteDisplayAuthLibrary)(NULL)); 1176 1272 else 1177 1273 CHECK_ERROR(systemProperties, COMSETTER(RemoteDisplayAuthLibrary)(Bstr(a->argv[1]))); 1178 1274 } 1179 else if ( strcmp(a->argv[0], "websrvauthlibrary") == 0)1275 else if (!strcmp(a->argv[0], "websrvauthlibrary")) 1180 1276 { 1181 1277 /* reset to default? */ 1182 if ( strcmp(a->argv[1], "default") == 0)1278 if (!strcmp(a->argv[1], "default")) 1183 1279 CHECK_ERROR(systemProperties, COMSETTER(WebServiceAuthLibrary)(NULL)); 1184 1280 else 1185 1281 CHECK_ERROR(systemProperties, COMSETTER(WebServiceAuthLibrary)(Bstr(a->argv[1]))); 1186 1282 } 1187 else if ( strcmp(a->argv[0], "hwvirtexenabled") == 0)1188 { 1189 if ( strcmp(a->argv[1], "yes") == 0)1283 else if (!strcmp(a->argv[0], "hwvirtexenabled")) 1284 { 1285 if (!strcmp(a->argv[1], "yes")) 1190 1286 CHECK_ERROR(systemProperties, COMSETTER(HWVirtExEnabled)(TRUE)); 1191 else if ( strcmp(a->argv[1], "no") == 0)1287 else if (!strcmp(a->argv[1], "no")) 1192 1288 CHECK_ERROR(systemProperties, COMSETTER(HWVirtExEnabled)(FALSE)); 1193 1289 else 1194 1290 return errorArgument("Invalid value '%s' for hardware virtualization extension flag", a->argv[1]); 1195 1291 } 1196 else if ( strcmp(a->argv[0], "loghistorycount") == 0)1292 else if (!strcmp(a->argv[0], "loghistorycount")) 1197 1293 { 1198 1294 uint32_t uVal; … … 1230 1326 machine->COMGETTER(Id)(uuid.asOutParam()); 1231 1327 1232 if ( strcmp(a->argv[0], "add") == 0)1328 if (!strcmp(a->argv[0], "add")) 1233 1329 { 1234 1330 /* we need at least four more parameters */ … … 1243 1339 for (int i = 2; i < a->argc; i++) 1244 1340 { 1245 if (strcmp(a->argv[i], "-name") == 0) 1341 if ( !strcmp(a->argv[i], "--name") 1342 || !strcmp(a->argv[i], "-name")) 1246 1343 { 1247 1344 if (a->argc <= i + 1 || !*a->argv[i+1]) … … 1250 1347 name = a->argv[i]; 1251 1348 } 1252 else if (strcmp(a->argv[i], "-hostpath") == 0) 1349 else if ( !strcmp(a->argv[i], "--hostpath") 1350 || !strcmp(a->argv[i], "-hostpath")) 1253 1351 { 1254 1352 if (a->argc <= i + 1 || !*a->argv[i+1]) … … 1257 1355 hostpath = a->argv[i]; 1258 1356 } 1259 else if (strcmp(a->argv[i], "-readonly") == 0) 1357 else if ( !strcmp(a->argv[i], "--readonly") 1358 || !strcmp(a->argv[i], "-readonly")) 1260 1359 { 1261 1360 fWritable = false; 1262 1361 } 1263 else if (strcmp(a->argv[i], "-transient") == 0) 1362 else if ( !strcmp(a->argv[i], "--transient") 1363 || !strcmp(a->argv[i], "-transient")) 1264 1364 { 1265 1365 fTransient = true; … … 1275 1375 if (!name || !hostpath) 1276 1376 { 1277 return errorSyntax(USAGE_SHAREDFOLDER_ADD, "Parameters - name and-hostpath are required");1377 return errorSyntax(USAGE_SHAREDFOLDER_ADD, "Parameters --name and --hostpath are required"); 1278 1378 } 1279 1379 … … 1310 1410 } 1311 1411 } 1312 else if ( strcmp(a->argv[0], "remove") == 0)1412 else if (!strcmp(a->argv[0], "remove")) 1313 1413 { 1314 1414 /* we need at least two more parameters */ … … 1321 1421 for (int i = 2; i < a->argc; i++) 1322 1422 { 1323 if (strcmp(a->argv[i], "-name") == 0) 1423 if ( !strcmp(a->argv[i], "--name") 1424 || !strcmp(a->argv[i], "-name")) 1324 1425 { 1325 1426 if (a->argc <= i + 1 || !*a->argv[i+1]) … … 1328 1429 name = a->argv[i]; 1329 1430 } 1330 else if (strcmp(a->argv[i], "-transient") == 0) 1431 else if ( !strcmp(a->argv[i], "--transient") 1432 || !strcmp(a->argv[i], "-transient")) 1331 1433 { 1332 1434 fTransient = true; … … 1338 1440 /* required arguments */ 1339 1441 if (!name) 1340 return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Parameter - name is required");1442 return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Parameter --name is required"); 1341 1443 1342 1444 if (fTransient) … … 1405 1507 for (int i = 1; i < a->argc; i++) 1406 1508 { 1407 if (!strcmp(a->argv[i], "-pattern")) 1509 if ( !strcmp(a->argv[i], "--pattern") 1510 || !strcmp(a->argv[i], "-pattern")) 1408 1511 { 1409 1512 if (pszPattern) 1410 return errorSyntax(USAGE_VM_STATISTICS, "Multiple - patterns options is not permitted");1513 return errorSyntax(USAGE_VM_STATISTICS, "Multiple --patterns options is not permitted"); 1411 1514 if (i + 1 >= a->argc) 1412 1515 return errorArgument("Missing argument to '%s'", a->argv[i]); 1413 1516 pszPattern = a->argv[++i]; 1414 1517 } 1415 else if (!strcmp(a->argv[i], "-descriptions")) 1518 else if ( !strcmp(a->argv[i], "--descriptions") 1519 || !strcmp(a->argv[i], "-descriptions")) 1416 1520 fWithDescriptions = true; 1417 /* add: -file <filename> and -formatted */ 1418 else if (!strcmp(a->argv[i], "-reset")) 1521 /* add: --file <filename> and --formatted */ 1522 else if ( !strcmp(a->argv[i], "--reset") 1523 || !strcmp(a->argv[i], "-reset")) 1419 1524 fReset = true; 1420 1525 else … … 1422 1527 } 1423 1528 if (fReset && fWithDescriptions) 1424 return errorSyntax(USAGE_VM_STATISTICS, "The - reset and-descriptions options does not mix");1529 return errorSyntax(USAGE_VM_STATISTICS, "The --reset and --descriptions options does not mix"); 1425 1530 1426 1531 … … 1555 1660 "the VBoxManage command line and repeat the command:\n" 1556 1661 "\n" 1557 " - convertSettings - to save all auto-converted files (it will not\n"1558 " be possible to use these settings files with an\n"1559 " older version of VirtualBox in the future);\n"1560 " - convertSettingsBackup - to create backup copies of the settings files in\n"1561 " the old format before saving them in the new format;\n"1562 " - convertSettingsIgnore - to not save the auto-converted settings files.\n"1662 " --convertSettings - to save all auto-converted files (it will not\n" 1663 " be possible to use these settings files with an\n" 1664 " older version of VirtualBox in the future);\n" 1665 " --convertSettingsBackup - to create backup copies of the settings files in\n" 1666 " the old format before saving them in the new format;\n" 1667 " --convertSettingsIgnore - to not save the auto-converted settings files.\n" 1563 1668 "\n" 1564 "Note that if you use - convertSettingsIgnore, the auto-converted settings files\n"1669 "Note that if you use --convertSettingsIgnore, the auto-converted settings files\n" 1565 1670 "will be implicitly saved in the new format anyway once you change a setting or\n" 1566 1671 "start a virtual machine, but NO backup copies will be created in this case.\n"); … … 1643 1748 { 1644 1749 if ( argc <= iCmd 1645 || (strcmp(argv[i], "help") == 0)1646 || (strcmp(argv[i], "-?") == 0)1647 || (strcmp(argv[i], "-h") == 0)1648 || (strcmp(argv[i], "-help") == 0)1649 || (strcmp(argv[i], "--help") == 0))1750 || !strcmp(argv[i], "help") 1751 || !strcmp(argv[i], "-?") 1752 || !strcmp(argv[i], "-h") 1753 || !strcmp(argv[i], "-help") 1754 || !strcmp(argv[i], "--help")) 1650 1755 { 1651 1756 showLogo(); … … 1653 1758 return 0; 1654 1759 } 1655 else if ( strcmp(argv[i], "-v") == 01656 || strcmp(argv[i], "-version") == 01657 || strcmp(argv[i], "-Version") == 01658 || strcmp(argv[i], "--version") == 0)1760 else if ( !strcmp(argv[i], "-v") 1761 || !strcmp(argv[i], "-version") 1762 || !strcmp(argv[i], "-Version") 1763 || !strcmp(argv[i], "--version")) 1659 1764 { 1660 1765 /* Print version number, and do nothing else. */ … … 1662 1767 return 0; 1663 1768 } 1664 else if (strcmp(argv[i], "-dumpopts") == 0) 1769 else if ( !strcmp(argv[i], "--dumpopts") 1770 || !strcmp(argv[i], "-dumpopts")) 1665 1771 { 1666 1772 /* Special option to dump really all commands, … … 1669 1775 return 0; 1670 1776 } 1671 else if (strcmp(argv[i], "-nologo") == 0) 1777 else if ( !strcmp(argv[i], "--nologo") 1778 || !strcmp(argv[i], "-nologo") 1779 || !strcmp(argv[i], "-q")) 1672 1780 { 1673 1781 /* suppress the logo */ … … 1675 1783 iCmd++; 1676 1784 } 1677 else if (strcmp(argv[i], "-convertSettings") == 0) 1785 else if ( !strcmp(argv[i], "--convertSettings") 1786 || !strcmp(argv[i], "-convertSettings")) 1678 1787 { 1679 1788 fConvertSettings = ConvertSettings_Yes; 1680 1789 iCmd++; 1681 1790 } 1682 else if (strcmp(argv[i], "-convertSettingsBackup") == 0) 1791 else if ( !strcmp(argv[i], "--convertSettingsBackup") 1792 || !strcmp(argv[i], "-convertSettingsBackup")) 1683 1793 { 1684 1794 fConvertSettings = ConvertSettings_Backup; 1685 1795 iCmd++; 1686 1796 } 1687 else if (strcmp(argv[i], "-convertSettingsIgnore") == 0) 1797 else if ( !strcmp(argv[i], "--convertSettingsIgnore") 1798 || !strcmp(argv[i], "-convertSettingsIgnore")) 1688 1799 { 1689 1800 fConvertSettings = ConvertSettings_Ignore; … … 1839 1950 for (commandIndex = 0; commandHandlers[commandIndex].command != NULL; commandIndex++) 1840 1951 { 1841 if ( strcmp(commandHandlers[commandIndex].command, argv[iCmd]) == 0)1952 if (!strcmp(commandHandlers[commandIndex].command, argv[iCmd])) 1842 1953 { 1843 1954 handlerArg.argc = argc - iCmdArg; -
trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
r18703 r18782 68 68 if (u64Cmd == USAGE_ALL) 69 69 { 70 RTPrintf("VBoxManage [-v|- version] print version number and exit\n"71 "VBoxManage -nologo ...suppress the logo\n"70 RTPrintf("VBoxManage [-v|--version] print version number and exit\n" 71 "VBoxManage [-q|--nologo] ... suppress the logo\n" 72 72 "\n"); 73 73 } … … 88 88 if (u64Cmd & USAGE_SHOWVMINFO) 89 89 { 90 RTPrintf("VBoxManage showvminfo <uuid>|<name> [- details] [-statistics]\n"91 " [- machinereadable]\n"90 RTPrintf("VBoxManage showvminfo <uuid>|<name> [--details] [--statistics]\n" 91 " [--machinereadable]\n" 92 92 "\n"); 93 93 } … … 101 101 if (u64Cmd & USAGE_UNREGISTERVM) 102 102 { 103 RTPrintf("VBoxManage unregistervm <uuid>|<name> [- delete]\n"103 RTPrintf("VBoxManage unregistervm <uuid>|<name> [--delete]\n" 104 104 "\n"); 105 105 } … … 107 107 if (u64Cmd & USAGE_CREATEVM) 108 108 { 109 RTPrintf("VBoxManage createvm - name <name>\n"110 " [- ostype <ostype>]\n"111 " [- register]\n"112 " [- basefolder <path> |-settingsfile <path>]\n"113 " [- uuid <uuid>]\n"109 RTPrintf("VBoxManage createvm --name <name>\n" 110 " [--ostype <ostype>]\n" 111 " [--register]\n" 112 " [--basefolder <path> | --settingsfile <path>]\n" 113 " [--uuid <uuid>]\n" 114 114 "\n"); 115 115 } … … 118 118 { 119 119 RTPrintf("VBoxManage modifyvm <uuid|name>\n" 120 " [- name <name>]\n"121 " [- ostype <ostype>]\n"122 " [- memory <memorysize in MB>]\n"123 " [- vram <vramsize in MB>]\n"124 " [- acpi on|off]\n"125 " [- ioapic on|off]\n"126 " [- pae on|off]\n"127 " [- hwvirtex on|off|default]\n"128 " [- nestedpaging on|off]\n"129 " [- vtxvpid on|off]\n"130 " [- monitorcount <number>]\n"131 " [- accelerate3d <on|off>]\n"132 " [- bioslogofadein on|off]\n"133 " [- bioslogofadeout on|off]\n"134 " [- bioslogodisplaytime <msec>]\n"135 " [- bioslogoimagepath <imagepath>]\n"136 " [- biosbootmenu disabled|menuonly|messageandmenu]\n"137 " [- biossystemtimeoffset <msec>]\n"138 " [- biospxedebug on|off]\n"139 " [- boot<1-4> none|floppy|dvd|disk|net>]\n"140 " [- hd<a|b|d> none|<uuid>|<filename>]\n"141 " [- idecontroller PIIX3|PIIX4]\n"120 " [--name <name>]\n" 121 " [--ostype <ostype>]\n" 122 " [--memory <memorysize in MB>]\n" 123 " [--vram <vramsize in MB>]\n" 124 " [--acpi on|off]\n" 125 " [--ioapic on|off]\n" 126 " [--pae on|off]\n" 127 " [--hwvirtex on|off|default]\n" 128 " [--nestedpaging on|off]\n" 129 " [--vtxvpid on|off]\n" 130 " [--monitorcount <number>]\n" 131 " [--accelerate3d <on|off>]\n" 132 " [--bioslogofadein on|off]\n" 133 " [--bioslogofadeout on|off]\n" 134 " [--bioslogodisplaytime <msec>]\n" 135 " [--bioslogoimagepath <imagepath>]\n" 136 " [--biosbootmenu disabled|menuonly|messageandmenu]\n" 137 " [--biossystemtimeoffset <msec>]\n" 138 " [--biospxedebug on|off]\n" 139 " [--boot<1-4> none|floppy|dvd|disk|net>]\n" 140 " [--hd<a|b|d> none|<uuid>|<filename>]\n" 141 " [--idecontroller PIIX3|PIIX4]\n" 142 142 #ifdef VBOX_WITH_AHCI 143 " [- sata on|off]\n"144 " [- sataportcount <1-30>]\n"145 " [- sataport<1-30> none|<uuid>|<filename>]\n"146 " [- sataideemulation<1-4> <1-30>]\n"143 " [--sata on|off]\n" 144 " [--sataportcount <1-30>]\n" 145 " [--sataport<1-30> none|<uuid>|<filename>]\n" 146 " [--sataideemulation<1-4> <1-30>]\n" 147 147 #endif 148 148 #ifdef VBOX_WITH_SCSI 149 " [- scsi on|off]\n"150 " [- scsiport<1-16> none|<uuid>|<filename>]\n"151 " [- scsitype LsiLogic|BusLogic]\n"152 #endif 153 " [- dvd none|<uuid>|<filename>|host:<drive>]\n"154 " [- dvdpassthrough on|off]\n"155 " [- floppy disabled|empty|<uuid>|\n"156 " <filename>|host:<drive>]\n"149 " [--scsi on|off]\n" 150 " [--scsiport<1-16> none|<uuid>|<filename>]\n" 151 " [--scsitype LsiLogic|BusLogic]\n" 152 #endif 153 " [--dvd none|<uuid>|<filename>|host:<drive>]\n" 154 " [--dvdpassthrough on|off]\n" 155 " [--floppy disabled|empty|<uuid>|\n" 156 " <filename>|host:<drive>]\n" 157 157 #if defined(VBOX_WITH_NETFLT) 158 " [- nic<1-N> none|null|nat|bridged|intnet|hostonly]\n"158 " [--nic<1-N> none|null|nat|bridged|intnet|hostonly]\n" 159 159 #else /* !RT_OS_LINUX && !RT_OS_DARWIN */ 160 " [- nic<1-N> none|null|nat|bridged|intnet]\n"160 " [--nic<1-N> none|null|nat|bridged|intnet]\n" 161 161 #endif /* !RT_OS_LINUX && !RT_OS_DARWIN */ 162 " [- nictype<1-N> Am79C970A|Am79C973"162 " [--nictype<1-N> Am79C970A|Am79C973" 163 163 #ifdef VBOX_WITH_E1000 164 "|82540EM|82543GC|82545EM"164 "|\n 82540EM|82543GC|82545EM" 165 165 #endif 166 166 "]\n" 167 " [- cableconnected<1-N> on|off]\n"168 " [- nictrace<1-N> on|off]\n"169 " [- nictracefile<1-N> <filename>]\n"170 " [- nicspeed<1-N> <kbps>]\n"171 " [- bridgeadapter<1-N> none|<devicename>]\n"167 " [--cableconnected<1-N> on|off]\n" 168 " [--nictrace<1-N> on|off]\n" 169 " [--nictracefile<1-N> <filename>]\n" 170 " [--nicspeed<1-N> <kbps>]\n" 171 " [--bridgeadapter<1-N> none|<devicename>]\n" 172 172 #if defined(VBOX_WITH_NETFLT) 173 " [- hostonlyadapter<1-N> none|<devicename>]\n"174 #endif 175 " [- intnet<1-N> <network name>]\n"176 " [- natnet<1-N> <network>|default]\n"177 " [- macaddress<1-N> auto|<mac>]\n"178 " [- uart<1-N> off|<I/O base> <IRQ>]\n"179 " [- uartmode<1-N> disconnected|\n"180 " server <pipe>|\n"181 " client <pipe>|\n"182 " <devicename>]\n"173 " [--hostonlyadapter<1-N> none|<devicename>]\n" 174 #endif 175 " [--intnet<1-N> <network name>]\n" 176 " [--natnet<1-N> <network>|default]\n" 177 " [--macaddress<1-N> auto|<mac>]\n" 178 " [--uart<1-N> off|<I/O base> <IRQ>]\n" 179 " [--uartmode<1-N> disconnected|\n" 180 " server <pipe>|\n" 181 " client <pipe>|\n" 182 " <devicename>]\n" 183 183 #ifdef VBOX_WITH_MEM_BALLOONING 184 " [- guestmemoryballoon <balloonsize in MB>]\n"185 #endif 186 " [- gueststatisticsinterval <seconds>]\n"184 " [--guestmemoryballoon <balloonsize in MB>]\n" 185 #endif 186 " [--gueststatisticsinterval <seconds>]\n" 187 187 ); 188 RTPrintf(" [- audio none|null");188 RTPrintf(" [--audio none|null"); 189 189 if (fWin) 190 190 { … … 215 215 } 216 216 RTPrintf( "]\n"); 217 RTPrintf(" [- audiocontroller ac97|sb16]\n"218 " [- clipboard disabled|hosttoguest|guesttohost|\n"219 " bidirectional]\n");217 RTPrintf(" [--audiocontroller ac97|sb16]\n" 218 " [--clipboard disabled|hosttoguest|guesttohost|\n" 219 " bidirectional]\n"); 220 220 if (fVRDP) 221 221 { 222 RTPrintf(" [- vrdp on|off]\n"223 " [- vrdpport default|<port>]\n"224 " [- vrdpaddress <host>]\n"225 " [- vrdpauthtype null|external|guest]\n"226 " [- vrdpmulticon on|off]\n"227 " [- vrdpreusecon on|off]\n");222 RTPrintf(" [--vrdp on|off]\n" 223 " [--vrdpport default|<port>]\n" 224 " [--vrdpaddress <host>]\n" 225 " [--vrdpauthtype null|external|guest]\n" 226 " [--vrdpmulticon on|off]\n" 227 " [--vrdpreusecon on|off]\n"); 228 228 } 229 RTPrintf(" [- usb on|off]\n"230 " [- usbehci on|off]\n"231 " [- snapshotfolder default|<path>]\n");229 RTPrintf(" [--usb on|off]\n" 230 " [--usbehci on|off]\n" 231 " [--snapshotfolder default|<path>]\n"); 232 232 RTPrintf("\n"); 233 233 } … … 249 249 RTPrintf("VBoxManage startvm <uuid>|<name>\n"); 250 250 if (fVRDP) 251 RTPrintf(" [- type gui|vrdp]\n");251 RTPrintf(" [--type gui|vrdp]\n"); 252 252 RTPrintf("\n"); 253 253 } … … 271 271 RTPrintf(" setvideomodehint <xres> <yres> <bpp> [display]|\n" 272 272 " setcredentials <username> <password> <domain>\n" 273 " [- allowlocallogon <yes|no>]\n"273 " [--allowlocallogon <yes|no>]\n" 274 274 "\n"); 275 275 } … … 290 290 { 291 291 RTPrintf("VBoxManage snapshot <uuid>|<name>\n" 292 " take <name> [- desc<desc>] |\n"292 " take <name> [--description <desc>] |\n" 293 293 " discard <uuid>|<name> |\n" 294 " discardcurrent - state|-all |\n"295 " edit <uuid>|<name>|- current\n"296 " [- newname <name>]\n"297 " [- newdesc<desc>] |\n"294 " discardcurrent --state|--all |\n" 295 " edit <uuid>|<name>|--current\n" 296 " [--name <name>]\n" 297 " [--description <desc>] |\n" 298 298 " showvminfo <uuid>|<name>\n" 299 299 "\n"); … … 407 407 { 408 408 RTPrintf("VBoxManage usbfilter add <index,0-N>\n" 409 " - target <uuid>|<name>|global\n"410 " - name <string>\n"411 " - action ignore|hold (global filters only)\n"412 " [- active yes|no] (yes)\n"413 " [- vendorid <XXXX>] (null)\n"414 " [- productid <XXXX>] (null)\n"415 " [- revision <IIFF>] (null)\n"416 " [- manufacturer <string>] (null)\n"417 " [- product <string>] (null)\n"418 " [- remote yes|no] (null, VM filters only)\n"419 " [- serialnumber <string>] (null)\n"420 " [- maskedinterfaces <XXXXXXXX>]\n"409 " --target <uuid>|<name>|global\n" 410 " --name <string>\n" 411 " --action ignore|hold (global filters only)\n" 412 " [--active yes|no] (yes)\n" 413 " [--vendorid <XXXX>] (null)\n" 414 " [--productid <XXXX>] (null)\n" 415 " [--revision <IIFF>] (null)\n" 416 " [--manufacturer <string>] (null)\n" 417 " [--product <string>] (null)\n" 418 " [--remote yes|no] (null, VM filters only)\n" 419 " [--serialnumber <string>] (null)\n" 420 " [--maskedinterfaces <XXXXXXXX>]\n" 421 421 "\n"); 422 422 } … … 425 425 { 426 426 RTPrintf("VBoxManage usbfilter modify <index,0-N>\n" 427 " - target <uuid>|<name>|global\n"428 " [- name <string>]\n"429 " [- action ignore|hold] (global filters only)\n"430 " [- active yes|no]\n"431 " [- vendorid <XXXX>|\"\"]\n"432 " [- productid <XXXX>|\"\"]\n"433 " [- revision <IIFF>|\"\"]\n"434 " [- manufacturer <string>|\"\"]\n"435 " [- product <string>|\"\"]\n"436 " [- remote yes|no] (null, VM filters only)\n"437 " [- serialnumber <string>|\"\"]\n"438 " [- maskedinterfaces <XXXXXXXX>]\n"427 " --target <uuid>|<name>|global\n" 428 " [--name <string>]\n" 429 " [--action ignore|hold] (global filters only)\n" 430 " [--active yes|no]\n" 431 " [--vendorid <XXXX>|\"\"]\n" 432 " [--productid <XXXX>|\"\"]\n" 433 " [--revision <IIFF>|\"\"]\n" 434 " [--manufacturer <string>|\"\"]\n" 435 " [--product <string>|\"\"]\n" 436 " [--remote yes|no] (null, VM filters only)\n" 437 " [--serialnumber <string>|\"\"]\n" 438 " [--maskedinterfaces <XXXXXXXX>]\n" 439 439 "\n"); 440 440 } … … 443 443 { 444 444 RTPrintf("VBoxManage usbfilter remove <index,0-N>\n" 445 " - target <uuid>|<name>|global\n"445 " --target <uuid>|<name>|global\n" 446 446 "\n"); 447 447 } … … 450 450 { 451 451 RTPrintf("VBoxManage sharedfolder add <vmname>|<uuid>\n" 452 " - name <name>-hostpath <hostpath>\n"453 " [- transient] [-readonly]\n"452 " --name <name> --hostpath <hostpath>\n" 453 " [--transient] [--readonly]\n" 454 454 "\n"); 455 455 } … … 458 458 { 459 459 RTPrintf("VBoxManage sharedfolder remove <vmname>|<uuid>\n" 460 " - name <name> [-transient]\n"460 " --name <name> [--transient]\n" 461 461 "\n"); 462 462 } … … 464 464 if (u64Cmd & USAGE_VM_STATISTICS) 465 465 { 466 RTPrintf("VBoxManage vmstatistics <vmname>|<uuid> [- reset]\n"467 " [- pattern <pattern>] [-descriptions]\n"466 RTPrintf("VBoxManage vmstatistics <vmname>|<uuid> [--reset]\n" 467 " [--pattern <pattern>] [--descriptions]\n" 468 468 "\n"); 469 469 } … … 479 479 " (comma-separated)\n\n" 480 480 "VBoxManage metrics setup\n" 481 " [- period <seconds>]\n"482 " [- samples <count>]\n"483 " [- list]\n"481 " [--period <seconds>]\n" 482 " [--samples <count>]\n" 483 " [--list]\n" 484 484 " [*|host|<vmname> [<metric_list>]]\n\n" 485 485 "VBoxManage metrics query [*|host|<vmname> [<metric_list>]]\n\n" 486 486 "VBoxManage metrics collect\n" 487 " [- period <seconds>]\n"488 " [- samples <count>]\n"489 " [- list]\n"490 " [- detach]\n"487 " [--period <seconds>]\n" 488 " [--samples <count>]\n" 489 " [--list]\n" 490 " [--detach]\n" 491 491 " [*|host|<vmname> [<metric_list>]]\n" 492 492 "\n");
Note:
See TracChangeset
for help on using the changeset viewer.