From 01dd3162ff90f8c337257f2a489e8c59decdbcab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 18 Aug 2008 08:33:48 +0000 Subject: * mkgroup.c (main): Always unset environment variable POSIXLY_CORRECT. Keep track of optional argumnts and fix up optind afterwards. * mkpasswd.c (main): Ditto. --- winsup/utils/ChangeLog | 6 ++++++ winsup/utils/mkgroup.c | 5 +++++ winsup/utils/mkpasswd.c | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index cc00946b3..12ccadaae 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,9 @@ +2008-08-18 Corinna Vinschen + + * mkgroup.c (main): Always unset environment variable POSIXLY_CORRECT. + Keep track of optional argumnts and fix up optind afterwards. + * mkpasswd.c (main): Ditto. + 2008-08-17 Christopher Faylor * cygcheck.cc (print_version): Update copyright dates. diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c index 48d682ee5..0b60ccaea 100644 --- a/winsup/utils/mkgroup.c +++ b/winsup/utils/mkgroup.c @@ -744,6 +744,7 @@ main (int argc, char **argv) int c, i; char *disp_groupname = NULL; BOOL in_domain; + int optional_args = 0; if (!isatty (1)) setmode (1, O_BINARY); @@ -768,6 +769,7 @@ main (int argc, char **argv) return 0; } + unsetenv ("POSIXLY_CORRECT"); /* To get optional arg processing right. */ while ((c = getopt_long (argc, argv, opts, longopts, NULL)) != EOF) switch (c) { @@ -784,6 +786,8 @@ main (int argc, char **argv) domlist[print_domlist].domain = (c == 'd' || c == 'D'); opt = optarg ?: argv[optind] && argv[optind][0] != '-' ? argv[optind] : NULL; + if (opt == argv[optind]) + ++optional_args; for (i = 0; i < print_domlist; ++i) if (domlist[i].domain == domlist[print_domlist].domain && ((!domlist[i].str && !opt) @@ -864,6 +868,7 @@ skip: return 1; } + optind += optional_args; if (argv[optind]) { fprintf (stderr, diff --git a/winsup/utils/mkpasswd.c b/winsup/utils/mkpasswd.c index 305842562..d7b999967 100644 --- a/winsup/utils/mkpasswd.c +++ b/winsup/utils/mkpasswd.c @@ -719,6 +719,7 @@ main (int argc, char **argv) char *disp_username = NULL; char passed_home_path[PATH_MAX]; BOOL in_domain; + int optional_args = 0; passed_home_path[0] = '\0'; if (!isatty (1)) @@ -740,6 +741,7 @@ main (int argc, char **argv) return 0; } + unsetenv ("POSIXLY_CORRECT"); /* To get optional arg processing right. */ while ((c = getopt_long (argc, argv, opts, longopts, NULL)) != EOF) switch (c) { @@ -756,6 +758,8 @@ main (int argc, char **argv) domlist[print_domlist].domain = (c == 'd' || c == 'D'); opt = optarg ?: argv[optind] && argv[optind][0] != '-' ? argv[optind] : NULL; + if (opt == argv[optind]) + ++optional_args; for (i = 0; i < print_domlist; ++i) if (domlist[i].domain == domlist[print_domlist].domain && ((!domlist[i].str && !opt) @@ -852,6 +856,7 @@ skip: return 1; } + optind += optional_args; if (argv[optind]) { fprintf (stderr, -- cgit v1.2.3