main netmisc / compat / netcompat.h
  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