[Issue 2142] New: getopt() doesn't process bundled comman-line options properly

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jun 6 03:08:30 PDT 2008


http://d.puremagic.com/issues/show_bug.cgi?id=2142

           Summary: getopt() doesn't process bundled comman-line options
                    properly
           Product: D
           Version: 2.014
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: kolos80 at bk.ru


getopt() sees only one short option in bundled options - the one that is given
to getopt() first.

Example:
 boo f_linenum, f_filename;
 getopt
  (
    args,
    std.getopt.config.bundling,
    //std.getopt.config.caseSensitive,
    "linenum|l", &f_linenum,
    "filename|n", &f_filename
  );
In `-ln' and `-nl' options only `l' will be recognized in this case.
And if  we will change the order like this:
  ...
  "filename|n", &f_filename,
  "linenum|l", &f_linenum
  ...
`n' will be recognized, but `l' will be skipped

I think, it's from line 538 of getopt.d:
536  if (cfg.bundling && !isLong && v.length == 1
537    && std.string.find(arg, v) >= 0)
538  return true;    <--- this is wrong

P.S. I cannot check my solution, because phobos doesn't compile:
Error: multiple definition of object-2: _D8object.212__ModuleInfoZ and object:
_
D8object.212__ModuleInfoZ


-- 



More information about the Digitalmars-d-bugs mailing list