getopt & single-letter options with parameters

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Aug 8 12:29:13 PDT 2010


On 08/07/2010 06:57 PM, Adrian Matoga wrote:
> On 2010-08-08 01:22, Andrei Alexandrescu wrote:
>> On 08/07/2010 05:55 PM, Adrian Matoga wrote:
>>> Hi,
>>>
>>> Is it by design that single-letter option needs to be glued to its
>>> argument, like "-ofilename", or is it a bug in implementation?
>>>
>>> Source:
>>>
>>> import std.stdio;
>>> import std.getopt;
>>>
>>> void main(string[] args)
>>> {
>>> string outputFile;
>>> getopt(args,
>>> config.passThrough,
>>> "o|output-filename", &outputFile);
>>> writeln(args);
>>> writeln("'" ~ outputFile ~ "'");
>>> }
>>>
>>>
>>>
>>> Results:
>>> >test.exe -o somename
>>> test.exe somename
>>> ''
>>>
>>> >test.exe -osomename
>>> test.exe
>>> 'somename'
>>>
>>> Regards,
>>> Adrian Matoga
>>
>> It's by design in order to avoid confusion with parameterless options.
>> Your example works with either of these invocations:
>>
>> ./prog -ofilename
>> ./prog -o=filename
>> ./prog --o=filename
>>
>> but not others.
>>
>>
>> Andrei
>
> Thanks very much.
> I suggest adding this info to official docs (it's not obvious, and a bit
> confusing, since long options work with whitespace(s)).
>
> Adrian

http://www.dsource.org/projects/phobos/changeset/1822

Andrei


More information about the Digitalmars-d mailing list