Home | History | Annotate | Download | only in json-c
      1 /*
      2  * $Id: debug.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
      3  *
      4  * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
      5  * Michael Clark <michael (at) metaparadigm.com>
      6  *
      7  * This library is free software; you can redistribute it and/or modify
      8  * it under the terms of the MIT license. See COPYING for details.
      9  *
     10  */
     11 
     12 #include "config.h"
     13 
     14 #include <stdio.h>
     15 #include <stdlib.h>
     16 #include <string.h>
     17 #include <stdarg.h>
     18 
     19 #if HAVE_SYSLOG_H
     20 # include <syslog.h>
     21 #endif /* HAVE_SYSLOG_H */
     22 
     23 #if HAVE_UNISTD_H
     24 # include <unistd.h>
     25 #endif /* HAVE_UNISTD_H */
     26 
     27 #if HAVE_SYS_PARAM_H
     28 #include <sys/param.h>
     29 #endif /* HAVE_SYS_PARAM_H */
     30 
     31 #include "debug.h"
     32 
     33 static int _syslog = 0;
     34 static int _debug = 0;
     35 
     36 void mc_set_debug(int debug) { _debug = debug; }
     37 int mc_get_debug(void) { return _debug; }
     38 
     39 extern void mc_set_syslog(int syslog)
     40 {
     41   _syslog = syslog;
     42 }
     43 
     44 void mc_debug(const char *msg, ...)
     45 {
     46   va_list ap;
     47   if(_debug) {
     48     va_start(ap, msg);
     49 #if HAVE_VSYSLOG
     50     if(_syslog) {
     51 		vsyslog(LOG_DEBUG, msg, ap);
     52 	} else
     53 #endif
     54 		vprintf(msg, ap);
     55     va_end(ap);
     56   }
     57 }
     58 
     59 void mc_error(const char *msg, ...)
     60 {
     61   va_list ap;
     62   va_start(ap, msg);
     63 #if HAVE_VSYSLOG
     64     if(_syslog) {
     65 		vsyslog(LOG_ERR, msg, ap);
     66 	} else
     67 #endif
     68 		vfprintf(stderr, msg, ap);
     69   va_end(ap);
     70 }
     71 
     72 void mc_info(const char *msg, ...)
     73 {
     74   va_list ap;
     75   va_start(ap, msg);
     76 #if HAVE_VSYSLOG
     77     if(_syslog) {
     78 		vsyslog(LOG_INFO, msg, ap);
     79 	} else
     80 #endif
     81 		vfprintf(stderr, msg, ap);
     82   va_end(ap);
     83 }
     84