]> granicus.if.org Git - strace/blob - uname.c
signal.c: make use of RVAL_DECODED
[strace] / uname.c
1 #include "defs.h"
2
3 #include <sys/utsname.h>
4
5 SYS_FUNC(uname)
6 {
7         struct utsname uname;
8
9         if (entering(tcp))
10                 return 0;
11
12         if (!umove_or_printaddr(tcp, tcp->u_arg[0], &uname)) {
13 #define PRINT_UTS_MEMBER(prefix, member) \
14                 tprints(prefix #member "="); \
15                 print_quoted_string(uname.member, sizeof(uname.member), \
16                                     QUOTE_0_TERMINATED)
17
18                 PRINT_UTS_MEMBER("{", sysname);
19                 PRINT_UTS_MEMBER(", ", nodename);
20                 if (abbrev(tcp)) {
21                         tprints(", ...}");
22                         return 0;
23                 }
24                 PRINT_UTS_MEMBER(", ", release);
25                 PRINT_UTS_MEMBER(", ", version);
26                 PRINT_UTS_MEMBER(", ", machine);
27 #ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
28                 PRINT_UTS_MEMBER(", ", domainname);
29 #endif
30                 tprints("}");
31         }
32
33         return 0;
34 }