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
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
],
[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],
### 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
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
-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],
[
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
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
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;
{
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;
{
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
{
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;
* - Listen to IN_IGNORED, emitted when the watch is removed
*/
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY_H
#include <sys/inotify.h>
INF("Inotify unmount %s: %s", type, file);
}
#endif
-#endif /* HAVE_INOTIFY */
+#endif /* HAVE_SYS_INOTIFY_H */
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,
#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
/*============================================================================*
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)
{
* @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)
{
}