changeset 1733:6b0ff21d3888

(getugroups): Take new parameter, gid. Add gid to the list of groups. From Ulrich Drepper.
author Jim Meyering <jim@meyering.net>
date Wed, 10 Mar 1999 15:35:47 +0000
parents 16c93d56c8f6
children 9e24471559e2
files lib/getugroups.c
diffstat 1 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lib/getugroups.c
+++ b/lib/getugroups.c
@@ -41,8 +41,12 @@
 # include <strings.h>
 #endif
 
-/* Like `getgroups', but for user USERNAME instead of for
-   the current process. */
+/* Like `getgroups', but for user USERNAME instead of for the current
+   process.  Store at most MAXCOUNT group IDs in the GROUPLIST array.
+   If GID is not -1, store it first (if possible).  GID should be the
+   group ID (pw_gid) obtained from getpwuid, in case USERNAME is not
+   listed in /etc/groups.
+   Always return the number of groups of which USERNAME is a member.  */
 
 int
 getugroups (int maxcount, GETGROUPS_T *grouplist, char *username, gid_t gid)
@@ -51,8 +55,12 @@
   register char **cp;
   register int count = 0;
 
-  if (maxcount != 0)
-    grouplist[count++] = gid;
+  if (gid != -1)
+    {
+      if (maxcount != 0)
+	grouplist[count] = gid;
+      ++count;
+    }
 
   setgrent ();
   while ((grp = getgrent ()) != 0)