Macroize conditional signed widening operation

* defs.h: Define widen_to_long() macro.
* signal.c (sys_kill): Use it instead of open-coding it.
(sys_tgkill): Use widen_to_long() on pids.
* resource.c (decode_rlimit): Formatting fix.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/defs.h b/defs.h
index 7702aae..c607dfd 100644
--- a/defs.h
+++ b/defs.h
@@ -723,6 +723,16 @@
 # endif
 #endif
 
+/* In many, many places we play fast and loose and use
+ * tprintf("%d", (int) tcp->u_arg[N]) to print fds, pids etc.
+ * We probably need to use widen_to_long() instead:
+ */
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+# define widen_to_long(v) (current_wordsize == 4 ? (long)(int32_t)(v) : (long)(v))
+#else
+# define widen_to_long(v) ((long)(v))
+#endif
+
 struct sysent {
 	unsigned nargs;
 	int	sys_flags;
diff --git a/resource.c b/resource.c
index 5a51d8c..657e63d 100644
--- a/resource.c
+++ b/resource.c
@@ -173,8 +173,7 @@
 {
 	if (!addr)
 		tprints("NULL");
-	else if (!verbose(tcp) ||
-		 (exiting(tcp) && syserror(tcp)))
+	else if (!verbose(tcp) || (exiting(tcp) && syserror(tcp)))
 		tprintf("%#lx", addr);
 	else {
 # if SIZEOF_RLIM_T == 4
diff --git a/signal.c b/signal.c
index 55ff3ed..11d49d3 100644
--- a/signal.c
+++ b/signal.c
@@ -1117,13 +1117,10 @@
 sys_kill(struct tcb *tcp)
 {
 	if (entering(tcp)) {
-		long pid = tcp->u_arg[0];
-#if SUPPORTED_PERSONALITIES > 1
-		/* Sign-extend a 32-bit value when that's what it is. */
-		if (current_wordsize < sizeof pid)
-			pid = (long) (int) pid;
-#endif
-		tprintf("%ld, %s", pid, signame(tcp->u_arg[1]));
+		tprintf("%ld, %s",
+			widen_to_long(tcp->u_arg[0]),
+			signame(tcp->u_arg[1])
+		);
 	}
 	return 0;
 }
@@ -1133,7 +1130,10 @@
 {
 	if (entering(tcp)) {
 		tprintf("%ld, %ld, %s",
-			tcp->u_arg[0], tcp->u_arg[1], signame(tcp->u_arg[2]));
+			widen_to_long(tcp->u_arg[0]),
+			widen_to_long(tcp->u_arg[1]),
+			signame(tcp->u_arg[2])
+		);
 	}
 	return 0;
 }