xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/sys/utsname.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 
2 // Interface to <sys/utsname.h>
3 
4 module core.sys.posix.sys.utsname;
5 
6 version (OSX)
7     version = Darwin;
8 else version (iOS)
9     version = Darwin;
10 else version (TVOS)
11     version = Darwin;
12 else version (WatchOS)
13     version = Darwin;
14 
version(Posix)15 version (Posix):
16 extern(C):
17 nothrow:
18 @nogc:
19 @system:
20 
21 version (CRuntime_Glibc)
22 {
23     private enum utsNameLength = 65;
24 
25     struct utsname
26     {
27         char[utsNameLength] sysname = 0;
28         char[utsNameLength] nodename = 0;
29         char[utsNameLength] release = 0;
30         char[utsNameLength] version_ = 0;
31         // TODO Deprecate after version_ has been in an official release.
32         alias update = version_;
33         char[utsNameLength] machine = 0;
34 
35         char[utsNameLength] __domainname = 0;
36     }
37 
38     int uname(utsname* __name);
39 }
version(Darwin)40 else version (Darwin)
41 {
42     private enum utsNameLength = 256;
43 
44     struct utsname
45     {
46         char[utsNameLength] sysname = 0;
47         char[utsNameLength] nodename = 0;
48         char[utsNameLength] release = 0;
49         char[utsNameLength] version_ = 0;
50         // TODO Deprecate after version_ has been in an official release.
51         alias update = version_;
52         char[utsNameLength] machine = 0;
53     }
54 
55     int uname(utsname* __name);
56 }
version(FreeBSD)57 else version (FreeBSD)
58 {
59     //private enum SYS_NMLN = 32;       // old FreeBSD 1.1 ABI
60     private enum SYS_NMLN = 256;
61 
62     struct utsname
63     {
64         char[SYS_NMLN] sysname = 0;
65         char[SYS_NMLN] nodename = 0;
66         char[SYS_NMLN] release = 0;
67         char[SYS_NMLN] version_ = 0;
68         // TODO Deprecate after version_ has been in an official release.
69         alias update = version_;
70         char[SYS_NMLN] machine = 0;
71     }
72 
73     int __xuname(int, void*);
74     int uname()(utsname* __name) { return __xuname(SYS_NMLN, cast(void*) __name); }
75 }
version(NetBSD)76 else version (NetBSD)
77 {
78     private enum utsNameLength = 256;
79 
80     struct utsname
81     {
82         char[utsNameLength] sysname = 0;
83         char[utsNameLength] nodename = 0;
84         char[utsNameLength] release = 0;
85         char[utsNameLength] version_ = 0;
86         // TODO Deprecate after version_ has been in an official release.
87         alias update = version_;
88         char[utsNameLength] machine = 0;
89     }
90 
91     int uname(utsname* __name);
92 }
version(OpenBSD)93 else version (OpenBSD)
94 {
95     private enum utsNameLength = 256;
96 
97     struct utsname
98     {
99         char[utsNameLength] sysname = 0;
100         char[utsNameLength] nodename = 0;
101         char[utsNameLength] release = 0;
102         char[utsNameLength] version_ = 0;
103         char[utsNameLength] machine = 0;
104     }
105 
106     int uname(utsname* __name);
107 }
version(DragonFlyBSD)108 else version (DragonFlyBSD)
109 {
110     private enum utsNameLength = 32;
111 
112     struct utsname
113     {
114         char[utsNameLength] sysname = 0;
115         char[utsNameLength] nodename = 0;
116         char[utsNameLength] release = 0;
117         char[utsNameLength] version_ = 0;
118         // TODO Deprecate after version_ has been in an official release.
119         alias update = version_;
120         char[utsNameLength] machine = 0;
121     }
122 
123     int uname(utsname* __name);
124 }
version(Solaris)125 else version (Solaris)
126 {
127     private enum SYS_NMLN = 257;
128 
129     struct utsname
130     {
131         char[SYS_NMLN] sysname = 0;
132         char[SYS_NMLN] nodename = 0;
133         char[SYS_NMLN] release = 0;
134         // The field name is version but version is a keyword in D.
135         char[SYS_NMLN] _version = 0;
136         char[SYS_NMLN] machine = 0;
137     }
138 
139     int uname(utsname* __name);
140 }
version(CRuntime_Bionic)141 else version (CRuntime_Bionic)
142 {
143     private enum SYS_NMLN = 65;
144 
145     struct utsname
146     {
147         char[SYS_NMLN] sysname = 0;
148         char[SYS_NMLN] nodename = 0;
149         char[SYS_NMLN] release = 0;
150         // The field name is version but version is a keyword in D.
151         char[SYS_NMLN] _version = 0;
152         char[SYS_NMLN] machine = 0;
153         char[SYS_NMLN] domainname = 0;
154     }
155 
156     int uname(utsname*);
157 }
version(CRuntime_Musl)158 else version (CRuntime_Musl)
159 {
160     private enum SYS_NMLN = 65;
161 
162     struct utsname
163     {
164         char[SYS_NMLN] sysname = 0;
165         char[SYS_NMLN] nodename = 0;
166         char[SYS_NMLN] release = 0;
167         char[SYS_NMLN] _version = 0;
168         char[SYS_NMLN] machine = 0;
169         char[SYS_NMLN] domainname = 0;
170     }
171 
172     int uname(utsname*);
173 }
version(CRuntime_UClibc)174 else version (CRuntime_UClibc)
175 {
176     private enum utsNameLength = 65;
177 
178     struct utsname
179     {
180         char[utsNameLength] sysname = 0;
181         char[utsNameLength] nodename = 0;
182         char[utsNameLength] release = 0;
183         char[utsNameLength] version_ = 0;
184         char[utsNameLength] machine = 0;
185         char[utsNameLength] domainname = 0;
186     }
187 
188     int uname(utsname*);
189 }
190 else
191 {
192     static assert(false, "unsupported system");
193 }
194