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