X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7da2926d0733ff0683f31aeea176ce71e127264f..4a69abcc786d029bd2962537f767d12a0f808d11:/src/xbt/xbt_log_appender_file.c diff --git a/src/xbt/xbt_log_appender_file.c b/src/xbt/xbt_log_appender_file.c index 53427762ef..93887340cf 100644 --- a/src/xbt/xbt_log_appender_file.c +++ b/src/xbt/xbt_log_appender_file.c @@ -6,11 +6,9 @@ /* 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 "src/internal_config.h" #include "xbt/sysdep.h" -#include "xbt/log_private.h" -#ifdef HAVE_SMPI -#include "smpi/private.h" // to access bench_begin/end. Not ultraclean, I confess -#endif +#include "src/xbt/log_private.h" #include static void append_file(xbt_log_appender_t this_, char *str) { @@ -26,23 +24,16 @@ static void free_(xbt_log_appender_t this_) { fclose(this_->data); } -#ifdef HAVE_SMPI -void __smpi_bench_dont (void); // Stupid prototype -void __smpi_bench_dont (void) { /* I'm only a place-holder in case we link without SMPI */; } -void smpi_bench_begin(void) __attribute__ ((weak, alias ("__smpi_bench_dont"))); -void smpi_bench_end(void) __attribute__ ((weak, alias ("__smpi_bench_dont"))); -#endif - XBT_LOG_EXTERNAL_CATEGORY(smpi); // To detect if SMPI is inited xbt_log_appender_t xbt_log_appender_file_new(char *arg) { xbt_log_appender_t res = xbt_new0(s_xbt_log_appender_t, 1); if (_XBT_LOGV(smpi).initialized) // HACK to detect if we run in SMPI mode. Relies on MAIN__ source disposition - res->do_append = smpi_append_file; + res->do_append = &smpi_append_file; else - res->do_append = append_file; - res->free_ = free_; + res->do_append = &append_file; + res->free_ = &free_; if (arg) res->data = (void *) fopen(arg, "w"); else @@ -62,8 +53,7 @@ typedef struct xbt_log_append2_file_s* xbt_log_append2_file_t; #define APPEND2_END_TOKEN_CLEAR "\n " static void open_append2_file(xbt_log_append2_file_t data){ - if(data->count<0) - { + if(data->count<0) { //Roll if(!data->file) data->file= fopen(data->filename, "w"); @@ -71,8 +61,7 @@ static void open_append2_file(xbt_log_append2_file_t data){ fputs(APPEND2_END_TOKEN_CLEAR,data->file); fseek(data->file,0,SEEK_SET); } - } - else{ + } else{ //printf("Splitting\n"); //Split if(data->file) @@ -88,24 +77,19 @@ static void open_append2_file(xbt_log_append2_file_t data){ data->count++; data->file= fopen(newname, "w"); xbt_assert(data->file); - } } - - - static void append2_file(xbt_log_appender_t this_, char *str) { xbt_log_append2_file_t d=(xbt_log_append2_file_t) this_->data; xbt_assert(d->file); - if(ftell(d->file)>=d->limit) - { + if(ftell(d->file)>=d->limit) { open_append2_file(d); } fputs(str, d->file); if(d->count<0){ - fputs(APPEND2_END_TOKEN,d->file); - fseek(d->file,-((signed long)strlen(APPEND2_END_TOKEN)),SEEK_CUR); + fputs(APPEND2_END_TOKEN,d->file); + fseek(d->file,-((signed long)strlen(APPEND2_END_TOKEN)),SEEK_CUR); } } @@ -127,10 +111,10 @@ xbt_log_appender_t xbt_log_appender2_file_new(char *arg,int roll) { xbt_log_appender_t res = xbt_new0(s_xbt_log_appender_t, 1); if (_XBT_LOGV(smpi).initialized) // HACK to detect if we run in SMPI mode. Relies on MAIN__ source disposition - res->do_append = smpi_append2_file; + res->do_append = &smpi_append2_file; else - res->do_append = append2_file; - res->free_ = free_append2_; + res->do_append = &append2_file; + res->free_ = &free_append2_; xbt_log_append2_file_t data = xbt_new0(struct xbt_log_append2_file_s, 1); xbt_assert(arg); char* buf=xbt_strdup(arg); @@ -138,7 +122,10 @@ xbt_log_appender_t xbt_log_appender2_file_new(char *arg,int roll) { xbt_assert(sep>0); data->filename=xbt_strdup(sep+1); *sep='\0'; - data->limit=atol(buf); + char *endptr; + data->limit=strtol(buf,&endptr,10); + xbt_assert(endptr[0]=='\0', "Invalid buffer size: %s", buf); + xbt_free(buf); if(roll) data->count=-1; else @@ -147,4 +134,3 @@ xbt_log_appender_t xbt_log_appender2_file_new(char *arg,int roll) { res->data = data; return res; } -