]>
Commit | Line | Data |
---|---|---|
b4c522fa IB |
1 | /** |
2 | * D header file for POSIX. | |
3 | * | |
4 | * Copyright: Copyright Sean Kelly 2005 - 2009. | |
5 | * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). | |
6 | * Authors: Sean Kelly, Alex Rønne Petersen | |
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.pwd; | |
16 | ||
92dd3e71 | 17 | import core.sys.posix.config; |
b4c522fa IB |
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 | ||
29 | version (Posix): | |
30 | extern (C): | |
31 | nothrow: | |
32 | @nogc: | |
33 | ||
34 | // | |
35 | // Required | |
36 | // | |
37 | /* | |
38 | struct passwd | |
39 | { | |
40 | char* pw_name; | |
41 | uid_t pw_uid; | |
42 | gid_t pw_gid; | |
43 | char* pw_dir; | |
44 | char* pw_shell; | |
45 | } | |
46 | ||
92dd3e71 | 47 | passwd* getpwnam(const scope char*); |
b4c522fa IB |
48 | passwd* getpwuid(uid_t); |
49 | */ | |
50 | ||
51 | version (CRuntime_Glibc) | |
52 | { | |
53 | struct passwd | |
54 | { | |
55 | char* pw_name; | |
56 | char* pw_passwd; | |
57 | uid_t pw_uid; | |
58 | gid_t pw_gid; | |
59 | char* pw_gecos; | |
60 | char* pw_dir; | |
61 | char* pw_shell; | |
62 | } | |
63 | } | |
64 | else version (Darwin) | |
65 | { | |
66 | struct passwd | |
67 | { | |
68 | char* pw_name; | |
69 | char* pw_passwd; | |
70 | uid_t pw_uid; | |
71 | gid_t pw_gid; | |
72 | time_t pw_change; | |
73 | char* pw_class; | |
74 | char* pw_gecos; | |
75 | char* pw_dir; | |
76 | char* pw_shell; | |
77 | time_t pw_expire; | |
78 | } | |
79 | } | |
80 | else version (FreeBSD) | |
81 | { | |
82 | struct passwd | |
83 | { | |
84 | char* pw_name; /* user name */ | |
85 | char* pw_passwd; /* encrypted password */ | |
86 | uid_t pw_uid; /* user uid */ | |
87 | gid_t pw_gid; /* user gid */ | |
88 | time_t pw_change; /* password change time */ | |
89 | char* pw_class; /* user access class */ | |
90 | char* pw_gecos; /* Honeywell login info */ | |
91 | char* pw_dir; /* home directory */ | |
92 | char* pw_shell; /* default shell */ | |
93 | time_t pw_expire; /* account expiration */ | |
94 | int pw_fields; /* internal: fields filled in */ | |
95 | } | |
96 | } | |
97 | else version (NetBSD) | |
98 | { | |
99 | struct passwd | |
100 | { | |
101 | char* pw_name; /* user name */ | |
102 | char* pw_passwd; /* encrypted password */ | |
103 | uid_t pw_uid; /* user uid */ | |
104 | gid_t pw_gid; /* user gid */ | |
105 | time_t pw_change; /* password change time */ | |
106 | char* pw_class; /* user access class */ | |
107 | char* pw_gecos; /* Honeywell login info */ | |
108 | char* pw_dir; /* home directory */ | |
109 | char* pw_shell; /* default shell */ | |
110 | time_t pw_expire; /* account expiration */ | |
111 | } | |
112 | } | |
113 | else version (OpenBSD) | |
114 | { | |
115 | struct passwd | |
116 | { | |
117 | char* pw_name; /* user name */ | |
118 | char* pw_passwd; /* encrypted password */ | |
119 | uid_t pw_uid; /* user uid */ | |
120 | gid_t pw_gid; /* user gid */ | |
121 | time_t pw_change; /* password change time */ | |
122 | char* pw_class; /* user access class */ | |
123 | char* pw_gecos; /* Honeywell login info */ | |
124 | char* pw_dir; /* home directory */ | |
125 | char* pw_shell; /* default shell */ | |
126 | time_t pw_expire; /* account expiration */ | |
127 | } | |
128 | } | |
129 | else version (DragonFlyBSD) | |
130 | { | |
131 | struct passwd | |
132 | { | |
133 | char* pw_name; /* user name */ | |
134 | char* pw_passwd; /* encrypted password */ | |
135 | uid_t pw_uid; /* user uid */ | |
136 | gid_t pw_gid; /* user gid */ | |
137 | time_t pw_change; /* password change time */ | |
138 | char* pw_class; /* user access class */ | |
139 | char* pw_gecos; /* Honeywell login info */ | |
140 | char* pw_dir; /* home directory */ | |
141 | char* pw_shell; /* default shell */ | |
142 | time_t pw_expire; /* account expiration */ | |
143 | int pw_fields; /* internal: fields filled in */ | |
144 | } | |
145 | } | |
146 | else version (Solaris) | |
147 | { | |
148 | struct passwd | |
149 | { | |
150 | char* pw_name; | |
151 | char* pw_passwd; | |
152 | uid_t pw_uid; | |
153 | gid_t pw_gid; | |
154 | char* pw_age; | |
155 | char* pw_comment; | |
156 | char* pw_gecos; | |
157 | char* pw_dir; | |
158 | char* pw_shell; | |
159 | } | |
160 | } | |
161 | else version (CRuntime_Bionic) | |
162 | { | |
163 | struct passwd | |
164 | { | |
165 | char* pw_name; | |
166 | char* pw_passwd; | |
167 | uid_t pw_uid; | |
168 | gid_t pw_gid; | |
169 | char* pw_dir; | |
170 | char* pw_shell; | |
171 | } | |
172 | } | |
173 | else version (CRuntime_Musl) | |
174 | { | |
1e78c638 IB |
175 | struct passwd |
176 | { | |
b4c522fa IB |
177 | char *pw_name; |
178 | char *pw_passwd; | |
179 | uid_t pw_uid; | |
180 | gid_t pw_gid; | |
181 | char *pw_gecos; | |
182 | char *pw_dir; | |
183 | char *pw_shell; | |
184 | } | |
185 | } | |
186 | else version (CRuntime_UClibc) | |
187 | { | |
188 | struct passwd | |
189 | { | |
190 | char* pw_name; | |
191 | char* pw_passwd; | |
192 | uid_t pw_uid; | |
193 | gid_t pw_gid; | |
194 | char* pw_gecos; | |
195 | char* pw_dir; | |
196 | char* pw_shell; | |
197 | } | |
198 | } | |
199 | else | |
200 | { | |
201 | static assert(false, "Unsupported platform"); | |
202 | } | |
203 | ||
92dd3e71 | 204 | passwd* getpwnam(const scope char*); |
b4c522fa IB |
205 | passwd* getpwuid(uid_t); |
206 | ||
207 | // | |
208 | // Thread-Safe Functions (TSF) | |
209 | // | |
210 | /* | |
92dd3e71 | 211 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
212 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
213 | */ | |
214 | ||
215 | version (CRuntime_Glibc) | |
216 | { | |
92dd3e71 | 217 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
218 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
219 | } | |
220 | else version (Darwin) | |
221 | { | |
92dd3e71 | 222 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
223 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
224 | } | |
225 | else version (FreeBSD) | |
226 | { | |
92dd3e71 | 227 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
228 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
229 | } | |
230 | else version (NetBSD) | |
231 | { | |
92dd3e71 | 232 | int __getpwnam_r50(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
233 | alias __getpwnam_r50 getpwnam_r; |
234 | int __getpwuid_r50(uid_t, passwd*, char*, size_t, passwd**); | |
235 | alias __getpwuid_r50 getpwuid_r; | |
236 | } | |
237 | else version (OpenBSD) | |
238 | { | |
92dd3e71 | 239 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
240 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
241 | } | |
242 | else version (DragonFlyBSD) | |
243 | { | |
92dd3e71 | 244 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
245 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
246 | } | |
247 | else version (Solaris) | |
248 | { | |
249 | alias getpwnam_r = __posix_getpwnam_r; | |
250 | alias getpwuid_r = __posix_getpwuid_r; | |
251 | ||
252 | // POSIX.1c standard version of the functions | |
92dd3e71 | 253 | int __posix_getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
254 | int __posix_getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
255 | } | |
256 | else version (CRuntime_Bionic) | |
257 | { | |
258 | } | |
259 | else version (CRuntime_Musl) | |
260 | { | |
92dd3e71 | 261 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
1e78c638 | 262 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
263 | } |
264 | else version (CRuntime_UClibc) | |
265 | { | |
92dd3e71 | 266 | int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
b4c522fa IB |
267 | int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
268 | } | |
269 | else | |
270 | { | |
271 | static assert(false, "Unsupported platform"); | |
272 | } | |
273 | ||
274 | // | |
275 | // XOpen (XSI) | |
276 | // | |
277 | /* | |
278 | void endpwent(); | |
279 | passwd* getpwent(); | |
280 | void setpwent(); | |
281 | */ | |
282 | ||
283 | version (CRuntime_Glibc) | |
284 | { | |
285 | void endpwent(); | |
286 | passwd* getpwent(); | |
287 | void setpwent(); | |
288 | } | |
289 | else version (Darwin) | |
290 | { | |
291 | void endpwent(); | |
292 | passwd* getpwent(); | |
293 | void setpwent(); | |
294 | } | |
295 | else version (FreeBSD) | |
296 | { | |
297 | void endpwent(); | |
298 | passwd* getpwent(); | |
299 | void setpwent(); | |
300 | } | |
301 | else version (NetBSD) | |
302 | { | |
303 | void endpwent(); | |
304 | passwd* getpwent(); | |
305 | void setpwent(); | |
306 | } | |
307 | else version (OpenBSD) | |
308 | { | |
309 | void endpwent(); | |
310 | passwd* getpwent(); | |
311 | void setpwent(); | |
312 | } | |
313 | else version (DragonFlyBSD) | |
314 | { | |
315 | void endpwent(); | |
316 | passwd* getpwent(); | |
317 | void setpwent(); | |
318 | } | |
319 | else version (Solaris) | |
320 | { | |
321 | void endpwent(); | |
322 | passwd* getpwent(); | |
323 | void setpwent(); | |
324 | } | |
325 | else version (CRuntime_Bionic) | |
326 | { | |
327 | void endpwent(); | |
328 | } | |
329 | else version (CRuntime_Musl) | |
330 | { | |
1e78c638 IB |
331 | void endpwent(); |
332 | passwd* getpwent(); | |
333 | void setpwent(); | |
b4c522fa IB |
334 | } |
335 | else version (CRuntime_UClibc) | |
336 | { | |
337 | void endpwent(); | |
338 | passwd* getpwent(); | |
339 | void setpwent(); | |
340 | } | |
341 | else | |
342 | { | |
343 | static assert(false, "Unsupported platform"); | |
344 | } |