uuprog

diff 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 diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/uname.c	Thu Aug 25 08:53:01 2011 +0300
     1.3 @@ -0,0 +1,82 @@
     1.4 +#include <stdio.h>
     1.5 +#include <sys/utsname.h>
     1.6 +
     1.7 +enum {
     1.8 +	SYS = 1,
     1.9 +	NODE = 2,
    1.10 +	REL = 4,
    1.11 +	VER = 8,
    1.12 +	MACHINE = 16,
    1.13 +	OS = 32
    1.14 +};
    1.15 +
    1.16 +int main(int argc, char **argv)
    1.17 +{
    1.18 +	int i;
    1.19 +	unsigned int sel = 0;
    1.20 +	struct utsname un;
    1.21 +
    1.22 +	for(i=1; i<argc; i++) {
    1.23 +		if(argv[i][0] == '-' && argv[i][2] == 0) {
    1.24 +			switch(argv[i][1]) {
    1.25 +			case 'a':
    1.26 +				sel |= SYS | NODE | REL | VER | MACHINE | OS;
    1.27 +				break;
    1.28 +
    1.29 +			case 's':
    1.30 +				sel |= SYS;
    1.31 +				break;
    1.32 +
    1.33 +			case 'n':
    1.34 +				sel |= NODE;
    1.35 +				break;
    1.36 +
    1.37 +			case 'r':
    1.38 +				sel |= REL;
    1.39 +				break;
    1.40 +
    1.41 +			case 'v':
    1.42 +				sel |= VER;
    1.43 +				break;
    1.44 +
    1.45 +			case 'm':
    1.46 +				sel |= MACHINE;
    1.47 +				break;
    1.48 +
    1.49 +			case 'o':
    1.50 +				sel |= OS;
    1.51 +				break;
    1.52 +
    1.53 +			default:
    1.54 +				fprintf(stderr, "unrecognized option: %s\n", argv[i]);
    1.55 +				return 1;
    1.56 +			}
    1.57 +		} else {
    1.58 +			fprintf(stderr, "unexpected argument: %s\n", argv[i]);
    1.59 +			return 1;
    1.60 +		}
    1.61 +	}
    1.62 +
    1.63 +	if(!sel) {
    1.64 +		sel = SYS;
    1.65 +	}
    1.66 +	uname(&un);
    1.67 +
    1.68 +	if(sel & SYS) {
    1.69 +		printf("%s ", un.sysname);
    1.70 +	}
    1.71 +	if(sel & NODE) {
    1.72 +		printf("%s ", un.nodename);
    1.73 +	}
    1.74 +	if(sel & REL) {
    1.75 +		printf("%s ", un.release);
    1.76 +	}
    1.77 +	if(sel & VER) {
    1.78 +		printf("%s ", un.version);
    1.79 +	}
    1.80 +	if(sel & MACHINE) {
    1.81 +		printf("%s ", un.machine);
    1.82 +	}
    1.83 +	putchar('\n');
    1.84 +	return 0;
    1.85 +}