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/mkpasswd.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'winsup/utils/mkpasswd.c') 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