- Merged more Solaris support from Marc G. Fournier
<marc.fournier@acadiau.ca>
- Wrote autoconf tests for integer bit-types
- Fixed enabling kerberos support
diff --git a/ChangeLog b/ChangeLog
index 7a60cb3..0bf1a55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+19991120
+ - Merged more Solaris support from Marc G. Fournier
+ <marc.fournier@acadiau.ca>
+ - Wrote autoconf tests for integer bit-types
+ - Fixed enabling kerberos support
+
19991119
- Merged PAM buffer overrun patch from Chip Salzenberg <chip@valinux.com>
- Merged OpenBSD CVS changes
diff --git a/TODO b/TODO
index e6a89d3..fffdb1c 100644
--- a/TODO
+++ b/TODO
@@ -8,6 +8,8 @@
- Fix paths in manpages using autoconf
-- Enable libwrap support using autoconf switch
-
- Better testing on non-PAM systems
+
+- Replace the horror in acconfig.h which tries to comphensate for the
+ lack of u_intXX_t types. There must be a better way.
+
diff --git a/acconfig.h b/acconfig.h
index d5a12b2..a37c082 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -6,6 +6,9 @@
/* Location of lastlog file */
#undef LASTLOG_LOCATION
+/* If lastlog is a directory */
+#undef LASTLOG_IS_DIR
+
/* Location of random number pool */
#undef RANDOM_POOL
@@ -51,13 +54,22 @@
/* Define if you want to allow MD5 passwords */
#undef HAVE_MD5_PASSWORDS
+/* Data types */
+#undef HAVE_QUAD_T
+#undef HAVE_INTXX_T
+#undef HAVE_U_INTXX_T
+#undef HAVE_UINTXX_T
+
@BOTTOM@
/* ******************* Shouldn't need to edit below this line ************** */
-#include <sys/types.h> /* For u_intXX_t */
-#include <sys/socket.h> /* For SHUT_XXXX */
-#include <paths.h> /* For _PATH_XXX */
+# include <sys/types.h> /* For u_intXX_t */
+# include <sys/socket.h> /* For SHUT_XXXX */
+
+#ifdef HAVE_PATHS_H
+# include <paths.h> /* For _PATH_XXX */
+#endif
#ifndef SHUT_RDWR
enum
@@ -71,16 +83,63 @@
};
#endif
-#if !defined(u_int32_t) && defined(uint32_t)
-#define u_int32_t uint32_t
+/* If sys/types.h does not supply intXX_t, supply them ourselves */
+/* (or die trying) */
+#ifndef HAVE_INTXX_T
+# if (SIZEOF_SHORT_INT == 2)
+# define int16_t short int
+# else
+# error "16 bit int type not found."
+# endif
+# if (SIZEOF_INT == 4)
+# define int32_t int
+# else
+# error "32 bit int type not found."
+# endif
+# if (SIZEOF_LONG_INT == 8)
+# define int64_t long int
+# else
+# if (SIZEOF_LONG_LONG_INT == 8)
+# define int64_t long long int
+# else
+# error "64 bit int type not found."
+# endif
+# endif
#endif
-#if !defined(u_int16_t) && defined(uint16_t)
-#define u_int16_t uint16_t
+/* If sys/types.h does not supply u_intXX_t, supply them ourselves */
+#ifndef HAVE_U_INTXX_T
+# ifdef HAVE_UINTXX_T
+# define u_int16_t uint16_t
+# define u_int32_t uint32_t
+# define u_int64_t uint64_t
+# else
+# if (SIZEOF_SHORT_INT == 2)
+# define u_int16_t unsigned short int
+# else
+# error "16 bit int type not found."
+# endif
+# if (SIZEOF_INT == 4)
+# define u_int32_t unsigned int
+# else
+# error "32 bit int type not found."
+# endif
+# if (SIZEOF_LONG_INT == 8)
+# define u_int64_t unsigned long int
+# else
+# if (SIZEOF_LONG_LONG_INT == 8)
+# define u_int64_t unsigned long long int
+# else
+# error "64 bit int type not found."
+# endif
+# endif
+# endif
#endif
-#if !defined(quad_t) && defined(int64_t)
-#define quad_t int64_t
+/* If quad_t is not supplied, then supply it now. We can rely on int64_t */
+/* being defined by the above */
+#ifndef HAVE_QUAD_T
+# define quad_t int64_t
#endif
#ifndef _PATH_LASTLOG
diff --git a/bsd-daemon.c b/bsd-daemon.c
index 7b292c1..fe92b76 100644
--- a/bsd-daemon.c
+++ b/bsd-daemon.c
@@ -40,9 +40,12 @@
#endif /* LIBC_SCCS and not lint */
#include <fcntl.h>
-#include <paths.h>
#include <unistd.h>
+#ifdef HAVE_PATHS_H
+# include <paths.h>
+#endif
+
int
daemon(nochdir, noclose)
int nochdir, noclose;
diff --git a/bsd-login.c b/bsd-login.c
index 8c84272..98010ec 100644
--- a/bsd-login.c
+++ b/bsd-login.c
@@ -37,7 +37,7 @@
#if defined(LIBC_SCCS) && !defined(lint)
/* from: static char sccsid[] = "@(#)login.c 8.1 (Berkeley) 6/4/93"; */
-static char *rcsid = "$Id: bsd-login.c,v 1.1 1999/11/19 04:32:34 damien Exp $";
+static char *rcsid = "$Id: bsd-login.c,v 1.2 1999/11/20 01:18:40 damien Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -58,6 +58,7 @@
tty = ttyslot();
if (tty > 0 && (fd = open(_PATH_UTMP, O_RDWR|O_CREAT, 0644)) >= 0) {
+#ifdef HAVE_HOST_IN_UTMP
(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
/*
* Prevent luser from zero'ing out ut_host.
@@ -70,6 +71,7 @@
strncmp(old_ut.ut_line, utp->ut_line, UT_LINESIZE) == 0 &&
strncmp(old_ut.ut_name, utp->ut_name, UT_NAMESIZE) == 0)
(void)memcpy(utp->ut_host, old_ut.ut_host, UT_HOSTSIZE);
+#endif /* HAVE_HOST_IN_UTMP */
(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
(void)write(fd, utp, sizeof(struct utmp));
(void)close(fd);
diff --git a/configure.in b/configure.in
index 649c789..2a4a2c7 100644
--- a/configure.in
+++ b/configure.in
@@ -70,6 +70,57 @@
[AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
)
+dnl Checks for data types
+AC_CHECK_SIZEOF(short int, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long int, 4)
+AC_CHECK_SIZEOF(long long int, 8)
+
+dnl More checks for data types
+AC_MSG_CHECKING([For quad_t])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [quad_t a; a = 1235;],
+ [
+ AC_DEFINE(HAVE_QUAD_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([For intXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [int16_t a; int32_t b; a = 1235; b = 1235;],
+ [
+ AC_DEFINE(HAVE_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([For u_intXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [u_int16_t c; u_int32_t d; c = 1235; d = 1235;],
+ [
+ AC_DEFINE(HAVE_U_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([For uintXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [uint16_t c; uint32_t d; c = 1235; d = 1235;],
+ [
+ AC_DEFINE(HAVE_UINTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
dnl Check whether use wants to disable the external ssh-askpass
INSTALL_ASKPASS="yes"
AC_MSG_CHECKING([whether to enable external ssh-askpass support])
@@ -158,14 +209,23 @@
AC_MSG_CHECKING([location of lastlog file])
for lastlog in /var/log/lastlog /var/adm/lastlog /etc/security/lastlog ; do
if test -f $lastlog ; then
- gotlastlog="yes"
- AC_MSG_RESULT($lastlog)
- AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
+ gotlastlog="file"
+ break
+ fi
+ if test -d $lastlog ; then
+ gotlastlog="dir"
break
fi
done
if test -z "$gotlastlog" ; then
AC_MSG_ERROR([*** Cannot find lastlog ***])
+else
+ if test "x$gotlastlog" = "xdir" ; then
+ AC_DEFINE(LASTLOG_IS_DIR)
+ AC_MSG_ERROR([*** Directory-based lastlogs are not yet supported ***])
+ fi
+ AC_MSG_RESULT($lastlog)
+ AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
fi
AC_MSG_CHECKING([whether libc defines __progname])
@@ -191,7 +251,7 @@
)
dnl Check whether user wants AFS support
-AC_ARG_WITH(kerberos4,
+AC_ARG_WITH(afs,
[ --with-afs Enable AFS support],
[
AC_DEFINE(AFS)