From b21e2fb059243ded444224cf0862914af0425075 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 3 Dec 2014 21:01:35 +0000 Subject: [PATCH] Move syslog parser to a separate file * syslog.c: New file. * Makefile.am (strace_SOURCES): Add it. * system.c: Move sys_syslog and related code to syslog.c. --- Makefile.am | 1 + syslog.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ system.c | 53 ---------------------------------------------------- 3 files changed, 55 insertions(+), 53 deletions(-) create mode 100644 syslog.c diff --git a/Makefile.am b/Makefile.am index d6968c08..a87f4a52 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,6 +57,7 @@ strace_SOURCES = \ syscall.c \ sysctl.c \ sysinfo.c \ + syslog.c \ sysmips.c \ system.c \ term.c \ diff --git a/syslog.c b/syslog.c new file mode 100644 index 00000000..6e4b1ba1 --- /dev/null +++ b/syslog.c @@ -0,0 +1,54 @@ +#include "defs.h" + +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 +}; + +#include "xlat/syslog_action_type.h" + +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; +} diff --git a/system.c b/system.c index 7cbc3420..7e1ab72a 100644 --- a/system.c +++ b/system.c @@ -131,56 +131,3 @@ sys_personality(struct tcb *tcp) printxval(personality_options, tcp->u_arg[0], "PER_???"); 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 -}; - -#include "xlat/syslog_action_type.h" - -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; -} -- 2.40.0