static int xlog_fixup(void** param, int param_no) { long level; if(param_no==1) { if(*param==NULL || strlen((char*)(*param))<3) { LOG(L_ERR, "XLOG:xlog_fixup: wrong log level\n"); return E_UNSPEC; } switch(((char*)(*param))[2]) { case 'A': level = L_ALERT; break; case 'C': level = L_CRIT; break; case 'E': level = L_ERR; break; case 'W': level = L_WARN; break; case 'N': level = L_NOTICE; break; case 'I': level = L_INFO; break; case 'D': level = L_DBG; break; default: LOG(L_ERR, "XLOG:xlog_fixup: unknown log level\n"); return E_UNSPEC; } pkg_free(*param); *param = (void*)level; return 0; } if(param_no==2) return xdbg_fixup(param, 1); return 0; }
static int xlog_fixup(void** param, int param_no) { int level; fparam_t *p; if(param_no==1) { if (*param == NULL) { LOG(L_ERR, "XLOG:xlog_fixup: NULL parameter\n"); return -1; } if ((((char*)(*param))[0] == '$') || (((char*)(*param))[0] == '@') ) { /* avp or select parameter */ return fixup_var_int_1(param, 1); } if(strlen((char*)(*param))<3) { LOG(L_ERR, "XLOG:xlog_fixup: wrong log level\n"); return E_UNSPEC; } switch(((char*)(*param))[2]) { case 'A': level = L_ALERT; break; case 'C': level = L_CRIT; break; case 'E': level = L_ERR; break; case 'W': level = L_WARN; break; case 'N': level = L_NOTICE; break; case 'I': level = L_INFO; break; case 'D': level = L_DBG; break; default: LOG(L_ERR, "XLOG:xlog_fixup: unknown log level\n"); return E_UNSPEC; } /* constant parameter, but the fparam structure * needs to be created */ p = (fparam_t*)pkg_malloc(sizeof(fparam_t)); if (!p) { LOG(L_ERR, "XLOG:xlog_fixup: not enough memory\n"); return -1; } p->v.i = level; p->type = FPARAM_INT; p->orig = *param; *param = p; return 0; } if(param_no==2) return xdbg_fixup(param, 1); return 0; }