1 /** 2 * D header file for POSIX. 3 * 4 * Copyright: Public Domain 5 * License: Public Domain 6 * Authors: Jacob Carlborg 7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition 8 * References: The Open Group $(LINK2 http://www.opengroup.org/onlinepubs/009695399/functions/uname.html, sys/utsname.h) $(BR) 9 * Mac OS X $(LINK2 http://developer.apple.com/documentation/Darwin/Reference/Manpages/man3/uname.3.html, sys/utsname.h) $(BR) 10 * FreeBSD $(LINK2 http://www.freebsd.org/cgi/man.cgi?query=uname&sektion=3&apropos=0&manpath=FreeBSD+7.1-RELEASE, sys/utsname.h) $(BR) 11 * Linux $(LINK2 http://www.gnu.org/software/libc/manual/html_node/Platform-Type.html, sys/utsname.h) 12 */ 13 module tango.stdc.posix.sys.utsname; 14 15 extern (C): 16 17 version (darwin) 18 { 19 private const size_t len = 256; 20 21 struct utsname 22 { 23 char[len] sysname; 24 char[len] nodename; 25 char[len] release; 26 char[len] version_; // appended a _ because of the otherwise keyword conflict 27 char[len] machine; 28 } 29 } 30 31 else version (FreeBSD) 32 { 33 private const size_t len = 256; 34 35 struct utsname 36 { 37 char[len] sysname; 38 char[len] nodename; 39 char[len] release; 40 char[len] version_; // appended a _ because of the otherwise keyword conflict 41 char[len] machine; 42 } 43 } 44 45 else version (linux) 46 { 47 private const size_t len = 65; 48 49 struct utsname 50 { 51 char[len] sysname; 52 char[len] nodename; 53 char[len] release; 54 char[len] version_; // appended a _ because of the otherwise keyword conflict 55 char[len] machine; 56 char[len] domainname; 57 } 58 } 59 60 else version (solaris) 61 { 62 private const size_t len = 257; 63 64 struct utsname 65 { 66 char[len] sysname; 67 char[len] nodename; 68 char[len] release; 69 char[len] version_; // appended a _ because of the otherwise keyword conflict 70 char[len] machine; 71 } 72 } 73 74 else 75 static assert(false, "utsname is not available on this platform"); 76 77 int uname(utsname*);