#include <syslog.h>
+struct syslog_stream {
+ struct log_stream ls;
+ int facility;
+};
+
/* Destructor */
static void
syslog_close(struct log_stream *ls)
/* simple syslog write handler */
static int
-syslog_handler(struct log_stream *ls, const char *m, uns flags)
+syslog_handler(struct log_stream *ls, struct log_msg *m)
{
+ struct syslog_stream *ss = (struct syslog_stream *) ls;
int prio;
ASSERT(ls);
ASSERT(m);
// FIXME: Logging of PID
- prio = syslog_level(LS_GET_LEVEL(flags)) | (ls->idata);
+ prio = syslog_level(LS_GET_LEVEL(m->flags)) | ss->facility;
if (ls->name)
- syslog(prio | (ls->idata), "%s: %s", ls->name, m);
+ syslog(prio, "%s: %s", ls->name, m->m);
else
- syslog(prio | (ls->idata), "%s", m);
+ syslog(prio, "%s", m->m);
return 0;
}
struct log_stream *
log_new_syslog(int facility, const char *name)
{
- struct log_stream *ls = log_new_stream();
+ struct log_stream *ls = log_new_stream(sizeof(struct syslog_stream));
+ struct syslog_stream *ss = (struct syslog_stream *) ls;
if (name)
ls->name = xstrdup(name);
- ls->idata = facility;
- ls->msgfmt = LSFMT_NONE;
+ ls->msgfmt = 0;
ls->handler = syslog_handler;
ls->close = syslog_close;
+ ss->facility = facility;
return ls;
+ // FIXME: L_SIGHANDLER?
}