1 /*****************************************************************************
2 * RRDtool 1.0.33 Copyright Tobias Oetiker, 1997 - 2000
3 *****************************************************************************
4 * rrd_tool.h Common Header File
5 *****************************************************************************/
15 #include "../confignt/config.h"
22 #ifdef MUST_DISABLE_SIGFPE
26 #ifdef MUST_DISABLE_FPMASK
27 #include <floatingpoint.h>
38 # include <sys/param.h>
48 /* Sorry: don't know autoconf as well how to check the exist of
49 dirent.h ans sys/stat.h
54 # define NAMLEN(dirent) strlen((dirent)->d_name)
56 # define dirent direct
57 # define NAMLEN(dirent) (dirent)->d_namlen
59 # include <sys/ndir.h>
70 # include <sys/types.h>
74 # include <sys/stat.h>
82 # include <sys/time.h>
85 # include <sys/times.h>
87 #if HAVE_SYS_RESOURCE_H
88 # include <sys/resource.h>
89 #if (defined(__svr4__) && defined(__sun__))
90 /* Solaris headers (pre 2.6) don't have a getrusage prototype.
92 extern int getrusage(int, struct rusage *);
93 #endif /* __svr4__ && __sun__ */
100 /* unix-only includes */
102 int isnan(double value);
107 /* Win32 only includes */
109 #include <float.h> /* for _isnan */
111 #define finite _finite
112 #define isinf(a) (_fpclass(a) == _FPCLASS_NINF || _fpclass(a) == _FPCLASS_PINF)
113 struct tm* localtime_r(const time_t *timep, struct tm* result);
114 char* ctime_r(const time_t *timep, char* result);
115 struct tm* gmtime_r(const time_t *timep, struct tm* result);
116 char *strtok_r(char *str, const char *sep, char **last);
119 /* local include files -- need to be after the system ones */
121 #include "rrd_format.h"
124 #define max(a,b) ((a) > (b) ? (a) : (b))
128 #define min(a,b) ((a) < (b) ? (a) : (b))
131 #define DIM(x) (sizeof(x)/sizeof(x[0]))
133 /* rrd info interface */
134 enum info_type { RD_I_VAL=0,
138 typedef union infoval {
144 typedef struct info_t {
152 info_t *rrd_info(int, char **);
154 /* HELPER FUNCTIONS */
156 int PngSize(FILE *, long *, long *);
158 int rrd_create_fn(char *file_name, rrd_t *rrd);
159 int rrd_fetch_fn(char *filename, enum cf_en cf_idx,
160 time_t *start,time_t *end,
162 unsigned long *ds_cnt,
166 void rrd_free(rrd_t *rrd);
167 void rrd_freemem(void *mem);
168 void rrd_init(rrd_t *rrd);
170 int rrd_open(char *file_name, FILE **in_file, rrd_t *rrd, int rdwr);
171 int rrd_open_r(char *file_name, FILE **in_file, rrd_t *rrd, int rdwr);
172 int readfile(char *file, char **buffer, int skipfirst);
173 int readfile_r(char *file, char **buffer, int skipfirst);
175 #define RRD_READONLY 0
176 #define RRD_READWRITE 1
178 enum cf_en cf_conv(char *string);
179 enum dst_en dst_conv(char *string);
180 long ds_match(rrd_t *rrd,char *ds_nam);
181 double rrd_diff(char *a, char *b);
183 /* rrd_strerror is thread safe, but still it uses a global buffer
184 (but one per thread), thus subsequent calls within a single
185 thread overwrite the same buffer */
186 const char *rrd_strerror(int err);
188 /* just a defensive work-around... */
189 #define strerror(x) rrd_strerror(x)