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);