#include <netinet/in_systm.h> /* For typedefs */
#include <netinet/in.h> /* For IPv6 macros */
#include <netinet/ip.h> /* For IPTOS macros */
+#ifdef HAVE_RPC_TYPES_H
+# include <rpc/types.h> /* For INADDR_LOOPBACK */
+#endif
#ifdef HAVE_SYS_UN_H
# include <sys/un.h> /* For sockaddr_un */
#endif
#include <unistd.h> /* For STDIN_FILENO, etc */
#include <termios.h> /* Struct winsize */
#include <fcntl.h> /* For O_NONBLOCK */
+#include <openssl/opensslv.h> /* For OPENSSL_VERSION_NUMBER */
/* *-*-nto-qnx needs these headers for strcasecmp and LASTLOG_FILE respectively */
#ifdef HAVE_STRINGS_H
# define NFDBITS (8 * sizeof(unsigned long))
#endif
+/*
+SCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but
+including rpc/rpc.h breaks Solaris 6
+*/
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK ((ulong)0x7f000001)
+#endif
+
/* Types */
/* If sys/types.h does not supply intXX_t, supply them ourselves */
typedef short int int16_t;
# else
# ifdef _CRAY
+# if (SIZEOF_SHORT_INT == 4)
+typedef short int16_t;
+# else
typedef long int16_t;
+# endif
# else
# error "16 bit int type not found."
# endif /* _CRAY */
typedef unsigned short int u_int16_t;
# else
# ifdef _CRAY
+# if (SIZEOF_SHORT_INT == 4)
+typedef unsigned short u_int16_t;
+# else
typedef unsigned long u_int16_t;
+# endif
# else
# error "16 bit int type not found."
# endif
# define HAVE_U_CHAR
#endif /* HAVE_U_CHAR */
-#ifndef HAVE_SOCKLEN_T
-typedef unsigned int socklen_t;
-# define HAVE_SOCKLEN_T
-#endif /* HAVE_SOCKLEN_T */
-
#ifndef HAVE_SIZE_T
typedef unsigned int size_t;
# define HAVE_SIZE_T
# define HAVE_PID_T
#endif /* HAVE_PID_T */
+#ifndef HAVE_SIG_ATOMIC_T
+typedef int sig_atomic_t;
+# define HAVE_SIG_ATOMIC_T
+#endif /* HAVE_SIG_ATOMIC_T */
+
#ifndef HAVE_MODE_T
typedef int mode_t;
# define HAVE_MODE_T
#define _PATH_XAUTH XAUTH_PATH
#endif /* XAUTH_PATH */
+/* derived from XF4/xc/lib/dps/Xlibnet.h */
+#ifndef X_UNIX_PATH
+# ifdef __hpux
+# define X_UNIX_PATH "/var/spool/sockets/X11/%u"
+# else
+# define X_UNIX_PATH "/tmp/.X11-unix/X%u"
+# endif
+#endif /* X_UNIX_PATH */
+#define _PATH_UNIX_X X_UNIX_PATH
+
#ifndef _PATH_TTY
# define _PATH_TTY "/dev/tty"
#endif
# define howmany(x,y) (((x)+((y)-1))/(y))
#endif
+#ifdef __hpux
+#define MAP_ANON MAP_ANONYMOUS
+#endif
+
+#ifndef ALIGNBYTES
+#define ALIGNBYTES (sizeof(int) - 1)
+#endif
+#ifndef ALIGN
+#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
+#endif
+#ifndef __CMSG_ALIGN
+#define __CMSG_ALIGN(len) ALIGN(len)
+#endif
+
+/* Length of the contents of a control message of length len */
+#ifndef CMSG_LEN
+#define CMSG_LEN(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
+#endif
+
+/* Length of the space taken up by a padded control message of length len */
+#ifndef CMSG_SPACE
+#define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len))
+#endif
+
/* Function replacement / compatibility hacks */
/* In older versions of libpam, pam_strerror takes a single argument */
#endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */
#if !defined(HAVE_ATEXIT) && defined(HAVE_ON_EXIT)
-# define atexit(a, NULL) on_exit(a, NULL)
+# define atexit(a) on_exit(a, NULL)
#else
# if defined(HAVE_XATEXIT)
# define atexit(a) xatexit(a)
# define getpgrp() getpgrp(0)
#endif
+/* OPENSSL_free() is Free() in versions before OpenSSL 0.9.6 */
+#if !defined(OPENSSL_VERSION_NUMBER) || (OPENSSL_VERSION_NUMBER < 0x0090600f)
+# define OPENSSL_free(x) Free(x)
+#endif
+
+#if defined(HAVE___func__)
+# define __FUNCTION__ __func__
+#elif !defined(HAVE___FUNCTION__)
+# define __FUNCTION__ ""
+#endif
+
/*
* Define this to use pipes instead of socketpairs for communicating with the
* client program. Socketpairs do not seem to work on all systems.
*
- * configure.in sets this for a few OS's which are known to have problems
+ * configure.ac sets this for a few OS's which are known to have problems
* but you may need to set it yourself
*/
/* #define USE_PIPES 1 */