1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Sean Kelly 2005 - 2009, Sönke Ludwig 2013.
5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 * Authors: Sean Kelly, Alex Rønne Petersen, Sönke Ludwig
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
9
10 /* Copyright Sean Kelly 2005 - 2009.
11 * Distributed under the Boost Software License, Version 1.0.
12 * (See accompanying file LICENSE or copy at
13 * http://www.boost.org/LICENSE_1_0.txt)
14 */
15 module core.sys.posix.grp;
16
17 import core.sys.posix.config;
18 public import core.sys.posix.sys.types; // for gid_t, uid_t
19
20 version (OSX)
21 version = Darwin;
22 else version (iOS)
23 version = Darwin;
24 else version (TVOS)
25 version = Darwin;
26 else version (WatchOS)
27 version = Darwin;
28
version(Posix)29 version (Posix):
30 extern (C):
31 nothrow:
32 @nogc:
33 @system:
34
35 //
36 // Required
37 //
38 /*
39 struct group
40 {
41 char* gr_name;
42 char* gr_passwd;
43 gid_t gr_gid;
44 char** gr_mem;
45 }
46
47 group* getgrnam(const scope char*);
48 group* getgrgid(gid_t);
49 */
50
51 version (CRuntime_Glibc)
52 {
53 struct group
54 {
55 char* gr_name;
56 char* gr_passwd;
57 gid_t gr_gid;
58 char** gr_mem;
59 }
60 }
61 else version (Darwin)
62 {
63 struct group
64 {
65 char* gr_name;
66 char* gr_passwd;
67 gid_t gr_gid;
68 char** gr_mem;
69 }
70 }
71 else version (FreeBSD)
72 {
73 struct group
74 {
75 char* gr_name;
76 char* gr_passwd;
77 gid_t gr_gid;
78 char** gr_mem;
79 }
80 }
81 else version (NetBSD)
82 {
83 struct group
84 {
85 char* gr_name;
86 char* gr_passwd;
87 gid_t gr_gid;
88 char** gr_mem;
89 }
90 }
91 else version (OpenBSD)
92 {
93 struct group
94 {
95 char* gr_name;
96 char* gr_passwd;
97 gid_t gr_gid;
98 char** gr_mem;
99 }
100 }
101 else version (DragonFlyBSD)
102 {
103 struct group
104 {
105 char* gr_name;
106 char* gr_passwd;
107 gid_t gr_gid;
108 char** gr_mem;
109 }
110 }
111 else version (Solaris)
112 {
113 struct group
114 {
115 char* gr_name;
116 char* gr_passwd;
117 gid_t gr_gid;
118 char** gr_mem;
119 }
120 }
121 else version (CRuntime_Bionic)
122 {
123 struct group
124 {
125 char* gr_name;
126 char* gr_passwd;
127 gid_t gr_gid;
128 char** gr_mem;
129 }
130 }
131 else version (CRuntime_UClibc)
132 {
133 struct group
134 {
135 char* gr_name;
136 char* gr_passwd;
137 gid_t gr_gid;
138 char** gr_mem;
139 }
140 }
141 else version (CRuntime_Musl)
142 {
143 struct group
144 {
145 char* gr_name;
146 char* gr_passwd;
147 gid_t gr_gid;
148 char** gr_mem;
149 }
150 }
151 else
152 {
153 static assert(false, "Unsupported platform");
154 }
155
156 group* getgrnam(const scope char*);
157 group* getgrgid(gid_t);
158
159 //
160 // Thread-Safe Functions (TSF)
161 //
162 /*
163 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
164 int getgrgid_r(gid_t, group*, char*, size_t, group**);
165 */
166
167 version (CRuntime_Glibc)
168 {
169 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
170 int getgrgid_r(gid_t, group*, char*, size_t, group**);
171 }
172 else version (Darwin)
173 {
174 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
175 int getgrgid_r(gid_t, group*, char*, size_t, group**);
176 }
177 else version (FreeBSD)
178 {
179 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
180 int getgrgid_r(gid_t, group*, char*, size_t, group**);
181 }
182 else version (NetBSD)
183 {
184 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
185 int getgrgid_r(gid_t, group*, char*, size_t, group**);
186 }
187 else version (OpenBSD)
188 {
189 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
190 int getgrgid_r(gid_t, group*, char*, size_t, group**);
191 }
192 else version (DragonFlyBSD)
193 {
194 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
195 int getgrgid_r(gid_t, group*, char*, size_t, group**);
196 }
197 else version (Solaris)
198 {
199 int getgrnam_r(const scope char*, group*, char*, int, group**);
200 int getgrgid_r(gid_t, group*, char*, int, group**);
201 }
202 else version (CRuntime_Bionic)
203 {
204 }
205 else version (CRuntime_UClibc)
206 {
207 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
208 int getgrgid_r(gid_t, group*, char*, size_t, group**);
209 }
210 else version (CRuntime_Musl)
211 {
212 int getgrnam_r(const scope char*, group*, char*, size_t, group**);
213 int getgrgid_r(gid_t, group*, char*, size_t, group**);
214 }
215 else
216 {
217 static assert(false, "Unsupported platform");
218 }
219
220 //
221 // XOpen (XSI)
222 //
223 /*
224 struct group *getgrent(void);
225 void endgrent(void);
226 void setgrent(void);
227 */
228
229 version (CRuntime_Glibc)
230 {
231 group* getgrent();
232 @trusted void endgrent();
233 @trusted void setgrent();
234 }
235 else version (Darwin)
236 {
237 group* getgrent();
238 @trusted void endgrent();
239 @trusted void setgrent();
240 }
241 else version (FreeBSD)
242 {
243 group* getgrent();
244 @trusted void endgrent();
245 @trusted void setgrent();
246 }
247 else version (NetBSD)
248 {
249 group* getgrent();
250 @trusted void endgrent();
251 @trusted void setgrent();
252 }
253 else version (OpenBSD)
254 {
255 group* getgrent();
256 @trusted void endgrent();
257 @trusted void setgrent();
258 }
259 else version (DragonFlyBSD)
260 {
261 group* getgrent();
262 @trusted void endgrent();
263 @trusted void setgrent();
264 }
265 else version (Solaris)
266 {
267 group* getgrent();
268 @trusted void endgrent();
269 @trusted void setgrent();
270 }
271 else version (CRuntime_Bionic)
272 {
273 }
274 else version (CRuntime_UClibc)
275 {
276 group* getgrent();
277 @trusted void endgrent();
278 @trusted void setgrent();
279 }
280 else version (CRuntime_Musl)
281 {
282 group* getgrent();
283 @trusted void endgrent();
284 @trusted void setgrent();
285 }
286 else
287 {
288 static assert(false, "Unsupported platform");
289 }
290