VirtualBox

Changeset 29555 in vbox for trunk


Ignore:
Timestamp:
May 17, 2010 2:37:48 PM (15 years ago)
Author:
vboxsync
Message:

VBoxMange: print exit status in readable form

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk

    r29117 r29555  
    4343        $(if $(VBOX_WITH_GUEST_CONTROL),VBOX_WITH_GUEST_CONTROL) \
    4444        $(if $(VBOX_WITH_HOSTNETIF_API), VBOX_WITH_HOSTNETIF_API) \
    45         $(if $(VBOX_WITH_VDE), VBOX_WITH_VDE)
     45        $(if $(VBOX_WITH_VDE), VBOX_WITH_VDE) \
     46        $(if $(VBOX_WITH_HGCM), VBOX_WITH_HGCM)
    4647 VBoxManage_DEFS.win   = _WIN32_WINNT=0x0500
    4748 ifdef VBOX_DYNAMIC_NET_ATTACH
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp

    r29552 r29555  
    3030#include <VBox/com/VirtualBox.h>
    3131#include <VBox/com/EventQueue.h>
     32
     33#include <VBox/HostServices/GuestControlSvc.h> /* for PROC_STS_XXX */
    3234
    3335#include <VBox/log.h>
     
    8587}
    8688
     89static const char *getStatus(ULONG uStatus)
     90{
     91    switch (uStatus)
     92    {
     93        case guestControl::PROC_STS_STARTED:
     94            return "started";
     95        case guestControl::PROC_STS_TEN:
     96            return "successfully terminated";
     97        case guestControl::PROC_STS_TES:
     98            return "terminated by signal";
     99        case guestControl::PROC_STS_TEA:
     100            return "abnormally aborted";
     101        case guestControl::PROC_STS_TOK:
     102            return "timed out";
     103        case guestControl::PROC_STS_TOA:
     104            return "timed out, hanging";
     105        case guestControl::PROC_STS_DWN:
     106            return "killed";
     107        case guestControl::PROC_STS_ERROR:
     108            return "error";
     109        default:
     110            return "unknown";
     111    }
     112}
     113
    87114static int handleExecProgram(HandlerArg *a)
    88115{
     
    101128    Utf8Str Utf8Password;
    102129    uint32_t u32TimeoutMS = 0;
    103     bool waitForExit = false;
    104     bool waitForStdOut = false;
    105     bool waitForStdErr = false;
    106     bool verbose = false;
    107     bool have_timeout = false;
     130    bool fWaitForExit = false;
     131    bool fWaitForStdOut = false;
     132    bool fWaitForStdErr = false;
     133    bool fVerbose = false;
     134    bool fTimeout = false;
    108135
    109136    /* Always use the actual command line as argv[0]. */
     
    197224            else
    198225            {
    199                 have_timeout = true;
     226                fTimeout = true;
    200227                ++i;
    201228            }
     
    208235            {
    209236                if (!strcmp(a->argv[i + 1], "exit"))
    210                     waitForExit = true;
     237                    fWaitForExit = true;
    211238                else if (!strcmp(a->argv[i + 1], "stdout"))
    212239                {
    213                     waitForExit = true;
    214                     waitForStdOut = true;
     240                    fWaitForExit = true;
     241                    fWaitForStdOut = true;
    215242                }
    216243                else if (!strcmp(a->argv[i + 1], "stderr"))
    217244                {
    218                     waitForExit = true;
    219                     waitForStdErr = true;
     245                    fWaitForExit = true;
     246                    fWaitForStdErr = true;
    220247                }
    221248                else
     
    226253        else if (!strcmp(a->argv[i], "--verbose"))
    227254        {
    228             verbose = true;
     255            fVerbose = true;
    229256        }
    230257        /** @todo Add fancy piping stuff here. */
     
    276303            ULONG uPID = 0;
    277304
    278             if (verbose)
     305            if (fVerbose)
    279306            {
    280307                if (u32TimeoutMS == 0)
     
    292319                                                    Bstr(Utf8UserName), Bstr(Utf8Password), u32TimeoutMS,
    293320                                                    &uPID, progress.asOutParam()));
    294             if (verbose) RTPrintf("Process '%s' (PID: %u) started\n", Utf8Cmd.raw(), uPID);
    295             if (waitForExit)
    296             {
    297                 if (have_timeout)
     321            if (fVerbose) RTPrintf("Process '%s' (PID: %u) started\n", Utf8Cmd.raw(), uPID);
     322            if (fWaitForExit)
     323            {
     324                if (fTimeout)
    298325                {
    299326                    /* Calculate timeout value left after process has been started.  */
     
    303330                    {
    304331                        u32TimeoutMS = u32TimeoutMS - u64Diff;
    305                         if (verbose)
     332                        if (fVerbose)
    306333                            RTPrintf("Waiting for process to exit (%ums left) ...\n", u32TimeoutMS);
    307334                    }
    308335                    else
    309336                    {
    310                         if (verbose)
     337                        if (fVerbose)
    311338                            RTPrintf("No time left to wait for process!\n");
    312339                    }
    313340                }
    314                 else if (verbose)
     341                else if (fVerbose)
    315342                    RTPrintf("Waiting for process to exit ...\n");
    316343
     
    341368                     */
    342369
    343                     if (   waitForStdOut
    344                         || waitForStdErr)
     370                    if (   fWaitForStdOut
     371                        || fWaitForStdErr)
    345372                    {
    346373                        CHECK_ERROR_BREAK(guest, GetProcessOutput(uPID, 0 /* aFlags */,
     
    375402                            break;
    376403
    377                         if (   have_timeout
     404                        if (   fTimeout
    378405                            && RTTimeMilliTS() - u64StartMS > u32TimeoutMS + 5000)
    379406                        {
     
    426453                            RTPrintf("\n");
    427454                        }
    428                         if (verbose)
     455                        if (fVerbose)
    429456                        {
    430457                            ULONG uRetStatus, uRetExitCode, uRetFlags;
    431458                            CHECK_ERROR_BREAK(guest, GetProcessStatus(uPID, &uRetExitCode, &uRetFlags, &uRetStatus));
    432                             RTPrintf("Exit code=%u (Status=%u, Flags=%u)\n", uRetExitCode, uRetStatus, uRetFlags);
     459                            RTPrintf("Exit code=%u (Status=%u [%s], Flags=%u)\n", uRetExitCode, uRetStatus, getStatus(uRetStatus), uRetFlags);
    433460                        }
    434461                    }
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