std.getopt error

growler growlercab at gmail.com
Mon Aug 26 00:06:05 PDT 2013


On Monday, 26 August 2013 at 06:58:41 UTC, Ramon wrote:
> There seems to be a bug in std.getopt.
>
> D doc says:
> "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."
>
> However
>
> bool reverseOrder = false, helpFlag = false;
> int colOrder = 1;
>
> getopt(args, std.getopt.config.bundling, "reverse|r", 
> &reverseOrder, "column|c", &colOrder,"help|?", &helpFlag);
>
> sets colOrder to -1 rather than to +1 when the commandline has 
> "-c1" as arg.
>
> Funnily, when the arg is *illegally* "-c 1", the variable is 
> set correctly to +1.
>
Given:

int colOrder = 1;
...
Could it be that "-c 1" is ignored because it is in invalid and 
the default colOrder value is used?

> This is not an urgent issue because there is a very simple 
> workaround:
> colorder = - colorder;
>
> But I thought it should be mentioned anyway and, if not noticed 
> it can create troublesome situations.
>
> Being at that, the official rule "-t 5" is not acceptable is 
> problematic because that form is pretty commonly used on unix 
> and even sometimes used in docs.

+1
I've noticed this before when using getopt. It is low priority 
and a documented limitation but it would be nice if "-t 5" worked.

G.


More information about the Digitalmars-d mailing list