Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Drop xbt_str_split().
[simgrid.git] / src / xbt / xbt_log_layout_format.cpp
index 00e58fd..c4b118d 100644 (file)
@@ -12,8 +12,6 @@
 #include <algorithm>
 #include <cstdio>
 
-extern const char *xbt_log_priority_names[8];
-
 static constexpr const char* ERRMSG =
     "Unknown %%%c sequence in layout format (%s).\n"
     "Known sequences:\n"
@@ -77,101 +75,102 @@ static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event
   int precision = -1;
   int length = -1;
 
-  char* q = static_cast<char*>(l->data);
+  auto* q = static_cast<char*>(l->data);
   while (*q != '\0') {
-    if (*q == '%') {
-      q++;
-      do {
-        switch (*q) {
-          case '\0':
-            fprintf(stderr, "Layout format (%s) ending with %%\n", (char*)l->data);
-            xbt_abort();
-          case '%':
-            *p = '%';
-            check_overflow(1);
-            break;
-          case 'n': /* platform-dependant line separator; LOG4J compliant */
-            *p = '\n';
-            check_overflow(1);
-            break;
-          case 'e': /* plain space; SimGrid extension */
-            *p = ' ';
-            check_overflow(1);
-            break;
-          case '.': /* precision specifier */
-            precision = static_cast<int>(strtol(q + 1, &q, 10));
-            continue; /* conversion specifier still not found, continue reading */
-          case '0':
-          case '1':
-          case '2':
-          case '3':
-          case '4':
-          case '5':
-          case '6':
-          case '7':
-          case '8':
-          case '9': /* length modifier */
-            length = static_cast<int>(strtol(q, &q, 10));
-            continue; /* conversion specifier still not found, continue reading */
-          case 'c':   /* category name; LOG4J compliant
-                         should accept a precision postfix to show the hierarchy */
-            show_string(ev->cat->name);
-            break;
-          case 'p': /* priority name; LOG4J compliant */
-            show_string(xbt_log_priority_names[ev->priority]);
-            break;
-          case 'h': /* host name; SimGrid extension */
-            show_string(sg_host_self_get_name());
-            break;
-          case 't': /* thread/process name; LOG4J compliant */
-          case 'P': /* process name; SimGrid extension */
-            show_string(xbt_procname());
-            break;
-          case 'i': /* process PID name; SimGrid extension */
-            show_int(xbt_getpid());
-            break;
-          case 'F': /* file name; LOG4J compliant */
-            show_string(ev->fileName);
-            break;
-          case 'l': { /* location; LOG4J compliant */
-            int sz;
-            set_sz_from_precision();
-            int len = snprintf(p, sz, "%s:%d", ev->fileName, ev->lineNum);
-            check_overflow(std::min(sz, len));
-            break;
-          }
-          case 'L': /* line number; LOG4J compliant */
-            show_int(ev->lineNum);
-            break;
-          case 'M': /* method (ie, function) name; LOG4J compliant */
-            show_string(ev->functionName);
-            break;
-          case 'd': /* date; LOG4J compliant */
-            show_double(simgrid_get_clock());
-            break;
-          case 'r': /* application age; LOG4J compliant */
-            show_double(simgrid_get_clock());
-            break;
-          case 'm': { /* user-provided message; LOG4J compliant */
-            int sz;
-            set_sz_from_precision();
-            va_list ap;
-            va_copy(ap, ev->ap);
-            int len = vsnprintf(p, sz, msg_fmt, ap);
-            va_end(ap);
-            check_overflow(std::min(sz, len));
-            break;
-          }
-          default:
-            fprintf(stderr, ERRMSG, *q, (char*)l->data);
-            xbt_abort();
-        }
-        break; /* done, continue normally */
-      } while (true);
-    } else {
+    if (*q != '%') {
       *p = *q;
       check_overflow(1);
+      q++;
+      continue;
     }
+
+    // *q == '%'
+    q++;
+    do {
+      switch (*q) {
+        case '\0':
+          fprintf(stderr, "Layout format (%s) ending with %%\n", (char*)l->data);
+          xbt_abort();
+        case '%':
+          *p = '%';
+          check_overflow(1);
+          break;
+        case 'n': /* platform-dependant line separator; LOG4J compliant */
+          *p = '\n';
+          check_overflow(1);
+          break;
+        case 'e': /* plain space; SimGrid extension */
+          *p = ' ';
+          check_overflow(1);
+          break;
+        case '.': /* precision specifier */
+          precision = static_cast<int>(strtol(q + 1, &q, 10));
+          continue; /* conversion specifier still not found, continue reading */
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9': /* length modifier */
+          length = static_cast<int>(strtol(q, &q, 10));
+          continue; /* conversion specifier still not found, continue reading */
+        case 'c':   /* category name; LOG4J compliant
+                       should accept a precision postfix to show the hierarchy */
+          show_string(ev->cat->name);
+          break;
+        case 'p': /* priority name; LOG4J compliant */
+          show_string(xbt_log_priority_names[ev->priority]);
+          break;
+        case 'h': /* host name; SimGrid extension */
+          show_string(sg_host_self_get_name());
+          break;
+        case 't': /* thread/process name; LOG4J compliant */
+        case 'P': /* process name; SimGrid extension */
+          show_string(xbt_procname());
+          break;
+        case 'i': /* process PID name; SimGrid extension */
+          show_int(xbt_getpid());
+          break;
+        case 'F': /* file name; LOG4J compliant */
+          show_string(ev->fileName);
+          break;
+        case 'l': { /* location; LOG4J compliant */
+          int sz;
+          set_sz_from_precision();
+          int len = snprintf(p, sz, "%s:%d", ev->fileName, ev->lineNum);
+          check_overflow(std::min(sz, len));
+          break;
+        }
+        case 'L': /* line number; LOG4J compliant */
+          show_int(ev->lineNum);
+          break;
+        case 'M': /* method (ie, function) name; LOG4J compliant */
+          show_string(ev->functionName);
+          break;
+        case 'd': /* date; LOG4J compliant */
+        case 'r': /* application age; LOG4J compliant */
+          show_double(simgrid_get_clock());
+          break;
+        case 'm': { /* user-provided message; LOG4J compliant */
+          int sz;
+          set_sz_from_precision();
+          va_list ap;
+          va_copy(ap, ev->ap);
+          int len = vsnprintf(p, sz, msg_fmt, ap);
+          va_end(ap);
+          check_overflow(std::min(sz, len));
+          break;
+        }
+        default:
+          fprintf(stderr, ERRMSG, *q, (char*)l->data);
+          xbt_abort();
+      }
+      break; /* done, continue normally */
+    } while (true);
     q++;
   }
   *p = '\0';