NEWS **** New in 1.22.0-develop: New in 1.21.0: * CLI, Issues 104 and 273: Add --filter-mode=conjunctive. In this mode, include filters define the candidate set and exclude filters subtract from it: a path is accepted when it matches an include filter, or when no include filters are specified, and does not match any exclude filter. * CLI, Issue 151: Add --prune to prevent recursive traversal from descending into matching directories where the selected monitor performs traversal in fswatch or libfswatch. This is distinct from --exclude: --exclude filters emitted events, while --prune prevents recursive descent into matching subtrees. * Compatibility: Legacy include/exclude filter behavior remains the default. In legacy mode, include filters may still override exclude filters. * Issue 305: Install CMake package configuration files for libfswatch so CMake consumers can use find_package(libfswatch CONFIG). * Bug fix, Issue 247: Keep explicit root paths eligible for monitor setup even when path filters would reject the root path itself, allowing matching children to be discovered and reported. * Issue 238: Document the BSD/macOS xargs replacement-string length caveat when processing fswatch output with xargs -I. * Add filtering regression coverage for legacy and conjunctive filter modes, root-path eligibility, and traversal pruning. New in 1.20.1: * Correct the 1.20.0 release notes to document PR 368, Issue 367: the Linux inotify monitor now uses an epoll/eventfd wait loop, improving stop responsiveness and event queue draining behavior. New in 1.20.0: * Issue 365: Add an opt-in Linux fanotify monitor with process attribution support and custom output directives for process ID metadata. * Issue 365: Add opt-in fanotify monitor properties for unlimited event queue and mark limits. * Issue 365: Fix CMake builds when ignored Autotools configuration headers exist in the source tree. * PR 368, Issue 367: Refactor the Linux inotify monitor to use an epoll/eventfd wait loop, improving stop responsiveness and event queue draining behavior. * Fix CoreFoundation path ownership in the macOS FSEvents monitor. New in 1.19.1: * PR 350, Issue 349: Fix latency values lower than one second in the Windows monitor. * Issue 352: inotify no longer reports access, open, or close-without-write events unless access events are enabled with -a or --access. New in 1.19.0: * PR 353, Issue 343: Fix a segmentation fault in the macOS FSEvents monitor when file event metadata does not include an inode. * PR 354, Issue 330: Fix recursive inotify monitoring so fast file creation in newly-created directories is detected. * PR 340: Enable libfswatch compilation under Windows MinGW. * Fix: spurious output 'inotify_rm_watch: Invalid argument' * Issue 335: v. 1.18.0: build error: 'kFSEventStreamCreateFlagFileEvents' was not declared in this scope. * Grammar fix in documentation. * Fix: typo in man page. New in 1.18.2: * Added event flag CloseWrite: file open for write has been closed. * kqueue_monitor: added support for CloseWrite, adding support for events of type NOTE_CLOSE_WRITE. * inotify_monitor: added support for CloseWrite, adding support for events of type IN_CLOSE_WRITE. * Issue 337: fswatch exits on non-existing paths. New in 1.18.1: * Issue 333: Fix: Handle non-ASCII characters in file paths to prevent segmentation faults in FSEvents callback. New in 1.18.0: * The C++17 standard has been adopted: code has been rewritten and simplified to adobe new features of the C++17 standard library such as std::filesystem. * gettextize: gettext v. 0.22.5 * Documentation: add reference to Go bindings. * Issue 313: Make -1, --one-event return $? when killed. * Remove unused or obsolete configuration checks. * Use the #include predefined notation to include generated configuration headers. * Use target CPPFLAGS instead of AM_CPPFLAGS. * Update FSEventStreamEventFlags flags and add support to macOS 10.13+ features. * Issue 278: FSEvents monitor: Add support to for extended data, to allow file inodes to be collected with events. This feature enables users to correlate rename events. * Issue 278: inotify monitor: Add support for correlation cookie. This feature enables users to correlate rename events. * Add %c format specifier to print the event correlation id. * Require , and thread_local and remove checks and conditional code. New in 1.17.1: * Issue 291: Configuration header leaked into public interface in v. 1.17.0. New in 1.17.0: * Refactor code to replace usages of deprecated function FSEventStreamScheduleWithRunLoop with FSEventStreamSetDispatchQueue. * Issue 230: Improve responsiveness on macos: add support for kFSEventStreamCreateFlagNoDefer. * Issue 249: Man page still mentions fswatch-run. * Issue 255: Implement event bubbling. * Issue 256: -1 flag prints the file changed 3x before exiting. New in 1.16.0: * Update FSEvents flags and add support to macOS 10.10+ features. * Issue 226: Add FreeBSD installation instructions. * Issue 243: PlatformSpecific instead of Updated on Darwin 19.4. * Issue 248: Update fswatch.7.in to add the Event Types section to the man page. * Issue 257: Update FreeBSD installation instructions. * Issue 260: Fix memory leak. * Issue 269: do not use global variable in function, pass parameter instead. * Issue 270: using both AC_CONFIG_MACRO_DIR and AC_CONFIG_MACRO_DIRS is deprecated in autoconf-2.71 * Issue 272: Send AttributeModified on touch when using the FSevents monitor. New in 1.14.0: * Issue 218: fswatch v1.13 ignores the --monitor parameter and always uses the default monitor. New in 1.12.0: * Issue 178: Migrate usages of POSIX regular expressions () to the C++11 regex library (). * Issue 191: Wrong error message is printed when inotify event queue overflows. New in 1.11.3: * Issue 192: Make the build reproducible. New in 1.11.2: * Issue 182: Generate a single message catalog for both fswatch and libfswatch. * NLS support can be disabled. * gettext is an optional dependency. New in 1.11.1: * Issue 182: Remove mandatory dependency to git. New in 1.11.0: * Issue 174: Allow a numeric event mask to be specified. * Issue 181: Make gettext an optional dependency. New in 1.10.0: * Issue 60: Allow excluding file patterns by passing in a file. * Issue 119: Merge fswatch and libfswatch Autotools project into one. * Issue 141: Add Docker files for Linux distributions used for testing. * Add target to build fswatch on Alpine Linux and Debian. New in 1.9.3: * Only libfswatch has been updated. New in 1.9.2: * Issue 118: v. 1.9.0 breaks the -1 option. New in 1.9.1: * Only libfswatch has been updated. New in 1.9.0: * Issue 84: Add the possibility of scheduling a periodic event. * Issue 114: fswatch does not track newly created directories recursively when using the inotify monitor. * The AX_CXX_COMPILE_STDCXX macro was patched so that the switches it adds to the compiler are added to the preprocessor configuration as well. New in 1.8.0: * Unsupported CMake files and CLion project files are included as a courtesy. New in 1.7.0: * Issue 35: Support Solaris/Illumos File Events Notification API. * Issue 98: Add (-d, --directories) option to request the monitor to watch directories only during a recursive scan. * Issue 99: A monitor using the File Events Notification API of the Solaris/Illumos kernel has been added. * Issue 101: Add flag to watch file accesses. New in 1.6.1: * Texinfo documentation now includes @dircategory and @direntry tags to be compatible with install-info. New in 1.6.0: * fswatch can now be built on Microsoft Windows using Cygwin. * A monitor for Microsoft Windows has been added. * fswatch can report monitor buffer overflows (which cannot be avoided with certain monitors) as regular events for callers to recover gracefully. * Monitors can be customized by passing monitor-specific configuration properties. New in 1.5.1: * fswatch-run scripts have been removed. * Dependency on at least one supported shell (Zsh or Bash) has been removed. * Fixes Issue 91: Can't compile fswatch 1.5.0 on FreeBSD 9.3-RELEASE. New in 1.5.0: * Fix issue 46: Allow filtering by event type. New in 1.4.7: * Fix bug in exclusion filter ordering (PR 75). * README.md improvements. * Documentation improvements. New in 1.4.6: * Fix issue 74: Assertion failed on fsw_destroy_session. New in 1.4.5.3: * Fix issue 67: 100% CPU usage while using libfswatch. This issue only affects the inotify monitor, available only on Linux. New in 1.4.5.2: * Fix issue 66: Exclude items with poll_monitor not considered. New in 1.4.5.1: * Do not distribute wrapper scripts for shells which are not installed (the FreeBSD port system checks shebangs and complains). New in 1.4.5: * Add custom record formats. New in 1.4.4: * Localize fswatch and libfswatch using GNU gettext. * Add Italian (it) localization. * Add Spanish (es) localization. New in 1.4.3.2: * Fix Makefile.am because of broken link when DESTDIR installs are performed. New in 1.4.3.1: * Fix bug in fswatch-run wrapper script for ZSH which caused last argument not to be split when passed to xargs. New in 1.4.3: * Add batch marker feature to delimit the boundaries of a batch of events. * Add Texinfo documentation. * libfswatch API is now versioned. * Improved Autoconf checks. * The inotify monitor now waits for events and honours the latency settings. * Automaticaly generate the ChangeLog using Git. * Update autogen.sh to honour some commonly used environment variables. New in 1.4.2: * The inotify monitor now provides the same functionality provided by all the other monitors. Recursive directory monitoring is now implemented. * Version and revision is now determined dynamically from Git by ancillary scripts invoked by the GNU Build System. New in 1.4.1.1: * fswatch does not compile on OS X < 10.9 because some required C++11 classes are not supported by the C++ runtime. New in 1.4.1: * fswatch does not compile on OS X < 10.9 because some required C++11 classes are not supported by the C++ runtime. New in 1.4.0: * The libfswatch library has been added with bindings for C and C++. * fswatch let users specify the monitor to use by name. New in 1.3.9: * Fix Issue 23: Add `--include [regex]` option. * Fix Issue 25: Add `--include [regex]` option. * Paths can be included using -i/--include and providing a set of regular expressions. New in 1.3.8: * Fix Issue 34: Diagnostic messages were output by the inotify monitor even if fswatch was not run in verbose mode. New in 1.3.7: * Fix Issue 32: Problems building fswatch 1.3.6 on Mac v10.8.5 * Remove usages of C++11 initializer lists so that fswatch builds with older compiler. New in 1.3.6: * Fix Issue 26: fswatch-run can't run a command with arguments. * fswatch-run scripts are provided for ZSH and Bash. * System is scanned during installation to check for ZSH and Bash availability. Path of found shells is substituted in the corresponding scripts, otherwise the default /bin/[shell] is used. * If a supported shell is found, the fswatch-run symbolic link is created in the installation directory to the corresponding script. The lookup order of the shells is: - ZSH. - Bash. New in 1.3.5: * Fix Issue 27: Redirect usage text to standard error unless `-h` or `--help`. * Fix bug to write usage to standard error when invalid arguments are specified. New in 1.3.4: * Fix bug in fswatch-run script to allow arguments to be passed to the command to run. New in 1.3.3: * Add -o/--one-per-batch option to print a single message with the number of change events in the current batch. * Add fswatch-run shell script to mimic the behaviour of earlier fswatch versions and launch the specified command when change events are received. New in 1.3.2: * fswatch has been merged with fsw (https://github.com/emcrisostomo/fsw).