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)15version (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)40else 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)57else 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)76else 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)93else 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)108else 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)125else 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)141else 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)158else 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)174else 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