Chapter Contents |
Previous |
Next |
getgroupsbyname |
Portability: | SAS/C extension |
SYNOPSIS | |
DESCRIPTION | |
RETURN VALUE | |
PORTABILITY | |
EXAMPLE | |
RELATED FUNCTIONS |
SYNOPSIS |
#include <sys/types.h> #include <unistd.h> int getgroupsbyname(char * userID, int listSize, gid_t groupList[ ] );
DESCRIPTION |
getgroupsbyname
stores the supplementary group IDs for a specified
user into an array.
userID
listSize
groupList
RETURN VALUE |
getgroupsbyname
returns
1
plus the number of supplementary group IDs in
groupList
. This value is always less than or
equal to the value of
NGROUPS_MAX
defined in
<limits.h>
. If
listSize
is
0
,
getgroups
returns the total number of supplementary group IDs and does
not store the group IDs in an array.
getgroups
returns a
-1
if unsuccessful.
PORTABILITY |
The
getgroupsbyname
function is not defined by the POSIX.1 standard and
should not be used in portable applications.
EXAMPLE |
The following example illustrates the
use of
getgroupsbyname
to determine the groups that a user belongs to.
Note:
You must specify the
posix
option when compiling this example.
#include <sys/types.h> #include <unistd.h> #include <grp.h> #include <stdio.h> #include <stdlib.h> #include <string.h> main(int argc, char *argv[]) { gid_t *groupIDs; int maxGroups; int argGroupID; struct group *argGroup; int i; int found; if (argc < 3) { fprintf(stderr, "Two arguments required: username groupnamen"); abort(); } maxGroups = getgroupsbyname(argv[1], 0, NULL); /* determine number of supplemental groups */ if (maxGroups <= 0) { perror("getgroupsbyname error"); abort(); } groupIDs = malloc(maxGroups * sizeof(gid_t)); if (!groupIDs) abort(); maxGroups = getgroupsbyname(argv[1], maxGroups, groupIDs); if (maxGroups <= 0) { perror("getgroupsbyname error"); abort(); } argGroup = getgrnam(argv[2]); /* look up group name */ if (!argGroup) { perror("getgrnam error"); abort(); } argGroupID = argGroup->gr_gid; found = 0; for (i = 0; i < maxGroups; ++i) { if (groupIDs[i] == argGroupID) { found = 1; break; } } if (found) printf("Group %s was found for user %s\n", argv[2], argv[1]); else printf("Group %s was not found for user %s\n", argv[2], argv[1]); }
RELATED FUNCTIONS |
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.