1 /**
2  * D header file for POSIX.
3  *
4  * Copyright: Public Domain
5  * License:   Public Domain
6  * Authors:   Christian Schneider
7  * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8  * Source:    Copied/edited from tango.stdc.posix.pwd
9  */
10 module tango.stdc.posix.grp;
11 
12 private import tango.stdc.posix.config;
13 public import tango.stdc.posix.sys.types; // for gid_t, uid_t
14 
15 extern (C):
16 
17 //
18 // Required
19 //
20 /*
21 struct group
22 {
23     char*   gr_name;
24     gid_t   gr_gid;
25     char**  gr_mem;
26 }
27 
28 group* getgrnam(in char*);
29 group* getgrgid(gid_t);
30 */
31 
32 version( linux )
33 {
34     struct group
35     {
36         char*   gr_name;
37         char*   gr_passwd;
38         gid_t   gr_gid;
39         char**  gr_mem;
40     }
41 }
42 else version( darwin )
43 {
44     struct group
45     {
46         char*   gr_name;
47         char*   gr_passwd;
48         gid_t   gr_gid;
49         char**  gr_mem;
50     }
51 }
52 else version( FreeBSD )
53 {
54     struct group
55     {
56         char*   gr_name;
57         char*   gr_passwd;
58         gid_t   gr_gid;
59         char**  gr_mem;
60     }
61 }
62 else version( solaris )
63 {
64     struct group
65     {
66         char*   gr_name;
67         char*   gr_passwd;
68         gid_t   gr_gid;
69         char**  gr_mem;
70     }
71 }
72 group* getgrnam(in char*);
73 group* getgrgid(gid_t);
74 
75 //
76 // Thread-Safe Functions (TSF)
77 //
78 /*
79 int getgrnam_r(in char*, group*, char*, size_t, group**);
80 int getgrgid_r(gid_t, group*, char*, size_t, group**);
81 */
82 
83 version( linux )
84 {
85     int getgrnam_r(in char*, group*, char*, size_t, group**);
86     int getgrgid_r(gid_t, group*, char*, size_t, group**);
87 }
88 else version( darwin )
89 {
90     int getgrnam_r(in char*, group*, char*, size_t, group**);
91     int getgrgid_r(gid_t, group*, char*, size_t, group**);
92 }
93 else version( FreeBSD )
94 {
95     int getgrnam_r(in char*, group*, char*, size_t, group**);
96     int getgrgid_r(gid_t, group*, char*, size_t, group**);
97 }
98 else version( solaris )
99 {
100     int getgrnam_r(in char*, group*, char*, size_t, group**);
101     int getgrgid_r(gid_t, group*, char*, size_t, group**);
102 }
103 //
104 // XOpen (XSI)
105 //
106 /*
107 void    endgrent();
108 passwd* getgrent();
109 void    setgrent();
110 */
111 
112 version( linux )
113 {
114     void    endgrent();
115     group* getgrent();
116     void    setgrent();
117 }
118 else version ( darwin )
119 {
120     void    endgrent();
121     group* getgrent();
122     void    setgrent();
123 }
124 else version (FreeBSD)
125 {
126     void    endgrent();
127     group* getgrent();
128     void    setgrent();
129 }
130 else version ( solaris )
131 {
132     void    endgrent();
133     group* getgrent();
134     void    setgrent();
135 }