1 /*****************************************************************************
2 * RRDtool 1.3rc9 Copyright by Tobi Oetiker, 1997-2008
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 #ifdef HAVE_CONFIG_H
14 #include "../rrd_config.h"
15 #elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
16 #include "../win32/config.h"
17 #endif
19 #include "rrd.h"
21 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
23 /* Win32 only includes */
25 #include <float.h> /* for _isnan */
26 #include <io.h> /* for chdir */
28 struct tm *localtime_r(
29 const time_t *timep,
30 struct tm *result);
31 char *ctime_r(
32 const time_t *timep,
33 char *result);
34 struct tm *gmtime_r(
35 const time_t *timep,
36 struct tm *result);
37 char *strtok_r(
38 char *str,
39 const char *sep,
40 char **last);
42 #else
44 /* unix-only includes */
45 #if !defined isnan && !defined HAVE_ISNAN
46 int isnan(
47 double value);
48 #endif
50 #endif
52 /* local include files -- need to be after the system ones */
53 #include "rrd_getopt.h"
54 #include "rrd_format.h"
56 #ifndef max
57 #define max(a,b) ((a) > (b) ? (a) : (b))
58 #endif
60 #ifndef min
61 #define min(a,b) ((a) < (b) ? (a) : (b))
62 #endif
64 #define DIM(x) (sizeof(x)/sizeof(x[0]))
66 char *sprintf_alloc(
67 char *,
68 ...);
70 /* HELPER FUNCTIONS */
72 int PngSize(
73 FILE *,
74 long *,
75 long *);
77 int rrd_create_fn(
78 const char *file_name,
79 rrd_t *rrd);
80 int rrd_fetch_fn(
81 const char *filename,
82 enum cf_en cf_idx,
83 time_t *start,
84 time_t *end,
85 unsigned long *step,
86 unsigned long *ds_cnt,
87 char ***ds_namv,
88 rrd_value_t **data);
90 void rrd_free(
91 rrd_t *rrd);
92 void rrd_freemem(
93 void *mem);
94 void rrd_init(
95 rrd_t *rrd);
97 rrd_file_t *rrd_open(
98 const char *const file_name,
99 rrd_t *rrd,
100 unsigned rdwr);
101 void rrd_dontneed(
102 rrd_file_t *rrd_file,
103 rrd_t *rrd);
104 int rrd_close(
105 rrd_file_t *rrd_file);
106 ssize_t rrd_read(
107 rrd_file_t *rrd_file,
108 void *buf,
109 size_t count);
110 ssize_t rrd_write(
111 rrd_file_t *rrd_file,
112 const void *buf,
113 size_t count);
114 void rrd_flush(
115 rrd_file_t *rrd_file);
116 off_t rrd_seek(
117 rrd_file_t *rrd_file,
118 off_t off,
119 int whence);
120 off_t rrd_tell(
121 rrd_file_t *rrd_file);
122 int rrd_lock(
123 rrd_file_t *file);
125 #define RRD_READONLY (1<<0)
126 #define RRD_READWRITE (1<<1)
127 #define RRD_CREAT (1<<2)
128 #define RRD_READAHEAD (1<<3)
129 #define RRD_COPY (1<<4)
131 enum cf_en cf_conv(
132 const char *string);
133 enum dst_en dst_conv(
134 char *string);
135 long ds_match(
136 rrd_t *rrd,
137 char *ds_nam);
138 double rrd_diff(
139 char *a,
140 char *b);
142 #endif
144 #ifdef __cplusplus
145 }
146 #endif