pacemaker  2.1.3-ea053b43a
Scalable High-Availability cluster resource manager
portability.h
Go to the documentation of this file.
1 /*
2  * Copyright 2001-2021 the Pacemaker project contributors
3  *
4  * The version control history for this file may have further details.
5  *
6  * This source code is licensed under the GNU Lesser General Public License
7  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8  */
9 #ifndef PCMK__PORTABILITY__H
10 # define PCMK__PORTABILITY__H
11 
12 /* This header provides replacements for required definitions and declarations
13  * that certain supported build environments don't provide
14  */
15 
16 /* This header *MUST* be included before any system headers, because the
17  * following definition can change the behavior of some of them.
18  */
19 # undef _GNU_SOURCE /* in case it was defined on the command line */
20 # define _GNU_SOURCE
21 
22 /* Please leave this as the first #include - Solaris needs it there */
23 # ifdef HAVE_CONFIG_H
24 # ifndef PCMK__CONFIG_H
25 # define PCMK__CONFIG_H
26 # include <config.h>
27 # endif
28 # endif
29 
30 /* Prototypes for libreplace functions */
31 
32 # ifndef HAVE_DAEMON
33  /* We supply a replacement function, but need a prototype */
34 int daemon(int nochdir, int noclose);
35 # endif
36 
37 # ifndef HAVE_SETENV
38  /* We supply a replacement function, but need a prototype */
39 int setenv(const char *name, const char *value, int why);
40 # endif
41 
42 # ifndef HAVE_STRERROR
43  /* We supply a replacement function, but need a prototype */
44 char *strerror(int errnum);
45 # endif
46 
47 # ifndef HAVE_STRCHRNUL
48  /* We supply a replacement function, but need a prototype */
49 char *strchrnul(const char *s, int c_in);
50 # endif
51 
52 # ifndef HAVE_ALPHASORT
53 # include <dirent.h>
54 int alphasort(const void *dirent1, const void *dirent2);
55 # endif
56 
57 # ifndef HAVE_STRNLEN
58 size_t strnlen(const char *s, size_t maxlen);
59 # else
60 # define USE_GNU
61 # endif
62 
63 # ifndef HAVE_STRNDUP
64 char *strndup(const char *str, size_t len);
65 # else
66 # define USE_GNU
67 # endif
68 
69 # if SUPPORT_DBUS
70 # ifndef HAVE_DBUSBASICVALUE
71 # include <stdint.h>
72 # include <dbus/dbus.h>
77 typedef struct
78 {
79  uint32_t first32;
80  uint32_t second32;
81 } DBus8ByteStruct;
82 
93 typedef union
94 {
95  unsigned char bytes[8];
96  int16_t i16;
97  uint16_t u16;
98  int32_t i32;
99  uint32_t u32;
100  uint32_t bool_val;
101 # ifdef DBUS_HAVE_INT64
102  int64_t i64;
103  uint64_t u64;
104 # endif
105  DBus8ByteStruct eight;
106  double dbl;
107  unsigned char byt;
108  char *str;
109  int fd;
110 } DBusBasicValue;
111 # endif // !defined(HAVE_DBUSBASICVALUE)
112 # endif // !defined(SUPPORT_DBUS)
113 
114 // Replacement constants for Linux-specific errno values
115 
116 # include <errno.h>
117 
118 # ifndef ENOTUNIQ
119 # define PCMK__ENOTUNIQ
120 # define ENOTUNIQ 190
121 # endif
122 
123 # ifndef ECOMM
124 # define PCMK__ECOMM
125 # define ECOMM 191
126 # endif
127 
128 # ifndef ELIBACC
129 # define PCMK__ELIBACC
130 # define ELIBACC 192
131 # endif
132 
133 # ifndef EREMOTEIO
134 # define PCMK__EREMOTIO
135 # define EREMOTEIO 193
136 # endif
137 
138 # ifndef ENOKEY
139 # define PCMK__ENOKEY
140 # define ENOKEY 195
141 # endif
142 
143 # ifndef ENODATA
144 # define PCMK__ENODATA
145 # define ENODATA 196
146 # endif
147 
148 # ifndef ETIME
149 # define PCMK__ETIME
150 # define ETIME 197
151 # endif
152 
153 # ifndef EKEYREJECTED
154 # define PCMK__EKEYREJECTED
155 # define EKEYREJECTED 200
156 # endif
157 
158 #endif // PCMK__PORTABILITY__H
const char * name
Definition: cib.c:24
int alphasort(const void *dirent1, const void *dirent2)
char * strerror(int errnum)
char * strndup(const char *str, size_t len)
int daemon(int nochdir, int noclose)
int setenv(const char *name, const char *value, int why)
size_t strnlen(const char *s, size_t maxlen)
char * strchrnul(const char *s, int c_in)