Use logging.h instead of syslog.h
[oweals/tinc.git] / src / logging.c
index 983bdfadeb2129ee63eedcbafb657a66e6f9ede6..59d74d912b5be8b2d4d47f86403fcfcbba999ad9 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: logging.c,v 1.1 2002/04/13 10:25:38 zarq Exp $
+    $Id: logging.c,v 1.4 2002/04/13 11:07:12 zarq Exp $
 */
 
 #include "config.h"
@@ -44,7 +44,7 @@ int log_compare(const void *a, const void *b)
   return 0;
 }
 
-void log_message(int level, int priority, char *fmt, ...)
+void log(int level, int priority, char *fmt, ...)
 {
   avl_node_t *avlnode;
   va_list args;
@@ -79,8 +79,25 @@ void log_default(int level, int priority, char *fmt, va_list ap)
 
 void log_syslog(int level, int priority, char *fmt, va_list ap)
 {
-  int priorities[] = { LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_ERR, LOG_CRIT };
+  const int priorities[] = { LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_ERR, LOG_CRIT };
 
   if(debug_lvl >= level)
     vsyslog(priorities[priority], fmt, ap);
 }
+
+void tinc_syslog(int priority, char *fmt, ...)
+{
+  /* Mapping syslog prio -> tinc prio */
+  const int priorities[] = { TLOG_CRITICAL, TLOG_CRITICAL, TLOG_CRITICAL, TLOG_ERROR,
+                              TLOG_NOTICE, TLOG_NOTICE, TLOG_INFO, TLOG_DEBUG };
+  avl_node_t *avlnode;
+  va_list args;
+
+  va_start(args, fmt);
+  for(avlnode = log_hooks_tree->head; avlnode; avlnode = avlnode->next)
+    {
+      assert(avlnode->data);
+      ((log_function_t*)(avlnode->data))(0, priorities[priority], fmt, args);
+    }
+  va_end(args);
+}