• Michael Albinus's avatar
    Backport kqueue integration from master · 7bf54d01
    Michael Albinus authored
    * configure.ac (--with-file-notification): Add kqueue.
    (top): Remove special test for "${HAVE_NS}" and
    ${with_file_notification}, this is handled inside gfilenotify
    tests.  Add kqueue tests.  Use NOTIFY_CFLAGS and NOTIFY_LIBS
    instead of library specific variables.  Add error message for
    gfile on Nextstep.
    
    * doc/lispref/os.texi (File Notifications): Add kqueue as backend.
    Fix some glitches in the example.
    
    * etc/NEWS: Mention kqueue.
    
    * lisp/filenotify.el (file-notify--library)
    (file-notify-descriptors, file-notify-callback)
    (file-notify-add-watch, file-notify-rm-watch)
    (file-notify-valid-p): Add kqueue support.
    (file-notify--rm-descriptor): Remove WHAT arg.
    
    * src/Makefile.in: Use NOTIFY_CFLAGS and NOTIFY_LIBS.
    
    * src/emacs.c (main): Call globals_of_kqueue and syms_of_kqueue.
    
    * src/inotify.c (inotifyevent_to_event): Extract file name from
    watch_object if the event doesn't provide it.
    (Finotify_add_watch): Add file name to watch_object.
    
    * src/keyboard.c (make_lispy_event): Check also for HAVE_KQUEUE.
    
    * src/kqueue.c: New file.
    
    * src/lisp.h: Declare extern globals_of_kqueue and syms_of_kqueue.
    
    * test/automated/file-notify-tests.el
    (file-notify--test-expected-events): Remove.
    (file-notify--test-cleanup): Do not set that variable.
    (file-notify--test-timeout) Use different timeouts for
    different libraries.
    (file-notify--test-library): New defun.
    (file-notify--test-event-test): Make stronger checks.
    (file-notify--test-with-events): EVENTS can also be a list of
    lists.  Flush outstanding events before running the body.
    Make timeout heuristically depend on the number of events.
    (file-notify-test01-add-watch, file-notify-test02-events)
    (file-notify-test04-file-validity, file-notify-test05-dir-validity):
    Rewrite in order to call file monitors but directory monitors.
    (file-notify-test02-events, file-notify-test04-file-validity): Do
    not skip cygwin tests.  Add additional test for file creation.
    Adapt expected result for different backends.
    (file-notify-test03-autorevert): Some of the tests don't work for
    w32notify.
    (file-notify-test06-many-events): New test.
    7bf54d01
inotify.c 11.5 KB