summaryrefslogtreecommitdiff
path: root/src/sysdeps/tryegidingroups.c
blob: 687740da6198a9e1cbdc46bbc9a4c871cdc521fb (plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* ISC license. */

#undef _POSIX_C_SOURCE
#undef _XOPEN_SOURCE

#ifndef _BSD_SOURCE
#define _BSD_SOURCE
#endif

#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif

#ifndef _DEFAULT_SOURCE
#define _DEFAULT_SOURCE
#endif

#ifndef _NETBSD_SOURCE
#define _NETBSD_SOURCE
#endif

#ifndef __EXTENSIONS__
#define __EXTENSIONS__
#endif

#include <sys/types.h>
#include <unistd.h>
#include <grp.h>

int main (void)
{
  gid_t gid = getegid() ;
  gid_t list[NGROUPS_MAX] ;
  int i = 0 ;
  int r = getgroups(NGROUPS_MAX, list) ;
  if (r < 0) return 111 ;
  for (; i < r ; i++) if (list[i] == gid) return 0 ;
  return 1 ;
}