Chris Sutcliffe wrote:
I've made a new version of the mingw-runtime available for download.
For a list of changes see:

http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/mingw/ChangeLog?rev=1.409&cvsroot=src

New features in release 3.15
============================
...
* A replacement implementation for the getopt() family of functions,
 adding support for the GNU getopt_long_only() function. ...


This new getopt() sets optind to the index of the current option instead of the next option.

Testcase:

#include <stdio.h>
#include <getopt.h>

int main(int argc, char **argv)
{
 int opt;
 while ((opt = getopt(argc, argv, "ab:c")) != -1)
   printf("opt=%c, optind=%d\n", opt, optind);
 printf("end    optind=%d\n", optind);
 return 0;
}


Output for "./prog -a -b arg -c":

- mingw-runtime-3.14, Cygwin, GNU getopt:
opt=a, optind=2
opt=b, optind=4
opt=c, optind=5
end    optind=5

- mingw-runtime-3.15:
opt=a, optind=1
opt=b, optind=2
opt=c, optind=4
end    optind=5

The new behavior violates this POSIX requirement:
"The variable optind is the index of the next element of the argv[] vector to be processed."
http://www.opengroup.org/onlinepubs/009695399/functions/getopt.html


--
Christian Franke


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to