1/*
2 * the shit we do to make it build. all code under it's original license
3 */
4
5#ifndef NETCOMPAT_H
6#define NETCOMPAT_H
7
8#ifndef _DEFAULT_SOURCE
9#define _DEFAULT_SOURCE 1
10#endif
11
12#ifndef _GNU_SOURCE
13#define _GNU_SOURCE 1
14#endif
15
16#ifndef _XOPEN_SOURCE
17#define _XOPEN_SOURCE 700
18#endif
19
20#include <signal.h>
21#include <stddef.h>
22#include <inttypes.h>
23#include <stdint.h>
24#include <stdarg.h>
25#include <limits.h>
26#include <time.h>
27#include <sys/time.h>
28#include <sys/types.h>
29#include <grp.h>
30#include <pwd.h>
31#include <byteswap.h>
32#include <sys/stat.h>
33#include <sys/sysmacros.h>
34
35#ifndef __RCSID
36#define __RCSID(x)
37#endif
38
39#ifndef __COPYRIGHT
40#define __COPYRIGHT(x)
41#endif
42
43#ifndef __printflike
44#if defined(__GNUC__) || defined(__clang__)
45#define __printflike(fmtarg, firstvararg) \
46 __attribute__((__format__(__printf__, fmtarg, firstvararg)))
47#else
48#define __printflike(fmtarg, firstvararg)
49#endif
50#endif
51
52#ifndef __dead
53#if defined(__GNUC__) || defined(__clang__)
54#define __dead __attribute__((__noreturn__))
55#else
56#define __dead
57#endif
58#endif
59
60#ifndef __predict_false
61#define __predict_false(exp) (exp)
62#endif
63
64#ifndef __predict_true
65#define __predict_true(exp) (exp)
66#endif
67
68#ifndef _DIAGASSERT
69#define _DIAGASSERT(exp) ((void)0)
70#endif
71
72#ifndef __weak_alias
73#define __weak_alias(sym, alias)
74#endif
75
76#ifndef NETCOMPAT_UNUSED
77#if defined(__GNUC__) || defined(__clang__)
78#define NETCOMPAT_UNUSED __attribute__((__unused__))
79#else
80#define NETCOMPAT_UNUSED
81#endif
82#endif
83
84#ifndef __UNCONST
85#define __UNCONST(a) ((void *)(uintptr_t)(const void *)(a))
86#endif
87
88#ifndef __CAST
89#define __CAST(dt, st) ((dt)(st))
90#endif
91
92#ifndef __arraycount
93#define __arraycount(__x) (sizeof(__x) / sizeof((__x)[0]))
94#endif
95
96#ifndef __USE
97#define __USE(a) ((void)(a))
98#endif
99
100#ifndef sig_t
101typedef void (*sig_t)(int);
102#endif
103
104#ifndef u_int
105typedef unsigned int u_int;
106#endif
107
108#ifndef u_long
109typedef unsigned long u_long;
110#endif
111
112#ifndef daddr_t
113typedef int64_t daddr_t;
114#endif
115
116#ifndef UID_MAX
117#define UID_MAX UINT_MAX
118#endif
119
120#ifndef GID_MAX
121#define GID_MAX UINT_MAX
122#endif
123
124#ifndef ALLPERMS
125#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
126#endif
127
128#ifndef timespeccmp
129#define timespeccmp(a, b, cmp) \
130 (((a)->tv_sec == (b)->tv_sec) ? \
131 ((a)->tv_nsec cmp (b)->tv_nsec) : \
132 ((a)->tv_sec cmp (b)->tv_sec))
133#endif
134
135#ifndef timespecclear
136#define timespecclear(tsp) \
137 do { \
138 (tsp)->tv_sec = 0; \
139 (tsp)->tv_nsec = 0; \
140 } while (0)
141#endif
142
143#ifndef timersub
144#define timersub(tvp, uvp, vvp) \
145 do { \
146 (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
147 (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
148 if ((vvp)->tv_usec < 0) { \
149 (vvp)->tv_sec--; \
150 (vvp)->tv_usec += 1000000; \
151 } \
152 } while (0)
153#endif
154
155#ifndef bswap32
156#define bswap32 bswap_32
157#endif
158
159#ifndef bswap16
160#define bswap16 bswap_16
161#endif
162
163#ifndef bswap64
164#define bswap64 bswap_64
165#endif
166
167#ifndef UF_APPEND
168#define UF_APPEND 0
169#define UF_IMMUTABLE 0
170#define UF_NODUMP 0
171#define UF_OPAQUE 0
172#define SF_APPEND 0
173#define SF_ARCHIVED 0
174#define SF_IMMUTABLE 0
175#endif
176
177extern const char *netcompat_progname;
178
179const char *getprogname(void);
180void setprogname(const char *);
181size_t strlcpy(char * __restrict, const char * __restrict, size_t);
182int reallocarr(void *, size_t, size_t);
183intmax_t strtoi(const char * __restrict, char ** __restrict, int,
184 intmax_t, intmax_t, int *);
185size_t shquote(const char *, char *, size_t);
186void vwarnc(int, const char *, va_list);
187void warnc(int, const char *, ...);
188__dead void verrc(int, int, const char *, va_list);
189__dead void errc(int, int, const char *, ...);
190int raise_default_signal(int);
191int setgroupent(int);
192int setpassent(int);
193
194#endif