1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*
** Zabbix
** Copyright (C) 2001-2014 Zabbix SIA
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
#ifndef ZABBIX_TYPES_H
#define ZABBIX_TYPES_H
#define ZBX_FS_DBL "%lf"
#define ZBX_FS_DBL_EXT(p) "%." #p "lf"
#define ZBX_PTR_SIZE sizeof(void *)
#if defined(_WINDOWS)
# include <strsafe.h>
# define zbx_stat(path, buf) __zbx_stat(path, buf)
# define zbx_open(pathname, flags) __zbx_open(pathname, flags | O_BINARY)
# ifndef __UINT64_C
# define __UINT64_C(x) x
# endif
# define zbx_uint64_t unsigned __int64
# define ZBX_FS_UI64 "%I64u"
# define ZBX_FS_UO64 "%I64o"
# define ZBX_FS_UX64 "%I64x"
# define snprintf _snprintf
# define alloca _alloca
# ifndef uint32_t
# define uint32_t __int32
# endif
# ifndef PATH_SEPARATOR
# define PATH_SEPARATOR '\\'
# endif
# define strcasecmp lstrcmpiA
typedef __int64 zbx_offset_t;
# define zbx_lseek(fd, offset, whence) _lseeki64(fd, (zbx_offset_t)(offset), whence)
#else /* _WINDOWS */
# define zbx_stat(path, buf) stat(path, buf)
# define zbx_open(pathname, flags) open(pathname, flags)
# ifndef __UINT64_C
# ifdef UINT64_C
# define __UINT64_C(c) (UINT64_C(c))
# else
# define __UINT64_C(c) (c ## ULL)
# endif
# endif
# define zbx_uint64_t uint64_t
# if __WORDSIZE == 64
# define ZBX_FS_UI64 "%lu"
# define ZBX_FS_UO64 "%lo"
# define ZBX_FS_UX64 "%lx"
# else
# ifdef HAVE_LONG_LONG_QU
# define ZBX_FS_UI64 "%qu"
# define ZBX_FS_UO64 "%qo"
# define ZBX_FS_UX64 "%qx"
# else
# define ZBX_FS_UI64 "%llu"
# define ZBX_FS_UO64 "%llo"
# define ZBX_FS_UX64 "%llx"
# endif
# endif
# ifndef PATH_SEPARATOR
# define PATH_SEPARATOR '/'
# endif
typedef off_t zbx_offset_t;
# define zbx_lseek(fd, offset, whence) lseek(fd, (zbx_offset_t)(offset), whence)
#endif /* _WINDOWS */
#define ZBX_FS_SIZE_T ZBX_FS_UI64
#define zbx_fs_size_t zbx_uint64_t /* use this type only in calls to printf() for formatting size_t */
#ifndef S_ISREG
# define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
#endif
#ifndef S_ISDIR
# define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
#endif
#define ZBX_STR2UINT64(uint, string) is_uint64(string, &uint)
#define ZBX_OCT2UINT64(uint, string) sscanf(string, ZBX_FS_UO64, &uint)
#define ZBX_HEX2UINT64(uint, string) sscanf(string, ZBX_FS_UX64, &uint)
#define ZBX_STR2UCHAR(var, string) var = (unsigned char)atoi(string)
#define ZBX_CONST_STRING(str) ""str
typedef struct
{
zbx_uint64_t lo;
zbx_uint64_t hi;
}
zbx_uint128_t;
#endif
|