X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_not_thread_safe.c;h=a18f9d77c8d13a4c78bb6546d470680bc444fd27;hb=2a6a270edfda89b04722b42b57992907f871c671;hp=92bae6a09acca7e421232a4a725822afd8f2944a;hpb=0dc5d6d50c0d95ba4f04b656358b26518d4ce854;p=rrdtool.git diff --git a/src/rrd_not_thread_safe.c b/src/rrd_not_thread_safe.c index 92bae6a..a18f9d7 100644 --- a/src/rrd_not_thread_safe.c +++ b/src/rrd_not_thread_safe.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.9 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 * This file: Copyright 2003 Peter Stamfest * & Tobias Oetiker * Distributed under the GPL @@ -14,20 +14,30 @@ #define MAXLEN 4096 #define ERRBUFLEN 256 -static char rrd_error[MAXLEN] = "\0"; -static char rrd_liberror[ERRBUFLEN] = "\0"; +static char rrd_error[MAXLEN + 10]; +static char rrd_liberror[ERRBUFLEN + 10]; +static int rrd_context_init = 0; + /* The global context is very useful in the transition period to even more thread-safe stuff, it can be used whereever we need a context and do not need to worry about concurrency. */ static struct rrd_context global_ctx = { - sizeof(rrd_error), - sizeof(rrd_liberror), - rrd_error, + MAXLEN, + ERRBUFLEN, + rrd_error, rrd_liberror }; -#include -struct rrd_context *rrd_get_context() { +/* #include */ + +struct rrd_context *rrd_get_context( + void) +{ + if (!rrd_context_init) { + rrd_context_init = 1; + global_ctx.rrd_error[0] = '\0'; + global_ctx.lib_errstr[0] = '\0'; + } return &global_ctx; } @@ -36,6 +46,8 @@ struct rrd_context *rrd_get_context() { silently turning misplaced strerror into rrd_strerror, but here this turns recursive! */ #undef strerror -const char *rrd_strerror(int err) { +const char *rrd_strerror( + int err) +{ return strerror(err); }