/* uname.c - return system name * * Copyright 2008 Rob Landley * * See http://opengroup.org/onlinepubs/9699919799/utilities/uname.html USE_UNAME(NEWTOY(uname, "aomvrns", TOYFLAG_BIN)) USE_ARCH(NEWTOY(arch, 0, TOYFLAG_USR|TOYFLAG_BIN)) USE_LINUX32(NEWTOY(linux32, 0, TOYFLAG_USR|TOYFLAG_BIN)) config ARCH bool "arch" default y help usage: arch Print machine (hardware) name, same as uname -m. config LINUX32 bool "linux32" default y help usage: linux32 [COMMAND...] Tell uname -m to line to autoconf (to build 32 bit binaries on 64 bit kernel). config UNAME bool "uname" default y help usage: uname [-asnrvm] Print system information. -s System name -n Network (domain) name -r Kernel Release number -v Kernel Version -m Machine (hardware) name -o Userspace type -a All of the above (in order) */ #define FOR_uname #define FORCE_FLAGS #include "toys.h" void uname_main(void) { int i, needspace = 0; char *c; uname((void *)toybuf); if (!toys.optflags) toys.optflags = FLAG_s; for (i=0; i<6; i++) if (toys.optflags & ((1<sysname)*i; if (needspace++) *(--c)=' '; // Can't decrement first entry } xputsn(c); } xputc('\n'); } void arch_main(void) { toys.optflags = FLAG_m; uname_main(); } void linux32_main(void) { personality(PER_LINUX32); xexec(toys.optc ? toys.optargs : (char *[]){"/bin/sh", 0}); }