]> granicus.if.org Git - mutt/commitdiff
add fallback for inotify_init1
authorGero Treuner <gero@70t.de>
Sun, 1 Sep 2019 14:58:46 +0000 (16:58 +0200)
committerGero Treuner <gero@70t.de>
Sun, 1 Sep 2019 14:58:46 +0000 (16:58 +0200)
configure.ac
monitor.c
monitor.h

index ddb02d0585cc1ea8a7a9e0823c512dfd44376fae..4a960e1f8a10e2c237bce25d4914e15637b98477 100644 (file)
@@ -854,10 +854,11 @@ AC_ARG_ENABLE(filemonitor, AS_HELP_STRING([--disable-filemonitor],[Disable file
 ])
 
 if test x$have_filemonitor != xno ; then
-        AC_CHECK_FUNCS(inotify_init1 inotify_add_watch inotify_rm_watch,
+        AC_CHECK_FUNCS(inotify_init inotify_add_watch inotify_rm_watch,
                        [], [have_filemonitor=no])
         if test x$have_filemonitor != xno ; then
                 AC_DEFINE(USE_INOTIFY,1,[ Define if want to use inotify for filesystem monitoring (available in Linux only). ])
+                AC_CHECK_FUNCS_ONCE(inotify_init1)
                 AC_CHECK_HEADERS(sys/inotify.h)
                 MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS monitor.o"
         fi
index fffb1dabd8a3022c3d38f8f5b2cdd25c57c6d25f..8b92b319d5a8583f2375f08f505c5da143b4f952 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -25,6 +25,9 @@
 # include <unistd.h>
 # include <poll.h>
 #endif
+#ifndef HAVE_INOTIFY_INIT1
+# include <fcntl.h>
+#endif
 
 #include "mutt.h"
 #include "buffy.h"
@@ -106,12 +109,23 @@ static int monitor_init ()
 {
   if (INotifyFd == -1)
   {
+#if HAVE_INOTIFY_INIT1
     INotifyFd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
     if (INotifyFd == -1)
     {
       dprint (2, (debugfile, "monitor: inotify_init1 failed, errno=%d %s\n", errno, strerror(errno)));
       return -1;
     }
+#else
+    INotifyFd = inotify_init();
+    if (INotifyFd == -1)
+    {
+      dprint (2, (debugfile, "monitor: inotify_init failed, errno=%d %s\n", errno, strerror(errno)));
+      return -1;
+    }
+    fcntl(INotifyFd, F_SETFL, O_NONBLOCK);
+    fcntl(INotifyFd, F_SETFD, FD_CLOEXEC);
+#endif
     mutt_poll_fd_add(0, POLLIN);
     mutt_poll_fd_add(INotifyFd, POLLIN);
   }
index 3f21413dd90286ff54e2a9c0999c36163b68ece3..daa407574a572894e8c76f90e5d923afa957ed42 100644 (file)
--- a/monitor.h
+++ b/monitor.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2018 Gero Treuer <gero@70t.de>
+ * Copyright (C) 2018 Gero Treuner <gero@70t.de>
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by