Unfortunately, the login.c changes after pre-19 have exposed some more
NetBSD-centric problems concerning the lack of several fields in struct utmp.
Here's another set of patches to fix NetBSD compiling (although they may
also
help some other UNIXes as well).
Thanks,
David
--- configure.in.orig Mon Dec 27 09:09:05 1999
+++ configure.in Mon Dec 27 09:13:39 1999
@@ -264,6 +264,16 @@
[AC_DEFINE(HAVE_SYSLEN_IN_UTMPX) AC_MSG_RESULT(yes); ],
[AC_MSG_RESULT(no)]
)
+AC_MSG_CHECKING([whether utmp.h has ut_pid field])
+AC_EGREP_HEADER(ut_pid, utmp.h,
+ [AC_DEFINE(HAVE_PID_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_type field])
+AC_EGREP_HEADER(ut_type, utmp.h,
+ [AC_DEFINE(HAVE_TYPE_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
dnl Look for lastlog location
AC_ARG_WITH(lastlog,
--- configure.orig Mon Dec 27 09:15:10 1999
+++ configure Mon Dec 27 09:15:17 1999
@@ -2348,6 +2348,48 @@
fi
rm -f conftest*
+echo $ac_n "checking whether utmp.h has ut_pid field""...
$ac_c" 1>&6
+echo "configure:2353: checking whether utmp.h has ut_pid field"
>&5
+cat > conftest.$ac_ext <<EOF
+#line 2355 "configure"
+#include "confdefs.h"
+#include <utmp.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "ut_pid" >/dev/null 2>&1; then
+ rm -rf conftest*
+ cat >> confdefs.h <<\EOF
+#define HAVE_PID_IN_UTMP 1
+EOF
+ echo "$ac_t""yes" 1>&6;
+else
+ rm -rf conftest*
+ echo "$ac_t""no" 1>&6
+
+fi
+rm -f conftest*
+
+echo $ac_n "checking whether utmp.h has ut_type field""...
$ac_c" 1>&6
+echo "configure:2374: checking whether utmp.h has ut_type field"
>&5
+cat > conftest.$ac_ext <<EOF
+#line 2376 "configure"
+#include "confdefs.h"
+#include <utmp.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "ut_type" >/dev/null 2>&1; then
+ rm -rf conftest*
+ cat >> confdefs.h <<\EOF
+#define HAVE_TYPE_IN_UTMP 1
+EOF
+ echo "$ac_t""yes" 1>&6;
+else
+ rm -rf conftest*
+ echo "$ac_t""no" 1>&6
+
+fi
+rm -f conftest*
+
# Check whether --with-lastlog or --without-lastlog was given.
if test "${with_lastlog+set}" = set; then
--- acconfig.h.orig Mon Dec 27 09:17:11 1999
+++ acconfig.h Mon Dec 27 09:18:09 1999
@@ -33,6 +33,12 @@
/* Define is utmpx.h has a syslen field */
#undef HAVE_SYSLEN_IN_UTMPX
+/* Define is utmp.h has a ut_pid field */
+#undef HAVE_PID_IN_UTMP
+
+/* Define is utmp.h has a ut_type field */
+#undef HAVE_TYPE_IN_UTMP
+
/* Define if you want to use utmpx */
#undef USE_UTMPX
--- config.h.in.orig Mon Dec 27 09:16:31 1999
+++ config.h.in Mon Dec 27 09:18:28 1999
@@ -36,6 +36,12 @@
/* Define is utmpx.h has a syslen field */
#undef HAVE_SYSLEN_IN_UTMPX
+/* Define is utmp.h has a ut_pid field */
+#undef HAVE_PID_IN_UTMP
+
+/* Define is utmp.h has a ut_type field */
+#undef HAVE_TYPE_IN_UTMP
+
/* Define if you want to use utmpx */
#undef USE_UTMPX
--- login.c.orig Mon Dec 27 09:22:55 1999
+++ login.c Mon Dec 27 09:23:00 1999
@@ -141,10 +141,14 @@
/* Construct an utmp/wtmp entry. */
memset(&u, 0, sizeof(u));
strncpy(u.ut_line, ttyname + 5, sizeof(u.ut_line));
+#if defined(HAVE_PID_IN_UTMP)
u.ut_pid = (pid_t)pid;
+#endif /* HAVE_PID_IN_UTMP */
u.ut_time = time(NULL);
strncpy(u.ut_name, user, sizeof(u.ut_name));
+#if defined(HAVE_TYPE_IN_UTMP)
u.ut_type = (uid == -1)?DEAD_PROCESS:USER_PROCESS;
+#endif /* HAVE_TYPE_IN_UTMP */
#if defined(HAVE_HOST_IN_UTMP)
strncpy(u.ut_host, host, sizeof(u.ut_host));
#endif