diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-08-18 08:33:48 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-08-18 08:33:48 +0000 |
commit | 01dd3162ff90f8c337257f2a489e8c59decdbcab (patch) | |
tree | 3318d16ccac1e1a5d29c8d929d3406ee4943136e /winsup/utils | |
parent | c7aa4aec427d17bae3c9d87bc2c34b6ba63a1592 (diff) | |
download | cygnal-01dd3162ff90f8c337257f2a489e8c59decdbcab.tar.gz cygnal-01dd3162ff90f8c337257f2a489e8c59decdbcab.tar.bz2 cygnal-01dd3162ff90f8c337257f2a489e8c59decdbcab.zip |
* mkgroup.c (main): Always unset environment variable POSIXLY_CORRECT.
Keep track of optional argumnts and fix up optind afterwards.
* mkpasswd.c (main): Ditto.
Diffstat (limited to 'winsup/utils')
-rw-r--r-- | winsup/utils/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/utils/mkgroup.c | 5 | ||||
-rw-r--r-- | winsup/utils/mkpasswd.c | 5 |
3 files changed, 16 insertions, 0 deletions
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 <corinna@vinschen.de> + + * 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 <me+cygwin@cgf.cx> * 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, |