X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b47ba9d4ca3cdedcd61f4cda5bf031f8660d1c0e..ce87516da629c9b6a350d8c28f806926863aa94a:/src/xbt/xbt_log_layout_format.cpp diff --git a/src/xbt/xbt_log_layout_format.cpp b/src/xbt/xbt_log_layout_format.cpp index 3243b77cfe..00e58fd526 100644 --- a/src/xbt/xbt_log_layout_format.cpp +++ b/src/xbt/xbt_log_layout_format.cpp @@ -1,34 +1,28 @@ /* layout_simple - a dumb log layout */ -/* Copyright (c) 2007-2019. The SimGrid Team. */ +/* Copyright (c) 2007-2020. The SimGrid Team. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "simgrid/engine.h" /* simgrid_get_clock */ #include "simgrid/host.h" -#include "simgrid/msg.h" /* MSG_get_clock */ #include "src/xbt/log_private.hpp" #include "xbt/sysdep.h" -#include - -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif +#include +#include extern const char *xbt_log_priority_names[8]; -#define ERRMSG \ - "Unknown %%%c sequence in layout format (%s).\n" \ - "Known sequences:\n" \ - " what: %%m: user message %%c: log category %%p: log priority\n" \ - " where:\n" \ - " source: %%F: file %%L: line %%M: function %%l: location (%%F:%%L)\n" \ - " runtime: %%h: hostname %%t: thread %%P: process %%i: PID\n" \ - " when: %%d: date %%r: app. age\n" \ - " other: %%%%: %% %%n: new line %%e: plain space\n" +static constexpr const char* ERRMSG = + "Unknown %%%c sequence in layout format (%s).\n" + "Known sequences:\n" + " what: %%m: user message %%c: log category %%p: log priority\n" + " where:\n" + " source: %%F: file %%L: line %%M: function %%l: location (%%F:%%L)\n" + " runtime: %%h: hostname %%t: thread %%P: process %%i: PID\n" + " when: %%d: date %%r: app. age\n" + " other: %%%%: %% %%n: new line %%e: plain space\n"; #define check_overflow(len) \ if ((rem_size -= (len)) > 0) { \ @@ -36,51 +30,55 @@ extern const char *xbt_log_priority_names[8]; } else \ return 0 -#define set_sz_from_precision() \ - if (1) { \ - sz = rem_size; \ - if (precision != -1) { \ - if (precision < sz) \ - sz = precision + 1; /* +1 for the final '\0' */ \ - precision = -1; \ - } \ - } else (void)0 - -#define show_it(data, letter) \ - if (1) { \ - int len; \ - int wd; \ - if (length == -1) { \ - wd = 0; \ - } else { \ - wd = length; \ - length = -1; \ - } \ - if (precision == -1) { \ - len = snprintf(p, rem_size, "%*" letter, wd, data); \ - } else { \ - len = snprintf(p, rem_size, "%*.*" letter, wd, precision, data); \ - precision = -1; \ - } \ - check_overflow(len); \ - } else (void)0 - -#define show_string(data) \ - if (1) { \ - const char *show_string_data = (data); \ - show_it(show_string_data ? show_string_data : "(null)", "s"); \ - } else (void)0 -#define show_int(data) show_it(data, "d") -#define show_double(data) show_it(data, "f") - -static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, const char *msg_fmt) +#define set_sz_from_precision() \ + if (true) { \ + sz = rem_size; \ + if (precision != -1) { \ + if (precision < sz) \ + sz = precision + 1; /* +1 for the final '\0' */ \ + precision = -1; \ + } \ + } else \ + (void)0 + +#define show_it(data, letter) \ + if (true) { \ + int len; \ + int wd; \ + if (length == -1) { \ + wd = 0; \ + } else { \ + wd = length; \ + length = -1; \ + } \ + if (precision == -1) { \ + len = snprintf(p, rem_size, "%*" letter, wd, (data)); \ + } else { \ + len = snprintf(p, rem_size, "%*.*" letter, wd, precision, (data)); \ + precision = -1; \ + } \ + check_overflow(len); \ + } else \ + (void)0 + +#define show_string(data) \ + if (true) { \ + const char* show_string_data = (data); \ + show_it(show_string_data ? show_string_data : "(null)", "s"); \ + } else \ + (void)0 +#define show_int(data) show_it((data), "d") +#define show_double(data) show_it((data), "f") + +static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event_t ev, const char* msg_fmt) { char *p = ev->buffer; int rem_size = ev->buffer_size; int precision = -1; int length = -1; - for (char* q = static_cast(l->data) ; *q != '\0' ; q++) { + char* q = static_cast(l->data); + while (*q != '\0') { if (*q == '%') { q++; do { @@ -101,7 +99,7 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co check_overflow(1); break; case '.': /* precision specifier */ - precision = strtol(q + 1, &q, 10); + precision = static_cast(strtol(q + 1, &q, 10)); continue; /* conversion specifier still not found, continue reading */ case '0': case '1': @@ -113,7 +111,7 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co case '7': case '8': case '9': /* length modifier */ - length = strtol(q, &q, 10); + length = static_cast(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 */ @@ -139,7 +137,7 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co int sz; set_sz_from_precision(); int len = snprintf(p, sz, "%s:%d", ev->fileName, ev->lineNum); - check_overflow(MIN(sz, len)); + check_overflow(std::min(sz, len)); break; } case 'L': /* line number; LOG4J compliant */ @@ -149,10 +147,10 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co show_string(ev->functionName); break; case 'd': /* date; LOG4J compliant */ - show_double(MSG_get_clock()); + show_double(simgrid_get_clock()); break; case 'r': /* application age; LOG4J compliant */ - show_double(MSG_get_clock()); + show_double(simgrid_get_clock()); break; case 'm': { /* user-provided message; LOG4J compliant */ int sz; @@ -161,7 +159,7 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co va_copy(ap, ev->ap); int len = vsnprintf(p, sz, msg_fmt, ap); va_end(ap); - check_overflow(MIN(sz, len)); + check_overflow(std::min(sz, len)); break; } default: @@ -169,28 +167,29 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, co xbt_abort(); } break; /* done, continue normally */ - } while (1); + } while (true); } else { *p = *q; check_overflow(1); } + q++; } *p = '\0'; return 1; } -static void xbt_log_layout_format_free(xbt_log_layout_t lay) +static void xbt_log_layout_format_free(const s_xbt_log_layout_t* lay) { - free(lay->data); + xbt_free(lay->data); } -xbt_log_layout_t xbt_log_layout_format_new(char *arg) +xbt_log_layout_t xbt_log_layout_format_new(const char* arg) { xbt_log_layout_t res = xbt_new0(s_xbt_log_layout_t, 1); res->do_layout = &xbt_log_layout_format_doit; res->free_ = &xbt_log_layout_format_free; - res->data = xbt_strdup((char *) arg); + res->data = xbt_strdup(arg); return res; }