Dmitry V. Levin | 58dd2cf | 2014-12-11 19:25:02 +0000 | [diff] [blame^] | 1 | #include "defs.h" |
| 2 | |
| 3 | #include <sys/utsname.h> |
| 4 | |
| 5 | int |
| 6 | sys_uname(struct tcb *tcp) |
| 7 | { |
| 8 | struct utsname uname; |
| 9 | |
| 10 | if (exiting(tcp)) { |
| 11 | if (syserror(tcp) || !verbose(tcp)) |
| 12 | tprintf("%#lx", tcp->u_arg[0]); |
| 13 | else if (umove(tcp, tcp->u_arg[0], &uname) < 0) |
| 14 | tprints("{...}"); |
| 15 | else if (!abbrev(tcp)) { |
| 16 | tprintf("{sysname=\"%s\", nodename=\"%s\", ", |
| 17 | uname.sysname, uname.nodename); |
| 18 | tprintf("release=\"%s\", version=\"%s\", ", |
| 19 | uname.release, uname.version); |
| 20 | tprintf("machine=\"%s\"", uname.machine); |
| 21 | #ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME |
| 22 | tprintf(", domainname=\"%s\"", uname.domainname); |
| 23 | #endif |
| 24 | tprints("}"); |
| 25 | } |
| 26 | else |
| 27 | tprintf("{sys=\"%s\", node=\"%s\", ...}", |
| 28 | uname.sysname, uname.nodename); |
| 29 | } |
| 30 | return 0; |
| 31 | } |