]> mj.ucw.cz Git - libucw.git/blobdiff - ucw/log-syslog.c
Logging: Documentation and minor cleanups of headers.
[libucw.git] / ucw / log-syslog.c
index 712a7d8433c05373f3b77cac9bb47982f5999ba3..0aa6e2d6e8b467ed8a76dcd8dd94f516f3910311 100644 (file)
 
 #include <syslog.h>
 
+struct syslog_stream {
+  struct log_stream ls;
+  int facility;
+};
+
 /* Destructor */
 static void
 syslog_close(struct log_stream *ls)
@@ -40,18 +45,19 @@ syslog_level(int level)
 
 /* 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;
 }
 
@@ -61,12 +67,14 @@ syslog_handler(struct log_stream *ls, const char *m, uns flags)
 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?
 }