From 167f0d851375bb0c21b39a315526866b7b7affd1 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 15 Oct 2004 13:57:56 +0000 Subject: [PATCH] * cygcheck.cc (pretty_id): Don't exit on id error. Fix size calculations. --- winsup/utils/ChangeLog | 6 ++++++ winsup/utils/cygcheck.cc | 19 ++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 9b236f031..1462b316e 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,9 @@ +2004-10-15 Bas van Gompel + Christopher Faylor + + * cygcheck.cc (pretty_id): Don't exit on id error. Fix size + calculations. + 2004-10-14 Christopher Faylor Bas van Gompel diff --git a/winsup/utils/cygcheck.cc b/winsup/utils/cygcheck.cc index 327e3ccec..64130eeca 100644 --- a/winsup/utils/cygcheck.cc +++ b/winsup/utils/cygcheck.cc @@ -802,7 +802,7 @@ pretty_id (const char *s, char *cygwin, size_t cyglen) else { fprintf (stderr, "garbled output from `id' command - no uid= found\n"); - exit (1); + return; } char *gid = strtok (NULL, ")"); if (gid) @@ -810,14 +810,14 @@ pretty_id (const char *s, char *cygwin, size_t cyglen) else { fprintf (stderr, "garbled output from `id' command - no gid= found\n"); - exit (1); + return; } char **ng = groups - 1; size_t len_uid = strlen (uid); size_t len_gid = strlen (gid); - *++ng = groups[0] = (char *) alloca (len_uid += sizeof ("UID: )")); - *++ng = groups[1] = (char *) alloca (len_uid += sizeof ("GID: )")); + *++ng = groups[0] = (char *) alloca (len_uid += sizeof ("UID: )") - 1); + *++ng = groups[1] = (char *) alloca (len_gid += sizeof ("GID: )") - 1); sprintf (groups[0], "UID: %s)", uid); sprintf (groups[1], "GID: %s)", gid); size_t sz = max (len_uid, len_gid); @@ -832,13 +832,14 @@ pretty_id (const char *s, char *cygwin, size_t cyglen) if (sz < len) sz = len; } + ng--; printf ("\nOutput from %s (%s)\n", id, s); - int n = 80 / (int) sz; - sz = -(sz + 1); - int i = n - 2; - for (char **g = groups; g < ng; g++) - if ((g != ng - 1) && (++i < n)) + int n = 80 / (int) ++sz; + int i = n ? n - 2 : 0; + sz = -sz; + for (char **g = groups; g <= ng; g++) + if ((g != ng) && (++i < n)) printf ("%*s ", sz, *g); else {