sys_uname: quote struct utsname members
* uname.c (PRINT_UTS_MEMBER): New macro.
(sys_uname): Use them.
diff --git a/uname.c b/uname.c
index d1b195e..74f8efb 100644
--- a/uname.c
+++ b/uname.c
@@ -7,25 +7,33 @@
{
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("}");
+ if (entering(tcp))
+ return 0;
+
+ if (syserror(tcp) || !verbose(tcp))
+ tprintf("%#lx", tcp->u_arg[0]);
+ else if (umove(tcp, tcp->u_arg[0], &uname) < 0)
+ tprints("{...}");
+ else {
+#define PRINT_UTS_MEMBER(prefix, member) \
+ tprints(prefix #member "="); \
+ print_quoted_string(uname.member, sizeof(uname.member), \
+ QUOTE_0_TERMINATED)
+
+ PRINT_UTS_MEMBER("{", sysname);
+ PRINT_UTS_MEMBER(", ", nodename);
+ if (abbrev(tcp)) {
+ tprints(", ...}");
+ return 0;
}
- else
- tprintf("{sys=\"%s\", node=\"%s\", ...}",
- uname.sysname, uname.nodename);
+ PRINT_UTS_MEMBER(", ", release);
+ PRINT_UTS_MEMBER(", ", version);
+ PRINT_UTS_MEMBER(", ", machine);
+#ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
+ PRINT_UTS_MEMBER(", ", domainname);
+#endif
+ tprints("}");
}
+
return 0;
}