VirtualBox

Changeset 24140 in vbox for trunk/src


Ignore:
Timestamp:
Oct 28, 2009 2:29:34 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
54063
Message:

IPRT: added RTGETOPT_REQ_BOOL_ONOFF

Location:
trunk/src/VBox/Runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/getopt.cpp

    r23868 r24140  
    280280        case RTGETOPT_REQ_STRING:
    281281            pValueUnion->psz = pszValue;
     282            break;
     283
     284        case RTGETOPT_REQ_BOOL_ONOFF:
     285            if (!RTStrICmp(pszValue, "on"))
     286                pValueUnion->f = true;
     287            else if (!RTStrICmp(pszValue, "off"))
     288                pValueUnion->f = false;
     289            else
     290            {
     291                pValueUnion->psz = pszValue;
     292                return VERR_GETOPT_UNKNOWN_OPTION;
     293            }
    282294            break;
    283295
  • trunk/src/VBox/Runtime/testcase/tstGetOpt.cpp

    r23868 r24140  
    9797        { "--twovaluesindex",   406, RTGETOPT_REQ_UINT32 | RTGETOPT_FLAG_INDEX },
    9898        { "--threevalues",      407, RTGETOPT_REQ_UINT32 },
     99        { "--boolean",          408, RTGETOPT_REQ_BOOL_ONOFF },
     100        { "--booleanindex",     409, RTGETOPT_REQ_BOOL_ONOFF | RTGETOPT_FLAG_INDEX },
    99101    };
    100102
     
    154156        "--twovaluesindex5=2",             "0xB",
    155157        "--threevalues",     "1",          "0xC",          "thirdvalue",
     158
     159        "--boolean",         "on",
     160        "--boolean",         "off",
     161        "--boolean",         "invalid",
     162        "--booleanindex2",   "on",
     163        "--booleanindex7",   "off",
     164        "--booleanindex9",   "invalid",
    156165
    157166        NULL
     
    333342    CHECK(GetState.uIndex == UINT64_MAX);
    334343
     344    /* bool on/off tests */
     345    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 408, 2);
     346    CHECK(Val.f);
     347    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 408, 2);
     348    CHECK(!Val.f);
     349    CHECK_GETOPT(RTGetOpt(&GetState, &Val), VERR_GETOPT_UNKNOWN_OPTION, 2);
     350    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "invalid"));
     351
     352    /* bool on/off with indexed argument */
     353    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 409, 2);
     354    CHECK(Val.f);
     355    CHECK(GetState.uIndex == 2);
     356    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 409, 2);
     357    CHECK(!Val.f);
     358    CHECK(GetState.uIndex == 7);
     359    CHECK_GETOPT(RTGetOpt(&GetState, &Val), VERR_GETOPT_UNKNOWN_OPTION, 2);
     360    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "invalid"));
     361
    335362    /* the end */
    336363    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 0, 0);
Note: See TracChangeset for help on using the changeset viewer.

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