From: Richard Jones Date: Thu, 6 Aug 2009 14:44:20 +0000 (+0100) Subject: RHEL 5: inotify_init1 call did not exist on RHEL 5. X-Git-Tag: 1.0.66~1 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=1503652d07683b21c69a16f6e6f6af9aef84b839;p=libguestfs.git RHEL 5: inotify_init1 call did not exist on RHEL 5. --- diff --git a/daemon/configure.ac b/daemon/configure.ac index 126e125..b038d17 100644 --- a/daemon/configure.ac +++ b/daemon/configure.ac @@ -67,7 +67,7 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ ]) dnl Functions which may not be available in older distributions. -AC_CHECK_FUNCS([futimens listxattr llistxattr getxattr lgetxattr setxattr lsetxattr removexattr lremovexattr]) +AC_CHECK_FUNCS([futimens listxattr llistxattr getxattr lgetxattr setxattr lsetxattr removexattr lremovexattr inotify_init1]) dnl For modified printf, we need glibc either (old-style) dnl register_printf_function or (new-style) register_printf_specifier. diff --git a/daemon/inotify.c b/daemon/inotify.c index 4bc6f17..1b90f2b 100644 --- a/daemon/inotify.c +++ b/daemon/inotify.c @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include "../src/guestfs_protocol.h" @@ -70,11 +72,31 @@ do_inotify_init (int max_events) if (do_inotify_close () == -1) return -1; +#ifdef HAVE_INOTIFY_INIT1 inotify_fd = inotify_init1 (IN_NONBLOCK | IN_CLOEXEC); if (inotify_fd == -1) { reply_with_perror ("inotify_init"); return -1; } +#else + inotify_fd = inotify_init (); + if (inotify_fd == -1) { + reply_with_perror ("inotify_init"); + return -1; + } + if (fcntl (inotify_fd, F_SETFL, O_NONBLOCK) == -1) { + reply_with_perror ("fcntl: O_NONBLOCK"); + close (inotify_fd); + inotify_fd = -1; + return -1; + } + if (fcntl (inotify_fd, F_SETFD, FD_CLOEXEC) == -1) { + reply_with_perror ("fcntl: FD_CLOEXEC"); + close (inotify_fd); + inotify_fd = -1; + return -1; + } +#endif return 0; }