Annotation of embedaddon/tmux/compat.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
3: *
4: * Permission to use, copy, modify, and distribute this software for any
5: * purpose with or without fee is hereby granted, provided that the above
6: * copyright notice and this permission notice appear in all copies.
7: *
8: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12: * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
13: * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
14: * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15: */
16:
17: #ifndef COMPAT_H
18: #define COMPAT_H
19:
20: #include <sys/types.h>
21: #include <sys/uio.h>
22:
23: #include <limits.h>
24: #include <stdio.h>
25: #include <termios.h>
26: #include <wchar.h>
27:
28: #ifndef __GNUC__
29: #define __attribute__(a)
30: #endif
31:
32: #ifndef __unused
33: #define __unused __attribute__ ((__unused__))
34: #endif
35: #ifndef __dead
36: #define __dead __attribute__ ((__noreturn__))
37: #endif
38: #ifndef __packed
39: #define __packed __attribute__ ((__packed__))
40: #endif
41:
42: #ifndef ECHOPRT
43: #define ECHOPRT 0
44: #endif
45:
46: #ifndef ACCESSPERMS
47: #define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
48: #endif
49:
50: #if !defined(FIONREAD) && defined(__sun)
51: #include <sys/filio.h>
52: #endif
53:
54: #ifdef HAVE_ERR_H
55: #include <err.h>
56: #else
57: void err(int, const char *, ...);
58: void errx(int, const char *, ...);
59: void warn(const char *, ...);
60: void warnx(const char *, ...);
61: #endif
62:
63: #ifndef HAVE_PATHS_H
64: #define _PATH_BSHELL "/bin/sh"
65: #define _PATH_TMP "/tmp/"
66: #define _PATH_DEVNULL "/dev/null"
67: #define _PATH_TTY "/dev/tty"
68: #define _PATH_DEV "/dev/"
69: #endif
70:
71: #ifndef __OpenBSD__
72: #define pledge(s, p) (0)
73: #endif
74:
75: #ifdef HAVE_STDINT_H
76: #include <stdint.h>
77: #else
78: #include <inttypes.h>
79: #endif
80:
81: #ifdef HAVE_QUEUE_H
82: #include <sys/queue.h>
83: #else
84: #include "compat/queue.h"
85: #endif
86:
87: #ifdef HAVE_TREE_H
88: #include <sys/tree.h>
89: #else
90: #include "compat/tree.h"
91: #endif
92:
93: #ifdef HAVE_BITSTRING_H
94: #include <bitstring.h>
95: #else
96: #include "compat/bitstring.h"
97: #endif
98:
99: #ifdef HAVE_PATHS_H
100: #include <paths.h>
101: #endif
102:
103: #ifdef HAVE_FORKPTY
104: #ifdef HAVE_LIBUTIL_H
105: #include <libutil.h>
106: #endif
107: #ifdef HAVE_PTY_H
108: #include <pty.h>
109: #endif
110: #ifdef HAVE_UTIL_H
111: #include <util.h>
112: #endif
113: #endif
114:
115: #ifdef HAVE_VIS
116: #include <vis.h>
117: #else
118: #include "compat/vis.h"
119: #endif
120:
121: #ifdef HAVE_IMSG
122: #include <imsg.h>
123: #else
124: #include "compat/imsg.h"
125: #endif
126:
127: #ifdef BROKEN_CMSG_FIRSTHDR
128: #undef CMSG_FIRSTHDR
129: #define CMSG_FIRSTHDR(mhdr) \
130: ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
131: (struct cmsghdr *)(mhdr)->msg_control : \
132: (struct cmsghdr *)NULL)
133: #endif
134:
135: #ifndef CMSG_ALIGN
136: #ifdef _CMSG_DATA_ALIGN
137: #define CMSG_ALIGN _CMSG_DATA_ALIGN
138: #else
139: #define CMSG_ALIGN(len) (((len) + sizeof(long) - 1) & ~(sizeof(long) - 1))
140: #endif
141: #endif
142:
143: #ifndef CMSG_SPACE
144: #define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
145: #endif
146:
147: #ifndef CMSG_LEN
148: #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
149: #endif
150:
151: #ifndef O_DIRECTORY
152: #define O_DIRECTORY 0
153: #endif
154:
155: #ifndef INFTIM
156: #define INFTIM -1
157: #endif
158:
159: #ifndef WAIT_ANY
160: #define WAIT_ANY -1
161: #endif
162:
163: #ifndef SUN_LEN
164: #define SUN_LEN(sun) (sizeof (sun)->sun_path)
165: #endif
166:
167: #ifndef timercmp
168: #define timercmp(tvp, uvp, cmp) \
169: (((tvp)->tv_sec == (uvp)->tv_sec) ? \
170: ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
171: ((tvp)->tv_sec cmp (uvp)->tv_sec))
172: #endif
173:
174: #ifndef timeradd
175: #define timeradd(tvp, uvp, vvp) \
176: do { \
177: (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
178: (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
179: if ((vvp)->tv_usec >= 1000000) { \
180: (vvp)->tv_sec++; \
181: (vvp)->tv_usec -= 1000000; \
182: } \
183: } while (0)
184: #endif
185:
186: #ifndef timersub
187: #define timersub(tvp, uvp, vvp) \
188: do { \
189: (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
190: (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
191: if ((vvp)->tv_usec < 0) { \
192: (vvp)->tv_sec--; \
193: (vvp)->tv_usec += 1000000; \
194: } \
195: } while (0)
196: #endif
197:
198: #ifndef TTY_NAME_MAX
199: #define TTY_NAME_MAX 32
200: #endif
201:
202: #ifndef HOST_NAME_MAX
203: #define HOST_NAME_MAX 255
204: #endif
205:
206: #ifndef HAVE_FLOCK
207: #define LOCK_SH 0
208: #define LOCK_EX 0
209: #define LOCK_NB 0
210: #define flock(fd, op) (0)
211: #endif
212:
213: #ifndef HAVE_EXPLICIT_BZERO
214: /* explicit_bzero.c */
215: void explicit_bzero(void *, size_t);
216: #endif
217:
218: #ifndef HAVE_GETDTABLECOUNT
219: /* getdtablecount.c */
220: int getdtablecount(void);
221: #endif
222:
223: #ifndef HAVE_CLOSEFROM
224: /* closefrom.c */
225: void closefrom(int);
226: #endif
227:
228: #ifndef HAVE_STRCASESTR
229: /* strcasestr.c */
230: char *strcasestr(const char *, const char *);
231: #endif
232:
233: #ifndef HAVE_STRSEP
234: /* strsep.c */
235: char *strsep(char **, const char *);
236: #endif
237:
238: #ifndef HAVE_STRTONUM
239: /* strtonum.c */
240: long long strtonum(const char *, long long, long long, const char **);
241: #endif
242:
243: #ifndef HAVE_STRLCPY
244: /* strlcpy.c */
245: size_t strlcpy(char *, const char *, size_t);
246: #endif
247:
248: #ifndef HAVE_STRLCAT
249: /* strlcat.c */
250: size_t strlcat(char *, const char *, size_t);
251: #endif
252:
253: #ifndef HAVE_STRNLEN
254: /* strnlen.c */
255: size_t strnlen(const char *, size_t);
256: #endif
257:
258: #ifndef HAVE_STRNDUP
259: /* strndup.c */
260: char *strndup(const char *, size_t);
261: #endif
262:
263: #ifndef HAVE_DAEMON
264: /* daemon.c */
265: int daemon(int, int);
266: #endif
267:
268: #ifndef HAVE_GETPROGNAME
269: /* getprogname.c */
270: const char *getprogname(void);
271: #endif
272:
273: #ifndef HAVE_SETPROCTITLE
274: /* setproctitle.c */
275: void setproctitle(const char *, ...);
276: #endif
277:
278: #ifndef HAVE_B64_NTOP
279: /* base64.c */
280: #undef b64_ntop
281: #undef b64_pton
282: int b64_ntop(const char *, size_t, char *, size_t);
283: int b64_pton(const char *, u_char *, size_t);
284: #endif
285:
286: #ifndef HAVE_FORKPTY
287: /* forkpty.c */
288: #include <sys/ioctl.h>
289: pid_t forkpty(int *, char *, struct termios *, struct winsize *);
290: #endif
291:
292: #ifndef HAVE_ASPRINTF
293: /* asprintf.c */
294: int asprintf(char **, const char *, ...);
295: int vasprintf(char **, const char *, va_list);
296: #endif
297:
298: #ifndef HAVE_FGETLN
299: /* fgetln.c */
300: char *fgetln(FILE *, size_t *);
301: #endif
302:
303: #ifndef HAVE_FPARSELN
304: char *fparseln(FILE *, size_t *, size_t *, const char *, int);
305: #endif
306:
307: #ifndef HAVE_SETENV
308: /* setenv.c */
309: int setenv(const char *, const char *, int);
310: int unsetenv(const char *);
311: #endif
312:
313: #ifndef HAVE_CFMAKERAW
314: /* cfmakeraw.c */
315: void cfmakeraw(struct termios *);
316: #endif
317:
318: #ifndef HAVE_FREEZERO
319: /* freezero.c */
320: void freezero(void *, size_t);
321: #endif
322:
323: #ifndef HAVE_REALLOCARRAY
324: /* reallocarray.c */
325: void *reallocarray(void *, size_t, size_t);
326: #endif
327:
328: #ifndef HAVE_RECALLOCARRAY
329: /* recallocarray.c */
330: void *recallocarray(void *, size_t, size_t, size_t);
331: #endif
332:
333: #ifdef HAVE_UTF8PROC
334: /* utf8proc.c */
335: int utf8proc_wcwidth(wchar_t);
336: int utf8proc_mbtowc(wchar_t *, const char *, size_t);
337: int utf8proc_wctomb(char *, wchar_t);
338: #endif
339:
340: #ifdef HAVE_GETOPT
341: #include <getopt.h>
342: #else
343: /* getopt.c */
344: extern int BSDopterr;
345: extern int BSDoptind;
346: extern int BSDoptopt;
347: extern int BSDoptreset;
348: extern char *BSDoptarg;
349: int BSDgetopt(int, char *const *, const char *);
350: #define getopt(ac, av, o) BSDgetopt(ac, av, o)
351: #define opterr BSDopterr
352: #define optind BSDoptind
353: #define optopt BSDoptopt
354: #define optreset BSDoptreset
355: #define optarg BSDoptarg
356: #endif
357:
358: #endif /* COMPAT_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>