summaryrefslogtreecommitdiff
path: root/x11/apwal/files/group_member.c
blob: 3197feb15935b5adf60bcedc46f60d812f39094b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int group_member(gid_t gid) {
  gid_t *grouplist = NULL;
  int res,i;

  res = getgroups(0,NULL);
  if (res >= 0) {
    grouplist = calloc(sizeof(gid_t),res);
    res = getgroups(res,grouplist);
    if (res >=0) {
	for(i=0;i<res;i++) {
          if (grouplist[i] == gid) break;
	}
    }
  }
  if (res == -1) {
    perror("Can't get number of groups!");
    return -1;
  } else {
    return (i<res);
  }
}