So, I was poking around in the test cases, and I run across this in cmdline_test.cpp:

 

 

void test_long_options()

{

...

    test_case test_cases2[] = {

        {"--bar 10", s_success, "bar:10"},

        {"--bar", s_missing_parameter,  ""},

 

******

        // Since --bar accepts a parameter, --foo is

        // considered a value, even though it looks like

        // an option.

        {"--bar --foo", s_success, "bar:--foo"},

******

 

 

        {0, 0, 0}

    };

    test_cmdline("foo bar=", style, test_cases2);

    style = cmdline::style_t(

        allow_long | long_allow_adjacent

        | long_allow_next);

 

...

}

 

And further down:

 

void test_short_options()

{

...

 

    test_case test_cases2[] = {

        {"-f 13", s_success, "-f:13"},

        {"-f -13", s_success, "-f:-13"},

        {"-f", s_missing_parameter, ""},

        {"-f /foo", s_success, "-f:/foo"},

 

******

        {"-f -d", s_missing_parameter, ""},

******

        {0, 0, 0}

    };

    test_cmdline(",d ,f=", style, test_cases2);

 

...

}

 

 

So, it would appear that if both arguments are “long-form” then my problem would go away.  But since I’m passing in the short-form arguments (xterm’s –e option has no long-form), I am boned.  I think I tried to pass the short-form in as a long form (i.e.: ‘--arg=-e’ and ‘--arg –e’), but I think that these failed as well.

 

Time for some more playing around.........