*******************************************************************/
+#include <ctype.h>
#include <string.h>
+#ifndef __RTL__
+#include <stdlib.h>
+#endif
#include <ul_logbase.h>
#include <ul_logreg.h>
#include <ul_gsacust.h>
ul_log_domains_it_t it;
ul_log_domain_t *domain=NULL;
- if((setlevel<0) || (setlevel>UL_LOGL_MAX))
+ if(setlevel<0)
return -1;
+ if(setlevel>UL_LOGL_MAX)
+ setlevel=UL_LOGL_MAX;
+
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);
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++;
+ }
+ r=p;
+ l=strtol(r,(char**)&p,0);
+ if(!p||(p==r)||(*p&&(*p!=':')&&(*p!=',')))
+ return p-arg;
+ 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();