commit | 2cdd39bd6129c6a49c74fb07fb9d77ba1271c572 | [log] [tgz] |
---|---|---|
author | Daniel Wagner-Hall <dawagner@gmail.com> | Tue Nov 17 01:24:26 2015 -0500 |
committer | Nathan Youngman <git@nathany.com> | Tue Nov 17 14:48:49 2015 -0700 |
tree | 87fc30cd42aa1ce4e957bd3fd9bee0e0d733bfa1 | |
parent | 79275569df67d5aa3d5d6a14b133a9fdb1e948e1 [diff] |
kqueue: avoid infinite loops from symlinks cycles The semenatics of using kqueue are already slightly different than inotify, specifically that inotify will give you events for the symlink itself whereas kqueue will only give events for the target of the symlink. This preserves that behaviour, that symlinks don't get notified on, but ensures that circular symlinks don't recurse forever. This change pushes the resolved filename up through the stack so that the fileExists map can be properly populated; not doing so would mean that deleting a cyclical symlink and then replacing it with a file of the same name would not notify for that file's creation (or subsequent events) because we would believe that the file already existed.
Go 1.3+ required.
Cross platform: Windows, Linux, BSD and OS X.
Adapter | OS | Status |
---|---|---|
inotify | Linux 2.6.27 or later, Android* | Supported |
kqueue | BSD, OS X, iOS* | Supported |
ReadDirectoryChangesW | Windows | Supported |
FSEvents | OS X | Planned |
FEN | Solaris 11 | Planned |
fanotify | Linux 2.6.37+ | |
USN Journals | Windows | Maybe |
Polling | All | Maybe |
* Android and iOS are untested.
Please see the documentation for usage. Consult the Wiki for the FAQ and further information.
Two major versions of fsnotify exist.
fsnotify.v0 is API-compatible with howeyc/fsnotify. Bugfixes may be backported, but I recommend upgrading to v1.
import "gopkg.in/fsnotify.v0"
* Refer to the package as fsnotify (without the .v0 suffix).
fsnotify.v1 provides a new API based on this design document. You can import v1 with:
import "gopkg.in/fsnotify.v1"
Further API changes are planned, but a new major revision will be tagged, so you can depend on the v1 API.
Master may have unreleased changes. Use it to test the very latest code or when contributing, but don't expect it to remain API-compatible:
import "github.com/go-fsnotify/fsnotify"
Please refer to CONTRIBUTING before opening an issue or pull request.
See example_test.go.