From: Jim Meyering Date: Sat, 6 Jan 1996 06:04:09 +0000 (+0000) Subject: Remove no-longer-used NGROUPS_MAX cpp macros. X-Git-Tag: TEXTUTILS-1_14~63 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=83adf65c37e49075499f2624e2eb45e7f2c0f380;p=thirdparty%2Fcoreutils.git Remove no-longer-used NGROUPS_MAX cpp macros. (print_group_list) [HAVE_GETGROUPS]: Reorganize to use getgroups (0, NULL) to compute number of groups at run time rather than relying on NGROUPS_MAX at compile time. (print_full_info) [HAVE_GETGROUPS]: Likewise. Suggestion from Roland McGrath. --- diff --git a/src/id.c b/src/id.c index d161ac3ff5..38a37f0083 100644 --- a/src/id.c +++ b/src/id.c @@ -32,10 +32,6 @@ #ifdef _POSIX_VERSION #include -#if !defined(NGROUPS_MAX) || NGROUPS_MAX < 1 -#undef NGROUPS_MAX -#define NGROUPS_MAX sysconf (_SC_NGROUPS_MAX) -#endif /* !NGROUPS_MAX */ #else /* not _POSIX_VERSION */ struct passwd *getpwuid (); @@ -45,9 +41,6 @@ gid_t getgid (); uid_t geteuid (); gid_t getegid (); #include -#if !defined(NGROUPS_MAX) && defined(NGROUPS) -#define NGROUPS_MAX NGROUPS -#endif /* not NGROUPS_MAX and NGROUPS */ #endif /* not _POSIX_VERSION */ char *xmalloc (); @@ -240,26 +233,29 @@ print_group_list (username) print_group (egid); } -#if defined(NGROUPS_MAX) && defined(HAVE_GETGROUPS) +#if HAVE_GETGROUPS { - int ngroups; + int ng, n_groups; GETGROUPS_T *groups; register int i; - groups = (GETGROUPS_T *) xmalloc (NGROUPS_MAX * sizeof (GETGROUPS_T)); + n_groups = getgroups (0, NULL); + /* Add 1 just in case n_groups is zero. */ + groups = (GETGROUPS_T *) xmalloc (n_groups * sizeof (GETGROUPS_T) + 1); if (username == 0) - ngroups = getgroups (NGROUPS_MAX, groups); + ng = getgroups (n_groups, groups); else - ngroups = getugroups (NGROUPS_MAX, groups, username); - if (ngroups < 0) + ng = getugroups (n_groups, groups, username); + + if (ng < 0) { error (0, errno, _("cannot get supplemental group list")); - problems++; + ++problems; free (groups); return; } - for (i = 0; i < ngroups; i++) + for (i = 0; i < n_groups; i++) if (groups[i] != rgid && groups[i] != egid) { putchar (' '); @@ -313,18 +309,20 @@ print_full_info (username) printf ("(%s)", grp->gr_name); } -#if defined(NGROUPS_MAX) && defined(HAVE_GETGROUPS) +#if HAVE_GETGROUPS { - int ngroups; + int ng, n_groups; GETGROUPS_T *groups; register int i; - groups = (GETGROUPS_T *) xmalloc (NGROUPS_MAX * sizeof (GETGROUPS_T)); + n_groups = getgroups (0, NULL); + /* Add 1 just in case n_groups is zero. */ + groups = (GETGROUPS_T *) xmalloc (n_groups * sizeof (GETGROUPS_T) + 1); if (username == 0) - ngroups = getgroups (NGROUPS_MAX, groups); + ng = getgroups (n_groups, groups); else - ngroups = getugroups (NGROUPS_MAX, groups, username); - if (ngroups < 0) + ng = getugroups (n_groups, groups, username); + if (ng < 0) { error (0, errno, _("cannot get supplemental group list")); problems++; @@ -332,9 +330,9 @@ print_full_info (username) return; } - if (ngroups > 0) + if (n_groups > 0) fputs (_(" groups="), stdout); - for (i = 0; i < ngroups; i++) + for (i = 0; i < n_groups; i++) { if (i > 0) putchar (',');