xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/grp.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
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