prevent small leak when resources are exhausted -- Mike Slifcak
[rrdtool.git] / src / rrd_tool.h
index 7280e74..92c99ae 100644 (file)
@@ -110,6 +110,10 @@ int isnan(double value);
 #define isnan _isnan
 #define finite _finite
 #define isinf(a) (_fpclass(a) == _FPCLASS_NINF || _fpclass(a) == _FPCLASS_PINF)
+struct tm* localtime_r(const time_t *timep, struct tm* result);
+char* ctime_r(const time_t *timep, char* result);
+struct tm* gmtime_r(const time_t *timep, struct tm* result);
+char *strtok_r(char *str, const char *sep, char **last);
 #endif
 
 /* local include files -- need to be after the system ones */
@@ -129,12 +133,14 @@ int isnan(double value);
 /* rrd info interface */
 enum info_type   { RD_I_VAL=0,
               RD_I_CNT,
-              RD_I_STR  };
+              RD_I_STR, 
+                  RD_I_INT };
 
 typedef union infoval { 
     unsigned long u_cnt; 
     rrd_value_t   u_val;
     char         *u_str;
+       int                       u_int;
 } infoval;
 
 typedef struct info_t {
@@ -144,8 +150,10 @@ typedef struct info_t {
     struct info_t   *next;
 } info_t;
 
-
 info_t *rrd_info(int, char **);
+info_t *rrd_update_v(int, char **);
+char * sprintf_alloc(char *, ...);
+info_t *info_push(info_t *, char *, enum info_type, infoval);
 
 /* HELPER FUNCTIONS */
 
@@ -160,10 +168,13 @@ int rrd_fetch_fn(char *filename, enum cf_en cf_idx,
                 rrd_value_t **data);
 
 void rrd_free(rrd_t *rrd);
+void rrd_freemem(void *mem);
 void rrd_init(rrd_t *rrd);
 
 int rrd_open(char *file_name, FILE **in_file, rrd_t *rrd, int rdwr);
+int rrd_open_r(char *file_name, FILE **in_file, rrd_t *rrd, int rdwr);
 int readfile(char *file, char **buffer, int skipfirst);
+int readfile_r(char *file, char **buffer, int skipfirst);
 
 #define RRD_READONLY    0
 #define RRD_READWRITE   1
@@ -173,6 +184,14 @@ enum dst_en dst_conv(char *string);
 long ds_match(rrd_t *rrd,char *ds_nam);
 double rrd_diff(char *a, char *b);
 
+    /* rrd_strerror is thread safe, but still it uses a global buffer
+       (but one per thread), thus subsequent calls within a single
+       thread overwrite the same buffer */
+const char *rrd_strerror(int err);
+
+/* just a defensive work-around... */
+#define strerror(x) rrd_strerror(x)
+
 #endif
 
 #ifdef  __cplusplus