From d7a72329f737707a8548a3e3addac6389deb77d3 Mon Sep 17 00:00:00 2001 From: ppisa Date: Fri, 28 Jul 2006 15:31:42 +0000 Subject: [PATCH] Added parsing of log level argument. --- ulut/ul_logreg.c | 46 +++++++++++++++++++++++++++++++++++++++++++++- ulut/ul_logreg.h | 1 + 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/ulut/ul_logreg.c b/ulut/ul_logreg.c index 4ab8999..7b23c68 100644 --- a/ulut/ul_logreg.c +++ b/ulut/ul_logreg.c @@ -21,7 +21,9 @@ *******************************************************************/ +#include #include +#include #include #include #include @@ -84,7 +86,7 @@ int ul_log_domain_setlevel(const char *name, int setlevel) if(!name) all_fl=1; else - all_fl=!strcmp(name,"all"); + all_fl=!strcmp(name,"all") || !strcmp(name,"ALL"); if(!all_fl){ domain=ul_log_domains_find(&ul_log_domains,&name); @@ -117,6 +119,48 @@ int ul_log_domain_getlevel(const char *name) return domain->level; } +#ifndef UL_MAX_DOMAIN_NAME +#define UL_MAX_DOMAIN_NAME 20 +#endif /*UL_MAX_DOMAIN_NAME*/ + +int ul_log_domain_arg2levels(const char *arg) +{ + const char *p=arg; + const char *r; + int l; + char name[UL_MAX_DOMAIN_NAME+1]; + + if(!arg) + return -1; + + while(*p){ + if(isdigit(*p)){ + strcpy(name,"all"); + }else{ + r=p; + while(isalnum(*p)) p++; + l=p-r; + if(l>UL_MAX_DOMAIN_NAME) + l=UL_MAX_DOMAIN_NAME; + memcpy(name,r,l); + name[l]=0; + if(*p&&(*p!='.')&&(*p!='=')) + return p-arg; + p++; + } + l=strtol(p,(char**)&r,0); + if(!r||(p==r)||(*p&&(*p!=':')&&(*p!=','))) + return p-arg; + p=r; + if(ul_log_domain_setlevel(name, l)<0) + return p-arg; + if(*p) + p++; + } + + return 0; +} + int ul_logreg_domain(ul_log_domain_t *domain) { ul_log_check_default_output(); diff --git a/ulut/ul_logreg.h b/ulut/ul_logreg.h index aa0ca6b..9a25b83 100644 --- a/ulut/ul_logreg.h +++ b/ulut/ul_logreg.h @@ -35,6 +35,7 @@ int ul_log_domain_getlevel(const char *name); int ul_logreg_domain(ul_log_domain_t *domain); int ul_logreg_domains_static(ul_log_domain_t *const *domains, int count); +int ul_log_domain_arg2levels(const char *arg); #ifdef __cplusplus } /* extern "C"*/ -- 2.39.2