This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

mingw-runtime-3.15: regression in getopt() optind ?


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]