77 lines
1.5 KiB
C
77 lines
1.5 KiB
C
/* uname.c - return system name
|
|
*
|
|
* Copyright 2008 Rob Landley <rob@landley.net>
|
|
*
|
|
* 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<<i)|FLAG_a)) {
|
|
if (i==5) c = " Toybox"+!needspace;
|
|
else {
|
|
c = toybuf+sizeof(((struct utsname *)0)->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});
|
|
}
|