コード例 #1
0
ファイル: xlog.c プロジェクト: Gaoithe/openimscore_ims
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;
}
コード例 #2
0
ファイル: xlog.c プロジェクト: BackupTheBerlios/ser
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;
}