From: Karel Zak Date: Fri, 21 Nov 2014 10:38:11 +0000 (+0100) Subject: agetty: use futimens, check for all in configure.ac X-Git-Tag: v2.26-rc1~183 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90d5285d8c21897d3fc0caed4691c88f15d0131b;p=thirdparty%2Futil-linux.git agetty: use futimens, check for all in configure.ac It seems better to warn about --reload in ./configure if futimens or inotify_init1 are missing. The patch also replaces futimes() with futimens() to make the code compatible with Uclibc. Addresses: https://github.com/karelzak/util-linux/issues/133 Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index 5ec3072360..6c504b8e10 100644 --- a/configure.ac +++ b/configure.ac @@ -313,7 +313,6 @@ AC_CHECK_FUNCS([ \ getrlimit \ getsgnam \ inotify_init \ - inotify_init1 \ jrand48 \ lchown \ llseek \ @@ -346,6 +345,8 @@ AC_FUNC_FSEEKO AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no]) AC_CHECK_FUNCS([ioperm iopl], [have_io=yes]) +AC_CHECK_FUNCS([futimens], [have_futimens=yes]) +AC_CHECK_FUNCS([inotify_init1], [have_inotify_init1=yes]) dnl Old glibc requires -lrt AC_CHECK_FUNCS(clock_gettime, [], [ @@ -1052,6 +1053,11 @@ AC_ARG_ENABLE([agetty], ) UL_BUILD_INIT([agetty]) AM_CONDITIONAL([BUILD_AGETTY], [test "x$build_agetty" = xyes]) +AS_IF([test "x$have_futimens" = xyes -a "x$have_inotify_init1" = xyes ], [ + AC_DEFINE([AGETTY_RELOAD], [1], [Enable agetty --reload feature]) +],[ + AC_MSG_WARN([futimens or inotify_init1 not found; agetty(8) will not provide ---reload functionality]) +]) AC_ARG_ENABLE([cramfs], diff --git a/term-utils/agetty.c b/term-utils/agetty.c index f7ae570fbf..9871a36855 100644 --- a/term-utils/agetty.c +++ b/term-utils/agetty.c @@ -126,12 +126,6 @@ /* * agetty --reload */ -#define AGETTY_RELOAD /* enabled by default */ - -#ifndef HAVE_INOTIFY_INIT1 -# undef AGETTY_RELOAD /* disable on systems without inotify */ -#endif - #ifdef AGETTY_RELOAD # include # define AGETTY_RELOAD_FILENAME "/run/agetty.reload" /* trigger file */ @@ -2499,7 +2493,7 @@ static void reload_agettys(void) if (fd < 0) err(EXIT_FAILURE, _("cannot open: %s"), AGETTY_RELOAD_FILENAME); - if (futimes(fd, NULL) < 0 || close(fd) < 0) + if (futimens(fd, NULL) < 0 || close(fd) < 0) err(EXIT_FAILURE, _("cannot touch file: %s"), AGETTY_RELOAD_FILENAME); #else