diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 907f46bc0..cca686c46 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,7 @@ +2004-01-23 Christopher Faylor + + * cygcheck.cc (pretty_id): Make more robust in absence of id.exe. + 2004-01-22 Corinna Vinschen * cygpath.cc (dowin): Revert accidental checkin from November. diff --git a/winsup/utils/cygcheck.cc b/winsup/utils/cygcheck.cc index 7adc4c1ec..9652a5ba5 100644 --- a/winsup/utils/cygcheck.cc +++ b/winsup/utils/cygcheck.cc @@ -780,14 +780,27 @@ pretty_id (const char *s, char *cygwin, size_t cyglen) *p = '\\'; if (access (id, X_OK)) - fprintf (stderr, "`id' program not found\n"); + { + fprintf (stderr, "`id' program not found\n"); + return; + } FILE *f = popen (id, "rt"); char buf[16384]; + static char empty[] = ""; + buf[0] = '\0'; fgets (buf, sizeof (buf), f); - char *uid = strtok (buf, ")") + strlen ("uid="); - char *gid = strtok (NULL, ")") + strlen ("gid=") + 1; + char *uid = strtok (buf, ")"); + if (uid) + uid += strlen ("uid="); + else + uid = empty; + char *gid = strtok (NULL, ")"); + if (gid) + gid += strlen ("gid=") + 1; + else + gid = empty; char **ng; size_t sz = 0; for (ng = groups; (*ng = strtok (NULL, ",")); ng++)