32 lines
729 B
C
32 lines
729 B
C
|
#include "defs.h"
|
||
|
|
||
|
#include <sys/utsname.h>
|
||
|
|
||
|
int
|
||
|
sys_uname(struct tcb *tcp)
|
||
|
{
|
||
|
struct utsname uname;
|
||
|
|
||
|
if (exiting(tcp)) {
|
||
|
if (syserror(tcp) || !verbose(tcp))
|
||
|
tprintf("%#lx", tcp->u_arg[0]);
|
||
|
else if (umove(tcp, tcp->u_arg[0], &uname) < 0)
|
||
|
tprints("{...}");
|
||
|
else if (!abbrev(tcp)) {
|
||
|
tprintf("{sysname=\"%s\", nodename=\"%s\", ",
|
||
|
uname.sysname, uname.nodename);
|
||
|
tprintf("release=\"%s\", version=\"%s\", ",
|
||
|
uname.release, uname.version);
|
||
|
tprintf("machine=\"%s\"", uname.machine);
|
||
|
#ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
|
||
|
tprintf(", domainname=\"%s\"", uname.domainname);
|
||
|
#endif
|
||
|
tprints("}");
|
||
|
}
|
||
|
else
|
||
|
tprintf("{sys=\"%s\", node=\"%s\", ...}",
|
||
|
uname.sysname, uname.nodename);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|