pacemaker 2.1.5-a3f44794f94
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 */
34int daemon(int nochdir, int noclose);
35# endif
36
37# ifndef HAVE_SETENV
38 /* We supply a replacement function, but need a prototype */
39int 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 */
44char *strerror(int errnum);
45# endif
46
47# ifndef HAVE_STRCHRNUL
48 /* We supply a replacement function, but need a prototype */
49char *strchrnul(const char *s, int c_in);
50# endif
51
52# ifndef HAVE_ALPHASORT
53# include <dirent.h>
54int alphasort(const void *dirent1, const void *dirent2);
55# endif
56
57# ifndef HAVE_STRNLEN
58size_t strnlen(const char *s, size_t maxlen);
59# else
60# define USE_GNU
61# endif
62
63# ifndef HAVE_STRNDUP
64char *strndup(const char *str, size_t len);
65# else
66# define USE_GNU
67# endif
68
69# if HAVE_DBUS
70# ifndef HAVE_DBUSBASICVALUE
71# include <stdint.h>
72# include <dbus/dbus.h>
77typedef struct
78{
79 uint32_t first32;
80 uint32_t second32;
81} DBus8ByteStruct;
82
93typedef 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(HAVE_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
char * strndup(const char *str, size_t len)
char * strerror(int errnum)
int setenv(const char *name, const char *value, int why)
char * strchrnul(const char *s, int c_in)
int alphasort(const void *dirent1, const void *dirent2)
int daemon(int nochdir, int noclose)
size_t strnlen(const char *s, size_t maxlen)