1 #ifndef _GRP_H 2 #define _GRP_H 3 4 #ifdef __cplusplus 5 extern "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 19 struct group { 20 char *gr_name; 21 char *gr_passwd; 22 gid_t gr_gid; 23 char **gr_mem; 24 }; 25 26 struct group *getgrgid(gid_t); 27 struct group *getgrnam(const char *); 28 29 int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **); 30 int getgrnam_r(const char *, struct group *, char *, size_t, struct group **); 31 32 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 33 struct group *getgrent(void); 34 void endgrent(void); 35 void setgrent(void); 36 #endif 37 38 #ifdef _GNU_SOURCE 39 struct group *fgetgrent(FILE *); 40 int putgrent(const struct group *, FILE *); 41 #endif 42 43 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 44 int getgrouplist(const char *, gid_t, gid_t *, int *); 45 int setgroups(size_t, const gid_t *); 46 int initgroups(const char *, gid_t); 47 #endif 48 49 #ifdef __cplusplus 50 } 51 #endif 52 53 #endif 54