![]() 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. ![[cautionend]](../common/images/cautend.gif)
#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.