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.
This commit is contained in:
Дмитрий Левин 2014-12-03 21:01:35 +00:00
parent 95edb8bb71
commit b21e2fb059
3 changed files with 55 additions and 53 deletions

View File

@ -57,6 +57,7 @@ strace_SOURCES = \
syscall.c \
sysctl.c \
sysinfo.c \
syslog.c \
sysmips.c \
system.c \
term.c \

54
syslog.c Normal file
View File

@ -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;
}

View File

@ -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;
}