fixed 2. x-grid example ... since the lable is valid for the whole day, it must be...
[rrdtool.git] / src / rrd_not_thread_safe.c
index 2d3b350..4558122 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * RRDtool 1.2.15  Copyright by Tobi Oetiker, 1997-2006
+ * RRDtool 1.2.99907080300  Copyright by Tobi Oetiker, 1997-2007
  * This file:     Copyright 2003 Peter Stamfest <peter@stamfest.at> 
  *                             & Tobias Oetiker
  * Distributed under the GPL
 #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 <stdarg.h>
 
-struct rrd_context *rrd_get_context() {
+/* #include <stdarg.h> */
+
+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);
 }