VirtualBox

Changeset 34542 in vbox for trunk/src


Ignore:
Timestamp:
Nov 30, 2010 10:57:21 PM (14 years ago)
Author:
vboxsync
Message:

RTGetOpt: Made it a bit less understanding about spaces after the option/value separator (':' or '='). See defect #5320.

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

Legend:

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

    r33540 r34542  
    207207            {
    208208                /*
    209                  * A value is required with the argument. We're trying to be very
     209                 * A value is required with the argument. We're trying to be
    210210                 * understanding here and will permit any of the following:
    211211                 *      --long12:value,  --long12=value, --long12 value,
    212212                 *      --long:value,    --long=value,   --long value,
    213                  *      --long: value,   --long= value
    214213                 *
    215214                 * If the option is index, then all trailing chars must be
     
    574573             * Find the argument value.
    575574             *
    576              * A value is required with the argument. We're trying to be very
     575             * A value is required with the argument. We're trying to be
    577576             * understanding here and will permit any of the following:
    578              *      -svalue, -s:value, -s=value,
    579              *      -s value, -s: value, -s= value
     577             *      -svalue, -s value, -s:value and -s=value
    580578             * (Ditto for long options.)
    581579             */
     
    583581            if (fShort)
    584582            {
    585                 if (    pszArgThis[2] == '\0'
    586                     ||  (  pszArgThis[3] == '\0'
    587                          && (   pszArgThis[2] == ':'
    588                              || pszArgThis[2] == '=')) )
     583                if (pszArgThis[2] == '\0')
    589584                {
    590585                    if (iThis + 1 >= pState->argc)
     
    636631                else
    637632                {
    638                     if (    pszArgThis[cchLong]     == '\0'
    639                         ||  pszArgThis[cchLong + 1] == '\0')
     633                    if (pszArgThis[cchLong] == '\0')
    640634                    {
    641635                        if (iThis + 1 >= pState->argc)
  • trunk/src/VBox/Runtime/testcase/tstRTGetOpt.cpp

    r28800 r34542  
    55
    66/*
    7  * Copyright (C) 2007-2009 Oracle Corporation
     7 * Copyright (C) 2007-2010 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    111111    {
    112112        "-s",               "string1",
    113         "--optwithstring",  "string2",
     113        "-sstring2",
     114        "-s:string3",
     115        "-s=string4",
     116        "-s:",
     117        "-s=",
     118        "--optwithstring",  "string5",
     119        "--optwithstring:string6",
     120        "--optwithstring=string7",
     121        "--optwithstring:",
     122        "--optwithstring=",
    114123
    115124        "-i",               "-42",
    116125        "-i:-42",
    117126        "-i=-42",
    118         "-i:",              "-42",
    119         "-i=",              "-42",
    120127
    121128        "--optwithint",     "42",
    122129        "--optwithint:42",
    123130        "--optwithint=42",
    124         "--optwithint:",    "42",
    125         "--optwithint=",    "42",
    126131
    127132        "-v",
     
    134139
    135140        "nodash",
    136         "nodashval",        "string3",
     141        "nodashval",        "string9",
    137142
    138143        "filename1",
     
    147152        "--mac:1:::::c",
    148153
    149         "--strindex786",    "string4",
    150         "--strindex786:string5",
    151         "--strindex786=string6",
    152         "strindex687",      "string7",
    153         "strindex687:string8",
    154         "strindex687=string9",
     154        "--strindex786",    "string10",
     155        "--strindex786:string11",
     156        "--strindex786=string12",
     157        "strindex687",      "string13",
     158        "strindex687:string14",
     159        "strindex687=string15",
     160        "strindex688:",
     161        "strindex689=",
    155162        "--intindex137",    "1000",
    156163        "--macindex138",    "08:0:27:00:ab:f3",
     
    191198    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string1"));
    192199    CHECK(GetState.uIndex == UINT32_MAX);
     200    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     201    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string2"));
     202    CHECK(GetState.uIndex == UINT32_MAX);
     203    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     204    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string3"));
     205    CHECK(GetState.uIndex == UINT32_MAX);
     206    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     207    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string4"));
     208    CHECK(GetState.uIndex == UINT32_MAX);
     209    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     210    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
     211    CHECK(GetState.uIndex == UINT32_MAX);
     212    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     213    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
     214    CHECK(GetState.uIndex == UINT32_MAX);
    193215    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 2);
    194     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string2"));
     216    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string5"));
     217    CHECK(GetState.uIndex == UINT32_MAX);
     218    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     219    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string6"));
     220    CHECK(GetState.uIndex == UINT32_MAX);
     221    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     222    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string7"));
     223    CHECK(GetState.uIndex == UINT32_MAX);
     224    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     225    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
     226    CHECK(GetState.uIndex == UINT32_MAX);
     227    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 's', 1);
     228    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
    195229    CHECK(GetState.uIndex == UINT32_MAX);
    196230
     
    201235    CHECK(Val.i32 == -42);
    202236    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    203     CHECK(Val.i32 == -42);
    204     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    205     CHECK(Val.i32 == -42);
    206     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    207237    CHECK(Val.i32 == -42);
    208238
     
    213243    CHECK(Val.i32 == 42);
    214244    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    215     CHECK(Val.i32 == 42);
    216     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    217     CHECK(Val.i32 == 42);
    218     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    219245    CHECK(Val.i32 == 42);
    220246
     
    239265    CHECK_pDef(s_aOpts2, 7);
    240266    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 388, 2);
    241     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string3"));
     267    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string9"));
    242268
    243269    /* non-option, option, non-option  */
     
    282308    RTTestSub(hTest, "RTGetOpt - Option w/ Index");
    283309    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 2);
    284     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string4"));
     310    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string10"));
    285311    CHECK(GetState.uIndex == 786);
    286312
    287313    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
    288     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string5"));
     314    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string11"));
    289315    CHECK(GetState.uIndex == 786);
    290316
    291317    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
    292     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string6"));
     318    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string12"));
    293319    CHECK(GetState.uIndex == 786);
    294320
    295321    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 2);
    296     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string7"));
     322    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string13"));
    297323    CHECK(GetState.uIndex == 687);
    298324
    299325    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
    300     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string8"));
     326    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string14"));
    301327    CHECK(GetState.uIndex == 687);
    302328
    303329    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
    304     CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string9"));
     330    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, "string15"));
    305331    CHECK(GetState.uIndex == 687);
     332
     333    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
     334    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
     335    CHECK(GetState.uIndex == 688);
     336
     337    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 400, 1);
     338    CHECK(VALID_PTR(Val.psz) && !strcmp(Val.psz, ""));
     339    CHECK(GetState.uIndex == 689);
    306340
    307341    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 401, 2);
     
    416450        "foo6",
    417451        "foo7",
    418         "-i:",              "-42",
    419         "-i=",              "-42",
     452        "-i:-42",
     453        "-i=-42",
    420454        "foo8",
    421455        "--twovalues",       "firstvalue", "secondvalue",
     
    449483    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    450484    CHECK(Val.i32 == -42);
    451     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    452     CHECK(Val.i32 == -42);
    453     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
     485    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
     486    CHECK(Val.i32 == -42);
     487    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    454488    CHECK(Val.i32 == -42);
    455489
     
    502536        "foo6",
    503537        "foo7",
    504         "-i:",              "-42",
    505         "-i=",              "-42",
     538        "-i:-42",
     539        "-i=-42",
    506540        "foo8",
    507541        "--twovalues",       "firstvalue", "secondvalue",
     
    533567    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    534568    CHECK(Val.i32 == -42);
    535     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
    536     CHECK(Val.i32 == -42);
    537     CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 2);
     569    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
     570    CHECK(Val.i32 == -42);
     571    CHECK_GETOPT(RTGetOpt(&GetState, &Val), 'i', 1);
    538572    CHECK(Val.i32 == -42);
    539573
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