- Add --with-xauth-path configure directive and explicit test for
   /usr/openwin/bin/xauth for Solaris systems. Report from Anders
   Nordby <anders@fix.no>
 - Fix incorrect detection of /dev/ptmx on Linux systems that lack
   openpty. Report from John Seifarth <john@waw.be>
 - Look for intXX_t and u_intXX_t in sys/bitypes.h if they are not in
   sys/types.h. Fixes problems on SCO, report from Gary E. Miller
   <gem@rellim.com>
 - Use __snprintf and __vnsprintf if they are found where snprintf and
   vnsprintf are lacking. Suggested by Ben Taylor <bent@shell.clark.net>
   and others.
diff --git a/configure.in b/configure.in
index ab175d4..06a7707 100644
--- a/configure.in
+++ b/configure.in
@@ -11,9 +11,7 @@
 AC_CHECK_PROG(AR, ar, ar)
 AC_PATH_PROG(PERL, perl)
 AC_SUBST(PERL)
-AC_PATH_PROG(xauth_path, xauth)
 
-dnl Use ip address instead of hostname in $DISPLAY
 AC_ARG_WITH(rsh,
 	[  --with-rsh=PATH         Specify path to remote shell program ],
 	[
@@ -26,6 +24,21 @@
 	]
 )
 
+AC_ARG_WITH(xauth-path,
+	[  --with-xauth-path=PATH  Specify path to xauth program ],
+	[
+		if test "x$withval" != "$xno" ; then
+			AC_DEFINE_UNQUOTED(XAUTH_PATH, "$withval")
+		fi
+	],
+	[
+		AC_PATH_PROG(xauth_path, xauth)
+		if test ! -z "$xauth_path" -a -x "/usr/openwin/bin/xauth" ; then
+			xauth_path="/usr/openwin/bin/xauth"
+		fi
+	]
+)
+
 if test ! -z "$xauth_path" ; then
 	AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
 fi
@@ -70,6 +83,9 @@
 	no_libsocket=1
 	no_libnsl=1
 	;;
+*-*-linux*)
+	no_dev_ptmx=1
+	;;
 *-*-solaris*)
 	AC_DEFINE(USE_UTMPX)
 	;;
@@ -125,10 +141,10 @@
 fi
 
 dnl Checks for header files.
-AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/time.h sys/ttcompat.h util.h utmp.h utmpx.h)
+AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/time.h sys/ttcompat.h util.h utmp.h utmpx.h)
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS(arc4random bindresvport_af freeaddrinfo gai_strerror getaddrinfo getpagesize getnameinfo _getpty innetgr md5_crypt mkdtemp openpty  rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf)
+AC_CHECK_FUNCS(arc4random bindresvport_af freeaddrinfo gai_strerror getaddrinfo getpagesize getnameinfo innetgr md5_crypt mkdtemp openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf _getpty __snprintf __vsnprintf)
 
 AC_CHECK_FUNC(login, 
 	[AC_DEFINE(HAVE_LOGIN)],
@@ -154,6 +170,7 @@
 	[
 		AC_DEFINE(HAVE_INTXX_T)
 		AC_MSG_RESULT(yes)
+		have_intxx_t=1
 	],
 	[AC_MSG_RESULT(no)]
 ) 
@@ -165,10 +182,32 @@
 	[
 		AC_DEFINE(HAVE_U_INTXX_T)
 		AC_MSG_RESULT(yes)
+		have_u_intxx_t=1
 	],
 	[AC_MSG_RESULT(no)]
 ) 
 
+if test -z "$have_u_intxx_t" -a -z "$have_intxx_t" -a \
+           "x$ac_cv_header_sys_bitypes_h" = "xyes"
+then
+	AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
+	AC_TRY_COMPILE(
+		[#include <sys/bitypes.h>], 
+		[
+			u_int16_t c; u_int32_t d; 
+			int16_t e; int32_t f;
+			c = 1235; d = 1235;
+			e = 1235; f = 1235;
+		], 
+		[
+			AC_DEFINE(HAVE_U_INTXX_T)
+			AC_DEFINE(HAVE_INTXX_T)
+			AC_MSG_RESULT(yes)
+		],
+		[AC_MSG_RESULT(no)]
+	) 
+fi
+
 AC_MSG_CHECKING([for uintXX_t types])
 AC_TRY_COMPILE(
 	[#include <sys/types.h>], 
@@ -468,7 +507,9 @@
 	]
 )
 
-AC_CHECK_FILE("/dev/ptmx", AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX))
+if test ! -z "$no_dev_ptmx" ; then
+	AC_CHECK_FILE("/dev/ptmx", AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX))
+fi
 AC_CHECK_FILE("/dev/ptc", AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC))
 
 AC_MSG_CHECKING([whether libc defines __progname])