VBoxManageMisc.cpp revision 1207f59aa62006952dbb0bf7700decf34d8caeb2
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * VBoxManage - VirtualBox's command-line interface.
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * Copyright (C) 2006-2010 Oracle Corporation
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * available from http://www.virtualbox.org. This file is free software;
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * you can redistribute it and/or modify it under the terms of the GNU
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * General Public License (GPL) as published by the Free Software
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync/*******************************************************************************
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync* Header Files *
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync*******************************************************************************/
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync#endif /* !VBOX_ONLY_DOCS */
9040f019271f91b98e1320c0a8c38a42636e3979vboxsyncusing namespace com;
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_REGISTERVM, "Incorrect number of parameters");
99be02f9e15a3ca61b6a7c207cc7eb68dbd04817vboxsync /** @todo Ugly hack to get both the API interpretation of relative paths
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * and the client's interpretation of relative paths. Remove after the API
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync * has been redesigned. */
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync rc = a->virtualBox->OpenMachine(Bstr(a->argv[0]).raw(),
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync int vrc = RTPathAbs(a->argv[0], szVMFileAbs, sizeof(szVMFileAbs));
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync RTMsgError("Cannot convert filename \"%s\" to absolute path", a->argv[0]);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CHECK_ERROR(a->virtualBox, OpenMachine(Bstr(szVMFileAbs).raw(),
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CHECK_ERROR(a->virtualBox, OpenMachine(Bstr(a->argv[0]).raw(),
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CHECK_ERROR(a->virtualBox, RegisterMachine(machine));
6c90795355c6e59ba82e8e5a58e10d686a6d6e65vboxsync { "-delete", 'd', RTGETOPT_REQ_NOTHING }, // deprecated
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync bool fDelete = false;
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync // start at 0 because main() has hacked both the argc and argv given to us
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync RTGetOptInit(&GetState, a->argc, a->argv, g_aUnregisterVMOptions, RT_ELEMENTS(g_aUnregisterVMOptions),
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid parameter '%s'", ValueUnion.psz);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid option -%c", c);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "Invalid option case %i", c);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "unknown option: %s\n", ValueUnion.psz);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "%s: %Rrs", ValueUnion.pDef->pszLong, c);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "error: %Rrs", c);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync /* check for required options */
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorSyntax(USAGE_UNREGISTERVM, "VM name required");
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync /* assume it's a UUID */
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync rc = a->virtualBox->GetMachine(Bstr(VMName).raw(), machine.asOutParam());
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync /* must be a name */
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CHECK_ERROR(a->virtualBox, FindMachine(Bstr(VMName).raw(),
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CleanupMode_T cleanupMode = CleanupMode_DetachAllReturnNone;
479124979f37167f8ce75bf59090903d30e1ced3vboxsync cleanupMode = CleanupMode_DetachAllReturnHardDisksOnly;
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync CHECK_ERROR(machine, Delete(ComSafeArrayAsInParam(aMedia), pProgress.asOutParam()));
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync bool fRegister = false;
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync for (int i = 0; i < a->argc; i++)
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
479124979f37167f8ce75bf59090903d30e1ced3vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
19a258565a4d24e5a0af62f626943ac9b898d957vboxsync return errorArgument("Missing argument to '%s'", a->argv[i]);
fRegister = true;
if (fRegister)
#ifdef VBOX_WITH_VBOXSDL
#ifdef VBOX_WITH_VRDP
#ifdef VBOX_WITH_HEADLESS
case VINF_GETOPT_NOT_OPTION:
if (!VMName)
if (RT_C_IS_PRINT(c))
else if (c == VERR_GETOPT_UNKNOWN_OPTION)
if (!VMName)
if (machine)
if (pszDisplay)
if (pszXAuth)
if (machine)
if (machine)
for (size_t i = 0;
if (machine)
for (size_t i = 0;
NULL));
if (machine)
NULL));
int vrc;
if (!machine)
bool fTransient = false;
bool fWritable = true;
bool fAutoMount = false;
fWritable = false;
fTransient = true;
fAutoMount = true;
if (fTransient)
if (console)
bool fTransient = false;
fTransient = true;
return errorSyntax(USAGE_SHAREDFOLDER_REMOVE, "Invalid parameter '%s'", Utf8Str(a->argv[i]).c_str());
if (!name)
if (fTransient)
if (console)
bool fReset = false;
bool fWithDescriptions = false;
if (pszPattern)
fWithDescriptions = true;
fReset = true;
if (fReset)