512dcd98 |
/*
* $Id$
|
7dd0b342 |
*
|
53c7e0f1 |
* Copyright (C) 2001-2003 FhG Fokus
|
7dd0b342 |
*
* This file is part of ser, a free SIP server.
*
* ser is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version
*
* For a license to use the ser software under conditions
* other than those described here, or to purchase support for this
* software, please contact iptel.org by e-mail at the following addresses:
* info@iptel.org
*
* ser is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
512dcd98 |
*/
|
7dd0b342 |
|
512dcd98 |
#ifndef dprint_h
#define dprint_h
|
efeaaf53 |
#include <syslog.h>
#define L_ALERT -3
#define L_CRIT -2
#define L_ERR -1
|
58d0d1b5 |
#define L_DEFAULT 0
|
efeaaf53 |
#define L_WARN 1
#define L_NOTICE 2
#define L_INFO 3
#define L_DBG 4
|
4e2fdd79 |
/* vars:*/
extern int debug;
extern int log_stderr;
|
26456ace |
extern int log_facility;
|
2d90691c |
extern volatile int dprint_crit; /* protection against "simultaneous"
printing from signal handlers */
|
efeaaf53 |
|
96d09107 |
#ifdef NO_SIG_DEBUG
#define DPRINT_NON_CRIT (1)
#define DPRINT_CRIT_ENTER
#define DPRINT_CRIT_EXIT
#else
|
2d90691c |
#define DPRINT_NON_CRIT (dprint_crit==0)
#define DPRINT_CRIT_ENTER (dprint_crit++)
#define DPRINT_CRIT_EXIT (dprint_crit--)
|
96d09107 |
#endif
|
efeaaf53 |
#define DPRINT_LEV 1
/* priority at which we log */
#define DPRINT_PRIO LOG_DEBUG
|
512dcd98 |
void dprint (char* format, ...);
|
26456ace |
int str2facility(char *s);
|
a86d53b0 |
/* C >= 99 has __func__, older gcc versions have __FUNCTION__ */
#if __STDC_VERSION__ < 199901L
# if __GNUC__ >= 2
# define _FUNC_NAME_ __FUNCTION__
# else
# define _FUNC_NAME_ ""
# endif
#else
# define _FUNC_NAME_ __func__
#endif
#define XCT2STR(i) #i
#define CT2STR(l) XCT2STR(l)
#define LOC_INFO __FILE__ ":" CT2STR(__LINE__) ": "
|
26456ace |
|
512dcd98 |
#ifdef NO_DEBUG
|
51eadd0c |
#ifdef __SUNPRO_C
#define DPrint(...)
#else
#define DPrint(fmt, args...)
#endif
|
512dcd98 |
#else
|
51eadd0c |
#ifdef __SUNPRO_C
#define DPrint( ...) \
do{ \
|
2d90691c |
if ((debug>=DPRINT_LEV) && DPRINT_NON_CRIT){ \
DPRINT_CRIT_ENTER; \
|
51eadd0c |
if (log_stderr){ \
dprint (__VA_ARGS__); \
}else{ \
|
db501a6a |
syslog(DPRINT_LEV|log_facility, __VA_ARGS__); \
|
51eadd0c |
}\
|
2d90691c |
DPRINT_CRIT_EXIT; \
|
51eadd0c |
} \
}while(0)
#else
#define DPrint(fmt,args...) \
do{ \
|
2d90691c |
if ((debug>=DPRINT_LEV) && DPRINT_NON_CRIT){ \
DPRINT_CRIT_ENTER; \
|
51eadd0c |
if (log_stderr){ \
dprint (fmt, ## args); \
}else{ \
|
db501a6a |
syslog(DPRINT_LEV|log_facility, fmt, ## args); \
|
51eadd0c |
}\
|
2d90691c |
DPRINT_CRIT_EXIT; \
|
51eadd0c |
} \
}while(0)
#endif
|
efeaaf53 |
|
512dcd98 |
#endif
|
1fb7b1aa |
#ifndef NO_DEBUG
#undef NO_LOG
#endif
|
512dcd98 |
|
1fb7b1aa |
#ifdef NO_LOG
|
51eadd0c |
#ifdef __SUNPRO_C
#define LOG(lev, ...)
#else
#define LOG(lev, fmt, args...)
#endif
|
1fb7b1aa |
#else
|
51eadd0c |
#ifdef __SUNPRO_C
#define LOG(lev, ...) \
do { \
|
2d90691c |
if ((debug>=(lev)) && DPRINT_NON_CRIT){ \
DPRINT_CRIT_ENTER; \
|
51eadd0c |
if (log_stderr) dprint (__VA_ARGS__); \
|
db501a6a |
else { \
|
51eadd0c |
switch(lev){ \
case L_CRIT: \
|
26456ace |
syslog(LOG_CRIT|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
case L_ALERT: \
|
26456ace |
syslog(LOG_ALERT|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
case L_ERR: \
|
26456ace |
syslog(LOG_ERR|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
case L_WARN: \
|
26456ace |
syslog(LOG_WARNING|log_facility, __VA_ARGS__);\
|
51eadd0c |
break; \
case L_NOTICE: \
|
26456ace |
syslog(LOG_NOTICE|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
case L_INFO: \
|
26456ace |
syslog(LOG_INFO|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
case L_DBG: \
|
26456ace |
syslog(LOG_DEBUG|log_facility, __VA_ARGS__); \
|
51eadd0c |
break; \
} \
} \
|
2d90691c |
DPRINT_CRIT_EXIT; \
|
51eadd0c |
} \
}while(0)
#else
#define LOG(lev, fmt, args...) \
|
efeaaf53 |
do { \
|
2d90691c |
if ((debug>=(lev)) && DPRINT_NON_CRIT){ \
DPRINT_CRIT_ENTER; \
|
efeaaf53 |
if (log_stderr) dprint (fmt, ## args); \
|
db501a6a |
else { \
|
efeaaf53 |
switch(lev){ \
case L_CRIT: \
|
a86d53b0 |
syslog(LOG_CRIT|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
case L_ALERT: \
|
a86d53b0 |
syslog(LOG_ALERT|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
case L_ERR: \
|
a86d53b0 |
syslog(LOG_ERR|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
case L_WARN: \
|
a86d53b0 |
syslog(LOG_WARNING|log_facility, fmt, ##args);\
|
efeaaf53 |
break; \
case L_NOTICE: \
|
a86d53b0 |
syslog(LOG_NOTICE|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
case L_INFO: \
|
a86d53b0 |
syslog(LOG_INFO|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
case L_DBG: \
|
a86d53b0 |
syslog(LOG_DEBUG|log_facility, fmt, ##args); \
|
efeaaf53 |
break; \
} \
} \
|
2d90691c |
DPRINT_CRIT_EXIT; \
|
efeaaf53 |
} \
}while(0)
|
51eadd0c |
#endif /*SUN_PRO_C*/
|
1fb7b1aa |
#endif
|
efeaaf53 |
|
1fb7b1aa |
#ifdef NO_DEBUG
|
51eadd0c |
#ifdef __SUNPRO_C
#define DBG(...)
#else
#define DBG(fmt, args...)
#endif
|
1fb7b1aa |
#else
|
51eadd0c |
#ifdef __SUNPRO_C
#define DBG(...) LOG(L_DBG, __VA_ARGS__)
#else
#define DBG(fmt, args...) LOG(L_DBG, fmt, ## args)
#endif
|
1fb7b1aa |
#endif
|
efeaaf53 |
|
a86d53b0 |
#ifdef __SUNPRO_C
#define DEBUG(...) DBG("DEBUG" LOC_INFO __VA_ARGS__)
#define ERR(...) LOG(L_ERR, "ERROR: " LOC_INFO __VA_ARGS__)
#define WARN(...) LOG(L_WARN, "WARNING: " LOC_INFO __VA_ARGS__)
#define INFO(...) LOG(L_INFO, "INFO: " LOC_INFO __VA_ARGS__)
#define BUG(...) LOG(L_CRIT, "BUG: " LOC_INFO __VA_ARGS__)
#else
#define DEBUG(fmt, args...) DBG("DEBUG " LOC_INFO fmt, ## args)
#define ERR(fmt, args...) LOG(L_ERR, "ERROR: " LOC_INFO fmt, ## args)
#define WARN(fmt, args...) LOG(L_WARN, "WARN: " LOC_INFO fmt, ## args)
#define INFO(fmt, args...) LOG(L_INFO, "INFO: " LOC_INFO fmt, ## args)
#define BUG(fmt, args...) LOG(L_CRIT, "BUG: " LOC_INFO fmt, ## args)
#endif
|
512dcd98 |
#endif /* ifndef dprint_h */
|