VirtualBox

Changeset 33288 in vbox for trunk


Ignore:
Timestamp:
Oct 21, 2010 9:55:24 AM (14 years ago)
Author:
vboxsync
Message:

Storage/vbox-img: improve mandatory parameter checking and default/dummy parameter values

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/testcase/vbox-img.cpp

    r33235 r33288  
    624624    bool fStdIn = false;
    625625    bool fStdOut = false;
    626     char *pszSrcFormat = NULL;
     626    const char *pszSrcFormat = NULL;
    627627    const char *pszDstFormat = NULL;
    628628    const char *pszVariant = NULL;
     
    670670                break;
    671671            case 's':   // --srcformat
    672                 pszSrcFormat = RTStrDup(ValueUnion.psz);
     672                pszSrcFormat = ValueUnion.psz;
    673673                break;
    674674            case 'd':   // --dstformat
    675                 pszDstFormat = RTStrDup(ValueUnion.psz);
     675                pszDstFormat = ValueUnion.psz;
    676676                break;
    677677            case 'v':   // --variant
     
    686686    }
    687687
    688     /* Check for mandatory parameters. */
     688    /* Check for mandatory parameters and handle dummies/defaults. */
     689    if (fStdIn && !pszSrcFormat)
     690        return errorSyntax("Mandatory --srcformat option missing\n");
     691    if (!pszDstFormat)
     692        pszDstFormat = "VDI";
     693    if (fStdIn && !pszSrcFilename)
     694    {
     695        /* Complete dummy, will be just passed to various calls to fulfill
     696         * the "must be non-NULL" requirement, and is completely ignored
     697         * otherwise. It shown in the stderr message below. */
     698        pszSrcFilename = "stdin";
     699    }
     700    if (fStdOut && !pszDstFilename)
     701    {
     702        /* Will be stored in the destination image if it is a streamOptimized
     703         * VMDK, but it isn't really relevant - use it for "branding". */
     704        if (!RTStrICmp(pszDstFormat, "VMDK"))
     705            pszDstFilename = "VirtualBoxStream.vmdk";
     706        else
     707            pszDstFilename = "stdout";
     708    }
    689709    if (!pszSrcFilename)
    690710        return errorSyntax("Mandatory --srcfilename option missing\n");
     
    768788        if (!pszSrcFormat)
    769789        {
    770             rc = VDGetFormat(NULL, NULL, pszSrcFilename, &pszSrcFormat);
     790            char *pszFormat;
     791            rc = VDGetFormat(NULL, NULL, pszSrcFilename, &pszFormat);
    771792            if (RT_FAILURE(rc))
    772793            {
     
    774795                break;
    775796            }
     797            pszSrcFormat = pszFormat;
    776798        }
    777799
     
    791813            break;
    792814        }
    793 
    794         /* output format defaults to VDI */
    795         if (!pszDstFormat)
    796             pszDstFormat = "VDI";
    797815
    798816        rc = VDCreate(pVDIfs, &pDstDisk);
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