3 #include <sys/utsname.h>
5 static void print_element ();
7 /* Values that are bitwise or'd into toprint'. */
8 /* Operating system name. */
9 #define PRINT_SYSNAME 1
11 /* Node name on a communications network. */
12 #define PRINT_NODENAME 2
14 /* Operating system release. */
15 #define PRINT_RELEASE 4
17 /* Operating system version. */
18 #define PRINT_VERSION 8
20 /* Machine hardware name. */
21 #define PRINT_MACHINE 16
23 /* Mask indicating which elements of the name to print. */
24 static unsigned char toprint;
41 toprint |= PRINT_SYSNAME;
45 toprint |= PRINT_NODENAME;
49 toprint |= PRINT_RELEASE;
53 toprint |= PRINT_VERSION;
57 toprint |= PRINT_MACHINE;
61 toprint = PRINT_SYSNAME | PRINT_NODENAME |
62 PRINT_RELEASE | PRINT_VERSION | PRINT_MACHINE;
70 toprint = PRINT_SYSNAME;
71 if (uname (&name) != -1)
73 print_element (PRINT_SYSNAME, name.sysname);
74 print_element (PRINT_NODENAME, name.nodename);
75 print_element (PRINT_RELEASE, name.release);
76 print_element (PRINT_VERSION, name.version);
77 print_element (PRINT_MACHINE, name.machine);
84 print_element (mask, element)
91 write(STDOUT_FILENO,element,strlen(element));
92 write(STDOUT_FILENO,toprint ? " " : "\n",1);