Annotation of embedaddon/tmux/compat.h, revision 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>