Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
refactoring: moving chunks of code around to try to understand that code again
[simgrid.git] / src / xbt / log.c
index 6014f53..bb60ee3 100644 (file)
@@ -366,7 +366,7 @@ const char *xbt_log_priority_names[8] = {
   "CRITICAL"
 };
 
-XBT_PUBLIC_NO_IMPORT(s_xbt_log_category_t) _XBT_LOGV(XBT_LOG_ROOT_CAT) = {
+s_xbt_log_category_t XBT_PUBLIC_DATA  _XBT_LOGV(XBT_LOG_ROOT_CAT) = {
   0, 0, 0,
   "root", xbt_log_priority_uninitialized, 0,
   NULL, 0
@@ -413,118 +413,104 @@ void xbt_log_exit(void) {
   VERB0("Exited log");
 }
 
-static void _apply_control(xbt_log_category_t cat) {
+void _xbt_log_event_log( xbt_log_event_t ev, const char *fmt, ...) {
+  
+  xbt_log_category_t cat = ev->cat;
+  
+  va_start(ev->ap, fmt);
+  while(1) {
+    xbt_log_appender_t appender = cat->appender;
+    if (appender != NULL) {
+       
+      appender->do_append(appender, ev, fmt);
+    }
+    if (!cat->willLogToParent)
+      break;
+
+    cat = cat->parent;
+  } 
+  va_end(ev->ap);
+}
+
+/*
+ * This gets called the first time a category is referenced and performs the
+ * initialization. 
+ * Also resets threshold to inherited!
+ */
+int _xbt_log_cat_init(e_xbt_log_priority_t priority,xbt_log_category_t category) {
   int cursor;
   xbt_log_setting_t setting=NULL;
   int found = 0;
   s_xbt_log_event_t _log_ev;
-  
-  
-  if (!xbt_log_settings)
-    return;
+       
+  if(category == &_XBT_LOGV(XBT_LOG_ROOT_CAT)){
+    category->threshold = xbt_log_priority_info;/* xbt_log_priority_debug*/;
+    category->appender = xbt_log_default_appender;
+  } else {
 
-  xbt_assert0(cat,"NULL category");
-  xbt_assert(cat->name);
+#if (defined(_WIN32) && !defined(DLL_STATIC))
+    if(!category->parent){
+      category->parent = &_XBT_LOGV(XBT_LOG_ROOT_CAT);
+    }
+#endif
+    
+    xbt_log_parent_set(category, category->parent);
+  }
 
+  /* Apply the control */  
+  if (!xbt_log_settings)
+    return priority >= category->threshold;
+  
+  xbt_assert0(category,"NULL category");
+  xbt_assert(category->name);
+  
   xbt_dynar_foreach(xbt_log_settings,cursor,setting) {
     xbt_assert0(setting,"Damnit, NULL cat in the list");
     xbt_assert1(setting->catname,"NULL setting(=%p)->catname",(void*)setting);
-
-    if (!strcmp(setting->catname,cat->name)) {
-       
     
+    if (!strcmp(setting->catname,category->name)) {
+      
       found = 1;
-
-      xbt_log_threshold_set(cat, setting->thresh);
+      
+      xbt_log_threshold_set(category, setting->thresh);
       xbt_dynar_cursor_rm(xbt_log_settings,&cursor);
 
 
-      if (cat->threshold <= xbt_log_priority_debug) {
-        _log_ev.cat = cat;
+      if (category->threshold <= xbt_log_priority_debug) {
+        _log_ev.cat = category;
         _log_ev.priority = xbt_log_priority_debug;
         _log_ev.fileName = __FILE__ ;
         _log_ev.functionName = _XBT_FUNCTION ;
         _log_ev.lineNum = __LINE__ ;
-
+       
        _xbt_log_event_log(&_log_ev,
-                "Apply settings for category '%s': set threshold to %s (=%d)",
-                cat->name,
-                xbt_log_priority_names[cat->threshold], cat->threshold);
+                          "Apply settings for category '%s': set threshold to %s (=%d)",
+                          category->name,
+                          xbt_log_priority_names[category->threshold], category->threshold);
       }
     }
-   
   }
   
-  if (!found && cat->threshold <= xbt_log_priority_verbose) {
-       
-    _log_ev.cat = cat;
+  if (!found && category->threshold <= xbt_log_priority_verbose) {
+    
+    _log_ev.cat = category;
     _log_ev.priority = xbt_log_priority_verbose;
     _log_ev.fileName = __FILE__ ;
     _log_ev.functionName = _XBT_FUNCTION ;
     _log_ev.lineNum = __LINE__ ;
-
+    
     _xbt_log_event_log(&_log_ev,
-                       "Category '%s': inherited threshold = %s (=%d)",
-                       cat->name,
-                       xbt_log_priority_names[cat->threshold], cat->threshold);
+                      "Category '%s': inherited threshold = %s (=%d)",
+                      category->name,
+                      xbt_log_priority_names[category->threshold], category->threshold);
   }
-  
-
-}
-
-void _xbt_log_event_log( xbt_log_event_t ev, const char *fmt, ...) {
-  xbt_log_category_t cat = ev->cat;
-  va_start(ev->ap, fmt);
-  while(1) {
-    xbt_log_appender_t appender = cat->appender;
-    if (appender != NULL) {
-      appender->do_append(appender, ev, fmt);
-    }
-    if (!cat->willLogToParent)
-      break;
-
-    cat = cat->parent;
-  } 
-  va_end(ev->ap);
-}
-
-static void _cat_init(xbt_log_category_t category) 
-{
-       
-       if(category == &_XBT_LOGV(XBT_LOG_ROOT_CAT)){
-       category->threshold = xbt_log_priority_info;
-       category->appender = xbt_log_default_appender;
-       } 
-       else 
-       {
-               #if (defined(_WIN32) && !defined(DLL_STATIC))
-               if(!category->parent)
-                       category->parent = &_XBT_LOGV(XBT_LOG_ROOT_CAT);
-               #endif
-       
-       xbt_log_parent_set(category, category->parent);
-       }
-  
-  _apply_control(category);
-}
-
-/*
- * This gets called the first time a category is referenced and performs the
- * initialization. 
- * Also resets threshold to inherited!
- */
-int _xbt_log_cat_init(e_xbt_log_priority_t priority,xbt_log_category_t category) 
-{
     
-       _cat_init(category);
-       
-       return priority >= category->threshold;
+  return priority >= category->threshold;
 }
 
 void xbt_log_parent_set(xbt_log_category_t cat,xbt_log_category_t parent) 
 {
+       
        xbt_assert0(cat,"NULL category to be given a parent");
        xbt_assert1(parent,"The parent category of %s is NULL",cat->name);
        
@@ -551,17 +537,21 @@ void xbt_log_parent_set(xbt_log_category_t cat,xbt_log_category_t parent)
        
        if (parent->threshold == xbt_log_priority_uninitialized){
                
-               _cat_init(parent);
+         _xbt_log_cat_init(xbt_log_priority_uninitialized/* ignored*/,
+                           parent);
        }
        
        cat->threshold = parent->threshold;
        
        cat->isThreshInherited = 1;
        
-} /* log_setParent */
+}
 
 static void _set_inherited_thresholds(xbt_log_category_t cat) {
+       
+       
   xbt_log_category_t child = cat->firstChild;
+  
   for( ; child != NULL; child = child->nextSibling) {
     if (child->isThreshInherited) {
       if (cat != &_XBT_LOGV(log))
@@ -571,19 +561,25 @@ static void _set_inherited_thresholds(xbt_log_category_t cat) {
       _set_inherited_thresholds(child);
     }
   }
+  
 }
 
 void xbt_log_threshold_set(xbt_log_category_t   cat,
                            e_xbt_log_priority_t threshold) {
   cat->threshold = threshold;
   cat->isThreshInherited = 0;
   _set_inherited_thresholds(cat);
 }
 
 static void _xbt_log_parse_setting(const char*        control_string,
                                    xbt_log_setting_t set) {
   const char *name, *dot, *eq;
   
+  
+  
   set->catname=NULL;
   if (!*control_string) 
     return;
@@ -634,50 +630,21 @@ static void _xbt_log_parse_setting(const char*        control_string,
   strncpy(set->catname,name,dot-name);
   set->catname[dot-name]='\0'; /* Just in case */
   DEBUG1("This is for cat '%s'", set->catname);
+  
 }
 
 static xbt_log_category_t _xbt_log_cat_searchsub(xbt_log_category_t cat,char *name) {
   xbt_log_category_t child;
   
+  
   if (!strcmp(cat->name,name)) {
     return cat;
   }
   for(child=cat->firstChild ; child != NULL; child = child->nextSibling) {
     return _xbt_log_cat_searchsub(child,name);
   }
-  THROW0(not_found_error,0,"No such category");
-}
-
-static void _cleanup_double_spaces(char *s) {
-  char *p = s;
-  int   e = 0;
-  
-  while (1) {
-    if (!*p)
-      goto end;
-    
-    if (!isspace(*p))
-      break;
-    
-    p++;
-  }
-  
-  e = 1;
   
-  do {
-    if (e)
-      *s++ = *p;
-    
-    if (!*++p)
-      goto end;
-    
-    if (e ^ !isspace(*p))
-      if ((e = !e))
-       *s++ = ' ';
-  } while (1);
-
- end:
-  *s = '\0';
+  THROW0(not_found_error,0,"No such category");
 }
 
 /**
@@ -706,6 +673,8 @@ void xbt_log_control_set(const char* control_string) {
   char *p;
   int done = 0;
   
+  
+  
   DEBUG1("Parse log settings '%s'",control_string);
   if (control_string == NULL)
     return;
@@ -716,7 +685,7 @@ void xbt_log_control_set(const char* control_string) {
   set = xbt_new(s_xbt_log_setting_t,1);
   cs=xbt_strdup(control_string);
 
-  _cleanup_double_spaces(cs);
+  xbt_str_strip_spaces(cs);
 
   while (!done) {
     xbt_log_category_t cat=NULL;
@@ -757,9 +726,13 @@ void xbt_log_control_set(const char* control_string) {
   }
   free(set);
   free(cs);
+  
+  
 } 
 
 void xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app) {
+       
   cat->appender = app;
+  
 }