Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-08-18 12:33:48 +0400
committerCorinna Vinschen <corinna@vinschen.de>2008-08-18 12:33:48 +0400
commit01dd3162ff90f8c337257f2a489e8c59decdbcab (patch)
tree3318d16ccac1e1a5d29c8d929d3406ee4943136e
parentc7aa4aec427d17bae3c9d87bc2c34b6ba63a1592 (diff)
* mkgroup.c (main): Always unset environment variable POSIXLY_CORRECT.
Keep track of optional argumnts and fix up optind afterwards. * mkpasswd.c (main): Ditto.
-rw-r--r--winsup/utils/ChangeLog6
-rw-r--r--winsup/utils/mkgroup.c5
-rw-r--r--winsup/utils/mkpasswd.c5
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,