X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ffc701e216f6a6f08d31fa41613039ebbd1e75f5..aa30bf6e0f4908e00e77ad0e132aca707df9fa9c:/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 c4b118d469..43345d4af5 100644 --- a/src/xbt/xbt_log_layout_format.cpp +++ b/src/xbt/xbt_log_layout_format.cpp @@ -1,6 +1,6 @@ /* layout_simple - a dumb log layout */ -/* Copyright (c) 2007-2020. The SimGrid Team. */ +/* Copyright (c) 2007-2021. 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. */ @@ -9,6 +9,7 @@ #include "simgrid/host.h" #include "src/xbt/log_private.hpp" #include "xbt/sysdep.h" +#include "xbt/virtu.h" #include #include @@ -18,15 +19,15 @@ static constexpr const char* ERRMSG = " 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" + " runtime: %%h: hostname %%a: actor %%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) { \ - p += (len); \ - } else \ - return 0 +#define check_overflow(len) \ + if ((rem_size -= (len)) > 0) { \ + p += (len); \ + } else \ + return false #define set_sz_from_precision() \ if (true) { \ @@ -68,7 +69,7 @@ static constexpr const char* ERRMSG = #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) +static bool 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; @@ -87,6 +88,8 @@ static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event // *q == '%' q++; do { + int sz; + int len; switch (*q) { case '\0': fprintf(stderr, "Layout format (%s) ending with %%\n", (char*)l->data); @@ -129,22 +132,21 @@ static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event show_string(sg_host_self_get_name()); break; case 't': /* thread/process name; LOG4J compliant */ - case 'P': /* process name; SimGrid extension */ + case 'P': /* Used before SimGrid 3.26 and kept for compatiblity. Should not hurt. */ + case 'a': /* actor name; SimGrid extension */ show_string(xbt_procname()); break; - case 'i': /* process PID name; SimGrid extension */ + case 'i': /* actor ID; 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; + case 'l': /* location; LOG4J compliant */ set_sz_from_precision(); - int len = snprintf(p, sz, "%s:%d", ev->fileName, ev->lineNum); + 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; @@ -155,16 +157,14 @@ static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event case 'r': /* application age; LOG4J compliant */ show_double(simgrid_get_clock()); break; - case 'm': { /* user-provided message; LOG4J compliant */ - int sz; + case 'm': /* user-provided message; LOG4J compliant */ set_sz_from_precision(); va_list ap; va_copy(ap, ev->ap); - int len = vsnprintf(p, sz, msg_fmt, ap); + 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(); @@ -175,7 +175,7 @@ static int xbt_log_layout_format_doit(const s_xbt_log_layout_t* l, xbt_log_event } *p = '\0'; - return 1; + return true; } static void xbt_log_layout_format_free(const s_xbt_log_layout_t* lay)