Module: sip-router
Branch: master
Commit: 224c6c69817315c56590648ea626d91b6ac225e8
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=224c6c6…
Author: Klaus Darilion <klaus.mailinglists(a)pernau.at>
Committer: Klaus Darilion <klaus.mailinglists(a)pernau.at>
Date: Sun Feb 26 19:13:22 2012 +0100
xlog: remove code duplication between xlog and xlogl functions
- xlog and xlogl functions are more or less duplicates. Use a helper function
to remove code duplicates for better readability
- preparations for setting the syslog facility per xlog request
---
modules_k/xlog/xlog.c | 77 ++++++++++++++++++++++--------------------------
1 files changed, 35 insertions(+), 42 deletions(-)
diff --git a/modules_k/xlog/xlog.c b/modules_k/xlog/xlog.c
index 28e6926..93cecd7 100644
--- a/modules_k/xlog/xlog.c
+++ b/modules_k/xlog/xlog.c
@@ -39,6 +39,7 @@
#include "../../pvar.h"
+#define NOFACILITY -1
MODULE_VERSION
@@ -159,7 +160,7 @@ static int mod_init(void)
}
static inline int xlog_helper(struct sip_msg* msg, xl_msg_t *xm,
- int level, int line)
+ int level, int line, int facility)
{
str txt;
@@ -168,17 +169,22 @@ static inline int xlog_helper(struct sip_msg* msg, xl_msg_t *xm,
if(xl_print_log(msg, xm->m, _xlog_buf, &txt.len)<0)
return -1;
txt.s = _xlog_buf;
+ /* if facility is not explicitely defined use the xlog default facility */
+ if (facility==NOFACILITY) {
+ facility = xlog_facility;
+ }
+
if(line>0)
if(long_format==1)
- LOG_(xlog_facility, level, _xlog_prefix,
+ LOG_(facility, level, _xlog_prefix,
"%s:%d:%.*s",
(xm->a)?(((xm->a->cfile)?xm->a->cfile:"")):"",
(xm->a)?xm->a->cline:0, txt.len, txt.s);
else
- LOG_(xlog_facility, level, _xlog_prefix,
+ LOG_(facility, level, _xlog_prefix,
"%d:%.*s", (xm->a)?xm->a->cline:0, txt.len, txt.s);
else
- LOG_(xlog_facility, level, _xlog_prefix,
+ LOG_(facility, level, _xlog_prefix,
"%.*s", txt.len, txt.s);
return 1;
}
@@ -186,12 +192,16 @@ static inline int xlog_helper(struct sip_msg* msg, xl_msg_t *xm,
/**
* print log message to L_ERR level
*/
-static int xlog_1(struct sip_msg* msg, char* frm, char* str2)
+static int xlog_1_helper(struct sip_msg* msg, char* frm, char* str2, int mode, int
facility)
{
if(!is_printable(L_ERR))
return 1;
- return xlog_helper(msg, (xl_msg_t*)frm, L_ERR, 0);
+ return xlog_helper(msg, (xl_msg_t*)frm, L_ERR, mode, facility);
+}
+static int xlog_1(struct sip_msg* msg, char* frm, char* str2)
+{
+ return xlog_1_helper(msg, frm, str2, 0, NOFACILITY);
}
/**
@@ -199,16 +209,10 @@ static int xlog_1(struct sip_msg* msg, char* frm, char* str2)
*/
static int xlogl_1(struct sip_msg* msg, char* frm, char* str2)
{
- if(!is_printable(L_ERR))
- return 1;
-
- return xlog_helper(msg, (xl_msg_t*)frm, L_ERR, 1);
+ return xlog_1_helper(msg, frm, str2, 1, NOFACILITY);
}
-/**
- * print log message to level given in parameter
- */
-static int xlog_2(struct sip_msg* msg, char* lev, char* frm)
+static int xlog_2_helper(struct sip_msg* msg, char* lev, char* frm, int mode, int
facility)
{
long level;
xl_level_p xlp;
@@ -231,7 +235,15 @@ static int xlog_2(struct sip_msg* msg, char* lev, char* frm)
if(!is_printable((int)level))
return 1;
- return xlog_helper(msg, (xl_msg_t*)frm, (int)level, 0);
+ return xlog_helper(msg, (xl_msg_t*)frm, (int)level, mode, facility);
+}
+
+/**
+ * print log message to level given in parameter
+ */
+static int xlog_2(struct sip_msg* msg, char* lev, char* frm)
+{
+ return xlog_2_helper(msg, lev, frm, 0, NOFACILITY);
}
/**
@@ -239,28 +251,14 @@ static int xlog_2(struct sip_msg* msg, char* lev, char* frm)
*/
static int xlogl_2(struct sip_msg* msg, char* lev, char* frm)
{
- long level;
- xl_level_p xlp;
- pv_value_t value;
-
- xlp = (xl_level_p)lev;
- if(xlp->type==1)
- {
- if(pv_get_spec_value(msg, &xlp->v.sp, &value)!=0
- || value.flags&PV_VAL_NULL || !(value.flags&PV_VAL_INT))
- {
- LM_ERR("invalid log level value [%d]\n", value.flags);
- return -1;
- }
- level = (long)value.ri;
- } else {
- level = xlp->v.level;
- }
+ return xlog_2_helper(msg, lev, frm, 1, NOFACILITY);
+}
- if(!is_printable((int)level))
+static int xdbg_helper(struct sip_msg* msg, char* frm, char* str2, int mode, int
facility)
+{
+ if(!is_printable(L_DBG))
return 1;
-
- return xlog_helper(msg, (xl_msg_t*)frm, (int)level, 1);
+ return xlog_helper(msg, (xl_msg_t*)frm, L_DBG, mode, facility);
}
/**
@@ -268,9 +266,7 @@ static int xlogl_2(struct sip_msg* msg, char* lev, char* frm)
*/
static int xdbg(struct sip_msg* msg, char* frm, char* str2)
{
- if(!is_printable(L_DBG))
- return 1;
- return xlog_helper(msg, (xl_msg_t*)frm, L_DBG, 0);
+ return xdbg_helper(msg, frm, str2, 0, NOFACILITY);
}
/**
@@ -278,12 +274,9 @@ static int xdbg(struct sip_msg* msg, char* frm, char* str2)
*/
static int xdbgl(struct sip_msg* msg, char* frm, char* str2)
{
- if(!is_printable(L_DBG))
- return 1;
- return xlog_helper(msg, (xl_msg_t*)frm, L_DBG, 1);
+ return xdbg_helper(msg, frm, str2, 1, NOFACILITY);
}
-
/**
* module destroy function
*/