2 * collectd - src/collectd.h
3 * Copyright (C) 2005,2006 Florian octo Forster
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
24 * Florian octo Forster <octo at collectd.org>
47 #include <sys/types.h>
62 #define WEXITSTATUS(stat_val) ((unsigned int)(stat_val) >> 8)
65 #define WIFEXITED(stat_val) (((stat_val)&255) == 0)
70 #if TIME_WITH_SYS_TIME
81 #include <sys/socket.h>
84 #if NAN_STATIC_DEFAULT
86 /* #endif NAN_STATIC_DEFAULT*/
89 #define DISABLE_ISOC99 1
90 #define __USE_ISOC99 1
91 #endif /* !defined(__USE_ISOC99) */
96 #endif /* DISABLE_ISOC99 */
97 /* #endif NAN_STATIC_ISOC */
103 #define NAN (0.0 / 0.0)
105 #define isnan(f) ((f) != (f))
106 #endif /* !defined(isnan) */
108 #define isfinite(f) (((f) - (f)) == 0.0)
111 #define isinf(f) (!isfinite(f) && !isnan(f))
113 #endif /* NAN_ZERO_ZERO */
115 /* Try really, really hard to determine endianess. Under NexentaStor 1.0.2 this
116 * information is in <sys/isa_defs.h>, possibly some other Solaris versions do
120 #elif HAVE_SYS_ISA_DEFS_H
121 #include <sys/isa_defs.h>
125 #if defined(_BYTE_ORDER)
126 #define BYTE_ORDER _BYTE_ORDER
127 #elif defined(__BYTE_ORDER)
128 #define BYTE_ORDER __BYTE_ORDER
129 #elif defined(__DARWIN_BYTE_ORDER)
130 #define BYTE_ORDER __DARWIN_BYTE_ORDER
134 #if defined(_BIG_ENDIAN)
135 #define BIG_ENDIAN _BIG_ENDIAN
136 #elif defined(__BIG_ENDIAN)
137 #define BIG_ENDIAN __BIG_ENDIAN
138 #elif defined(__DARWIN_BIG_ENDIAN)
139 #define BIG_ENDIAN __DARWIN_BIG_ENDIAN
142 #ifndef LITTLE_ENDIAN
143 #if defined(_LITTLE_ENDIAN)
144 #define LITTLE_ENDIAN _LITTLE_ENDIAN
145 #elif defined(__LITTLE_ENDIAN)
146 #define LITTLE_ENDIAN __LITTLE_ENDIAN
147 #elif defined(__DARWIN_LITTLE_ENDIAN)
148 #define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
152 #if defined(BIG_ENDIAN) && !defined(LITTLE_ENDIAN)
154 #define BIG_ENDIAN 4321
155 #define LITTLE_ENDIAN 1234
156 #define BYTE_ORDER BIG_ENDIAN
157 #elif !defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
159 #define BIG_ENDIAN 4321
160 #define LITTLE_ENDIAN 1234
161 #define BYTE_ORDER LITTLE_ENDIAN
164 #if !defined(BYTE_ORDER) || !defined(BIG_ENDIAN)
165 #error "Cannot determine byte order"
170 #define NAMLEN(dirent) strlen((dirent)->d_name)
172 #define dirent direct
173 #define NAMLEN(dirent) (dirent)->d_namlen
175 #include <sys/ndir.h>
186 #include <sys/param.h>
190 #define PACKAGE_NAME "collectd"
194 #define PREFIX "/opt/" PACKAGE_NAME
198 #define SYSCONFDIR PREFIX "/etc"
202 #define CONFIGFILE SYSCONFDIR "/collectd.conf"
205 #ifndef LOCALSTATEDIR
206 #define LOCALSTATEDIR PREFIX "/var"
209 #ifndef PKGLOCALSTATEDIR
210 #define PKGLOCALSTATEDIR PREFIX "/var/lib/" PACKAGE_NAME
214 #define PIDFILE PREFIX "/var/run/" PACKAGE_NAME ".pid"
218 #define PLUGINDIR PREFIX "/lib/" PACKAGE_NAME
222 #define PKGDATADIR PREFIX "/share/" PACKAGE_NAME
225 #ifndef COLLECTD_GRP_NAME
226 #define COLLECTD_GRP_NAME "collectd"
229 #ifndef COLLECTD_DEFAULT_INTERVAL
230 #define COLLECTD_DEFAULT_INTERVAL 10.0
233 #ifndef COLLECTD_USERAGENT
234 #define COLLECTD_USERAGENT PACKAGE_NAME "/" PACKAGE_VERSION
237 /* Only enable __attribute__() for compilers known to support it. */
238 #if !defined(__clang__) && !defined(__GNUC__)
239 #define __attribute__(x) /**/
242 #if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__
246 #pragma GCC poison strcpy strcat strtok
250 * Special hack for the perl plugin: Because the later included perl.h defines
251 * a macro which is never used, but contains `sprintf', we cannot poison that
252 * identifies just yet. The parl plugin will do that itself once perl.h is
255 #ifndef DONT_POISON_SPRINTF_YET
256 #if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__
258 #pragma GCC poison sprintf
263 #define GAUGE_FORMAT "%.15g"
268 #endif /* COLLECTD_H */