efl: common inotify checks, simplified.
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Thu, 6 Dec 2012 13:02:59 +0000 (13:02 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Thu, 6 Dec 2012 13:02:59 +0000 (13:02 +0000)
Another try to make inotify checks more common.

This time uses AC_CHECK_HEADERS() as for others, that already define
HAVE_SYS_INOTIFY_H, then uses that.

I still kept AM_CONDITIONAL([HAVE_INOTIFY]) because I plan to convert
ecore_file to the same, smarter, method that is used in eio (compiling
the file depending on the backend.

SVN revision: 80358

configure.ac
m4/eio_check_options.m4
src/Makefile_Eio.am
src/lib/ecore_file/ecore_file_monitor.c
src/lib/ecore_file/ecore_file_monitor_inotify.c
src/lib/ecore_file/ecore_file_private.h
src/lib/eio/eio_monitor_inotify.c
src/lib/eio/eio_monitor_poll.c

index 403c20f..6dcb82a 100644 (file)
@@ -468,12 +468,16 @@ netinet/in.h \
 siginfo.h \
 stdint.h \
 strings.h \
+sys/inotify.h \
 sys/types.h \
 sys/param.h \
 sys/mman.h \
 unistd.h \
 ])
 
+have_inotify="${ac_cv_header_sys_inotify_h}"
+AM_CONDITIONAL([HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
+
 EFL_CHECK_PATH_MAX
 
 
@@ -2368,17 +2372,6 @@ AC_ARG_ENABLE([poll],
    ],
    [want_poll="yes"])
 
-AC_ARG_ENABLE([inotify],
-   [AC_HELP_STRING([--disable-inotify],
-      [disable inotify in the ecore_file module. @<:@default=enabled@:>@])],
-   [
-    if test "x${enableval}" = "xyes" ; then
-       want_inotify="yes"
-    else
-       want_inotify="no"
-    fi
-   ],
-   [want_inotify="yes"])
 
 AC_ARG_ENABLE([atfile-source],
    [AC_HELP_STRING([--disable-atfile-source],
@@ -2440,19 +2433,6 @@ requirements_pc_ecore_file="ecore-con >= ${PACKAGE_VERSION} ecore >= ${PACKAGE_V
 
 ### Checks for header files
 
-have_inotify="no"
-if test "x${want_inotify}" = "xyes" ; then
-   AC_CHECK_HEADER([sys/inotify.h],
-      [
-       AC_DEFINE([HAVE_INOTIFY], [1], [File monitoring with Inotify])
-       have_inotify="yes"
-      ],
-      [have_inotify="no"])
-fi
-
-AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
-AC_MSG_RESULT(${have_inotify})
-
 ### Checks for types
 
 ### Checks for structures
@@ -3954,12 +3934,8 @@ setxattr("/", "user.ethumb.md5", NULL, 0, 0);
 AC_MSG_RESULT([${have_xattr}])
 
 # Check for inotify specificity
-have_inotify="no"
 have_notify_win32="no"
-EIO_CHECK_INOTIFY([have_inotify="yes"], [have_inotify="no"])
 EIO_CHECK_NOTIFY_WIN32([have_notify_win32="yes"], [have_notify_win32="no"])
-
-AM_CONDITIONAL([EIO_HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
 AM_CONDITIONAL([EIO_HAVE_WINCHANGE], [test "x${have_notify_win32}" = "xyes"])
 
 #### End of Eio
index 485dd85..5fb9012 100644 (file)
@@ -1,47 +1,3 @@
-dnl use: EIO_CHECK_INOTIFY([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-AC_DEFUN([EIO_CHECK_INOTIFY],
-[
-_eio_have_inotify="no"
-
-dnl We need to check if the right inotify version is accessible
-
-dnl It is hard to find a good test on how to check the correct
-dnl inotify version. They changed the headers a lot.
-dnl in kernel 2.6.13 __NR_inotify_init was added to the defined syscalls
-dnl in asm/unistd.h and IN_MOVE_SELF was added to linux/inotify.h
-dnl so with this check you need a very new kernel and kernel-headers!
-
-if ! test "x${have_windows}" = "xyes" ; then
-
-   AC_CHECK_LIB([c], [inotify_init],
-      [
-       AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
-       AC_DEFINE([HAVE_SYS_INOTIFY], [1], [ File monitoring with Inotify - sys/inotify.h ])
-       _eio_have_inotify="yes"
-      ],
-      [
-       AC_TRY_COMPILE(
-          [
-#include <asm/unistd.h>
-#include <linux/inotify.h>
-          ],
-          [
-int a = __NR_inotify_init; int b = IN_MOVE_SELF;
-          ],
-          [
-           AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
-           _eio_have_inotify="yes"
-          ],
-          [_eio_have_inotify="no"])
-      ])
-fi
-
-AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
-AC_MSG_RESULT([${_eio_have_inotify}])
-
-AS_IF([test "x${_eio_have_inotify}" = "xyes"], [$1], [$2])
-])
-
 dnl use: EIO_CHECK_NOTIFY_WIN32([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 AC_DEFUN([EIO_CHECK_NOTIFY_WIN32],
 [
index 28286b4..9624285 100644 (file)
@@ -18,7 +18,7 @@ lib/eio/eio_single.c \
 lib/eio/eio_xattr.c \
 lib/eio/eio_private.h
 
-if EIO_HAVE_INOTIFY
+if HAVE_INOTIFY
 lib_eio_libeio_la_SOURCES += lib/eio/eio_monitor_inotify.c
 else
 if EIO_HAVE_WINCHANGE
index 8b07589..ac7d6d4 100644 (file)
@@ -6,7 +6,7 @@
 
 typedef enum {
      ECORE_FILE_MONITOR_TYPE_NONE,
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
      ECORE_FILE_MONITOR_TYPE_INOTIFY,
 #endif
 #ifdef HAVE_NOTIFY_WIN32
@@ -22,7 +22,7 @@ static Ecore_File_Monitor_Type monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
 int
 ecore_file_monitor_init(void)
 {
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
    monitor_type = ECORE_FILE_MONITOR_TYPE_INOTIFY;
    if (ecore_file_monitor_inotify_init())
      return 1;
@@ -48,7 +48,7 @@ ecore_file_monitor_shutdown(void)
      {
       case ECORE_FILE_MONITOR_TYPE_NONE:
          break;
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
       case ECORE_FILE_MONITOR_TYPE_INOTIFY:
          ecore_file_monitor_inotify_shutdown();
          break;
@@ -101,7 +101,7 @@ ecore_file_monitor_add(const char           *path,
      {
       case ECORE_FILE_MONITOR_TYPE_NONE:
          return NULL;
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
       case ECORE_FILE_MONITOR_TYPE_INOTIFY:
          return ecore_file_monitor_inotify_add(path, func, data);
 #endif
@@ -138,7 +138,7 @@ ecore_file_monitor_del(Ecore_File_Monitor *em)
      {
       case ECORE_FILE_MONITOR_TYPE_NONE:
          break;
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
       case ECORE_FILE_MONITOR_TYPE_INOTIFY:
          ecore_file_monitor_inotify_del(em);
          break;
index 1b682fc..9cb5de8 100644 (file)
@@ -20,7 +20,7 @@
  * - Listen to IN_IGNORED, emitted when the watch is removed
  */
 
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
 
 #include <sys/inotify.h>
 
@@ -328,4 +328,4 @@ _ecore_file_monitor_inotify_print(char *file, int mask)
      INF("Inotify unmount %s: %s", type, file);
 }
 #endif
-#endif /* HAVE_INOTIFY */
+#endif /* HAVE_SYS_INOTIFY_H */
index 45d2cbd..769f2ba 100644 (file)
@@ -81,7 +81,7 @@ struct _Ecore_File_Monitor
    Ecore_File         *files;
 };
 
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
 int                 ecore_file_monitor_inotify_init(void);
 int                 ecore_file_monitor_inotify_shutdown(void);
 Ecore_File_Monitor *ecore_file_monitor_inotify_add(const char *path,
index 66abe9c..7650688 100644 (file)
 #include "eio_private.h"
 #include "Eio.h"
 
-#ifdef HAVE_SYS_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
 # include <sys/inotify.h>
-#else
-# include <asm/unistd.h>
-# include <linux/inotify.h>
 #endif
 
 /*============================================================================*
@@ -70,26 +67,6 @@ static const Eio_Inotify_Table match[] = {
   EIO_INOTIFY_LINE(IN_UNMOUNT, SELF_DELETED, SELF_DELETED)
 };
 
-#ifndef HAVE_SYS_INOTIFY
-static inline int
-inotify_init(void)
-{
-   return syscall(__NR_inotify_init);
-}
-
-static inline int
-inotify_add_watch(int fd, const char *name, __u32 mask)
-{
-   return syscall(__NR_inotify_add_watch, fd, name, mask);
-}
-
-static inline int
-inotify_rm_watch(int fd, __u32 wd)
-{
-   return syscall(__NR_inotify_rm_watch, fd, wd);
-}
-#endif
-
 static void
 _eio_inotify_del(void *data)
 {
index 4cd7d1a..2b9eb7c 100644 (file)
@@ -270,7 +270,7 @@ _eio_monitor_fallback_timer_cb(void *data)
  * @cond LOCAL
  */
 
-#if !defined HAVE_INOTIFY && !defined HAVE_NOTIFY_WIN32
+#if !defined HAVE_SYS_INOTIFY_H && !defined HAVE_NOTIFY_WIN32
 void eio_monitor_backend_init(void)
 {
 }