Remove unused code

* syscall.c (subcall_style, decode_subcall): Remove.
[SYS_socket_subcall] (decode_socket_subcall): New function, based on
decode_subcall in deref_style.
[SYS_ipc_subcall] (decode_ipc_subcall): New function, based on
decode_subcall in shift_style.
(trace_syscall_entering): Use decode_socket_subcall and
decode_ipc_subcall instead of decode_subcall.
diff --git a/syscall.c b/syscall.c
index 657cdbf..8eedb12 100644
--- a/syscall.c
+++ b/syscall.c
@@ -514,74 +514,53 @@
 	return;
 }
 
-enum subcall_style { shift_style, deref_style, mask_style, door_style };
-
-#if defined(SYS_socket_subcall) || defined(SYS_ipc_subcall)
-
+#ifdef SYS_socket_subcall
 static void
-decode_subcall(struct tcb *tcp, int subcall, int nsubcalls, enum subcall_style style)
+decode_socket_subcall(struct tcb *tcp)
 {
-	unsigned long addr, mask;
-	int i, n;
-	int size = personality_wordsize[current_personality];
+	unsigned long addr;
+	unsigned int i, size;
 
-	switch (style) {
-	case shift_style:
-		if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= nsubcalls)
-			return;
-		tcp->scno = subcall + tcp->u_arg[0];
-		tcp->u_nargs = n = sysent[tcp->scno].nargs;
-		for (i = 0; i < n; i++)
-			tcp->u_arg[i] = tcp->u_arg[i + 1];
-		break;
-	case deref_style:
-		if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= nsubcalls)
-			return;
-		tcp->scno = subcall + tcp->u_arg[0];
-		addr = tcp->u_arg[1];
-		tcp->u_nargs = n = sysent[tcp->scno].nargs;
-		for (i = 0; i < n; i++) {
-			if (size == sizeof(int)) {
-				unsigned int arg;
-				if (umove(tcp, addr, &arg) < 0)
-					arg = 0;
-				tcp->u_arg[i] = arg;
-			}
-			else if (size == sizeof(long)) {
-				unsigned long arg;
-				if (umove(tcp, addr, &arg) < 0)
-					arg = 0;
-				tcp->u_arg[i] = arg;
-			}
-			else
-				abort();
-			addr += size;
+	if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= SYS_socket_nsubcalls)
+		return;
+
+	tcp->scno = SYS_socket_subcall + tcp->u_arg[0];
+	addr = tcp->u_arg[1];
+	tcp->u_nargs = sysent[tcp->scno].nargs;
+	size = personality_wordsize[current_personality];
+	for (i = 0; i < tcp->u_nargs; ++i) {
+		if (size == sizeof(int)) {
+			unsigned int arg;
+			if (umove(tcp, addr, &arg) < 0)
+				arg = 0;
+			tcp->u_arg[i] = arg;
 		}
-		break;
-	case mask_style:
-		mask = (tcp->u_arg[0] >> 8) & 0xff;
-		for (i = 0; mask; i++)
-			mask >>= 1;
-		if (i >= nsubcalls)
-			return;
-		tcp->u_arg[0] &= 0xff;
-		tcp->scno = subcall + i;
-		tcp->u_nargs = sysent[tcp->scno].nargs;
-		break;
-	case door_style:
-		/*
-		 * Oh, yuck.  The call code is the *sixth* argument.
-		 * (don't you mean the *last* argument? - JH)
-		 */
-		if (tcp->u_arg[5] < 0 || tcp->u_arg[5] >= nsubcalls)
-			return;
-		tcp->scno = subcall + tcp->u_arg[5];
-		tcp->u_nargs = sysent[tcp->scno].nargs;
-		break;
+		else {
+			unsigned long arg;
+			if (umove(tcp, addr, &arg) < 0)
+				arg = 0;
+			tcp->u_arg[i] = arg;
+		}
+		addr += size;
 	}
 }
+#endif
 
-#endif /* SYS_socket_subcall || SYS_ipc_subcall */
+#ifdef SYS_ipc_subcall
+static void
+decode_ipc_subcall(struct tcb *tcp)
+{
+	unsigned int i;
+
+	if (tcp->u_arg[0] < 0 || tcp->u_arg[0] >= SYS_ipc_nsubcalls)
+		return;
+
+	tcp->scno = SYS_ipc_subcall + tcp->u_arg[0];
+	tcp->u_nargs = sysent[tcp->scno].nargs;
+	for (i = 0; i < tcp->u_nargs; i++)
+		tcp->u_arg[i] = tcp->u_arg[i + 1];
+}
+#endif
 
 int
 printargs(struct tcb *tcp)
@@ -1469,15 +1448,13 @@
 	while (SCNO_IN_RANGE(tcp->scno)) {
 # ifdef SYS_socket_subcall
 		if (sysent[tcp->scno].sys_func == sys_socketcall) {
-			decode_subcall(tcp, SYS_socket_subcall,
-				SYS_socket_nsubcalls, deref_style);
+			decode_socket_subcall(tcp);
 			break;
 		}
 # endif
 # ifdef SYS_ipc_subcall
 		if (sysent[tcp->scno].sys_func == sys_ipc) {
-			decode_subcall(tcp, SYS_ipc_subcall,
-				SYS_ipc_nsubcalls, shift_style);
+			decode_ipc_subcall(tcp);
 			break;
 		}
 # endif