1 /*****************************************************************************
2 * RRDtool 1.4.5 Copyright by Tobi Oetiker, 1997-2010
3 *****************************************************************************
4 * rrd_tool.h Common Header File
5 *****************************************************************************/
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 #ifndef _RRD_TOOL_H
11 #define _RRD_TOOL_H
13 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
14 #include "../win32/config.h"
15 #else
16 #ifdef HAVE_CONFIG_H
17 #include "../rrd_config.h"
18 #endif
19 #endif
21 #include "rrd.h"
23 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
25 /* Win32 only includes */
27 #include <float.h> /* for _isnan */
28 #include <io.h> /* for chdir */
30 struct tm *localtime_r(
31 const time_t *timep,
32 struct tm *result);
33 char *ctime_r(
34 const time_t *timep,
35 char *result);
36 struct tm *gmtime_r(
37 const time_t *timep,
38 struct tm *result);
39 char *strtok_r(
40 char *str,
41 const char *sep,
42 char **last);
44 #else
46 /* unix-only includes */
47 #if !defined(isnan) && !defined(HAVE_ISNAN)
48 int isnan(
49 double value);
50 #endif
52 #endif
54 /* local include files -- need to be after the system ones */
55 #ifdef HAVE_GETOPT_LONG
56 #define _GNU_SOURCE
57 #include <getopt.h>
58 #else
59 #include "rrd_getopt.h"
60 #endif
62 #include "rrd_format.h"
64 #ifndef max
65 #define max(a,b) ((a) > (b) ? (a) : (b))
66 #endif
68 #ifndef min
69 #define min(a,b) ((a) < (b) ? (a) : (b))
70 #endif
72 #define DIM(x) (sizeof(x)/sizeof(x[0]))
74 char *sprintf_alloc(
75 char *,
76 ...);
78 /* HELPER FUNCTIONS */
80 int PngSize(
81 FILE *,
82 long *,
83 long *);
85 int rrd_create_fn(
86 const char *file_name,
87 rrd_t *rrd);
88 int rrd_fetch_fn (const char *filename,
89 enum cf_en cf_idx,
90 time_t *start,
91 time_t *end,
92 unsigned long *step,
93 unsigned long *ds_cnt,
94 char ***ds_namv,
95 rrd_value_t **data);
98 #ifdef HAVE_LIBDBI
99 int rrd_fetch_fn_libdbi(const char *filename, enum cf_en cf_idx,
100 time_t *start,time_t *end,
101 unsigned long *step,
102 unsigned long *ds_cnt,
103 char ***ds_namv,
104 rrd_value_t **data);
105 #endif
107 #define RRD_READONLY (1<<0)
108 #define RRD_READWRITE (1<<1)
109 #define RRD_CREAT (1<<2)
110 #define RRD_READAHEAD (1<<3)
111 #define RRD_COPY (1<<4)
112 #define RRD_EXCL (1<<5)
114 enum cf_en cf_conv(
115 const char *string);
116 enum dst_en dst_conv(
117 char *string);
118 long ds_match(
119 rrd_t *rrd,
120 char *ds_nam);
121 off_t rrd_get_header_size(
122 rrd_t *rrd);
123 double rrd_diff(
124 char *a,
125 char *b);
127 #endif /* _RRD_TOOL_H */
129 #ifdef __cplusplus
130 }
131 #endif