level.h

/** * */ #ifndef __zlog_level_h #define __zlog_level_h #include "stdio.h" #include "zc_defs.h" typedef struct zlog_level_s { int int_level; char str_uppercase[MAXLEN_PATH + 1]; char str_lowercase[MAXLEN_PATH + 1]; size_t str_len; int syslog_level; } zlog_level_t; zlog_level_t *zlog_level_new(char *line); void zlog_level_del(zlog_level_t *a_level); void zlog_level_profile(zlog_level_t *a_level, int flag); #endif
level.c

#include <string.h> #include <stdlib.h> #include <errno.h> #include <syslog.h> #include "zc_defs.h" #include "level.h" void zlog_level_profile(zlog_level_t *a_level, int flag){ zc_assert(a_level,); zc_profile(flag, "---level[%p][%d,%s,%s,%d,%d]---", a_level, a_level->int_level, a_level->str_uppercase, a_level->str_lowercase, (int) a_level->str_len, a_level->syslog_level); return; } void zlog_level_del(zlog_level_t *a_level){ zc_assert(a_level,); free(a_level); zc_debug("zlog_level_del[%p]", a_level); return; } static int syslog_level_atoi(char *str){ //notice -187 zc_assert(str, -187); if(STRICMP(str, ==, "LOG_EMERG")){ return LOG_EMERG; } if(STRICMP(str, ==, "LOG_ALERT")){ return LOG_ALERT; } if(STRICMP(str, ==, "LOG_CRIT")){ return LOG_CRIT; } if(STRICMP(str, ==, "LOG_ERR")){ return LOG_ERR; } if(STRICMP(str, ==, "LOG_WARNING")){ return LOG_WARNING; } if(STRICMP(str, ==, "LOG_NOTICE")){ return LOG_NOTICE; } if(STRICMP(str, ==, "LOG_INFO")){ return LOG_INFO; } if(STRICMP(str, ==, "LOG_DEBUG")){ return LOG_DEBUG; } zc_error("wrong syslog level[%s]", str); return -187; } /* line: TRACE = 10, LOG_ERR */ zlog_level_t *zlog_level_new(char *line){ zlog_level_t *a_level = NULL; int i, nscan, l = 0; char str[MAXLEN_CFG_LINE + 1]; char sl[MAXLEN_CFG_LINE + 1]; zc_assert(line, NULL); memset(str, 0x00, sizeof(str)); memset(sl, 0x00, sizeof(str)); nscan = sscanf(line, " %[^= ] = %d ,%s", str, &l, sl); if(nscan < 2){ zc_error("level[%s], syntax wrong", line); return NULL; } //check level and str if((l < 0) || (l > 255)){ zc_error("l[%d] not in [0, 255], wrong", l); return NULL; } if(str[0] == '