2009-08-20 12:49:18 +00:00
|
|
|
/* $Id: compat.h,v 1.14 2009-08-20 12:49:18 nicm Exp $ */
|
2009-06-25 16:47:00 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
2009-08-20 12:49:18 +00:00
|
|
|
#ifndef HAVE_U_INT
|
|
|
|
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
|
|
|
|
|
2009-06-25 16:47:00 +00:00
|
|
|
#ifndef HAVE_PATHS_H
|
|
|
|
#define _PATH_BSHELL "/bin/sh"
|
|
|
|
#define _PATH_TMP "/tmp/"
|
|
|
|
#define _PATH_DEVNULL "/dev/null"
|
|
|
|
#define _PATH_TTY "/dev/tty"
|
2009-07-21 13:07:50 +00:00
|
|
|
#define _PATH_DEV "/dev/"
|
2009-06-25 16:47:00 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_QUEUE_H
|
2009-06-25 17:02:59 +00:00
|
|
|
#include <sys/queue.h>
|
2009-06-25 16:47:00 +00:00
|
|
|
#else
|
|
|
|
#include "compat/queue.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_TREE_H
|
2009-06-25 17:02:59 +00:00
|
|
|
#include <sys/tree.h>
|
2009-06-25 16:47:00 +00:00
|
|
|
#else
|
|
|
|
#include "compat/tree.h"
|
|
|
|
#endif
|
|
|
|
|
2009-06-25 17:02:59 +00:00
|
|
|
#ifdef HAVE_BITSTRING_H
|
|
|
|
#include <bitstring.h>
|
|
|
|
#else
|
|
|
|
#include "compat/bitstring.h"
|
|
|
|
#endif
|
|
|
|
|
2009-06-25 16:47:00 +00:00
|
|
|
#ifdef HAVE_POLL
|
|
|
|
#include <poll.h>
|
|
|
|
#else
|
2009-08-19 09:00:06 +00:00
|
|
|
#define POLLNVAL 0
|
|
|
|
#define POLLHUP 0
|
2009-07-01 22:43:48 +00:00
|
|
|
#include "compat/bsd-poll.h"
|
2009-06-25 16:47:00 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_GETOPT
|
|
|
|
#include <getopt.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_CRYPT_H
|
|
|
|
#include <crypt.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
|
|
|
|
|
2009-06-25 20:27:32 +00:00
|
|
|
#ifdef HAVE_VIS
|
|
|
|
#include <vis.h>
|
|
|
|
#else
|
|
|
|
#include "compat/vis.h"
|
|
|
|
#endif
|
|
|
|
|
2009-08-20 05:34:58 +00:00
|
|
|
#ifdef HAVE_TTYDEFAULTS_H
|
|
|
|
#ifdef HAVE_TTYDEFCHARS
|
|
|
|
#define TTYDEFCHARS
|
|
|
|
#endif
|
|
|
|
#include <sys/ttydefaults.h>
|
|
|
|
#else
|
|
|
|
#ifndef OXTABS
|
|
|
|
#define OXTABS 0
|
|
|
|
#endif
|
|
|
|
#include "compat/ttydefaults.h"
|
|
|
|
#endif
|
|
|
|
|
2009-08-14 21:13:48 +00:00
|
|
|
#ifndef HAVE_IMSG
|
|
|
|
#include "compat/imsg.h"
|
|
|
|
#endif
|
|
|
|
|
2009-07-01 22:46:13 +00:00
|
|
|
#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 __dead
|
|
|
|
#define __dead __attribute__ ((__noreturn__))
|
|
|
|
#endif
|
|
|
|
#ifndef __packed
|
|
|
|
#define __packed __attribute__ ((__packed__))
|
|
|
|
#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
|
|
|
|
|
2009-07-28 22:17:10 +00:00
|
|
|
#ifndef PASS_MAX
|
|
|
|
#define PASS_MAX 128
|
|
|
|
#endif
|
|
|
|
|
2009-07-01 22:46:13 +00:00
|
|
|
#ifndef TTY_NAME_MAX
|
|
|
|
#define TTY_NAME_MAX 32
|
|
|
|
#endif
|
|
|
|
|
2009-08-20 12:25:17 +00:00
|
|
|
#ifndef HAVE_BZERO
|
|
|
|
#define bzero(buf, len) memset((buf), 0, (len));
|
|
|
|
#endif
|
|
|
|
|
2009-07-02 07:31:02 +00:00
|
|
|
#ifndef HAVE_STRCASESTR
|
|
|
|
/* strcasestr.c */
|
|
|
|
char *strcasestr(const char *, const char *);
|
|
|
|
#endif
|
|
|
|
|
2009-08-16 16:15:53 +00:00
|
|
|
#ifndef HAVE_STRSEP
|
|
|
|
/* strsep.c */
|
|
|
|
char *strsep(char **, const char *);
|
|
|
|
#endif
|
|
|
|
|
2009-06-25 16:47:00 +00:00
|
|
|
#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_FORKPTY
|
|
|
|
/* forkpty.c */
|
|
|
|
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_GETOPT
|
|
|
|
/* 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
|
|
|
|
#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_FORKPTY
|
|
|
|
/* forkpty.c */
|
|
|
|
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_GETOPT
|
|
|
|
/* 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
|