Fix decoding of swapon flags

* swapon.c (SYS_FUNC(swapon)): Print priority regardless
of SWAP_FLAG_PREFER flag being set.
* tests/swap.c (error_msg): Handle EINVAL.
(main): Check decoding of swapon flags.
diff --git a/swapon.c b/swapon.c
index 5f6df0b..ef88b1c 100644
--- a/swapon.c
+++ b/swapon.c
@@ -6,14 +6,19 @@
 
 SYS_FUNC(swapon)
 {
-	int flags = tcp->u_arg[1];
+	unsigned int flags = tcp->u_arg[1];
+	unsigned int prio = flags & SWAP_FLAG_PRIO_MASK;
+	flags &= ~SWAP_FLAG_PRIO_MASK;
 
 	printpath(tcp, tcp->u_arg[0]);
 	tprints(", ");
-	printflags(swap_flags, flags & ~SWAP_FLAG_PRIO_MASK,
-		"SWAP_FLAG_???");
-	if (flags & SWAP_FLAG_PREFER)
-		tprintf("|%d", flags & SWAP_FLAG_PRIO_MASK);
+	if (flags) {
+		printflags(swap_flags, flags, "SWAP_FLAG_???");
+		if (prio)
+			tprintf("|%u", prio);
+	} else {
+		tprintf("%u", prio);
+	}
 
 	return RVAL_DECODED;
 }