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-07-24 00:12:12 +0400
committerCorinna Vinschen <corinna@vinschen.de>2008-07-24 00:12:12 +0400
commitf36c78a4872e5b8fc1a2334c6ed71371a642deb8 (patch)
tree6d5008818159052eb3b62c5b80afb34d14410310 /winsup/utils/mkgroup.c
parentf9519bcd1a6dbf9246d8ea02dcaf47b7b4a017c7 (diff)
* mkgroup.c (main): Fix test for duplicate domain/machine request.
* mkpasswd.c (main): Ditto.
Diffstat (limited to 'winsup/utils/mkgroup.c')
-rw-r--r--winsup/utils/mkgroup.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c
index b267b13ed..ea9af72f5 100644
--- a/winsup/utils/mkgroup.c
+++ b/winsup/utils/mkgroup.c
@@ -750,12 +750,22 @@ main (int argc, char **argv)
"domains and machines.\n", __progname);
return 1;
}
+ domlist[print_domlist].domain = (c == 'd' || c == 'D');
opt = optarg ?:
argv[optind] && argv[optind][0] != '-' ? argv[optind] : NULL;
for (i = 0; i < print_domlist; ++i)
- if ((!domlist[i].str && !opt)
- || (domlist[i].str && opt && !strcmp (domlist[i].str, opt)))
- goto skip;
+ if (domlist[i].domain == domlist[print_domlist].domain
+ && ((!domlist[i].str && !opt)
+ || (domlist[i].str && opt
+ && (off = strlen (domlist[i].str))
+ && !strncmp (domlist[i].str, opt, off)
+ && (!opt[off] || opt[off] == ','))))
+ {
+ fprintf (stderr, "%s: Duplicate %s '%s'. Skipping...\n",
+ __progname, domlist[i].domain ? "domain" : "machine",
+ domlist[i].str);
+ goto skip;
+ }
if (!(domlist[print_domlist].str = opt))
print_system = 1;
domlist[print_domlist].id_offset = ULONG_MAX;
@@ -772,9 +782,8 @@ main (int argc, char **argv)
}
*p = '\0';
}
- domlist[print_domlist].domain = (c == 'd' || c == 'D');
domlist[print_domlist++].with_dom = (c == 'D' || c == 'L');
- skip:
+skip:
break;
case 'S':
sep_char = optarg;