From f78765daddab38eb37fb9ee28960bac930b47754 Mon Sep 17 00:00:00 2001 From: Pierre Humblet Date: Sat, 1 Mar 2003 16:38:26 +0000 Subject: [PATCH] 2003-03-01 Pierre Humblet * mkpasswd.cc (main): On Win95, output both a default line and a line for the current user (if known) with a pseudorandom uid. If the -u switch is given, produce a line for the specified user. * mkgroup.cc (main): On Win95 change the group name from "unknown" to "all". --- winsup/utils/ChangeLog | 8 ++++++++ winsup/utils/mkgroup.c | 2 +- winsup/utils/mkpasswd.c | 42 +++++++++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 6fd2041bd..01e94d099 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,11 @@ +2003-03-01 Pierre Humblet + + * mkpasswd.cc (main): On Win95, output both a default line and a + line for the current user (if known) with a pseudorandom uid. If + the -u switch is given, produce a line for the specified user. + * mkgroup.cc (main): On Win95 change the group name from "unknown" to + "all". + 2003-02-28 Christopher Faylor * Makefile.in (cygcheck.o): Fix so that actual mingw include files are diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c index dacd7ae86..2378e14b1 100644 --- a/winsup/utils/mkgroup.c +++ b/winsup/utils/mkgroup.c @@ -612,7 +612,7 @@ main (int argc, char **argv) /* This takes Windows 9x/ME into account. */ if (!isNT) { - printf ("unknown::%ld:\n", DOMAIN_ALIAS_RID_ADMINS); + printf ("all::%ld:\n", DOMAIN_ALIAS_RID_ADMINS); return 0; } diff --git a/winsup/utils/mkpasswd.c b/winsup/utils/mkpasswd.c index 3e54bd42c..3158490a5 100644 --- a/winsup/utils/mkpasswd.c +++ b/winsup/utils/mkpasswd.c @@ -632,24 +632,34 @@ main (int argc, char **argv) if (!isNT) { /* This takes Windows 9x/ME into account. */ - if (!disp_username) - { - if (GetUserName (name, (len = 256, &len))) - disp_username = name; - else - /* Same behaviour as in cygwin/shared.cc (memory_init). */ - disp_username = (char *) "unknown"; - } - if (passed_home_path[0] == '\0') strcpy (passed_home_path, "/home/"); - - printf ("%s:*:%ld:%ld:%s:%s%s:/bin/bash\n", disp_username, - DOMAIN_USER_RID_ADMIN, - DOMAIN_ALIAS_RID_ADMINS, - disp_username, - passed_home_path, - disp_username); + if (!disp_username) + { + printf ("admin:use_crypt:%lu:%lu:Administrator:%sadmin:/bin/bash\n", + DOMAIN_USER_RID_ADMIN, + DOMAIN_ALIAS_RID_ADMINS, + passed_home_path); + if (GetUserName (name, (len = 256, &len))) + disp_username = name; + } + if (disp_username && disp_username[0]) + { + /* Create a pseudo random uid */ + unsigned long uid = 0, i; + for (i = 0; disp_username[i]; i++) + uid += toupper (disp_username[i]) << ((6 * i) % 25); + uid = (uid % (65535 - DOMAIN_USER_RID_ADMIN - 1)) + + DOMAIN_USER_RID_ADMIN + 1; + + printf ("%s:use_crypt:%lu:%lu:%s:%s%s:/bin/bash\n", + disp_username, + uid, + DOMAIN_ALIAS_RID_ADMINS, + disp_username, + passed_home_path, + disp_username); + } return 0; } if (!print_local && !print_domain && !print_local_groups)