uuprog

view uname.c @ 0:4f628556fa3e

uuprog initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 25 Aug 2011 08:53:01 +0300
parents
children
line source
1 #include <stdio.h>
2 #include <sys/utsname.h>
4 enum {
5 SYS = 1,
6 NODE = 2,
7 REL = 4,
8 VER = 8,
9 MACHINE = 16,
10 OS = 32
11 };
13 int main(int argc, char **argv)
14 {
15 int i;
16 unsigned int sel = 0;
17 struct utsname un;
19 for(i=1; i<argc; i++) {
20 if(argv[i][0] == '-' && argv[i][2] == 0) {
21 switch(argv[i][1]) {
22 case 'a':
23 sel |= SYS | NODE | REL | VER | MACHINE | OS;
24 break;
26 case 's':
27 sel |= SYS;
28 break;
30 case 'n':
31 sel |= NODE;
32 break;
34 case 'r':
35 sel |= REL;
36 break;
38 case 'v':
39 sel |= VER;
40 break;
42 case 'm':
43 sel |= MACHINE;
44 break;
46 case 'o':
47 sel |= OS;
48 break;
50 default:
51 fprintf(stderr, "unrecognized option: %s\n", argv[i]);
52 return 1;
53 }
54 } else {
55 fprintf(stderr, "unexpected argument: %s\n", argv[i]);
56 return 1;
57 }
58 }
60 if(!sel) {
61 sel = SYS;
62 }
63 uname(&un);
65 if(sel & SYS) {
66 printf("%s ", un.sysname);
67 }
68 if(sel & NODE) {
69 printf("%s ", un.nodename);
70 }
71 if(sel & REL) {
72 printf("%s ", un.release);
73 }
74 if(sel & VER) {
75 printf("%s ", un.version);
76 }
77 if(sel & MACHINE) {
78 printf("%s ", un.machine);
79 }
80 putchar('\n');
81 return 0;
82 }