path: root/
authorSergey Poznyakoff <>2012-12-22 19:39:23 (GMT)
committer Sergey Poznyakoff <>2012-12-22 19:54:43 (GMT)
commit67a64a6a7809c183516740696e15ab88f82d7ef0 (patch) (side-by-side diff)
treeb58f30a8cee98bac7c9f4bc8236c86eefdadb4ef /
parent2c28190e77ce38b6437a2be8337680f77f58d37a (diff)
Implement inotify support.
* New option --with-inotify. Bye default, use inotify if it is present. * src/watcher.c: New file. Implements inotify watcher. * src/ [COND_INOTIFY] (wydawca_SOURCES): Add watcher.c * src/diskio.c (dir_get_path): New function. * src/job.c (job) <spool>: Remove const qualifier. All uses changed. (inotify_spool): New pseudo-spool. (fake_spool): Remove static qualifier. (wydawca_scanner): Support for inotify spools. * src/net.c (open_listener): Don't exit if the listener address is not set. (wydawca_listener): Listen on the listener socket and on the inotify descriptor. If none is set, bail out. * src/process.c (for_each_spool) (file_info_cleanup) (spool_cwd_add_new_file,spool_add_new_file): New functions. (scan_spool_unlocked): Use spool_cwd_add_new_file. Don't initialize dictionaries here: it will be done in spool_commit_triplets. (spool_open_dictionaries): New function. (close_dictionaries): Rename to spool_close_dictionaries. Clear dict_inited. * src/triplet.c (hash_triplet_compare): Compare spools as well. (register_file): Likewise. (triplet_lookup): New function. (check_triplet_state): New argument: noauth. All uses updated. (enumerate_triplets): Rename to spool_commit_triplets. Call spool_open_dictionaries. (count_processable_triplets,triplet_remove_file): New functions. * src/verify.c (verify_directive_file): New argument: noauth. All uses updated. * src/vtab.c (reg): Initialize get_path member. (get_path): New function. * src/wydawca.c (main): Set print_version_hook. * src/wydawca.h (virt_tab) <get_path>: New method. (spool) <dict_inited>: New member. (fake_spool, inotify_spool): New externs. (spool_add_new_file, spool_cwd_add_new_file) (spool_open_dictionaries, spool_close_dictionaries) (for_each_spool, count_processable_triplets) (triplet_remove_file, get_path): New protos. (enumerate_triplets): Rename to spool_commit_triplets. (verify_directive_file): Take two arguments.
Diffstat (limited to '') (more/less context) (ignore whitespace changes)
1 files changed, 29 insertions, 3 deletions
diff --git a/ b/
index a503cc7..2683b9b 100644
--- a/
+++ b/
@@ -15,7 +15,8 @@
# along with wydawca. If not, see <>.
-AC_INIT([wydawca], 2.1.90, [])
+AC_INIT([wydawca], 2.1.90, [], [wydawca],
+ [])
@@ -33,7 +34,7 @@ AC_PROG_RANLIB
# Checks for header files.
-AC_CHECK_HEADERS([stdlib.h string.h sys/file.h unistd.h])
+AC_CHECK_HEADERS([stdlib.h string.h sys/file.h unistd.h sys/inotify.h])
# Checks for typedefs, structures, and compiler characteristics.
@@ -50,7 +51,9 @@ AC_FUNC_MALLOC
-AC_CHECK_FUNCS([fchdir memset strchr strdup strerror strrchr setegid setregid setresgid setresuid seteuid setreuid vsyslog sysconf getdtablesize])
+AC_CHECK_FUNCS([fchdir memset strchr strdup strerror strrchr setegid setregid\
+ setresgid setresuid seteuid setreuid vsyslog sysconf getdtablesize\
+ inotify_init])
# **********************
# Mailutils
@@ -107,6 +110,29 @@ if test "$status_tcpwrap" = yes; then
AC_DEFINE_UNQUOTED([WITH_LIBWRAP],1,[Defined if compiling with libwrap])
+# **********************
+# TCP wrappers
+# **********************
+ AC_HELP_STRING([--with-inotify],
+ [compile with inotify(7) support (Linux-specific)]),
+ [status_inotify=${withval}],
+ [status_inotify=probe])
+if test $status_inotify != no; then
+ if test "$ac_cv_header_sys_inotify_h" = yes &&
+ test "$ac_cv_func_inotify_init" = yes; then
+ status_inotify=yes
+ elif test $status_inotify = probe; then
+ status_inotify=no
+ else
+ AC_MSG_FAILURE([Requested inotify(7) support is not available])
+ fi
+if test $status_inotify = yes; then
+ AC_DEFINE([WITH_INOTIFY],1,[Set to 1 if inotify(7) is to be used])
+AM_CONDITIONAL([COND_INOTIFY],[test $status_inotify = yes])
# Grecs subsystem
GRECS_SETUP([grecs],[git2chg getopt tests])

Return to:

Send suggestions and report system problems to the System administrator.