1*cf5a6c84SAndroid Build Coastguard Worker /* uname.c - return system name 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2008 Rob Landley <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker * 5*cf5a6c84SAndroid Build Coastguard Worker * See http://opengroup.org/onlinepubs/9699919799/utilities/uname.html 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker USE_UNAME(NEWTOY(uname, "paomvrns", TOYFLAG_BIN)) 8*cf5a6c84SAndroid Build Coastguard Worker USE_ARCH(NEWTOY(arch, 0, TOYFLAG_USR|TOYFLAG_BIN)) 9*cf5a6c84SAndroid Build Coastguard Worker 10*cf5a6c84SAndroid Build Coastguard Worker config ARCH 11*cf5a6c84SAndroid Build Coastguard Worker bool "arch" 12*cf5a6c84SAndroid Build Coastguard Worker default y 13*cf5a6c84SAndroid Build Coastguard Worker help 14*cf5a6c84SAndroid Build Coastguard Worker usage: arch 15*cf5a6c84SAndroid Build Coastguard Worker 16*cf5a6c84SAndroid Build Coastguard Worker Print machine (hardware) name, same as uname -m. 17*cf5a6c84SAndroid Build Coastguard Worker 18*cf5a6c84SAndroid Build Coastguard Worker config UNAME 19*cf5a6c84SAndroid Build Coastguard Worker bool "uname" 20*cf5a6c84SAndroid Build Coastguard Worker default y 21*cf5a6c84SAndroid Build Coastguard Worker help 22*cf5a6c84SAndroid Build Coastguard Worker usage: uname [-asnrvmo] 23*cf5a6c84SAndroid Build Coastguard Worker 24*cf5a6c84SAndroid Build Coastguard Worker Print system information. 25*cf5a6c84SAndroid Build Coastguard Worker 26*cf5a6c84SAndroid Build Coastguard Worker -s System name 27*cf5a6c84SAndroid Build Coastguard Worker -n Network (domain) name 28*cf5a6c84SAndroid Build Coastguard Worker -r Kernel Release number 29*cf5a6c84SAndroid Build Coastguard Worker -v Kernel Version 30*cf5a6c84SAndroid Build Coastguard Worker -m Machine (hardware) name 31*cf5a6c84SAndroid Build Coastguard Worker -a All of the above (in order) 32*cf5a6c84SAndroid Build Coastguard Worker 33*cf5a6c84SAndroid Build Coastguard Worker -o Userspace type 34*cf5a6c84SAndroid Build Coastguard Worker */ 35*cf5a6c84SAndroid Build Coastguard Worker 36*cf5a6c84SAndroid Build Coastguard Worker #define FOR_uname 37*cf5a6c84SAndroid Build Coastguard Worker #define FORCE_FLAGS 38*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 39*cf5a6c84SAndroid Build Coastguard Worker uname_main(void)40*cf5a6c84SAndroid Build Coastguard Workervoid uname_main(void) 41*cf5a6c84SAndroid Build Coastguard Worker { 42*cf5a6c84SAndroid Build Coastguard Worker int i, needspace = 0; 43*cf5a6c84SAndroid Build Coastguard Worker char *c; 44*cf5a6c84SAndroid Build Coastguard Worker 45*cf5a6c84SAndroid Build Coastguard Worker uname((void *)toybuf); 46*cf5a6c84SAndroid Build Coastguard Worker if (!toys.optflags) toys.optflags = FLAG_s; 47*cf5a6c84SAndroid Build Coastguard Worker for (i=0; i<6; i++) if (toys.optflags & ((1<<i)|FLAG_a)) { 48*cf5a6c84SAndroid Build Coastguard Worker if (i==5) c = " Toybox"+!needspace; 49*cf5a6c84SAndroid Build Coastguard Worker else { 50*cf5a6c84SAndroid Build Coastguard Worker c = toybuf+sizeof(((struct utsname *)0)->sysname)*i; 51*cf5a6c84SAndroid Build Coastguard Worker if (needspace++) *(--c)=' '; // Can't decrement first entry 52*cf5a6c84SAndroid Build Coastguard Worker } 53*cf5a6c84SAndroid Build Coastguard Worker xputsn(c); 54*cf5a6c84SAndroid Build Coastguard Worker } 55*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(p)) xputsn(" unknown"+!needspace); 56*cf5a6c84SAndroid Build Coastguard Worker xputc('\n'); 57*cf5a6c84SAndroid Build Coastguard Worker } 58*cf5a6c84SAndroid Build Coastguard Worker arch_main(void)59*cf5a6c84SAndroid Build Coastguard Workervoid arch_main(void) 60*cf5a6c84SAndroid Build Coastguard Worker { 61*cf5a6c84SAndroid Build Coastguard Worker toys.optflags = FLAG_m; 62*cf5a6c84SAndroid Build Coastguard Worker uname_main(); 63*cf5a6c84SAndroid Build Coastguard Worker } 64