X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b47ba9d4ca3cdedcd61f4cda5bf031f8660d1c0e..2df88396d94796a341f1dbaa1d41f3162745d927:/src/xbt/xbt_log_appender_file.cpp diff --git a/src/xbt/xbt_log_appender_file.cpp b/src/xbt/xbt_log_appender_file.cpp index 7d9313e5ab..fbb0a88f55 100644 --- a/src/xbt/xbt_log_appender_file.cpp +++ b/src/xbt/xbt_log_appender_file.cpp @@ -9,31 +9,38 @@ #include "src/internal_config.h" #include "src/xbt/log_private.hpp" #include "xbt/sysdep.h" -#include -#include -#include +#include +#include +#include static void append_file(xbt_log_appender_t this_, char *str) { fputs(str, (FILE *) this_->data); } -static void free_(xbt_log_appender_t this_) { - if (this_->data != stderr) - fclose(static_cast(this_->data)); +static void free_(xbt_log_appender_t this_) +{ + fclose(static_cast(this_->data)); } -xbt_log_appender_t xbt_log_appender_file_new(char *arg) { +xbt_log_appender_t xbt_log_appender_stream(FILE* f) +{ + xbt_log_appender_t res = xbt_new0(s_xbt_log_appender_t, 1); + res->do_append = &append_file; + res->free_ = nullptr; + res->data = static_cast(f); + return res; +} +xbt_log_appender_t xbt_log_appender_file_new(const char* arg) +{ + if (arg == nullptr) + return xbt_log_appender_stream(stderr); xbt_log_appender_t res = xbt_new0(s_xbt_log_appender_t, 1); res->do_append = &append_file; res->free_ = &free_; - if (arg) { - res->data = (void *) fopen(arg, "w"); - if (res->data == NULL) - xbt_die("Cannot open file: %s: %s", arg, strerror(errno)); - } else { - res->data = (void *) stderr; - } + res->data = static_cast(fopen(arg, "w")); + if (res->data == nullptr) + xbt_die("Cannot open file: %s: %s", arg, strerror(errno)); return res; } @@ -45,15 +52,15 @@ struct xbt_log_append2_file_s { }; typedef struct xbt_log_append2_file_s* xbt_log_append2_file_t; -#define APPEND2_END_TOKEN "\n[End of log]\n" -#define APPEND2_END_TOKEN_CLEAR "\n " +static constexpr const char* APPEND2_END_TOKEN = "\n[End of log]\n"; +static constexpr const char* APPEND2_END_TOKEN_CLEAR = "\n "; static void open_append2_file(xbt_log_append2_file_t data){ if(data->count<0) { //Roll if (!data->file) { data->file= fopen(data->filename, "w"); - if (data->file == NULL) + if (data->file == nullptr) xbt_die("Cannot open file: %s: %s", data->filename, strerror(errno)); } else { fputs(APPEND2_END_TOKEN_CLEAR,data->file); @@ -73,7 +80,7 @@ static void open_append2_file(xbt_log_append2_file_t data){ snprintf(newname,511,"%s%i%s",pre,data->count,post); data->count++; data->file= fopen(newname, "w"); - if (data->file == NULL) + if (data->file == nullptr) xbt_die("Cannot open file: %s: %s", newname, strerror(errno)); xbt_free(pre); } @@ -105,8 +112,8 @@ static void free_append2_(xbt_log_appender_t this_) //syntax is : //If roll is 0, use split files, otherwise, use roll file //For split, replace % in the file by the current count -xbt_log_appender_t xbt_log_appender2_file_new(char *arg,int roll) { - +xbt_log_appender_t xbt_log_appender2_file_new(const char* arg, int roll) +{ xbt_log_appender_t res = xbt_new0(s_xbt_log_appender_t, 1); res->do_append = &append2_file; res->free_ = &free_append2_; @@ -114,7 +121,7 @@ xbt_log_appender_t xbt_log_appender2_file_new(char *arg,int roll) { xbt_assert(arg); char* buf=xbt_strdup(arg); char* sep=strchr(buf,':'); - xbt_assert(sep != NULL); + xbt_assert(sep != nullptr); data->filename=xbt_strdup(sep+1); *sep='\0'; char *endptr;