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