Implement syslog syscall decoder

* linux/dummy.h (sys_syslog): Remove.
* linux/syscall.h (sys_syslog): New prototype.
* system.c (syslog_action_type): New xlat structure.
(sys_syslog): New function.
diff --git a/system.c b/system.c
index 61a614a..5498449 100644
--- a/system.c
+++ b/system.c
@@ -214,6 +214,72 @@
 	return 0;
 }
 
+enum {
+	SYSLOG_ACTION_CLOSE = 0,
+	SYSLOG_ACTION_OPEN,
+	SYSLOG_ACTION_READ,
+	SYSLOG_ACTION_READ_ALL,
+	SYSLOG_ACTION_READ_CLEAR,
+	SYSLOG_ACTION_CLEAR,
+	SYSLOG_ACTION_CONSOLE_OFF,
+	SYSLOG_ACTION_CONSOLE_ON,
+	SYSLOG_ACTION_CONSOLE_LEVEL,
+	SYSLOG_ACTION_SIZE_UNREAD,
+	SYSLOG_ACTION_SIZE_BUFFER
+};
+
+static const struct xlat syslog_action_type[] = {
+	{ SYSLOG_ACTION_CLOSE,		"SYSLOG_ACTION_CLOSE"		},
+	{ SYSLOG_ACTION_OPEN,		"SYSLOG_ACTION_OPEN"		},
+	{ SYSLOG_ACTION_READ,		"SYSLOG_ACTION_READ"		},
+	{ SYSLOG_ACTION_READ_ALL,	"SYSLOG_ACTION_READ_ALL"	},
+	{ SYSLOG_ACTION_READ_CLEAR,	"SYSLOG_ACTION_READ_CLEAR"	},
+	{ SYSLOG_ACTION_CLEAR,		"SYSLOG_ACTION_CLEAR"		},
+	{ SYSLOG_ACTION_CONSOLE_OFF,	"SYSLOG_ACTION_CONSOLE_OFF"	},
+	{ SYSLOG_ACTION_CONSOLE_ON,	"SYSLOG_ACTION_CONSOLE_ON"	},
+	{ SYSLOG_ACTION_CONSOLE_LEVEL,	"SYSLOG_ACTION_CONSOLE_LEVEL"	},
+	{ SYSLOG_ACTION_SIZE_UNREAD,	"SYSLOG_ACTION_SIZE_UNREAD"	},
+	{ SYSLOG_ACTION_SIZE_BUFFER,	"SYSLOG_ACTION_SIZE_BUFFER"	},
+	{ 0,				NULL				}
+};
+
+int
+sys_syslog(struct tcb *tcp)
+{
+	int type = tcp->u_arg[0];
+
+	if (entering(tcp)) {
+		/* type */
+		printxval(syslog_action_type, type, "SYSLOG_ACTION_???");
+		tprints(", ");
+	}
+
+	switch (type) {
+		case SYSLOG_ACTION_READ:
+		case SYSLOG_ACTION_READ_ALL:
+		case SYSLOG_ACTION_READ_CLEAR:
+			if (entering(tcp))
+				return 0;
+			break;
+		default:
+			if (entering(tcp)) {
+				tprintf("%#lx, %lu",
+					tcp->u_arg[1], tcp->u_arg[2]);
+			}
+			return 0;
+	}
+
+	/* bufp */
+	if (syserror(tcp))
+		tprintf("%#lx", tcp->u_arg[1]);
+	else
+		printstr(tcp, tcp->u_arg[1], tcp->u_rval);
+	/* len */
+	tprintf(", %d", (int) tcp->u_arg[2]);
+
+	return 0;
+}
+
 #include <linux/reboot.h>
 static const struct xlat bootflags1[] = {
 	{ LINUX_REBOOT_MAGIC1,	"LINUX_REBOOT_MAGIC1"	},