]> git.ipfire.org Git - thirdparty/gcc.git/blame - libphobos/libdruntime/core/sys/posix/pwd.d
Merge remote-tracking branch 'origin/master' into devel/c++-contracts
[thirdparty/gcc.git] / libphobos / libdruntime / core / sys / posix / pwd.d
CommitLineData
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 */
15module core.sys.posix.pwd;
16
92dd3e71 17import core.sys.posix.config;
b4c522fa
IB
18public import core.sys.posix.sys.types; // for gid_t, uid_t
19
20version (OSX)
21 version = Darwin;
22else version (iOS)
23 version = Darwin;
24else version (TVOS)
25 version = Darwin;
26else version (WatchOS)
27 version = Darwin;
28
29version (Posix):
30extern (C):
31nothrow:
32@nogc:
33
34//
35// Required
36//
37/*
38struct 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 47passwd* getpwnam(const scope char*);
b4c522fa
IB
48passwd* getpwuid(uid_t);
49*/
50
51version (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}
64else 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}
80else 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}
97else 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}
113else 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}
129else 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}
146else 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}
161else 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}
173else 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}
186else 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}
199else
200{
201 static assert(false, "Unsupported platform");
202}
203
92dd3e71 204passwd* getpwnam(const scope char*);
b4c522fa
IB
205passwd* getpwuid(uid_t);
206
207//
208// Thread-Safe Functions (TSF)
209//
210/*
92dd3e71 211int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**);
b4c522fa
IB
212int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**);
213*/
214
215version (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}
220else 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}
225else 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}
230else 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}
237else 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}
242else 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}
247else 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}
256else version (CRuntime_Bionic)
257{
258}
259else 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}
264else 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}
269else
270{
271 static assert(false, "Unsupported platform");
272}
273
274//
275// XOpen (XSI)
276//
277/*
278void endpwent();
279passwd* getpwent();
280void setpwent();
281*/
282
283version (CRuntime_Glibc)
284{
285 void endpwent();
286 passwd* getpwent();
287 void setpwent();
288}
289else version (Darwin)
290{
291 void endpwent();
292 passwd* getpwent();
293 void setpwent();
294}
295else version (FreeBSD)
296{
297 void endpwent();
298 passwd* getpwent();
299 void setpwent();
300}
301else version (NetBSD)
302{
303 void endpwent();
304 passwd* getpwent();
305 void setpwent();
306}
307else version (OpenBSD)
308{
309 void endpwent();
310 passwd* getpwent();
311 void setpwent();
312}
313else version (DragonFlyBSD)
314{
315 void endpwent();
316 passwd* getpwent();
317 void setpwent();
318}
319else version (Solaris)
320{
321 void endpwent();
322 passwd* getpwent();
323 void setpwent();
324}
325else version (CRuntime_Bionic)
326{
327 void endpwent();
328}
329else version (CRuntime_Musl)
330{
1e78c638
IB
331 void endpwent();
332 passwd* getpwent();
333 void setpwent();
b4c522fa
IB
334}
335else version (CRuntime_UClibc)
336{
337 void endpwent();
338 passwd* getpwent();
339 void setpwent();
340}
341else
342{
343 static assert(false, "Unsupported platform");
344}