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;
 }