| /** |
| * D header file for POSIX. |
| * |
| * Copyright: Copyright Sean Kelly 2005 - 2009. |
| * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). |
| * Authors: Sean Kelly, Alex Rønne Petersen |
| * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition |
| */ |
| |
| /* Copyright Sean Kelly 2005 - 2009. |
| * Distributed under the Boost Software License, Version 1.0. |
| * (See accompanying file LICENSE or copy at |
| * http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| module core.sys.posix.pwd; |
| |
| import core.sys.posix.config; |
| public import core.sys.posix.sys.types; // for gid_t, uid_t |
| |
| version (OSX) |
| version = Darwin; |
| else version (iOS) |
| version = Darwin; |
| else version (TVOS) |
| version = Darwin; |
| else version (WatchOS) |
| version = Darwin; |
| |
| version (Posix): |
| extern (C): |
| nothrow: |
| @nogc: |
| @system: |
| |
| // |
| // Required |
| // |
| /* |
| struct passwd |
| { |
| char* pw_name; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char* pw_dir; |
| char* pw_shell; |
| } |
| |
| passwd* getpwnam(const scope char*); |
| passwd* getpwuid(uid_t); |
| */ |
| |
| version (CRuntime_Glibc) |
| { |
| struct passwd |
| { |
| char* pw_name; |
| char* pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char* pw_gecos; |
| char* pw_dir; |
| char* pw_shell; |
| } |
| } |
| else version (Darwin) |
| { |
| struct passwd |
| { |
| char* pw_name; |
| char* pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| time_t pw_change; |
| char* pw_class; |
| char* pw_gecos; |
| char* pw_dir; |
| char* pw_shell; |
| time_t pw_expire; |
| } |
| } |
| else version (FreeBSD) |
| { |
| struct passwd |
| { |
| char* pw_name; /* user name */ |
| char* pw_passwd; /* encrypted password */ |
| uid_t pw_uid; /* user uid */ |
| gid_t pw_gid; /* user gid */ |
| time_t pw_change; /* password change time */ |
| char* pw_class; /* user access class */ |
| char* pw_gecos; /* Honeywell login info */ |
| char* pw_dir; /* home directory */ |
| char* pw_shell; /* default shell */ |
| time_t pw_expire; /* account expiration */ |
| int pw_fields; /* internal: fields filled in */ |
| } |
| } |
| else version (NetBSD) |
| { |
| struct passwd |
| { |
| char* pw_name; /* user name */ |
| char* pw_passwd; /* encrypted password */ |
| uid_t pw_uid; /* user uid */ |
| gid_t pw_gid; /* user gid */ |
| time_t pw_change; /* password change time */ |
| char* pw_class; /* user access class */ |
| char* pw_gecos; /* Honeywell login info */ |
| char* pw_dir; /* home directory */ |
| char* pw_shell; /* default shell */ |
| time_t pw_expire; /* account expiration */ |
| } |
| } |
| else version (OpenBSD) |
| { |
| struct passwd |
| { |
| char* pw_name; /* user name */ |
| char* pw_passwd; /* encrypted password */ |
| uid_t pw_uid; /* user uid */ |
| gid_t pw_gid; /* user gid */ |
| time_t pw_change; /* password change time */ |
| char* pw_class; /* user access class */ |
| char* pw_gecos; /* Honeywell login info */ |
| char* pw_dir; /* home directory */ |
| char* pw_shell; /* default shell */ |
| time_t pw_expire; /* account expiration */ |
| } |
| } |
| else version (DragonFlyBSD) |
| { |
| struct passwd |
| { |
| char* pw_name; /* user name */ |
| char* pw_passwd; /* encrypted password */ |
| uid_t pw_uid; /* user uid */ |
| gid_t pw_gid; /* user gid */ |
| time_t pw_change; /* password change time */ |
| char* pw_class; /* user access class */ |
| char* pw_gecos; /* Honeywell login info */ |
| char* pw_dir; /* home directory */ |
| char* pw_shell; /* default shell */ |
| time_t pw_expire; /* account expiration */ |
| int pw_fields; /* internal: fields filled in */ |
| } |
| } |
| else version (Solaris) |
| { |
| struct passwd |
| { |
| char* pw_name; |
| char* pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char* pw_age; |
| char* pw_comment; |
| char* pw_gecos; |
| char* pw_dir; |
| char* pw_shell; |
| } |
| } |
| else version (CRuntime_Bionic) |
| { |
| struct passwd |
| { |
| char* pw_name; |
| char* pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char* pw_dir; |
| char* pw_shell; |
| } |
| } |
| else version (CRuntime_Musl) |
| { |
| struct passwd |
| { |
| char *pw_name; |
| char *pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char *pw_gecos; |
| char *pw_dir; |
| char *pw_shell; |
| } |
| } |
| else version (CRuntime_UClibc) |
| { |
| struct passwd |
| { |
| char* pw_name; |
| char* pw_passwd; |
| uid_t pw_uid; |
| gid_t pw_gid; |
| char* pw_gecos; |
| char* pw_dir; |
| char* pw_shell; |
| } |
| } |
| else |
| { |
| static assert(false, "Unsupported platform"); |
| } |
| |
| passwd* getpwnam(const scope char*); |
| passwd* getpwuid(uid_t); |
| |
| // |
| // Thread-Safe Functions (TSF) |
| // |
| /* |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| */ |
| |
| version (CRuntime_Glibc) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (Darwin) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (FreeBSD) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (NetBSD) |
| { |
| int __getpwnam_r50(const scope char*, passwd*, char*, size_t, passwd**); |
| alias __getpwnam_r50 getpwnam_r; |
| int __getpwuid_r50(uid_t, passwd*, char*, size_t, passwd**); |
| alias __getpwuid_r50 getpwuid_r; |
| } |
| else version (OpenBSD) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (DragonFlyBSD) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (Solaris) |
| { |
| alias getpwnam_r = __posix_getpwnam_r; |
| alias getpwuid_r = __posix_getpwuid_r; |
| |
| // POSIX.1c standard version of the functions |
| int __posix_getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int __posix_getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (CRuntime_Bionic) |
| { |
| } |
| else version (CRuntime_Musl) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else version (CRuntime_UClibc) |
| { |
| int getpwnam_r(const scope char*, passwd*, char*, size_t, passwd**); |
| int getpwuid_r(uid_t, passwd*, char*, size_t, passwd**); |
| } |
| else |
| { |
| static assert(false, "Unsupported platform"); |
| } |
| |
| // |
| // XOpen (XSI) |
| // |
| /* |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| */ |
| |
| version (CRuntime_Glibc) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (Darwin) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (FreeBSD) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (NetBSD) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (OpenBSD) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (DragonFlyBSD) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (Solaris) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (CRuntime_Bionic) |
| { |
| void endpwent(); |
| } |
| else version (CRuntime_Musl) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else version (CRuntime_UClibc) |
| { |
| void endpwent(); |
| passwd* getpwent(); |
| void setpwent(); |
| } |
| else |
| { |
| static assert(false, "Unsupported platform"); |
| } |