#include #include #include #include int main(int argc, char *argv[]) { FILE *cpu; char buff[100]; int i, s, n, r, v, m, c, a, h, o, z; struct utsname unameget; uname(&unameget); s = n = r = v = m = c = h = a = z = 0; if (argc < 2) s = z = 1; else while((o = getopt(argc, argv, "snrvmcah")) != -1) switch(o) { case 's': s = z = 1; break; case 'n': n = z = 1; break; case 'r': r = z = 1; break; case 'v': v = z = 1; break; case 'm': m = z = 1; break; case 'c': c = z = 1; break; case 'a': a = z = 1; break; case 'h': h = 1; break; } if (h) { printf("usage: %s [-snrvmcah]\n\t-s\tOS name\n\t-n\tnetwork node name\n\t-r\tOS release\n\t-v\tOS version\n\t-m\tmachine type\n\t-c\tcpu name\n\t-a\tall information\n\t-h\tthis help\n", argv[0]); return 0; } if (a) s = n = r = v = m = c = 1; if (s) printf("%s ", unameget.sysname); if (n) printf("%s ", unameget.nodename); if (r) printf("%s ", unameget.release); if (v) printf("%s ", unameget.version); if (m) printf("%s ", unameget.machine); if (c) { if ((cpu = fopen("/proc/cpuinfo", "r")) != NULL) { while(!feof(cpu)) { memset(buff, 0, sizeof(buff)); fscanf(cpu, "model name : %s", buff); fgetc(cpu); if (strcmp(buff, "") != 0) printf("%s", buff); } fclose(cpu); } } if (z) printf("\n"); return 0; }