VirtualBox

Changeset 38525 in vbox


Ignore:
Timestamp:
Aug 25, 2011 11:40:58 AM (13 years ago)
Author:
vboxsync
Message:

FE/CLI: use CHECK_PROGRESS_ERROR

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
8 edited

Legend:

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

    r38469 r38525  
    20922092}
    20932093
     2094#include <VBox/com/array.h>
     2095int CmdTest(int argc, char **argv, ComPtr<IVirtualBox> aVirtualBox, ComPtr<ISession> aSession)
     2096{
     2097    /* one parameter, guest name */
     2098    if (argc < 1)
     2099        return errorSyntax(USAGE_GUESTSTATS, "Missing VM name/UUID");
     2100
     2101    /*
     2102     * Parse the command.
     2103     */
     2104    ULONG aUpdateInterval = 0;
     2105
     2106    static const RTGETOPTDEF s_aOptions[] =
     2107    {
     2108        { "--interval", 'i', RTGETOPT_REQ_UINT32  }
     2109    };
     2110
     2111    int ch;
     2112    RTGETOPTUNION ValueUnion;
     2113    RTGETOPTSTATE GetState;
     2114    RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1, 0);
     2115    while ((ch = RTGetOpt(&GetState, &ValueUnion)))
     2116    {
     2117        switch (ch)
     2118        {
     2119            case 'i':
     2120                aUpdateInterval = ValueUnion.u32;
     2121                break;
     2122
     2123            default:
     2124                return errorGetOpt(USAGE_GUESTSTATS , ch, &ValueUnion);
     2125        }
     2126    }
     2127
     2128    if (argc > 1 && aUpdateInterval == 0)
     2129        return errorSyntax(USAGE_GUESTSTATS, "Invalid update interval specified");
     2130
     2131    RTPrintf("argc=%d interval=%u\n", argc, aUpdateInterval);
     2132
     2133    ComPtr<IMachine> ptrMachine;
     2134    HRESULT rc;
     2135    CHECK_ERROR_RET(aVirtualBox, FindMachine(Bstr(argv[0]).raw(),
     2136                                             ptrMachine.asOutParam()), 1);
     2137
     2138    CHECK_ERROR_RET(ptrMachine, LockMachine(aSession, LockType_Write), 1);
     2139    Utf8Str trgPath = "/home/poetzsch/downloads/matt_diff.vdi";
     2140
     2141    ComPtr<IMedium> sourceImage;
     2142    ComPtr<IMedium> targetImage;
     2143    CHECK_ERROR_RET(aVirtualBox, OpenMedium(Bstr("/home/poetzsch/downloads/matt.vdi").raw(), DeviceType_HardDisk, AccessMode_ReadWrite, false, sourceImage.asOutParam()), 1);
     2144    CHECK_ERROR_RET(aVirtualBox, CreateHardDisk(Bstr("VDI").raw(), Bstr(trgPath).raw(), targetImage.asOutParam()), 1);
     2145//    sourceImage.lockRead();
     2146    ComPtr<IProgress> progress;
     2147    CHECK_ERROR_RET(sourceImage, CreateDiffStorage(targetImage, (long) MediumVariant_Diff, progress.asOutParam()), 1);
     2148    CHECK_ERROR_RET(progress, WaitForCompletion(-1), 1);
     2149//    sourceImage.unlockRead();
     2150    ComPtr<IMedium> targetImage1;
     2151    CHECK_ERROR_RET(aVirtualBox, OpenMedium(Bstr(trgPath).raw(), DeviceType_HardDisk, AccessMode_ReadWrite, false, targetImage1.asOutParam()), 1);
     2152
     2153    {
     2154        ComPtr<IMachine> mutMachine;
     2155        CHECK_ERROR_RET(aSession, COMGETTER(Machine)(mutMachine.asOutParam()), 1);
     2156        CHECK_ERROR_RET(mutMachine, AttachDevice(Bstr("IDE Controller").raw(), 0, 0, DeviceType_HardDisk, targetImage1), 1);
     2157        CHECK_ERROR_RET(mutMachine, SaveSettings(), 1);
     2158
     2159        CHECK_ERROR_RET(aSession, UnlockMachine(), 1);
     2160    }
     2161
     2162    com::SafeIfaceArray<IMedium> mediums;
     2163    CHECK_ERROR_RET(ptrMachine, Unregister(CleanupMode_Full, ComSafeArrayAsOutParam(mediums)), 1);
     2164    ComPtr<IProgress> progress1;
     2165    com::SafeIfaceArray<IMedium> m(0);
     2166    CHECK_ERROR_RET(ptrMachine, Delete(ComSafeArrayAsInParam(m), progress1.asOutParam()), 1);
     2167    CHECK_ERROR_RET(progress1, WaitForCompletion(-1), 1);
     2168    RTPrintf("bla %d\n", mediums.size());
     2169    for (int i = 0; i < mediums.size(); ++i)
     2170    {
     2171//        ComPtr<IMedium> mm = ;
     2172        Bstr loc;
     2173        CHECK_ERROR_RET(mediums[i], COMGETTER(Location)(loc.asOutParam()), 1);
     2174        RTPrintf("%ls\n", loc.raw());
     2175        CHECK_ERROR_RET(mediums[i], Close(), 1);
     2176    }
     2177
     2178    return 0;
     2179}
     2180
    20942181
    20952182/**
     
    21362223    if (!strcmp(pszCmd, "gueststats"))
    21372224        return CmdGuestStats(a->argc - 1, &a->argv[1], a->virtualBox, a->session);
     2225    if (!strcmp(pszCmd, "test"))
     2226        return CmdTest(a->argc - 1, &a->argv[1], a->virtualBox, a->session);
     2227
    21382228
    21392229    /* default: */
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageAppliance.cpp

    r37862 r38525  
    304304
    305305        rc = showProgress(progressRead);
    306 
    307         if (FAILED(rc))
    308         {
    309             com::ProgressErrorInfo info(progressRead);
    310             com::GluePrintErrorInfo(info);
    311             com::GluePrintErrorContext("ImportAppliance", __FILE__, __LINE__);
    312             return 1;
    313         }
     306        CHECK_PROGRESS_ERROR_RET(progressRead, ("Appliance read failed"), RTEXITCODE_FAILURE);
    314307
    315308        Bstr path; /* fetch the path, there is stuff like username/password removed if any */
     
    747740                            if (fIgnoreThis)
    748741                            {
    749                                 RTPrintf("%2u: Sound card \"%ls\" -- disabled\n",
     742                               RTPrintf("%2u: Sound card \"%ls\" -- disabled\n",
    750743                                         a,
    751744                                         aOvfValues[a]);
     
    786779
    787780                rc = showProgress(progress);
    788 
    789                 if (FAILED(rc))
    790                 {
    791                     com::ProgressErrorInfo info(progress);
    792                     com::GluePrintErrorInfo(info);
    793                     com::GluePrintErrorContext("ImportAppliance", __FILE__, __LINE__);
    794                     return 1;
    795                 }
    796                 else
     781                CHECK_PROGRESS_ERROR_RET(progress, ("Appliance import failed"), RTEXITCODE_FAILURE);
     782
     783                if (SUCCEEDED(rc))
    797784                    RTPrintf("Successfully imported the appliance.\n");
    798785            }
     
    800787    } while (0);
    801788
    802     return SUCCEEDED(rc) ? 0 : 1;
     789    return SUCCEEDED(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    803790}
    804791
     
    10521039
    10531040        rc = showProgress(progress);
    1054 
    1055         if (FAILED(rc))
    1056         {
    1057             com::ProgressErrorInfo info(progress);
    1058             com::GluePrintErrorInfo(info);
    1059             com::GluePrintErrorContext("Write", __FILE__, __LINE__);
    1060             return 1;
    1061         }
    1062         else
     1041        CHECK_PROGRESS_ERROR_RET(progress, ("Appliance write failed"), RTEXITCODE_FAILURE);
     1042
     1043        if (SUCCEEDED(rc))
    10631044            RTPrintf("Successfully exported %d machine(s).\n", llMachines.size());
    10641045
    10651046    } while (0);
    10661047
    1067     return SUCCEEDED(rc) ? 0 : 1;
     1048    return SUCCEEDED(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    10681049}
    10691050
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r37202 r38525  
    169169
    170170            rc = showProgress(progress);
    171             if (FAILED(rc))
    172             {
    173                 com::ProgressErrorInfo info(progress);
    174                 if (info.isBasicAvailable())
    175                     RTMsgError("Failed to power off machine. Error message: %lS", info.getText().raw());
    176                 else
    177                     RTMsgError("Failed to power off machine. No error message available!");
    178             }
     171            CHECK_PROGRESS_ERROR(progress, ("Failed to power off machine"));
    179172        }
    180173        else if (!strcmp(a->argv[1], "savestate"))
     
    207200
    208201            rc = showProgress(progress);
     202            CHECK_PROGRESS_ERROR(progress, ("Failed to save machine state"));
    209203            if (FAILED(rc))
    210             {
    211                 com::ProgressErrorInfo info(progress);
    212                 if (info.isBasicAvailable())
    213                     RTMsgError("Failed to save machine state. Error message: %lS", info.getText().raw());
    214                 else
    215                     RTMsgError("Failed to save machine state. No error message available!");
    216204                console->Resume();
    217             }
    218205        }
    219206        else if (!strcmp(a->argv[1], "acpipowerbutton"))
     
    10991086
    11001087            rc = showProgress(progress);
    1101             if (FAILED(rc))
    1102             {
    1103                 com::ProgressErrorInfo info(progress);
    1104                 if (info.isBasicAvailable())
    1105                     RTMsgError("Teleportation failed. Error message: %lS", info.getText().raw());
    1106                 else
    1107                     RTMsgError("Teleportation failed. No error message available!");
    1108             }
     1088            CHECK_PROGRESS_ERROR(progress, ("Teleportation failed"));
    11091089        }
    11101090        else if (!strcmp(a->argv[1], "screenshotpng"))
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp

    r38469 r38525  
    355355        {
    356356            rc = showProgress(progress);
    357             if (FAILED(rc))
    358             {
    359                 com::ProgressErrorInfo info(progress);
    360                 if (info.isBasicAvailable())
    361                     RTMsgError("Failed to create hard disk. Error message: %lS", info.getText().raw());
    362                 else
    363                     RTMsgError("Failed to create hard disk. No error message available!");
    364             }
    365             else
     357            CHECK_PROGRESS_ERROR(progress, ("Failed to create hard disk"));
     358            if (SUCCEEDED(rc))
    366359            {
    367360                Bstr uuid;
     
    513506                RTMsgError("Compact hard disk operation for this format is not implemented yet!");
    514507            else
    515                 com::GluePrintRCMessage(rc);
     508                CHECK_PROGRESS_ERROR(progress, ("Failed to compact hard disk"));
    516509        }
    517510    }
     
    530523                RTMsgError("Resize hard disk operation for this format is not implemented yet!");
    531524            else
    532                 com::GluePrintRCMessage(rc);
     525                CHECK_PROGRESS_ERROR(progress, ("Failed to resize hard disk"));
    533526        }
    534527    }
     
    665658
    666659        rc = showProgress(progress);
    667         if (FAILED(rc))
    668         {
    669             com::ProgressErrorInfo info(progress);
    670             if (info.isBasicAvailable())
    671                 RTMsgError("Failed to clone hard disk. Error message: %lS", info.getText().raw());
    672             else
    673                 RTMsgError("Failed to clone hard disk. No error message available!");
    674             break;
    675         }
     660        CHECK_PROGRESS_ERROR_BREAK(progress, ("Failed to clone hard disk"));
    676661
    677662        Bstr uuid;
     
    11691154            {
    11701155                rc = showProgress(progress);
    1171                 if (FAILED(rc))
    1172                 {
    1173                     com::ProgressErrorInfo info(progress);
    1174                     if (info.isBasicAvailable())
    1175                         RTMsgError("Failed to delete medium. Error message: %lS", info.getText().raw());
    1176                     else
    1177                         RTMsgError("Failed to delete medium. No error message available!");
    1178                 }
     1156                CHECK_PROGRESS_ERROR(progress, ("Failed to delete medium"));
    11791157            }
    11801158            else
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp

    r38456 r38525  
    10731073    int vrc = VINF_SUCCESS;
    10741074    ComPtr<IProgress> progress;
    1075     HRESULT hr;
     1075    HRESULT rc;
    10761076    if (pContext->fHostToGuest)
    10771077    {
    1078         hr = pContext->pGuest->CopyToGuest(Bstr(pszFileSource).raw(), Bstr(pszFileDest).raw(),
     1078        rc = pContext->pGuest->CopyToGuest(Bstr(pszFileSource).raw(), Bstr(pszFileDest).raw(),
    10791079                                           Bstr(pContext->pszUsername).raw(), Bstr(pContext->pszPassword).raw(),
    10801080                                           fFlags, progress.asOutParam());
     
    10821082    else
    10831083    {
    1084         hr = pContext->pGuest->CopyFromGuest(Bstr(pszFileSource).raw(), Bstr(pszFileDest).raw(),
     1084        rc = pContext->pGuest->CopyFromGuest(Bstr(pszFileSource).raw(), Bstr(pszFileDest).raw(),
    10851085                                             Bstr(pContext->pszUsername).raw(), Bstr(pContext->pszPassword).raw(),
    10861086                                             fFlags, progress.asOutParam());
    10871087    }
    10881088
    1089     if (FAILED(hr))
     1089    if (FAILED(rc))
    10901090        vrc = ctrlPrintError(pContext->pGuest, COM_IIDOF(IGuest));
    10911091    else
    10921092    {
    1093         hr = showProgress(progress);
    1094         if (FAILED(hr))
    1095             vrc = ctrlPrintProgressError(progress);
     1093        rc = showProgress(progress);
     1094        CHECK_PROGRESS_ERROR(progress, ("File copy failed"));
    10961095    }
    10971096
     
    20382037        {
    20392038            rc = showProgress(progress);
    2040             if (FAILED(rc))
    2041                 vrc = ctrlPrintProgressError(progress);
    2042             else if (fVerbose)
     2039            CHECK_PROGRESS_ERROR(progress, ("Guest additions update failed"));
     2040            if (   SUCCEEDED(rc)
     2041                && fVerbose)
    20432042                RTPrintf("Guest Additions update successful.\n");
    20442043        }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHostonly.cpp

    r35330 r38525  
    6666    rc = showProgress(progress);
    6767    *pcProcessed = index - iStart;
    68     if (FAILED(rc))
    69     {
    70         com::ProgressErrorInfo info(progress);
    71         if (info.isBasicAvailable())
    72             RTMsgError("Failed to create the host-only adapter. Error message: %lS", info.getText().raw());
    73         else
    74             RTMsgError("Failed to create the host-only adapter. No error message available, code: %Rhrc", rc);
    75 
    76         return 1;
    77     }
     68    CHECK_PROGRESS_ERROR_RET(progress, ("Failed to create the host-only adapter"), 1);
    7869
    7970    Bstr name;
     
    110101    rc = showProgress(progress);
    111102    *pcProcessed = index - iStart;
    112     if (FAILED(rc))
    113     {
    114         com::ProgressErrorInfo info(progress);
    115         if (info.isBasicAvailable())
    116             RTMsgError("Failed to remove the host-only adapter. Error message: %lS", info.getText().raw());
    117         else
    118             RTMsgError("Failed to remove the host-only adapter. No error message available, code: %Rhrc", rc);
    119 
    120         return 1;
    121     }
     103    CHECK_PROGRESS_ERROR_RET(progress, ("Failed to remove the host-only adapter"), 1);
    122104
    123105    return 0;
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp

    r38191 r38525  
    164164        CHECK_ERROR_RET(machine, Delete(ComSafeArrayAsInParam(aMedia), pProgress.asOutParam()),
    165165                        RTEXITCODE_FAILURE);
     166
    166167        rc = showProgress(pProgress);
    167         if (FAILED(rc))
    168         {
    169             com::ProgressErrorInfo ErrInfo(pProgress);
    170             com::GluePrintErrorInfo(ErrInfo);
    171             return RTEXITCODE_FAILURE;
    172         }
     168        CHECK_PROGRESS_ERROR_RET(pProgress, ("Machine delete failed"), RTEXITCODE_FAILURE);
    173169    }
    174170    return RTEXITCODE_SUCCESS;
     
    446442                    RTEXITCODE_FAILURE);
    447443    rc = showProgress(progress);
    448     if (FAILED(rc))
    449     {
    450         com::ProgressErrorInfo ErrInfo(progress);
    451         com::GluePrintErrorInfo(ErrInfo);
    452         return RTEXITCODE_FAILURE;
    453     }
     444    CHECK_PROGRESS_ERROR_RET(progress, ("Clone VM failed"), RTEXITCODE_FAILURE);
    454445
    455446    if (fRegister)
     
    10831074        CHECK_ERROR2_RET(ptrExtPackFile, Install(fReplace, NULL, ptrProgress.asOutParam()), RTEXITCODE_FAILURE);
    10841075        hrc = showProgress(ptrProgress);
    1085         if (FAILED(hrc))
    1086         {
    1087             com::ProgressErrorInfo ErrInfo(ptrProgress);
    1088             if (ErrInfo.isBasicAvailable())
    1089                 RTMsgError("Failed to install \"%s\": %lS", szPath, ErrInfo.getText().raw());
    1090             else
    1091                 RTMsgError("Failed to install \"%s\": No error message available!", szPath);
    1092             return RTEXITCODE_FAILURE;
    1093         }
     1076        CHECK_PROGRESS_ERROR_RET(ptrProgress, ("Failed to install \"%s\"", szPath), RTEXITCODE_FAILURE);
     1077
    10941078        RTPrintf("Successfully installed \"%lS\".\n", bstrName.raw());
    10951079    }
     
    11301114        CHECK_ERROR2_RET(ptrExtPackMgr, Uninstall(bstrName.raw(), fForced, NULL, ptrProgress.asOutParam()), RTEXITCODE_FAILURE);
    11311115        hrc = showProgress(ptrProgress);
    1132         if (FAILED(hrc))
    1133         {
    1134             com::ProgressErrorInfo ErrInfo(ptrProgress);
    1135             if (ErrInfo.isBasicAvailable())
    1136                 RTMsgError("Failed to uninstall \"%s\": %lS", pszName, ErrInfo.getText().raw());
    1137             else
    1138                 RTMsgError("Failed to uninstall \"%s\": No error message available!", pszName);
    1139             return RTEXITCODE_FAILURE;
    1140         }
     1116        CHECK_PROGRESS_ERROR_RET(ptrProgress, ("Failed to uninstall \"%s\"", pszName), RTEXITCODE_FAILURE);
     1117
    11411118        RTPrintf("Successfully uninstalled \"%s\".\n", pszName);
    11421119    }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageSnapshot.cpp

    r33425 r38525  
    307307
    308308            rc = showProgress(progress);
    309             if (FAILED(rc))
    310             {
    311                 com::ProgressErrorInfo info(progress);
    312                 if (info.isBasicAvailable())
    313                     RTMsgError("Failed to take snapshot. Error message: %lS", info.getText().raw());
    314                 else
    315                     RTMsgError("Failed to take snapshot. No error message available!");
    316             }
     309            CHECK_PROGRESS_ERROR(progress, ("Failed to take snapshot"));
    317310
    318311            if (fPause)
     
    381374
    382375            rc = showProgress(pProgress);
    383             if (FAILED(rc))
    384             {
    385                 com::ProgressErrorInfo info(pProgress);
    386                 if (info.isBasicAvailable())
    387                     RTMsgError("Snapshot operation failed. Error message: %lS", info.getText().raw());
    388                 else
    389                     RTMsgError("Snapshot operation failed. No error message available!");
    390             }
     376            CHECK_PROGRESS_ERROR(pProgress, ("Snapshot operation failed"));
    391377        }
    392378        else if (!strcmp(a->argv[1], "edit"))
Note: See TracChangeset for help on using the changeset viewer.

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