summaryrefslogtreecommitdiffstats
path: root/winsup/utils
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog5
-rw-r--r--winsup/utils/mkgroup.c41
2 files changed, 22 insertions, 24 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 8a8137d05..91ab848fc 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,5 +1,10 @@
2008-07-22 Corinna Vinschen <corinna@vinschen.de>
+ * mkgroup.c (main): Remove special root group code. Only print
+ SYSTEM group in case of printing local machine or local domain groups.
+
+2008-07-22 Corinna Vinschen <corinna@vinschen.de>
+
* Makefile.in (cygcheck.exe): Link against ntdll.
* bloda.cc: Use statically linked functions throughout.
* cygpath.cc: Drop 9x considerations.
diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c
index a82ae3b1b..89a13fd67 100644
--- a/winsup/utils/mkgroup.c
+++ b/winsup/utils/mkgroup.c
@@ -588,11 +588,11 @@ main (int argc, char **argv)
domlist_t domains[16];
char *opt;
int print_current = 0;
+ int print_system = 0;
const char *sep_char = "\\";
int id_offset = 10000;
int c, i, off;
char *disp_groupname = NULL;
- int isRoot = 0;
BOOL in_domain;
if (!isatty (1))
@@ -632,7 +632,8 @@ main (int argc, char **argv)
if ((!locals[i].str && !opt)
|| (locals[i].str && opt && !strcmp (locals[i].str, opt)))
goto skip_local;
- locals[print_local].str = opt;
+ if (!(locals[print_local].str = opt))
+ print_system = 1;
locals[print_local++].with_dom = c == 'L';
skip_local:
break;
@@ -650,7 +651,8 @@ main (int argc, char **argv)
if ((!domains[i].str && !opt)
|| (domains[i].str && opt && !strcmp (domains[i].str, opt)))
goto skip_domain;
- domains[print_domain].str = opt;
+ if (!(domains[print_domain].str = opt))
+ print_system = 1;
domains[print_domain++].with_dom = c == 'D';
skip_domain:
break;
@@ -684,7 +686,6 @@ main (int argc, char **argv)
break;
case 'g':
disp_groupname = optarg;
- isRoot = !strcmp(disp_groupname, "root");
break;
case 'h':
usage (stdout);
@@ -701,32 +702,24 @@ main (int argc, char **argv)
usage (stdout);
/* Get 'system' group */
- if (!disp_groupname && (print_local > 0 || print_domain > 0))
+ if (!disp_groupname && print_system)
print_special (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
0, 0, 0, 0, 0, 0, 0);
off = 1;
- if (isRoot)
+ for (i = 0; i < print_local; ++i)
{
- /* Very special feature for the oncoming future:
- Create a "root" group being actually the local Administrators group.
- Printing root disables printing any other "real" local group. */
- printf ("root:S-1-5-32-544:0:\n");
+ if (locals[i].str)
+ {
+ if (!enum_local_groups (FALSE, locals + i, sep_char,
+ id_offset * off, disp_groupname))
+ enum_groups (FALSE, locals + i, sep_char, id_offset * off++,
+ disp_groupname);
+ }
+ else if (!enum_local_groups (FALSE, locals + i, sep_char, 0,
+ disp_groupname))
+ enum_groups (FALSE, locals + i, sep_char, 0, disp_groupname);
}
- else
- for (i = 0; i < print_local; ++i)
- {
- if (locals[i].str)
- {
- if (!enum_local_groups (FALSE, locals + i, sep_char,
- id_offset * off, disp_groupname))
- enum_groups (FALSE, locals + i, sep_char, id_offset * off++,
- disp_groupname);
- }
- else if (!enum_local_groups (FALSE, locals + i, sep_char, 0,
- disp_groupname))
- enum_groups (FALSE, locals + i, sep_char, 0, disp_groupname);
- }
for (i = 0; i < print_domain; ++i)
{