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 */ 15module core.sys.posix.grp; 16 17import core.sys.posix.config; 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@system: 34 35// 36// Required 37// 38/* 39struct group 40{ 41 char* gr_name; 42 char* gr_passwd; 43 gid_t gr_gid; 44 char** gr_mem; 45} 46 47group* getgrnam(const scope char*); 48group* getgrgid(gid_t); 49*/ 50 51version (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} 61else 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} 71else 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} 81else 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} 91else 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} 101else 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} 111else 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} 121else 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} 131else 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} 141else 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} 151else 152{ 153 static assert(false, "Unsupported platform"); 154} 155 156group* getgrnam(const scope char*); 157group* getgrgid(gid_t); 158 159// 160// Thread-Safe Functions (TSF) 161// 162/* 163int getgrnam_r(const scope char*, group*, char*, size_t, group**); 164int getgrgid_r(gid_t, group*, char*, size_t, group**); 165*/ 166 167version (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} 172else 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} 177else 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} 182else 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} 187else 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} 192else 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} 197else 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} 202else version (CRuntime_Bionic) 203{ 204} 205else 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} 210else 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} 215else 216{ 217 static assert(false, "Unsupported platform"); 218} 219 220// 221// XOpen (XSI) 222// 223/* 224struct group *getgrent(void); 225void endgrent(void); 226void setgrent(void); 227*/ 228 229version (CRuntime_Glibc) 230{ 231 group* getgrent(); 232 @trusted void endgrent(); 233 @trusted void setgrent(); 234} 235else version (Darwin) 236{ 237 group* getgrent(); 238 @trusted void endgrent(); 239 @trusted void setgrent(); 240} 241else version (FreeBSD) 242{ 243 group* getgrent(); 244 @trusted void endgrent(); 245 @trusted void setgrent(); 246} 247else version (NetBSD) 248{ 249 group* getgrent(); 250 @trusted void endgrent(); 251 @trusted void setgrent(); 252} 253else version (OpenBSD) 254{ 255 group* getgrent(); 256 @trusted void endgrent(); 257 @trusted void setgrent(); 258} 259else version (DragonFlyBSD) 260{ 261 group* getgrent(); 262 @trusted void endgrent(); 263 @trusted void setgrent(); 264} 265else version (Solaris) 266{ 267 group* getgrent(); 268 @trusted void endgrent(); 269 @trusted void setgrent(); 270} 271else version (CRuntime_Bionic) 272{ 273} 274else version (CRuntime_UClibc) 275{ 276 group* getgrent(); 277 @trusted void endgrent(); 278 @trusted void setgrent(); 279} 280else version (CRuntime_Musl) 281{ 282 group* getgrent(); 283 @trusted void endgrent(); 284 @trusted void setgrent(); 285} 286else 287{ 288 static assert(false, "Unsupported platform"); 289} 290