std.getopt

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sat Jul 16 13:55:45 PDT 2011


On 7/16/11 8:58 AM, Jens Mueller wrote:
> Trass3r wrote:
>> Why doesn't std.getopt support standard unix style like 'make -j 4'?
>>
>> "uint timeout;
>> getopt(args, "timeout|t",&timeout);
>> To set timeout to 5, use either of the following: --timeout=5,
>> --timeout 5, --t=5, --t 5, or -t5. Forms such as -t 5 and -timeout=5
>> will be not accepted."
>>
>> Also it doesn't make any sense to me that --t=5 and --t 5 is allowed
>> in this case.
>> I expected the short alias only to be used with a single dash.
>
> I agree. Not supporting -t 5 is no good. std.getopt took its inspiration
> from Perl's Getopt::Long (http://perldoc.perl.org/Getopt/Long.html)
> which supports it as well.
>
> I'm unsure about --t=5 and --t 5. I don't like them but I don't have to
> use them. But without them the rules would be simpler but removing them
> may break code. Adding -t 5 is safe I think.
> And maybe we enhance the documentation a bit such that more common
> choices are given first and less known but still supported later.
>
> If Andrei agrees maybe you or I can create a pull request for -t 5 and
> enhancing the documentation regarding -- for short options.
>
> BTW
> -timeout=5 is accepted but it shouldn't. I just wrote unittests for all
> combinations.
>
> Jens

Yes please. So, this stuff should work if we have t|timeout bound to an 
integral:

-t5, -t 5, --timeout 5, --timeout=5

This stuff should not:

-t=5, -timeout 5, -timeout=5

Right?


Andrei


More information about the Digitalmars-d mailing list