19991228
- Replacement for getpagesize() for systems which lack it
+ - NetBSD login.c compile fix from David Rankin
+ <drankin@bohemians.lexington.ky.us>
+ - Fully set ut_tv if present in utmp or utmpx
19991227
- Automatically correct paths in manpages and configuration files. Patch
/* 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 is utmp.h has a ut_tv field */
+#undef HAVE_TV_IN_UTMP
+
/* Define if you want to use utmpx */
#undef USE_UTMPX
[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)]
+)
+AC_MSG_CHECKING([whether utmp.h has ut_tv field])
+AC_EGREP_HEADER(ut_tv, utmp.h,
+ [AC_DEFINE(HAVE_TV_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
dnl Look for lastlog location
AC_ARG_WITH(lastlog,
memset(&u, 0, sizeof(u));
strncpy(u.ut_line, ttyname + 5, sizeof(u.ut_line));
strncpy(u.ut_id, ttyname + 8, sizeof(u.ut_id));
- u.ut_pid = (pid_t)pid;
- u.ut_time = time(NULL);
strncpy(u.ut_name, user, sizeof(u.ut_name));
+#if defined(HAVE_TV_IN_UTMP)
+ (void)gettimeofday(&u.ut_tv, NULL);
+#else /* defined(HAVE_TV_IN_UTMP) */
+ u.ut_time = time(NULL);
+#endif /* defined(HAVE_TV_IN_UTMP) */
+#if defined(HAVE_PID_IN_UTMP)
+ u.ut_pid = (pid_t)pid;
+#endif /* HAVE_PID_IN_UTMP */
+#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
strncpy(utx.ut_line, ttyname + 5, sizeof(utx.ut_line));
strncpy(utx.ut_id, ttyname + 8, sizeof(utx.ut_id));
utx.ut_pid = (pid_t)pid;
- utx.ut_tv.tv_sec = time(NULL);
+ (void)gettimeofday(&utx.ut_tv, NULL);
utx.ut_type = (uid == -1)?DEAD_PROCESS:USER_PROCESS;
# ifdef HAVE_HOST_IN_UTMPX
# ifdef HAVE_SYSLEN_IN_UTMPX