uname.c revision 1.2 1 1.1 cgd /*
2 1.1 cgd * uname - print system information. Jeff Comstock - Bloomington, MN USA 1992
3 1.1 cgd * Usage: uname [-asnrvm]
4 1.1 cgd * -s prints system name
5 1.1 cgd * -n prints nodename
6 1.1 cgd * -r prints software release
7 1.1 cgd * -v prints os version
8 1.1 cgd * -m prints machine name
9 1.1 cgd * -a prinst all the above information
10 1.2 mycroft */
11 1.2 mycroft
12 1.2 mycroft #ifndef lint
13 1.2 mycroft static char rcsid[] = "$Id: uname.c,v 1.2 1993/08/02 17:56:27 mycroft Exp $";
14 1.2 mycroft #endif /* not lint */
15 1.2 mycroft
16 1.1 cgd #include <stdio.h>
17 1.1 cgd #include <unistd.h>
18 1.1 cgd #include <sys/utsname.h>
19 1.1 cgd
20 1.1 cgd #define SYSNAME 0
21 1.1 cgd #define NODENAME 1
22 1.1 cgd #define RELEASE 2
23 1.1 cgd #define VERSION 3
24 1.1 cgd #define MACHINE 4
25 1.1 cgd
26 1.1 cgd struct utsname u;
27 1.1 cgd
28 1.1 cgd struct utstab {
29 1.1 cgd char *str;
30 1.1 cgd int requested;
31 1.1 cgd } uttab[] = {
32 1.1 cgd { u.sysname, 0 },
33 1.1 cgd { u.nodename, 0 },
34 1.1 cgd { u.release, 0 },
35 1.1 cgd { u.version, 0 },
36 1.1 cgd { u.machine, 0 }
37 1.1 cgd };
38 1.1 cgd
39 1.1 cgd main(int argc, char **argv) {
40 1.1 cgd char *opts="amnrsv";
41 1.1 cgd register int c,space, all=0;
42 1.1 cgd
43 1.1 cgd if ( ! uname(&u) ) {
44 1.1 cgd if ( argc == 1 ) {
45 1.1 cgd puts(u.sysname);
46 1.1 cgd } else {
47 1.1 cgd while ( (c = getopt(argc,argv,opts)) != -1 ) {
48 1.1 cgd switch ( c ) {
49 1.1 cgd case 'a' : all++;
50 1.1 cgd break;
51 1.1 cgd case 'm' : uttab[MACHINE].requested++;
52 1.1 cgd break;
53 1.1 cgd case 'n' : uttab[NODENAME].requested++;
54 1.1 cgd break;
55 1.1 cgd case 'r' : uttab[RELEASE].requested++;
56 1.1 cgd break;
57 1.1 cgd case 's' : uttab[SYSNAME].requested++;
58 1.1 cgd break;
59 1.1 cgd case 'v' : uttab[VERSION].requested++;
60 1.1 cgd break;
61 1.1 cgd }
62 1.1 cgd }
63 1.1 cgd space=0;
64 1.1 cgd for(c=0; c <= MACHINE; c++) {
65 1.1 cgd if ( uttab[c].requested || all ) {
66 1.1 cgd if ( space )
67 1.1 cgd putchar(' ');
68 1.1 cgd printf("%s", uttab[c].str);
69 1.1 cgd space++;
70 1.1 cgd }
71 1.1 cgd }
72 1.1 cgd puts("");
73 1.1 cgd }
74 1.1 cgd }
75 1.1 cgd else
76 1.1 cgd perror("uname");
77 1.1 cgd }
78