VSF Documented
grp.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_GRP_H__
2#define __VSF_LINUX_GRP_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "./sys/types.h"
8#else
9# include <sys/types.h>
10#endif
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#if VSF_LINUX_CFG_WRAPPER == ENABLED
17# define initgroups VSF_LINUX_WRAPPER(initgroups)
18# define getgroups VSF_LINUX_WRAPPER(getgroups)
19# define setgroups VSF_LINUX_WRAPPER(setgroups)
20# define getgrnam VSF_LINUX_WRAPPER(getgrnam)
21# define getgrgid VSF_LINUX_WRAPPER(getgrgid)
22# define getgrnam_r VSF_LINUX_WRAPPER(getgrnam_r)
23# define getgrgid_r VSF_LINUX_WRAPPER(getgrgid_r)
24# define getgrent VSF_LINUX_WRAPPER(getgrent)
25# define setgrent VSF_LINUX_WRAPPER(setgrent)
26# define endgrent VSF_LINUX_WRAPPER(endgrent)
27#endif
28
29struct group {
30 char *gr_name;
31 char *gr_passwd;
33 char **gr_mem;
34};
35
36#if VSF_LINUX_APPLET_USE_GRP == ENABLED
37typedef struct vsf_linux_grp_vplt_t {
39
51# ifndef __VSF_APPLET__
53# endif
54#endif
55
56#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_GRP_LIB__))\
57 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_GRP == ENABLED
58
59#ifndef VSF_LINUX_APPLET_GRP_VPLT
60# if VSF_LINUX_USE_APPLET == ENABLED
61# define VSF_LINUX_APPLET_GRP_VPLT \
62 ((vsf_linux_grp_vplt_t *)(VSF_LINUX_APPLET_VPLT->grp_vplt))
63# else
64# define VSF_LINUX_APPLET_GRP_VPLT \
65 ((vsf_linux_grp_vplt_t *)vsf_vplt((void *)0))
66# endif
67#endif
68
69#define VSF_LINUX_APPLET_GRP_ENTRY(__NAME) \
70 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_GRP_VPLT, __NAME)
71#define VSF_LINUX_APPLET_GRP_IMP(...) \
72 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_GRP_VPLT, __VA_ARGS__)
73
74VSF_LINUX_APPLET_GRP_IMP(initgroups, int, const char *user, gid_t group) {
76 return VSF_LINUX_APPLET_GRP_ENTRY(initgroups)(user, group);
77}
78VSF_LINUX_APPLET_GRP_IMP(getgroups, int, size_t size, gid_t list[]) {
80 return VSF_LINUX_APPLET_GRP_ENTRY(getgroups)(size, list);
81}
82VSF_LINUX_APPLET_GRP_IMP(setgroups, int, size_t size, const gid_t *list) {
84 return VSF_LINUX_APPLET_GRP_ENTRY(setgroups)(size, list);
85}
86VSF_LINUX_APPLET_GRP_IMP(getgrnam, struct group *, const char *name) {
88 return VSF_LINUX_APPLET_GRP_ENTRY(getgrnam)(name);
89}
90VSF_LINUX_APPLET_GRP_IMP(getgrgid, struct group *, gid_t gid) {
92 return VSF_LINUX_APPLET_GRP_ENTRY(getgrgid)(gid);
93}
94VSF_LINUX_APPLET_GRP_IMP(getgrnam_r, int, const char *name, struct group *grp, char *buf, size_t buflen, struct group **result) {
96 return VSF_LINUX_APPLET_GRP_ENTRY(getgrnam_r)(name, grp, buf, buflen, result);
97}
98VSF_LINUX_APPLET_GRP_IMP(getgrgid_r, int, gid_t gid, struct group *grp, char *buf, size_t buflen, struct group **result) {
100 return VSF_LINUX_APPLET_GRP_ENTRY(getgrgid_r)(gid, grp, buf, buflen, result);
101}
102VSF_LINUX_APPLET_GRP_IMP(getgrent, struct group *, void) {
104 return VSF_LINUX_APPLET_GRP_ENTRY(getgrent)();
105}
106VSF_LINUX_APPLET_GRP_IMP(setgrent, void, void) {
108 VSF_LINUX_APPLET_GRP_ENTRY(setgrent)();
109}
110VSF_LINUX_APPLET_GRP_IMP(endgrent, void, void) {
112 VSF_LINUX_APPLET_GRP_ENTRY(endgrent)();
113}
114
115#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_GRP
116
117int initgroups(const char *user, gid_t group);
118int getgroups(size_t size, gid_t list[]);
119int setgroups(size_t size, const gid_t *list);
120struct group * getgrnam(const char *name);
121struct group * getgrgid(gid_t gid);
122int getgrnam_r(const char *name, struct group *grp,
123 char *buf, size_t buflen, struct group **result);
124int getgrgid_r(gid_t gid, struct group *grp,
125 char *buf, size_t buflen, struct group **result);
126
127struct group * getgrent(void);
128void setgrent(void);
129void endgrent(void);
130
131#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_GRP
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif
#define getgrent
Definition grp.h:24
__VSF_VPLT_DECORATOR__ vsf_linux_grp_vplt_t vsf_linux_grp_vplt
Definition vsf_linux.c:4947
#define setgroups
Definition grp.h:19
#define getgrgid_r
Definition grp.h:23
#define initgroups
Definition grp.h:17
#define endgrent
Definition grp.h:26
#define getgrnam_r
Definition grp.h:22
#define getgrnam
Definition grp.h:20
#define getgroups
Definition grp.h:18
#define setgrent
Definition grp.h:25
#define getgrgid
Definition grp.h:21
unsigned int gid_t
Definition types.h:91
Definition grp.h:29
gid_t gr_gid
Definition grp.h:32
char ** gr_mem
Definition grp.h:33
char * gr_passwd
Definition grp.h:31
char * gr_name
Definition grp.h:30
Definition grp.h:37
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgrnam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setgroups)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgroups)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(initgroups)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(endgrent)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgrgid_r)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgrnam_r)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgrgid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setgrent)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgrent)
vsf_vplt_info_t info
Definition grp.h:38
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint32_t size
Definition vsf_memfs.h:50