xref: /minix3/external/bsd/tmux/dist/compat.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1*0a6a1f1dSLionel Sambuc /* Id */
2eda6f593SDavid van Moolenbroek 
3eda6f593SDavid van Moolenbroek /*
4eda6f593SDavid van Moolenbroek  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
5eda6f593SDavid van Moolenbroek  *
6eda6f593SDavid van Moolenbroek  * Permission to use, copy, modify, and distribute this software for any
7eda6f593SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
8eda6f593SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
9eda6f593SDavid van Moolenbroek  *
10eda6f593SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11eda6f593SDavid van Moolenbroek  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12eda6f593SDavid van Moolenbroek  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13eda6f593SDavid van Moolenbroek  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14eda6f593SDavid van Moolenbroek  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
15eda6f593SDavid van Moolenbroek  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
16eda6f593SDavid van Moolenbroek  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17eda6f593SDavid van Moolenbroek  */
18eda6f593SDavid van Moolenbroek 
19eda6f593SDavid van Moolenbroek #ifndef COMPAT_H
20eda6f593SDavid van Moolenbroek #define COMPAT_H
21eda6f593SDavid van Moolenbroek 
22eda6f593SDavid van Moolenbroek #ifndef __GNUC__
23eda6f593SDavid van Moolenbroek #define __attribute__(a)
24eda6f593SDavid van Moolenbroek #endif
25eda6f593SDavid van Moolenbroek 
26eda6f593SDavid van Moolenbroek #ifndef __dead
27eda6f593SDavid van Moolenbroek #define __dead __attribute__ ((__noreturn__))
28eda6f593SDavid van Moolenbroek #endif
29eda6f593SDavid van Moolenbroek #ifndef __packed
30eda6f593SDavid van Moolenbroek #define __packed __attribute__ ((__packed__))
31eda6f593SDavid van Moolenbroek #endif
32eda6f593SDavid van Moolenbroek 
33*0a6a1f1dSLionel Sambuc #ifndef ECHOPRT
34*0a6a1f1dSLionel Sambuc #define ECHOPRT 0
35*0a6a1f1dSLionel Sambuc #endif
36*0a6a1f1dSLionel Sambuc 
37eda6f593SDavid van Moolenbroek #ifndef HAVE_BSD_TYPES
38eda6f593SDavid van Moolenbroek typedef uint8_t u_int8_t;
39eda6f593SDavid van Moolenbroek typedef uint16_t u_int16_t;
40eda6f593SDavid van Moolenbroek typedef uint32_t u_int32_t;
41eda6f593SDavid van Moolenbroek typedef uint64_t u_int64_t;
42eda6f593SDavid van Moolenbroek #endif
43eda6f593SDavid van Moolenbroek 
44eda6f593SDavid van Moolenbroek #ifndef HAVE_PATHS_H
45eda6f593SDavid van Moolenbroek #define	_PATH_BSHELL	"/bin/sh"
46eda6f593SDavid van Moolenbroek #define	_PATH_TMP	"/tmp/"
47eda6f593SDavid van Moolenbroek #define _PATH_DEVNULL	"/dev/null"
48eda6f593SDavid van Moolenbroek #define _PATH_TTY	"/dev/tty"
49eda6f593SDavid van Moolenbroek #define _PATH_DEV	"/dev/"
50eda6f593SDavid van Moolenbroek #endif
51eda6f593SDavid van Moolenbroek 
52eda6f593SDavid van Moolenbroek #ifdef HAVE_QUEUE_H
53eda6f593SDavid van Moolenbroek #include <sys/queue.h>
54eda6f593SDavid van Moolenbroek #else
55eda6f593SDavid van Moolenbroek #include "compat/queue.h"
56eda6f593SDavid van Moolenbroek #endif
57eda6f593SDavid van Moolenbroek 
58eda6f593SDavid van Moolenbroek #ifdef HAVE_TREE_H
59eda6f593SDavid van Moolenbroek #include <sys/tree.h>
60eda6f593SDavid van Moolenbroek #else
61eda6f593SDavid van Moolenbroek #include "compat/tree.h"
62eda6f593SDavid van Moolenbroek #endif
63eda6f593SDavid van Moolenbroek 
64eda6f593SDavid van Moolenbroek #ifdef HAVE_BITSTRING_H
65eda6f593SDavid van Moolenbroek #include <bitstring.h>
66eda6f593SDavid van Moolenbroek #else
67eda6f593SDavid van Moolenbroek #include "compat/bitstring.h"
68eda6f593SDavid van Moolenbroek #endif
69eda6f593SDavid van Moolenbroek 
70eda6f593SDavid van Moolenbroek #ifdef HAVE_PATHS_H
71eda6f593SDavid van Moolenbroek #include <paths.h>
72eda6f593SDavid van Moolenbroek #endif
73eda6f593SDavid van Moolenbroek 
74eda6f593SDavid van Moolenbroek #ifdef HAVE_FORKPTY
75eda6f593SDavid van Moolenbroek #ifdef HAVE_LIBUTIL_H
76eda6f593SDavid van Moolenbroek #include <libutil.h>
77eda6f593SDavid van Moolenbroek #endif
78eda6f593SDavid van Moolenbroek #ifdef HAVE_PTY_H
79eda6f593SDavid van Moolenbroek #include <pty.h>
80eda6f593SDavid van Moolenbroek #endif
81eda6f593SDavid van Moolenbroek #ifdef HAVE_UTIL_H
82eda6f593SDavid van Moolenbroek #include <util.h>
83eda6f593SDavid van Moolenbroek #endif
84eda6f593SDavid van Moolenbroek #endif
85eda6f593SDavid van Moolenbroek 
86eda6f593SDavid van Moolenbroek #ifdef HAVE_VIS
87eda6f593SDavid van Moolenbroek #include <vis.h>
88eda6f593SDavid van Moolenbroek #else
89eda6f593SDavid van Moolenbroek #include "compat/vis.h"
90eda6f593SDavid van Moolenbroek #endif
91eda6f593SDavid van Moolenbroek 
92eda6f593SDavid van Moolenbroek #ifdef HAVE_IMSG
93eda6f593SDavid van Moolenbroek #include <imsg.h>
94eda6f593SDavid van Moolenbroek #else
95eda6f593SDavid van Moolenbroek #include "compat/imsg.h"
96eda6f593SDavid van Moolenbroek #endif
97eda6f593SDavid van Moolenbroek 
98eda6f593SDavid van Moolenbroek #ifdef HAVE_STDINT_H
99eda6f593SDavid van Moolenbroek #include <stdint.h>
100eda6f593SDavid van Moolenbroek #else
101eda6f593SDavid van Moolenbroek #include <inttypes.h>
102eda6f593SDavid van Moolenbroek #endif
103eda6f593SDavid van Moolenbroek 
104eda6f593SDavid van Moolenbroek #ifdef BROKEN_CMSG_FIRSTHDR
105eda6f593SDavid van Moolenbroek #undef CMSG_FIRSTHDR
106eda6f593SDavid van Moolenbroek #define CMSG_FIRSTHDR(mhdr) \
107eda6f593SDavid van Moolenbroek 	((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
108eda6f593SDavid van Moolenbroek 	    (struct cmsghdr *)(mhdr)->msg_control :	    \
109eda6f593SDavid van Moolenbroek 	    (struct cmsghdr *)NULL)
110eda6f593SDavid van Moolenbroek #endif
111eda6f593SDavid van Moolenbroek 
112eda6f593SDavid van Moolenbroek #ifndef CMSG_ALIGN
113eda6f593SDavid van Moolenbroek #ifdef _CMSG_DATA_ALIGN
114eda6f593SDavid van Moolenbroek #define CMSG_ALIGN _CMSG_DATA_ALIGN
115eda6f593SDavid van Moolenbroek #else
116eda6f593SDavid van Moolenbroek #define CMSG_ALIGN(len) (((len) + sizeof(long) - 1) & ~(sizeof(long) - 1))
117eda6f593SDavid van Moolenbroek #endif
118eda6f593SDavid van Moolenbroek #endif
119eda6f593SDavid van Moolenbroek 
120eda6f593SDavid van Moolenbroek #ifndef CMSG_SPACE
121eda6f593SDavid van Moolenbroek #define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
122eda6f593SDavid van Moolenbroek #endif
123eda6f593SDavid van Moolenbroek 
124eda6f593SDavid van Moolenbroek #ifndef CMSG_LEN
125eda6f593SDavid van Moolenbroek #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
126eda6f593SDavid van Moolenbroek #endif
127eda6f593SDavid van Moolenbroek 
128*0a6a1f1dSLionel Sambuc #ifndef O_DIRECTORY
129*0a6a1f1dSLionel Sambuc #define O_DIRECTORY 0
130*0a6a1f1dSLionel Sambuc #endif
131*0a6a1f1dSLionel Sambuc 
132eda6f593SDavid van Moolenbroek #ifndef INFTIM
133eda6f593SDavid van Moolenbroek #define INFTIM -1
134eda6f593SDavid van Moolenbroek #endif
135eda6f593SDavid van Moolenbroek 
136eda6f593SDavid van Moolenbroek #ifndef WAIT_ANY
137eda6f593SDavid van Moolenbroek #define WAIT_ANY -1
138eda6f593SDavid van Moolenbroek #endif
139eda6f593SDavid van Moolenbroek 
140eda6f593SDavid van Moolenbroek #ifndef SUN_LEN
141eda6f593SDavid van Moolenbroek #define SUN_LEN(sun) (sizeof (sun)->sun_path)
142eda6f593SDavid van Moolenbroek #endif
143eda6f593SDavid van Moolenbroek 
144eda6f593SDavid van Moolenbroek #ifndef timercmp
145eda6f593SDavid van Moolenbroek #define	timercmp(tvp, uvp, cmp)						\
146eda6f593SDavid van Moolenbroek 	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
147eda6f593SDavid van Moolenbroek 	    ((tvp)->tv_usec cmp (uvp)->tv_usec) :			\
148eda6f593SDavid van Moolenbroek 	    ((tvp)->tv_sec cmp (uvp)->tv_sec))
149eda6f593SDavid van Moolenbroek #endif
150eda6f593SDavid van Moolenbroek 
151eda6f593SDavid van Moolenbroek #ifndef timeradd
152eda6f593SDavid van Moolenbroek #define	timeradd(tvp, uvp, vvp)						\
153eda6f593SDavid van Moolenbroek 	do {								\
154eda6f593SDavid van Moolenbroek 		(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec;		\
155eda6f593SDavid van Moolenbroek 		(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec;	\
156eda6f593SDavid van Moolenbroek 		if ((vvp)->tv_usec >= 1000000) {			\
157eda6f593SDavid van Moolenbroek 			(vvp)->tv_sec++;				\
158eda6f593SDavid van Moolenbroek 			(vvp)->tv_usec -= 1000000;			\
159eda6f593SDavid van Moolenbroek 		}							\
160eda6f593SDavid van Moolenbroek 	} while (0)
161eda6f593SDavid van Moolenbroek #endif
162eda6f593SDavid van Moolenbroek 
163*0a6a1f1dSLionel Sambuc #ifndef timersub
164*0a6a1f1dSLionel Sambuc #define timersub(tvp, uvp, vvp)                                         \
165*0a6a1f1dSLionel Sambuc 	do {                                                            \
166*0a6a1f1dSLionel Sambuc 		(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;          \
167*0a6a1f1dSLionel Sambuc 		(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;       \
168*0a6a1f1dSLionel Sambuc 		if ((vvp)->tv_usec < 0) {                               \
169*0a6a1f1dSLionel Sambuc 			(vvp)->tv_sec--;                                \
170*0a6a1f1dSLionel Sambuc 			(vvp)->tv_usec += 1000000;                      \
171*0a6a1f1dSLionel Sambuc 		}                                                       \
172*0a6a1f1dSLionel Sambuc 	} while (0)
173*0a6a1f1dSLionel Sambuc #endif
174*0a6a1f1dSLionel Sambuc 
175eda6f593SDavid van Moolenbroek #ifndef TTY_NAME_MAX
176eda6f593SDavid van Moolenbroek #define TTY_NAME_MAX 32
177eda6f593SDavid van Moolenbroek #endif
178eda6f593SDavid van Moolenbroek 
179eda6f593SDavid van Moolenbroek #ifndef HAVE_BZERO
180eda6f593SDavid van Moolenbroek #undef bzero
181eda6f593SDavid van Moolenbroek #define bzero(buf, len) memset(buf, 0, len);
182eda6f593SDavid van Moolenbroek #endif
183eda6f593SDavid van Moolenbroek 
184eda6f593SDavid van Moolenbroek #ifndef HAVE_CLOSEFROM
185eda6f593SDavid van Moolenbroek /* closefrom.c */
186eda6f593SDavid van Moolenbroek void	closefrom(int);
187eda6f593SDavid van Moolenbroek #endif
188eda6f593SDavid van Moolenbroek 
189eda6f593SDavid van Moolenbroek #ifndef HAVE_STRCASESTR
190eda6f593SDavid van Moolenbroek /* strcasestr.c */
191eda6f593SDavid van Moolenbroek char		*strcasestr(const char *, const char *);
192eda6f593SDavid van Moolenbroek #endif
193eda6f593SDavid van Moolenbroek 
194eda6f593SDavid van Moolenbroek #ifndef HAVE_STRSEP
195eda6f593SDavid van Moolenbroek /* strsep.c */
196eda6f593SDavid van Moolenbroek char		*strsep(char **, const char *);
197eda6f593SDavid van Moolenbroek #endif
198eda6f593SDavid van Moolenbroek 
199eda6f593SDavid van Moolenbroek #ifndef HAVE_STRTONUM
200eda6f593SDavid van Moolenbroek /* strtonum.c */
201eda6f593SDavid van Moolenbroek long long	 strtonum(const char *, long long, long long, const char **);
202eda6f593SDavid van Moolenbroek #endif
203eda6f593SDavid van Moolenbroek 
204eda6f593SDavid van Moolenbroek #ifndef HAVE_STRLCPY
205eda6f593SDavid van Moolenbroek /* strlcpy.c */
206eda6f593SDavid van Moolenbroek size_t	 	 strlcpy(char *, const char *, size_t);
207eda6f593SDavid van Moolenbroek #endif
208eda6f593SDavid van Moolenbroek 
209eda6f593SDavid van Moolenbroek #ifndef HAVE_STRLCAT
210eda6f593SDavid van Moolenbroek /* strlcat.c */
211eda6f593SDavid van Moolenbroek size_t	 	 strlcat(char *, const char *, size_t);
212eda6f593SDavid van Moolenbroek #endif
213eda6f593SDavid van Moolenbroek 
214eda6f593SDavid van Moolenbroek #ifndef HAVE_DAEMON
215eda6f593SDavid van Moolenbroek /* daemon.c */
216eda6f593SDavid van Moolenbroek int	 	 daemon(int, int);
217eda6f593SDavid van Moolenbroek #endif
218eda6f593SDavid van Moolenbroek 
219*0a6a1f1dSLionel Sambuc #ifndef HAVE_B64_NTOP
220*0a6a1f1dSLionel Sambuc /* b64_ntop.c */
221*0a6a1f1dSLionel Sambuc #undef b64_ntop /* for Cygwin */
222*0a6a1f1dSLionel Sambuc int		 b64_ntop(const char *, size_t, char *, size_t);
223*0a6a1f1dSLionel Sambuc #endif
224*0a6a1f1dSLionel Sambuc 
225eda6f593SDavid van Moolenbroek #ifndef HAVE_FORKPTY
226eda6f593SDavid van Moolenbroek /* forkpty.c */
227eda6f593SDavid van Moolenbroek #include <sys/ioctl.h>
228eda6f593SDavid van Moolenbroek pid_t		 forkpty(int *, char *, struct termios *, struct winsize *);
229eda6f593SDavid van Moolenbroek #endif
230eda6f593SDavid van Moolenbroek 
231eda6f593SDavid van Moolenbroek #ifndef HAVE_ASPRINTF
232eda6f593SDavid van Moolenbroek /* asprintf.c */
233eda6f593SDavid van Moolenbroek int		 asprintf(char **, const char *, ...);
234eda6f593SDavid van Moolenbroek int		 vasprintf(char **, const char *, va_list);
235eda6f593SDavid van Moolenbroek #endif
236eda6f593SDavid van Moolenbroek 
237eda6f593SDavid van Moolenbroek #ifndef HAVE_FGETLN
238eda6f593SDavid van Moolenbroek /* fgetln.c */
239eda6f593SDavid van Moolenbroek char		*fgetln(FILE *, size_t *);
240eda6f593SDavid van Moolenbroek #endif
241eda6f593SDavid van Moolenbroek 
242eda6f593SDavid van Moolenbroek #ifndef HAVE_SETENV
243eda6f593SDavid van Moolenbroek /* setenv.c */
244eda6f593SDavid van Moolenbroek int		 setenv(const char *, const char *, int);
245eda6f593SDavid van Moolenbroek int		 unsetenv(const char *);
246eda6f593SDavid van Moolenbroek #endif
247eda6f593SDavid van Moolenbroek 
248*0a6a1f1dSLionel Sambuc #ifndef HAVE_CFMAKERAW
249*0a6a1f1dSLionel Sambuc /* cfmakeraw.c */
250*0a6a1f1dSLionel Sambuc void		cfmakeraw(struct termios *);
251*0a6a1f1dSLionel Sambuc #endif
252*0a6a1f1dSLionel Sambuc 
253*0a6a1f1dSLionel Sambuc #ifndef HAVE_OPENAT
254*0a6a1f1dSLionel Sambuc /* openat.c */
255*0a6a1f1dSLionel Sambuc #define AT_FDCWD -100
256*0a6a1f1dSLionel Sambuc int		openat(int, const char *, int, ...);
257*0a6a1f1dSLionel Sambuc #endif
258*0a6a1f1dSLionel Sambuc 
259eda6f593SDavid van Moolenbroek #ifdef HAVE_GETOPT
260eda6f593SDavid van Moolenbroek #include <getopt.h>
261eda6f593SDavid van Moolenbroek #else
262eda6f593SDavid van Moolenbroek /* getopt.c */
263eda6f593SDavid van Moolenbroek extern int	BSDopterr;
264eda6f593SDavid van Moolenbroek extern int	BSDoptind;
265eda6f593SDavid van Moolenbroek extern int	BSDoptopt;
266eda6f593SDavid van Moolenbroek extern int	BSDoptreset;
267eda6f593SDavid van Moolenbroek extern char    *BSDoptarg;
268eda6f593SDavid van Moolenbroek int	BSDgetopt(int, char *const *, const char *);
269eda6f593SDavid van Moolenbroek #define getopt(ac, av, o)  BSDgetopt(ac, av, o)
270eda6f593SDavid van Moolenbroek #define opterr             BSDopterr
271eda6f593SDavid van Moolenbroek #define optind             BSDoptind
272eda6f593SDavid van Moolenbroek #define optopt             BSDoptopt
273eda6f593SDavid van Moolenbroek #define optreset           BSDoptreset
274eda6f593SDavid van Moolenbroek #define optarg             BSDoptarg
275eda6f593SDavid van Moolenbroek #endif
276eda6f593SDavid van Moolenbroek 
277eda6f593SDavid van Moolenbroek #endif /* COMPAT_H */
278