VirtualBox

Changeset 42655 in vbox for trunk


Ignore:
Timestamp:
Aug 7, 2012 11:39:09 AM (12 years ago)
Author:
vboxsync
Message:

Additions/common/VBoxService: make vbox_rmdir and vbox_mktemp tool output code a little nicer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp

    r42645 r42655  
    960960 */
    961961static void toolboxRmReport(const char *pcszMessage, const char *pcszFile,
    962                             int rc, uint32_t fOutputFlags, int *prc)
    963 {
     962                            bool fActive, int rc, uint32_t fOutputFlags,
     963                            int *prc)
     964{
     965    if (!fActive)
     966        return;
    964967    if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    965968    {
    966         if (RT_FAILURE(rc))
     969        if (RT_SUCCESS(rc))
     970            RTPrintf(pcszMessage, pcszFile, rc);
     971        else
    967972            RTMsgError(pcszMessage, pcszFile, rc);
    968973    }
     
    10461051        }
    10471052    }
    1048     /* We need at least one file. */
    1049     if (RT_SUCCESS(rc) && cNonOptions == 0)
    1050     {
    1051         RTMsgError("No files or directories specified.");
    1052         return RTEXITCODE_FAILURE;
    1053     }
    1054 
    10551053    if (RT_SUCCESS(rc))
    10561054    {
     
    10651063    }
    10661064
     1065    /* We need at least one file. */
     1066    if (RT_SUCCESS(rc) && cNonOptions == 0)
     1067    {
     1068        toolboxRmReport("No files or directories specified.\n", NULL, true, 0,
     1069                        fOutputFlags, NULL);
     1070        return RTEXITCODE_FAILURE;
     1071    }
    10671072    if (RT_SUCCESS(rc))
    10681073    {
     
    10751080                if (!(fFlags & VBOXSERVICETOOLBOXRMFLAG_RECURSIVE))
    10761081                    toolboxRmReport("Cannot remove directory '%s' as the '-R' option was not specified.\n",
    1077                                     argv[i], VERR_INVALID_PARAMETER,
     1082                                    argv[i], true, VERR_INVALID_PARAMETER,
    10781083                                    fOutputFlags, &rc);
    10791084                else
     
    10811086                    rc2 = RTDirRemoveRecursive(argv[i],
    10821087                                               RTDIRRMREC_F_CONTENT_AND_DIR);
     1088                    toolboxRmReport("", argv[i], RT_SUCCESS(rc2), rc2,
     1089                                    fOutputFlags, NULL);
    10831090                    toolboxRmReport("The following error occurred while removing directory '%s': %Rrc.\n",
    1084                                     argv[i], rc2, fOutputFlags, &rc);
     1091                                    argv[i], RT_FAILURE(rc2), rc2,
     1092                                    fOutputFlags, &rc);
    10851093                }
    10861094            }
     
    10881096            {
    10891097                rc2 = RTFileDelete(argv[i]);
     1098                toolboxRmReport("", argv[i], RT_SUCCESS(rc2), rc2,
     1099                                fOutputFlags, NULL);
    10901100                toolboxRmReport("The following error occurred while removing file '%s': %Rrc.\n",
    1091                                 argv[i], rc2, fOutputFlags, &rc);
     1101                                argv[i], RT_FAILURE(rc2), rc2, fOutputFlags,
     1102                                &rc);
    10921103            }
    10931104            else
    10941105                toolboxRmReport("File '%s' does not exist.\n", argv[i],
    1095                                 VERR_FILE_NOT_FOUND, fOutputFlags, &rc);
     1106                                true, VERR_FILE_NOT_FOUND, fOutputFlags, &rc);
    10961107        }
    10971108
     
    11201131 */
    11211132static void toolboxMkTempReport(const char *pcszMessage, const char *pcszFile,
    1122                                 int rc, uint32_t fOutputFlags, int *prc)
    1123 {
     1133                                bool fActive, int rc, uint32_t fOutputFlags,
     1134                                int *prc)
     1135{
     1136    if (!fActive)
     1137        return;
    11241138    if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    1125     {
    1126         if (RT_FAILURE(rc))
     1139        if (RT_SUCCESS(rc))
     1140            RTPrintf(pcszMessage, pcszFile, rc);
     1141        else
    11271142            RTMsgError(pcszMessage, pcszFile, rc);
    1128     }
    11291143    else
    11301144        RTPrintf("name=%s%crc=%d%c", pcszFile, 0, rc, 0);
     
    11611175    uint32_t fOutputFlags = 0;
    11621176    int cNonOptions       = 0;
     1177    char *pszName;
    11631178
    11641179    while (   (ch = RTGetOpt(&GetState, &ValueUnion))
     
    12061221    if (RT_SUCCESS(rc) && cNonOptions != 1)
    12071222    {
    1208         toolboxMkTempReport("Please specify exactly one template.\n",
    1209                             "", VERR_INVALID_PARAMETER, fOutputFlags, &rc);
     1223        toolboxMkTempReport("Please specify exactly one template.\n", "",
     1224                            true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    12101225        return RTEXITCODE_FAILURE;
    12111226    }
    1212     if (RT_SUCCESS(rc) && !strchr(argv[argc - 1], 'X'))  /* IPRT asserts this. */
     1227    pszName = argv[argc - 1];
     1228    if (RT_SUCCESS(rc) && !strchr(pszName, 'X'))  /* IPRT asserts this. */
    12131229    {
    12141230        toolboxMkTempReport("Template '%s' should contain at least one 'X' character.\n",
    1215                             argv[argc - 1], VERR_INVALID_PARAMETER,
     1231                            pszName, true, VERR_INVALID_PARAMETER,
    12161232                            fOutputFlags, &rc);
    12171233        return RTEXITCODE_FAILURE;
     
    12201236    if (RT_SUCCESS(rc))
    12211237    {
    1222         rc = RTDirCreateTemp(argv[argc - 1]);
     1238        rc = RTDirCreateTemp(pszName);
     1239        toolboxMkTempReport("Created temporary directory '%s'.\n",
     1240                            pszName, RT_SUCCESS(rc), rc, fOutputFlags, NULL);
    12231241        toolboxMkTempReport("The following error occurred while creating a temporary directory with template '%s': %Rrc.\n",
    1224                             argv[argc - 1], rc, fOutputFlags, NULL);
    1225         if (   RT_SUCCESS(rc)
    1226             && !(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    1227             RTPrintf("Created temporary directory '%s'.\n", argv[argc - 1]);
     1242                            pszName, RT_FAILURE(rc), rc, fOutputFlags, NULL);
    12281243        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* Output termination. */
    12291244            VBoxServiceToolboxPrintStrmTermination();
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