VBoxManageMisc.cpp revision a126a5a0d184e3245a585414758011d1d095b35f
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * VBoxManage - VirtualBox's command-line interface.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Copyright (C) 2006-2009 Oracle Corporation
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync/*******************************************************************************
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync* Header Files *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync*******************************************************************************/
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif /* !VBOX_ONLY_DOCS */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncusing namespace com;
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync return errorSyntax(USAGE_REGISTERVM, "Incorrect number of parameters");
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync /** @todo Ugly hack to get both the API interpretation of relative paths
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync * and the client's interpretation of relative paths. Remove after the API
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsync * has been redesigned. */
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync rc = a->virtualBox->OpenMachine(Bstr(a->argv[0]), machine.asOutParam());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync int vrc = RTPathAbs(a->argv[0], szVMFileAbs, sizeof(szVMFileAbs));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync RTPrintf("Cannot convert filename \"%s\" to absolute path\n", a->argv[0]);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, OpenMachine(Bstr(szVMFileAbs), machine.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, OpenMachine(Bstr(a->argv[0]), machine.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, RegisterMachine(machine));
22e281e75ed636601178296c6daebda8f1d17c59vboxsync { "-delete", 'd', RTGETOPT_REQ_NOTHING }, // deprecated
22e281e75ed636601178296c6daebda8f1d17c59vboxsync bool fDelete = false;
22e281e75ed636601178296c6daebda8f1d17c59vboxsync // start at 0 because main() has hacked both the argc and argv given to us
22e281e75ed636601178296c6daebda8f1d17c59vboxsync RTGetOptInit(&GetState, a->argc, a->argv, g_aUnregisterVMOptions, RT_ELEMENTS(g_aUnregisterVMOptions),
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid parameter '%s'", ValueUnion.psz);
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid option -%c", c);
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid option case %i", c);
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_UNREGISTERVM, "unknown option: %s\n", ValueUnion.psz);
c17f5c90f2cb60b38ecabebce128724c6ff2d036vboxsync return errorSyntax(USAGE_UNREGISTERVM, "%s: %Rrs", ValueUnion.pDef->pszLong, c);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_UNREGISTERVM, "error: %Rrs", c);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* check for required options */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_UNREGISTERVM, "VM name required");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* assume it's a UUID */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync rc = a->virtualBox->GetMachine(Guid(VMName).toUtf16(), machine.asOutParam());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* must be a name */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(VMName), machine.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, UnregisterMachine(uuid, machine.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fRegister = false;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync for (int i = 0; i < a->argc; i++)
3ecf9412133496b2aeb090cfd33a286404ec59fbvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync return errorArgument("Invalid UUID format %s\n", a->argv[i]);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_CREATEVM, "Invalid parameter '%s'", Utf8Str(a->argv[i]).raw());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_CREATEVM, "Parameter --name is required");
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync if (!baseFolder.isEmpty() && !settingsFile.isEmpty())
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_CREATEVM, "Cannot specify both --basefolder and --settingsfile together");
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync CreateMachine(name, osTypeId, baseFolder, Guid(id).toUtf16(), FALSE, machine.asOutParam()));
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync CreateLegacyMachine(name, osTypeId, settingsFile, Guid(id).toUtf16(), machine.asOutParam()));
3ecd8008b81f02a04220705ae0033142af363280vboxsync CHECK_ERROR_BREAK(a->virtualBox, RegisterMachine(machine));
576d4214137bce409cdcf01e8df4a0bca5e0b2d1vboxsync CHECK_ERROR_BREAK(machine, COMGETTER(Id)(uuid.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_BREAK(machine, COMGETTER(SettingsFilePath)(settingsFile.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync "UUID: %s\n"
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync "Settings file: '%ls'\n",
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync { "-type", 't', RTGETOPT_REQ_STRING }, // deprecated
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync // start at 0 because main() has hacked both the argc and argv given to us
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync RTGetOptInit(&GetState, a->argc, a->argv, s_aStartVMOptions, RT_ELEMENTS(s_aStartVMOptions),
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync return errorArgument("Invalid session type '%s'", ValueUnion.psz);
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync return errorSyntax(USAGE_STARTVM, "Invalid parameter '%s'", ValueUnion.psz);
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync return errorSyntax(USAGE_STARTVM, "Invalid option -%c", c);
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync return errorSyntax(USAGE_STARTVM, "Invalid option case %i", c);
1843553dbdf4e46417158b4c6348c503adf10740vboxsync return errorSyntax(USAGE_STARTVM, "unknown option: %s\n", ValueUnion.psz);
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync return errorSyntax(USAGE_STARTVM, "%s: %Rrs", ValueUnion.pDef->pszLong, c);
806d0b554daa555364af5f87bc96eccbe760db7avboxsync return errorSyntax(USAGE_STARTVM, "error: %Rrs", c);
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /* check for required options */
1843553dbdf4e46417158b4c6348c503adf10740vboxsync return errorSyntax(USAGE_STARTVM, "VM name required");
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /* assume it's a UUID */
1843553dbdf4e46417158b4c6348c503adf10740vboxsync rc = a->virtualBox->GetMachine(Guid(VMName).toUtf16(), machine.asOutParam());
ebbb1f6c7e8bae363a4efda4b35b58c8467d24bcvboxsync /* must be a name */
1843553dbdf4e46417158b4c6348c503adf10740vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(VMName), machine.asOutParam()));
1843553dbdf4e46417158b4c6348c503adf10740vboxsync /* make sure the VM process will start on the same display as VBoxManage */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync str.append(Utf8StrFmt("XAUTHORITY=%s\n", pszXAuth));
22e281e75ed636601178296c6daebda8f1d17c59vboxsync CHECK_ERROR_RET(a->virtualBox, OpenRemoteSession(a->session, uuid, sessionType,
1843553dbdf4e46417158b4c6348c503adf10740vboxsync CHECK_ERROR_RET(progress, WaitForCompletion(-1), 1);
ebbb1f6c7e8bae363a4efda4b35b58c8467d24bcvboxsync CHECK_ERROR_RET(progress, COMGETTER(Completed)(&completed), rc);
533ffcb943c4af2c5fe6385d816d0ba3eda9383bvboxsync CHECK_ERROR_RET(progress, COMGETTER(ResultCode)(&iRc), rc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_RET(progress, COMGETTER(ErrorInfo)(errorInfo.asOutParam()), 1);
22e281e75ed636601178296c6daebda8f1d17c59vboxsync ErrorInfo info(errorInfo, COM_IIDOF(IVirtualBoxErrorInfo));
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync /* it's important to always close sessions */
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync return errorSyntax(USAGE_DISCARDSTATE, "Incorrect number of parameters");
22e281e75ed636601178296c6daebda8f1d17c59vboxsync /* assume it's a UUID */
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync rc = a->virtualBox->GetMachine(Bstr(a->argv[0]), machine.asOutParam());
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync /* must be a name */
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[0]), machine.asOutParam()));
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync /* we have to open a session for this task */
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync CHECK_ERROR_BREAK(a->virtualBox, OpenSession(a->session, guid));
2d53f6e472561965d363674e17f48d3bdffc24d3vboxsync CHECK_ERROR_BREAK(a->session, COMGETTER(Console)(console.asOutParam()));
0e77737b0ba913683e614db11463b31ca67aacbevboxsync CHECK_ERROR_BREAK(console, ForgetSavedState(true));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync } while (0);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync } while (0);
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync return errorSyntax(USAGE_ADOPTSTATE, "Incorrect number of parameters");
806d0b554daa555364af5f87bc96eccbe760db7avboxsync /* assume it's a UUID */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync rc = a->virtualBox->GetMachine(Bstr(a->argv[0]), machine.asOutParam());
806d0b554daa555364af5f87bc96eccbe760db7avboxsync /* must be a name */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[0]), machine.asOutParam()));
806d0b554daa555364af5f87bc96eccbe760db7avboxsync /* we have to open a session for this task */
6ae4b1c72625a8e5c369effea7f018b578d733c4vboxsync CHECK_ERROR_BREAK(a->virtualBox, OpenSession(a->session, guid));
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync CHECK_ERROR_BREAK(a->session, COMGETTER(Console)(console.asOutParam()));
806d0b554daa555364af5f87bc96eccbe760db7avboxsync CHECK_ERROR_BREAK(console, AdoptSavedState(Bstr(a->argv[1])));
806d0b554daa555364af5f87bc96eccbe760db7avboxsync } while (0);
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync } while (0);
e149c362e69e5f0bbd82da11fd8163b2d29c3a72vboxsync return errorSyntax(USAGE_GETEXTRADATA, "Incorrect number of parameters");
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /* global data? */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /* enumeration? */
806d0b554daa555364af5f87bc96eccbe760db7avboxsync CHECK_ERROR(a->virtualBox, GetExtraDataKeys(ComSafeArrayAsOutParam(aKeys)));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, GetExtraData(bstrKey, bstrValue.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync RTPrintf("Key: %lS, Value: %lS\n", bstrKey.raw(), bstrValue.raw());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(a->virtualBox, GetExtraData(Bstr(a->argv[1]), value.asOutParam()));
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync /* assume it's a UUID */
22e281e75ed636601178296c6daebda8f1d17c59vboxsync rc = a->virtualBox->GetMachine(Bstr(a->argv[0]), machine.asOutParam());
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync /* must be a name */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[0]), machine.asOutParam()));
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync /* enumeration? */
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync CHECK_ERROR(machine, GetExtraDataKeys(ComSafeArrayAsOutParam(aKeys)));
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync CHECK_ERROR(machine, GetExtraData(bstrKey, bstrValue.asOutParam()));
5e797edc29f96c8367de4fbf5874171c24a89ba7vboxsync RTPrintf("Key: %lS, Value: %lS\n", bstrKey.raw(), bstrValue.raw());
6ae4b1c72625a8e5c369effea7f018b578d733c4vboxsync CHECK_ERROR(machine, GetExtraData(Bstr(a->argv[1]), value.asOutParam()));
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync return errorSyntax(USAGE_SETEXTRADATA, "Not enough parameters");
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync /* global data? */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync CHECK_ERROR(a->virtualBox, SetExtraData(Bstr(a->argv[1]), NULL));
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync CHECK_ERROR(a->virtualBox, SetExtraData(Bstr(a->argv[1]), Bstr(a->argv[2])));
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync return errorSyntax(USAGE_SETEXTRADATA, "Too many parameters");
7bae75e0b207aa4d4cad2a951271ad1a0e8ab9fdvboxsync /* assume it's a UUID */
6ae4b1c72625a8e5c369effea7f018b578d733c4vboxsync rc = a->virtualBox->GetMachine(Bstr(a->argv[0]), machine.asOutParam());
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync /* must be a name */
79b24ef0ab7cd4a03a3571b3954c52ab8b573137vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[0]), machine.asOutParam()));
3cac8f8c6923a3a89ecfccda5e89ad75f48658e0vboxsync CHECK_ERROR(machine, SetExtraData(Bstr(a->argv[1]), NULL));
7082d29724f6c3788977a51591b0379fd3acbf72vboxsync CHECK_ERROR(machine, SetExtraData(Bstr(a->argv[1]), Bstr(a->argv[2])));
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync return errorSyntax(USAGE_SETEXTRADATA, "Too many parameters");
22e281e75ed636601178296c6daebda8f1d17c59vboxsync /* there must be two arguments: property name and value */
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync return errorSyntax(USAGE_SETPROPERTY, "Incorrect number of parameters");
f9147fe1eaa4e35287f8f39282c7f92f0d7de0b7vboxsync a->virtualBox->COMGETTER(SystemProperties)(systemProperties.asOutParam());
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /* reset to default? */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(DefaultHardDiskFolder)(NULL));
22e281e75ed636601178296c6daebda8f1d17c59vboxsync CHECK_ERROR(systemProperties, COMSETTER(DefaultHardDiskFolder)(Bstr(a->argv[1])));
6ae4b1c72625a8e5c369effea7f018b578d733c4vboxsync /* reset to default? */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(DefaultMachineFolder)(NULL));
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync CHECK_ERROR(systemProperties, COMSETTER(DefaultMachineFolder)(Bstr(a->argv[1])));
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync /* reset to default? */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(RemoteDisplayAuthLibrary)(NULL));
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync CHECK_ERROR(systemProperties, COMSETTER(RemoteDisplayAuthLibrary)(Bstr(a->argv[1])));
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync /* reset to default? */
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(WebServiceAuthLibrary)(NULL));
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(WebServiceAuthLibrary)(Bstr(a->argv[1])));
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorArgument("Error parsing Log history count '%s'", a->argv[1]);
6f0193f5a9287559d34a75f438c2682d8fb08038vboxsync CHECK_ERROR(systemProperties, COMSETTER(LogHistoryCount)(uVal));
6ae4b1c72625a8e5c369effea7f018b578d733c4vboxsync return errorSyntax(USAGE_SETPROPERTY, "Invalid parameter '%s'", a->argv[0]);
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync /* we need at least a command and target */
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_SHAREDFOLDER, "Not enough parameters");
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /* assume it's a UUID */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync rc = a->virtualBox->GetMachine(Bstr(a->argv[1]), machine.asOutParam());
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync /* must be a name */
13ba5527caaa9b8c4fee29f22e374fa67c4c6f72vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[1]), machine.asOutParam()));
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync /* we need at least four more parameters */
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync return errorSyntax(USAGE_SHAREDFOLDER_ADD, "Not enough parameters");
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync bool fTransient = false;
65b61798a61dd4c32cce448db1dac70bba8d5cf5vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync return errorSyntax(USAGE_SHAREDFOLDER_ADD, "Invalid parameter '%s'", Utf8Str(a->argv[i]).raw());
22e281e75ed636601178296c6daebda8f1d17c59vboxsync return errorSyntax(USAGE_SHAREDFOLDER_ADD, "No spaces allowed in parameter '-name'!");
3dde2f85d4cf477621a3128887a2c08a8bca7c01vboxsync /* required arguments */
46df4404c8dbbf3672e7aae8cd0b2770356e5b73vboxsync return errorSyntax(USAGE_SHAREDFOLDER_ADD, "Parameters --name and --hostpath are required");
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync /* open an existing session for the VM */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync CHECK_ERROR_RET(a->virtualBox, OpenExistingSession(a->session, uuid), 1);
e0b9d3c357adf9b7d05f55540e86f22943fc4b23vboxsync /* get the session machine */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync CHECK_ERROR_RET(a->session, COMGETTER(Machine)(machine.asOutParam()), 1);
22e281e75ed636601178296c6daebda8f1d17c59vboxsync /* get the session console */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync CHECK_ERROR_RET(a->session, COMGETTER(Console)(console.asOutParam()), 1);
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync CHECK_ERROR(console, CreateSharedFolder(Bstr(name), Bstr(hostpath), fWritable));
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync /* open a session for the VM */
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync CHECK_ERROR_RET(a->virtualBox, OpenSession(a->session, uuid), 1);
e08de24d4792d31b7f2aac29db5cb8840d940009vboxsync /* get the mutable session machine */
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync a->session->COMGETTER(Machine)(machine.asOutParam());
585f64d6f624f9e683321dabeb21b0eb2e6aa473vboxsync CHECK_ERROR(machine, CreateSharedFolder(Bstr(name), Bstr(hostpath), fWritable));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* we need at least two more parameters */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Not enough parameters");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync bool fTransient = false;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Invalid parameter '%s'", Utf8Str(a->argv[i]).raw());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* required arguments */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Parameter --name is required");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* open an existing session for the VM */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_RET(a->virtualBox, OpenExistingSession(a->session, uuid), 1);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* get the session machine */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_RET(a->session, COMGETTER(Machine)(machine.asOutParam()), 1);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* get the session console */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_RET(a->session, COMGETTER(Console)(console.asOutParam()), 1);
3cbb4f9a6a320e58ed398ef7aaa004cc8727abc5vboxsync CHECK_ERROR(console, RemoveSharedFolder(Bstr(name)));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* open a session for the VM */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR_RET(a->virtualBox, OpenSession(a->session, uuid), 1);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* get the mutable session machine */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync a->session->COMGETTER(Machine)(machine.asOutParam());
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync CHECK_ERROR(machine, RemoveSharedFolder(Bstr(name)));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* commit and close the session */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_SETPROPERTY, "Invalid parameter '%s'", Utf8Str(a->argv[0]).raw());
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync /* at least one option: the UUID or name of the VM */
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync return errorSyntax(USAGE_VM_STATISTICS, "Incorrect number of parameters");
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync /* try to find the given machine */
e17bd6c32a8dd64f2d42838f9028216465e2caf0vboxsync CHECK_ERROR(a->virtualBox, GetMachine(uuid, machine.asOutParam()));
5ace91141404400247438502a84a418fba00c8cfvboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(a->argv[0]), machine.asOutParam()));
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsync /* parse arguments. */
49748bb305bd71f672cd083af208f4bb08c5d6abvboxsync bool fReset = false;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorSyntax(USAGE_VM_STATISTICS, "Multiple --patterns options is not permitted");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
b9ca93dd1ad44cb8b27679dc5624be2f7b7f7af5vboxsync /* add: --file <filename> and --formatted */
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync return errorSyntax(USAGE_VM_STATISTICS, "Unknown option '%s'", a->argv[i]);
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync return errorSyntax(USAGE_VM_STATISTICS, "The --reset and --descriptions options does not mix");
51d4024e2984de499ecd878341898f71f55cf9e0vboxsync /* open an existing session for the VM. */
8b984478b755f4d3091b977d9beac9fb7434279fvboxsync CHECK_ERROR(a->virtualBox, OpenExistingSession(a->session, uuid));
e9a217d585085a6a6d129d27ca0d96a1b8e6d0eevboxsync /* get the session console. */
fdc5224bd8d9a60af82da5809e3d6729c9bc69cbvboxsync CHECK_ERROR(a->session, COMGETTER(Console)(console.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* get the machine debugger. */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(console, COMGETTER(Debugger)(debugger.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(debugger, ResetStats(Bstr(pszPattern)));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CHECK_ERROR(debugger, GetStats(Bstr(pszPattern), fWithDescriptions, stats.asOutParam()));
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* if (fFormatted)
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync { big mess }