tests/uname.test: check abbreviated output, use print_quoted_string

* tests/uname.c (main): Use print_quoted_string to print
utsname members.  Add abbrev check.
* tests/uname.test: Add abbrev check.
diff --git a/tests/uname.c b/tests/uname.c
index 0f1b5f3..571cf9b 100644
--- a/tests/uname.c
+++ b/tests/uname.c
@@ -7,25 +7,31 @@
 # include <sys/utsname.h>
 # include <unistd.h>
 
-int main()
+int main(int ac, char **av)
 {
+	int abbrev = ac > 1;
 	struct utsname *const uname = tail_alloc(sizeof(struct utsname));
 	int rc = syscall(__NR_uname, uname);
-	printf("uname({sysname=\"%s\", nodename=\"%s\", release=\"%s\""
-	       ", version=\"%s\", machine=\"%s\""
+	printf("uname({sysname=\"");
+	print_quoted_string(uname->sysname);
+	printf("\", nodename=\"");
+	print_quoted_string(uname->nodename);
+	if (abbrev) {
+		printf("\", ...");
+	} else {
+		printf("\", release=\"");
+		print_quoted_string(uname->release);
+		printf("\", version=\"");
+		print_quoted_string(uname->version);
+		printf("\", machine=\"");
+		print_quoted_string(uname->machine);
 # ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
-	       ", domainname=\"%s\""
+		printf("\", domainname=\"");
+		print_quoted_string(uname->domainname);
 # endif
-	       "}) = %d\n",
-	       uname->sysname,
-	       uname->nodename,
-	       uname->release,
-	       uname->version,
-	       uname->machine,
-# ifdef HAVE_STRUCT_UTSNAME_DOMAINNAME
-	       uname->domainname,
-# endif
-	       rc);
+		printf("\"");
+	}
+	printf("}) = %d\n", rc);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/uname.test b/tests/uname.test
index e699f1c..9ba529b 100755
--- a/tests/uname.test
+++ b/tests/uname.test
@@ -6,10 +6,16 @@
 
 check_prog uniq
 
-run_prog > /dev/null
 OUT="$LOG.out"
 EXP="$LOG.exp"
+
+run_prog > /dev/null
 run_strace -v -euname $args > "$EXP"
 uniq < "$LOG" > "$OUT"
+
+run_prog "./${ME_%.test}" abbrev > /dev/null
+run_strace -euname $args >> "$EXP"
+uniq < "$LOG" >> "$OUT"
+
 match_diff "$OUT" "$EXP"
 rm -f "$OUT" "$EXP"