1#ifndef	_GRP_H
2#define	_GRP_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include <features.h>
9
10#define __NEED_size_t
11#define __NEED_gid_t
12
13#ifdef _GNU_SOURCE
14#define __NEED_FILE
15#endif
16
17#include <bits/alltypes.h>
18
19struct group {
20	char *gr_name;
21	char *gr_passwd;
22	gid_t gr_gid;
23	char **gr_mem;
24};
25
26struct group  *getgrgid(gid_t);
27struct group  *getgrnam(const char *);
28
29int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **);
30int getgrnam_r(const char *, struct group *, char *, size_t, struct group **);
31
32#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
33struct group  *getgrent(void);
34void           endgrent(void);
35void           setgrent(void);
36#endif
37
38#ifdef _GNU_SOURCE
39struct group  *fgetgrent(FILE *);
40int putgrent(const struct group *, FILE *);
41#endif
42
43#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
44int getgrouplist(const char *, gid_t, gid_t *, int *);
45int setgroups(size_t, const gid_t *);
46int initgroups(const char *, gid_t);
47#endif
48
49#ifdef __cplusplus
50}
51#endif
52
53#endif
54