mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 01:34:18 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			246 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			246 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* $Id$ */
 | 
						|
 | 
						|
/*
 | 
						|
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
						|
 *
 | 
						|
 * 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 __dead
 | 
						|
#define __dead __attribute__ ((__noreturn__))
 | 
						|
#endif
 | 
						|
#ifndef __packed
 | 
						|
#define __packed __attribute__ ((__packed__))
 | 
						|
#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 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 TTY_NAME_MAX
 | 
						|
#define TTY_NAME_MAX 32
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef HAVE_BZERO
 | 
						|
#undef bzero
 | 
						|
#define bzero(buf, len) memset(buf, 0, len);
 | 
						|
#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 */
 | 
						|
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_SETENV
 | 
						|
/* setenv.c */
 | 
						|
int		 setenv(const char *, const char *, int);
 | 
						|
int		 unsetenv(const char *);
 | 
						|
#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 */
 |