123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- /*
- * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
- #ifndef COMPAT_H
- #define COMPAT_H
- #ifndef __GNUC__
- #define __attribute__(a)
- #endif
- #ifndef __unused
- #define __unused __attribute__ ((__unused__))
- #endif
- #ifndef __dead
- #define __dead __attribute__ ((__noreturn__))
- #endif
- #ifndef __packed
- #define __packed __attribute__ ((__packed__))
- #endif
- #ifndef ECHOPRT
- #define ECHOPRT 0
- #endif
- #ifndef HAVE_BSD_TYPES
- typedef uint8_t u_int8_t;
- typedef uint16_t u_int16_t;
- typedef uint32_t u_int32_t;
- typedef uint64_t u_int64_t;
- #endif
- #ifndef HAVE_PATHS_H
- #define _PATH_BSHELL "/bin/sh"
- #define _PATH_TMP "/tmp/"
- #define _PATH_DEVNULL "/dev/null"
- #define _PATH_TTY "/dev/tty"
- #define _PATH_DEV "/dev/"
- #endif
- #ifdef HAVE_QUEUE_H
- #include <sys/queue.h>
- #else
- #include "compat/queue.h"
- #endif
- #ifdef HAVE_TREE_H
- #include <sys/tree.h>
- #else
- #include "compat/tree.h"
- #endif
- #ifdef HAVE_BITSTRING_H
- #include <bitstring.h>
- #else
- #include "compat/bitstring.h"
- #endif
- #ifdef HAVE_PATHS_H
- #include <paths.h>
- #endif
- #ifdef HAVE_FORKPTY
- #ifdef HAVE_LIBUTIL_H
- #include <libutil.h>
- #endif
- #ifdef HAVE_PTY_H
- #include <pty.h>
- #endif
- #ifdef HAVE_UTIL_H
- #include <util.h>
- #endif
- #endif
- #ifdef HAVE_VIS
- #include <vis.h>
- #else
- #include "compat/vis.h"
- #endif
- #ifdef HAVE_IMSG
- #include <imsg.h>
- #else
- #include "compat/imsg.h"
- #endif
- #ifdef HAVE_STDINT_H
- #include <stdint.h>
- #else
- #include <inttypes.h>
- #endif
- #ifdef BROKEN_CMSG_FIRSTHDR
- #undef CMSG_FIRSTHDR
- #define CMSG_FIRSTHDR(mhdr) \
- ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
- (struct cmsghdr *)(mhdr)->msg_control : \
- (struct cmsghdr *)NULL)
- #endif
- #ifndef CMSG_ALIGN
- #ifdef _CMSG_DATA_ALIGN
- #define CMSG_ALIGN _CMSG_DATA_ALIGN
- #else
- #define CMSG_ALIGN(len) (((len) + sizeof(long) - 1) & ~(sizeof(long) - 1))
- #endif
- #endif
- #ifndef CMSG_SPACE
- #define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
- #endif
- #ifndef CMSG_LEN
- #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
- #endif
- #ifndef O_DIRECTORY
- #define O_DIRECTORY 0
- #endif
- #ifndef INFTIM
- #define INFTIM -1
- #endif
- #ifndef WAIT_ANY
- #define WAIT_ANY -1
- #endif
- #ifndef SUN_LEN
- #define SUN_LEN(sun) (sizeof (sun)->sun_path)
- #endif
- #ifndef timercmp
- #define timercmp(tvp, uvp, cmp) \
- (((tvp)->tv_sec == (uvp)->tv_sec) ? \
- ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
- ((tvp)->tv_sec cmp (uvp)->tv_sec))
- #endif
- #ifndef timeradd
- #define timeradd(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
- if ((vvp)->tv_usec >= 1000000) { \
- (vvp)->tv_sec++; \
- (vvp)->tv_usec -= 1000000; \
- } \
- } while (0)
- #endif
- #ifndef timersub
- #define timersub(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
- if ((vvp)->tv_usec < 0) { \
- (vvp)->tv_sec--; \
- (vvp)->tv_usec += 1000000; \
- } \
- } while (0)
- #endif
- #ifndef TTY_NAME_MAX
- #define TTY_NAME_MAX 32
- #endif
- #ifndef HOST_NAME_MAX
- #define HOST_NAME_MAX 255
- #endif
- #ifndef HAVE_FLOCK
- #define LOCK_SH 0
- #define LOCK_EX 0
- #define LOCK_NB 0
- #define flock(fd, op) (0)
- #endif
- #ifndef HAVE_CLOSEFROM
- /* closefrom.c */
- void closefrom(int);
- #endif
- #ifndef HAVE_STRCASESTR
- /* strcasestr.c */
- char *strcasestr(const char *, const char *);
- #endif
- #ifndef HAVE_STRSEP
- /* strsep.c */
- char *strsep(char **, const char *);
- #endif
- #ifndef HAVE_STRTONUM
- /* strtonum.c */
- long long strtonum(const char *, long long, long long, const char **);
- #endif
- #ifndef HAVE_STRLCPY
- /* strlcpy.c */
- size_t strlcpy(char *, const char *, size_t);
- #endif
- #ifndef HAVE_STRLCAT
- /* strlcat.c */
- size_t strlcat(char *, const char *, size_t);
- #endif
- #ifndef HAVE_DAEMON
- /* daemon.c */
- int daemon(int, int);
- #endif
- #ifndef HAVE_B64_NTOP
- /* b64_ntop.c */
- #undef b64_ntop /* for Cygwin */
- int b64_ntop(const char *, size_t, char *, size_t);
- #endif
- #ifndef HAVE_FORKPTY
- /* forkpty.c */
- #include <sys/ioctl.h>
- pid_t forkpty(int *, char *, struct termios *, struct winsize *);
- #endif
- #ifndef HAVE_ASPRINTF
- /* asprintf.c */
- int asprintf(char **, const char *, ...);
- int vasprintf(char **, const char *, va_list);
- #endif
- #ifndef HAVE_FGETLN
- /* fgetln.c */
- char *fgetln(FILE *, size_t *);
- #endif
- #ifndef HAVE_FPARSELN
- char *fparseln(FILE *, size_t *, size_t *, const char *, int);
- #endif
- #ifndef HAVE_SETENV
- /* setenv.c */
- int setenv(const char *, const char *, int);
- int unsetenv(const char *);
- #endif
- #ifndef HAVE_CFMAKERAW
- /* cfmakeraw.c */
- void cfmakeraw(struct termios *);
- #endif
- #ifndef HAVE_OPENAT
- /* openat.c */
- #define AT_FDCWD -100
- int openat(int, const char *, int, ...);
- #endif
- #ifndef HAVE_REALLOCARRAY
- /* reallocarray.c */
- void *reallocarray(void *, size_t, size_t size);
- #endif
- #ifdef HAVE_GETOPT
- #include <getopt.h>
- #else
- /* getopt.c */
- extern int BSDopterr;
- extern int BSDoptind;
- extern int BSDoptopt;
- extern int BSDoptreset;
- extern char *BSDoptarg;
- int BSDgetopt(int, char *const *, const char *);
- #define getopt(ac, av, o) BSDgetopt(ac, av, o)
- #define opterr BSDopterr
- #define optind BSDoptind
- #define optopt BSDoptopt
- #define optreset BSDoptreset
- #define optarg BSDoptarg
- #endif
- #endif /* COMPAT_H */
|