On platforms without <utmp.h> or <utmpx.h>, there is no need for the read_utmp function (since 'pinky', 'users', 'who' are not built and uptime.c doesn't call read_utmp with the previous proposed patch). Here are minimal changes to avoid compilation errors in readutmp.h (still included by uptime.c) and readutmp.c.
2006-08-19 Bruno Haible <[EMAIL PROTECTED]> * m4/readutmp.m4 (gl_READUTMP): Compile readutmp.c only if <utmp.h> or <utmpx.h> exists. * lib/readutmp.h: Skip most definitions if neither <utmp.h> nor <utmpx.h> exists. --- m4/readutmp.m4.bak 2005-03-30 09:41:47.000000000 +0200 +++ m4/readutmp.m4 2006-08-19 15:59:42.000000000 +0200 @@ -1,5 +1,5 @@ -# readutmp.m4 serial 9 -dnl Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +# readutmp.m4 serial 10 +dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,19 +7,19 @@ AC_DEFUN([gl_READUTMP], [ AC_LIBSOURCES([readutmp.c, readutmp.h]) - AC_LIBOBJ([readutmp]) - - dnl Prerequisites of lib/readutmp.h and lib/readutmp.c. - AC_REQUIRE([AC_C_INLINE]) - AC_REQUIRE([gl_FUNC_FREE]) AC_CHECK_HEADERS_ONCE(utmp.h utmpx.h) - AC_CHECK_FUNCS_ONCE(utmpname utmpxname) - AC_CHECK_DECLS(getutent,,,[ + if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then + AC_LIBOBJ([readutmp]) + + dnl Prerequisites of lib/readutmp.h and lib/readutmp.c. + AC_REQUIRE([AC_C_INLINE]) + AC_REQUIRE([gl_FUNC_FREE]) + AC_CHECK_FUNCS_ONCE(utmpname utmpxname) + AC_CHECK_DECLS(getutent,,,[ #ifdef HAVE_UTMP_H # include <utmp.h> #endif ]) - if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then utmp_includes="\ $ac_includes_default #ifdef HAVE_UTMPX_H --- lib/readutmp.h.bak 2006-01-25 08:44:13.000000000 +0100 +++ lib/readutmp.h 2006-08-19 15:59:43.000000000 +0200 @@ -31,8 +31,8 @@ # undef HAVE_UTMPX_H # endif -# ifdef HAVE_UTMPX_H -# ifdef HAVE_UTMP_H +# if HAVE_UTMPX_H +# if HAVE_UTMP_H /* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */ # include <utmp.h> # endif @@ -66,7 +66,8 @@ # endif # endif -# else +# elif HAVE_UTMP_H + # include <utmp.h> # if !HAVE_DECL_GETUTENT struct utmp *getutent(); @@ -103,7 +104,7 @@ # endif /* Accessor macro for the member named ut_user or ut_name. */ -# ifdef HAVE_UTMPX_H +# if HAVE_UTMPX_H # if HAVE_STRUCT_UTMPX_UT_USER # define UT_USER(Utmp) ((Utmp)->ut_user) @@ -113,7 +114,7 @@ # define UT_USER(Utmp) ((Utmp)->ut_name) # endif -# else +# elif HAVE_UTMP_H # if HAVE_STRUCT_UTMP_UT_USER # define UT_USER(Utmp) ((Utmp)->ut_user)