strace/syslog.c
Dmitry V. Levin b21e2fb059 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.
2014-12-04 02:23:40 +00:00

55 lines
981 B
C

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