CHANGELOG.md (23422B)
1 # Changelog 2 3 1.9.0 2024-04-04 4 ---------------- 5 6 ### Changes and fixes 7 8 - all: make BufferedWatcher buffered again ([#657]) 9 10 - inotify: fix race when adding/removing watches while a watched path is being 11 deleted ([#678], [#686]) 12 13 - inotify: don't send empty event if a watched path is unmounted ([#655]) 14 15 - inotify: don't register duplicate watches when watching both a symlink and its 16 target; previously that would get "half-added" and removing the second would 17 panic ([#679]) 18 19 - kqueue: fix watching relative symlinks ([#681]) 20 21 - kqueue: correctly mark pre-existing entries when watching a link to a dir on 22 kqueue ([#682]) 23 24 - illumos: don't send error if changed file is deleted while processing the 25 event ([#678]) 26 27 28 [#657]: https://github.com/fsnotify/fsnotify/pull/657 29 [#678]: https://github.com/fsnotify/fsnotify/pull/678 30 [#686]: https://github.com/fsnotify/fsnotify/pull/686 31 [#655]: https://github.com/fsnotify/fsnotify/pull/655 32 [#681]: https://github.com/fsnotify/fsnotify/pull/681 33 [#679]: https://github.com/fsnotify/fsnotify/pull/679 34 [#682]: https://github.com/fsnotify/fsnotify/pull/682 35 36 1.8.0 2024-10-31 37 ---------------- 38 39 ### Additions 40 41 - all: add `FSNOTIFY_DEBUG` to print debug logs to stderr ([#619]) 42 43 ### Changes and fixes 44 45 - windows: fix behaviour of `WatchList()` to be consistent with other platforms ([#610]) 46 47 - kqueue: ignore events with Ident=0 ([#590]) 48 49 - kqueue: set O_CLOEXEC to prevent passing file descriptors to children ([#617]) 50 51 - kqueue: emit events as "/path/dir/file" instead of "path/link/file" when watching a symlink ([#625]) 52 53 - inotify: don't send event for IN_DELETE_SELF when also watching the parent ([#620]) 54 55 - inotify: fix panic when calling Remove() in a goroutine ([#650]) 56 57 - fen: allow watching subdirectories of watched directories ([#621]) 58 59 [#590]: https://github.com/fsnotify/fsnotify/pull/590 60 [#610]: https://github.com/fsnotify/fsnotify/pull/610 61 [#617]: https://github.com/fsnotify/fsnotify/pull/617 62 [#619]: https://github.com/fsnotify/fsnotify/pull/619 63 [#620]: https://github.com/fsnotify/fsnotify/pull/620 64 [#621]: https://github.com/fsnotify/fsnotify/pull/621 65 [#625]: https://github.com/fsnotify/fsnotify/pull/625 66 [#650]: https://github.com/fsnotify/fsnotify/pull/650 67 68 1.7.0 - 2023-10-22 69 ------------------ 70 This version of fsnotify needs Go 1.17. 71 72 ### Additions 73 74 - illumos: add FEN backend to support illumos and Solaris. ([#371]) 75 76 - all: add `NewBufferedWatcher()` to use a buffered channel, which can be useful 77 in cases where you can't control the kernel buffer and receive a large number 78 of events in bursts. ([#550], [#572]) 79 80 - all: add `AddWith()`, which is identical to `Add()` but allows passing 81 options. ([#521]) 82 83 - windows: allow setting the ReadDirectoryChangesW() buffer size with 84 `fsnotify.WithBufferSize()`; the default of 64K is the highest value that 85 works on all platforms and is enough for most purposes, but in some cases a 86 highest buffer is needed. ([#521]) 87 88 ### Changes and fixes 89 90 - inotify: remove watcher if a watched path is renamed ([#518]) 91 92 After a rename the reported name wasn't updated, or even an empty string. 93 Inotify doesn't provide any good facilities to update it, so just remove the 94 watcher. This is already how it worked on kqueue and FEN. 95 96 On Windows this does work, and remains working. 97 98 - windows: don't listen for file attribute changes ([#520]) 99 100 File attribute changes are sent as `FILE_ACTION_MODIFIED` by the Windows API, 101 with no way to see if they're a file write or attribute change, so would show 102 up as a fsnotify.Write event. This is never useful, and could result in many 103 spurious Write events. 104 105 - windows: return `ErrEventOverflow` if the buffer is full ([#525]) 106 107 Before it would merely return "short read", making it hard to detect this 108 error. 109 110 - kqueue: make sure events for all files are delivered properly when removing a 111 watched directory ([#526]) 112 113 Previously they would get sent with `""` (empty string) or `"."` as the path 114 name. 115 116 - kqueue: don't emit spurious Create events for symbolic links ([#524]) 117 118 The link would get resolved but kqueue would "forget" it already saw the link 119 itself, resulting on a Create for every Write event for the directory. 120 121 - all: return `ErrClosed` on `Add()` when the watcher is closed ([#516]) 122 123 - other: add `Watcher.Errors` and `Watcher.Events` to the no-op `Watcher` in 124 `backend_other.go`, making it easier to use on unsupported platforms such as 125 WASM, AIX, etc. ([#528]) 126 127 - other: use the `backend_other.go` no-op if the `appengine` build tag is set; 128 Google AppEngine forbids usage of the unsafe package so the inotify backend 129 won't compile there. 130 131 [#371]: https://github.com/fsnotify/fsnotify/pull/371 132 [#516]: https://github.com/fsnotify/fsnotify/pull/516 133 [#518]: https://github.com/fsnotify/fsnotify/pull/518 134 [#520]: https://github.com/fsnotify/fsnotify/pull/520 135 [#521]: https://github.com/fsnotify/fsnotify/pull/521 136 [#524]: https://github.com/fsnotify/fsnotify/pull/524 137 [#525]: https://github.com/fsnotify/fsnotify/pull/525 138 [#526]: https://github.com/fsnotify/fsnotify/pull/526 139 [#528]: https://github.com/fsnotify/fsnotify/pull/528 140 [#537]: https://github.com/fsnotify/fsnotify/pull/537 141 [#550]: https://github.com/fsnotify/fsnotify/pull/550 142 [#572]: https://github.com/fsnotify/fsnotify/pull/572 143 144 1.6.0 - 2022-10-13 145 ------------------ 146 This version of fsnotify needs Go 1.16 (this was already the case since 1.5.1, 147 but not documented). It also increases the minimum Linux version to 2.6.32. 148 149 ### Additions 150 151 - all: add `Event.Has()` and `Op.Has()` ([#477]) 152 153 This makes checking events a lot easier; for example: 154 155 if event.Op&Write == Write && !(event.Op&Remove == Remove) { 156 } 157 158 Becomes: 159 160 if event.Has(Write) && !event.Has(Remove) { 161 } 162 163 - all: add cmd/fsnotify ([#463]) 164 165 A command-line utility for testing and some examples. 166 167 ### Changes and fixes 168 169 - inotify: don't ignore events for files that don't exist ([#260], [#470]) 170 171 Previously the inotify watcher would call `os.Lstat()` to check if a file 172 still exists before emitting events. 173 174 This was inconsistent with other platforms and resulted in inconsistent event 175 reporting (e.g. when a file is quickly removed and re-created), and generally 176 a source of confusion. It was added in 2013 to fix a memory leak that no 177 longer exists. 178 179 - all: return `ErrNonExistentWatch` when `Remove()` is called on a path that's 180 not watched ([#460]) 181 182 - inotify: replace epoll() with non-blocking inotify ([#434]) 183 184 Non-blocking inotify was not generally available at the time this library was 185 written in 2014, but now it is. As a result, the minimum Linux version is 186 bumped from 2.6.27 to 2.6.32. This hugely simplifies the code and is faster. 187 188 - kqueue: don't check for events every 100ms ([#480]) 189 190 The watcher would wake up every 100ms, even when there was nothing to do. Now 191 it waits until there is something to do. 192 193 - macos: retry opening files on EINTR ([#475]) 194 195 - kqueue: skip unreadable files ([#479]) 196 197 kqueue requires a file descriptor for every file in a directory; this would 198 fail if a file was unreadable by the current user. Now these files are simply 199 skipped. 200 201 - windows: fix renaming a watched directory if the parent is also watched ([#370]) 202 203 - windows: increase buffer size from 4K to 64K ([#485]) 204 205 - windows: close file handle on Remove() ([#288]) 206 207 - kqueue: put pathname in the error if watching a file fails ([#471]) 208 209 - inotify, windows: calling Close() more than once could race ([#465]) 210 211 - kqueue: improve Close() performance ([#233]) 212 213 - all: various documentation additions and clarifications. 214 215 [#233]: https://github.com/fsnotify/fsnotify/pull/233 216 [#260]: https://github.com/fsnotify/fsnotify/pull/260 217 [#288]: https://github.com/fsnotify/fsnotify/pull/288 218 [#370]: https://github.com/fsnotify/fsnotify/pull/370 219 [#434]: https://github.com/fsnotify/fsnotify/pull/434 220 [#460]: https://github.com/fsnotify/fsnotify/pull/460 221 [#463]: https://github.com/fsnotify/fsnotify/pull/463 222 [#465]: https://github.com/fsnotify/fsnotify/pull/465 223 [#470]: https://github.com/fsnotify/fsnotify/pull/470 224 [#471]: https://github.com/fsnotify/fsnotify/pull/471 225 [#475]: https://github.com/fsnotify/fsnotify/pull/475 226 [#477]: https://github.com/fsnotify/fsnotify/pull/477 227 [#479]: https://github.com/fsnotify/fsnotify/pull/479 228 [#480]: https://github.com/fsnotify/fsnotify/pull/480 229 [#485]: https://github.com/fsnotify/fsnotify/pull/485 230 231 ## [1.5.4] - 2022-04-25 232 233 * Windows: add missing defer to `Watcher.WatchList` [#447](https://github.com/fsnotify/fsnotify/pull/447) 234 * go.mod: use latest x/sys [#444](https://github.com/fsnotify/fsnotify/pull/444) 235 * Fix compilation for OpenBSD [#443](https://github.com/fsnotify/fsnotify/pull/443) 236 237 ## [1.5.3] - 2022-04-22 238 239 * This version is retracted. An incorrect branch is published accidentally [#445](https://github.com/fsnotify/fsnotify/issues/445) 240 241 ## [1.5.2] - 2022-04-21 242 243 * Add a feature to return the directories and files that are being monitored [#374](https://github.com/fsnotify/fsnotify/pull/374) 244 * Fix potential crash on windows if `raw.FileNameLength` exceeds `syscall.MAX_PATH` [#361](https://github.com/fsnotify/fsnotify/pull/361) 245 * Allow build on unsupported GOOS [#424](https://github.com/fsnotify/fsnotify/pull/424) 246 * Don't set `poller.fd` twice in `newFdPoller` [#406](https://github.com/fsnotify/fsnotify/pull/406) 247 * fix go vet warnings: call to `(*T).Fatalf` from a non-test goroutine [#416](https://github.com/fsnotify/fsnotify/pull/416) 248 249 ## [1.5.1] - 2021-08-24 250 251 * Revert Add AddRaw to not follow symlinks [#394](https://github.com/fsnotify/fsnotify/pull/394) 252 253 ## [1.5.0] - 2021-08-20 254 255 * Go: Increase minimum required version to Go 1.12 [#381](https://github.com/fsnotify/fsnotify/pull/381) 256 * Feature: Add AddRaw method which does not follow symlinks when adding a watch [#289](https://github.com/fsnotify/fsnotify/pull/298) 257 * Windows: Follow symlinks by default like on all other systems [#289](https://github.com/fsnotify/fsnotify/pull/289) 258 * CI: Use GitHub Actions for CI and cover go 1.12-1.17 259 [#378](https://github.com/fsnotify/fsnotify/pull/378) 260 [#381](https://github.com/fsnotify/fsnotify/pull/381) 261 [#385](https://github.com/fsnotify/fsnotify/pull/385) 262 * Go 1.14+: Fix unsafe pointer conversion [#325](https://github.com/fsnotify/fsnotify/pull/325) 263 264 ## [1.4.9] - 2020-03-11 265 266 * Move example usage to the readme #329. This may resolve #328. 267 268 ## [1.4.8] - 2020-03-10 269 270 * CI: test more go versions (@nathany 1d13583d846ea9d66dcabbfefbfb9d8e6fb05216) 271 * Tests: Queued inotify events could have been read by the test before max_queued_events was hit (@matthias-stone #265) 272 * Tests: t.Fatalf -> t.Errorf in go routines (@gdey #266) 273 * CI: Less verbosity (@nathany #267) 274 * Tests: Darwin: Exchangedata is deprecated on 10.13 (@nathany #267) 275 * Tests: Check if channels are closed in the example (@alexeykazakov #244) 276 * CI: Only run golint on latest version of go and fix issues (@cpuguy83 #284) 277 * CI: Add windows to travis matrix (@cpuguy83 #284) 278 * Docs: Remover appveyor badge (@nathany 11844c0959f6fff69ba325d097fce35bd85a8e93) 279 * Linux: create epoll and pipe fds with close-on-exec (@JohannesEbke #219) 280 * Linux: open files with close-on-exec (@linxiulei #273) 281 * Docs: Plan to support fanotify (@nathany ab058b44498e8b7566a799372a39d150d9ea0119 ) 282 * Project: Add go.mod (@nathany #309) 283 * Project: Revise editor config (@nathany #309) 284 * Project: Update copyright for 2019 (@nathany #309) 285 * CI: Drop go1.8 from CI matrix (@nathany #309) 286 * Docs: Updating the FAQ section for supportability with NFS & FUSE filesystems (@Pratik32 4bf2d1fec78374803a39307bfb8d340688f4f28e ) 287 288 ## [1.4.7] - 2018-01-09 289 290 * BSD/macOS: Fix possible deadlock on closing the watcher on kqueue (thanks @nhooyr and @glycerine) 291 * Tests: Fix missing verb on format string (thanks @rchiossi) 292 * Linux: Fix deadlock in Remove (thanks @aarondl) 293 * Linux: Watch.Add improvements (avoid race, fix consistency, reduce garbage) (thanks @twpayne) 294 * Docs: Moved FAQ into the README (thanks @vahe) 295 * Linux: Properly handle inotify's IN_Q_OVERFLOW event (thanks @zeldovich) 296 * Docs: replace references to OS X with macOS 297 298 ## [1.4.2] - 2016-10-10 299 300 * Linux: use InotifyInit1 with IN_CLOEXEC to stop leaking a file descriptor to a child process when using fork/exec [#178](https://github.com/fsnotify/fsnotify/pull/178) (thanks @pattyshack) 301 302 ## [1.4.1] - 2016-10-04 303 304 * Fix flaky inotify stress test on Linux [#177](https://github.com/fsnotify/fsnotify/pull/177) (thanks @pattyshack) 305 306 ## [1.4.0] - 2016-10-01 307 308 * add a String() method to Event.Op [#165](https://github.com/fsnotify/fsnotify/pull/165) (thanks @oozie) 309 310 ## [1.3.1] - 2016-06-28 311 312 * Windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc) 313 314 ## [1.3.0] - 2016-04-19 315 316 * Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135) 317 318 ## [1.2.10] - 2016-03-02 319 320 * Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj) 321 322 ## [1.2.9] - 2016-01-13 323 324 kqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep) 325 326 ## [1.2.8] - 2015-12-17 327 328 * kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test) 329 * inotify: fix race in test 330 * enable race detection for continuous integration (Linux, Mac, Windows) 331 332 ## [1.2.5] - 2015-10-17 333 334 * inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki) 335 * inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken) 336 * kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie) 337 * kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion) 338 339 ## [1.2.1] - 2015-10-14 340 341 * kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx) 342 343 ## [1.2.0] - 2015-02-08 344 345 * inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD) 346 * inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD) 347 * kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59) 348 349 ## [1.1.1] - 2015-02-05 350 351 * inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD) 352 353 ## [1.1.0] - 2014-12-12 354 355 * kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43) 356 * add low-level functions 357 * only need to store flags on directories 358 * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13) 359 * done can be an unbuffered channel 360 * remove calls to os.NewSyscallError 361 * More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher) 362 * kqueue: fix regression in rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48) 363 * kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) 364 365 ## [1.0.4] - 2014-09-07 366 367 * kqueue: add dragonfly to the build tags. 368 * Rename source code files, rearrange code so exported APIs are at the top. 369 * Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang) 370 371 ## [1.0.3] - 2014-08-19 372 373 * [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36) 374 375 ## [1.0.2] - 2014-08-17 376 377 * [Fix] Missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) 378 * [Fix] Make ./path and path equivalent. (thanks @zhsso) 379 380 ## [1.0.0] - 2014-08-15 381 382 * [API] Remove AddWatch on Windows, use Add. 383 * Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30) 384 * Minor updates based on feedback from golint. 385 386 ## dev / 2014-07-09 387 388 * Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify). 389 * Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno) 390 391 ## dev / 2014-07-04 392 393 * kqueue: fix incorrect mutex used in Close() 394 * Update example to demonstrate usage of Op. 395 396 ## dev / 2014-06-28 397 398 * [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4) 399 * Fix for String() method on Event (thanks Alex Brainman) 400 * Don't build on Plan 9 or Solaris (thanks @4ad) 401 402 ## dev / 2014-06-21 403 404 * Events channel of type Event rather than *Event. 405 * [internal] use syscall constants directly for inotify and kqueue. 406 * [internal] kqueue: rename events to kevents and fileEvent to event. 407 408 ## dev / 2014-06-19 409 410 * Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally). 411 * [internal] remove cookie from Event struct (unused). 412 * [internal] Event struct has the same definition across every OS. 413 * [internal] remove internal watch and removeWatch methods. 414 415 ## dev / 2014-06-12 416 417 * [API] Renamed Watch() to Add() and RemoveWatch() to Remove(). 418 * [API] Pluralized channel names: Events and Errors. 419 * [API] Renamed FileEvent struct to Event. 420 * [API] Op constants replace methods like IsCreate(). 421 422 ## dev / 2014-06-12 423 424 * Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) 425 426 ## dev / 2014-05-23 427 428 * [API] Remove current implementation of WatchFlags. 429 * current implementation doesn't take advantage of OS for efficiency 430 * provides little benefit over filtering events as they are received, but has extra bookkeeping and mutexes 431 * no tests for the current implementation 432 * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195) 433 434 ## [0.9.3] - 2014-12-31 435 436 * kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) 437 438 ## [0.9.2] - 2014-08-17 439 440 * [Backport] Fix missing create events on macOS. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) 441 442 ## [0.9.1] - 2014-06-12 443 444 * Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) 445 446 ## [0.9.0] - 2014-01-17 447 448 * IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany) 449 * [Fix] kqueue: fix deadlock [#77][] (thanks @cespare) 450 * [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library. 451 452 ## [0.8.12] - 2013-11-13 453 454 * [API] Remove FD_SET and friends from Linux adapter 455 456 ## [0.8.11] - 2013-11-02 457 458 * [Doc] Add Changelog [#72][] (thanks @nathany) 459 * [Doc] Spotlight and double modify events on macOS [#62][] (reported by @paulhammond) 460 461 ## [0.8.10] - 2013-10-19 462 463 * [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott) 464 * [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer) 465 * [Doc] specify OS-specific limits in README (thanks @debrando) 466 467 ## [0.8.9] - 2013-09-08 468 469 * [Doc] Contributing (thanks @nathany) 470 * [Doc] update package path in example code [#63][] (thanks @paulhammond) 471 * [Doc] GoCI badge in README (Linux only) [#60][] 472 * [Doc] Cross-platform testing with Vagrant [#59][] (thanks @nathany) 473 474 ## [0.8.8] - 2013-06-17 475 476 * [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie) 477 478 ## [0.8.7] - 2013-06-03 479 480 * [API] Make syscall flags internal 481 * [Fix] inotify: ignore event changes 482 * [Fix] race in symlink test [#45][] (reported by @srid) 483 * [Fix] tests on Windows 484 * lower case error messages 485 486 ## [0.8.6] - 2013-05-23 487 488 * kqueue: Use EVT_ONLY flag on Darwin 489 * [Doc] Update README with full example 490 491 ## [0.8.5] - 2013-05-09 492 493 * [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg) 494 495 ## [0.8.4] - 2013-04-07 496 497 * [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz) 498 499 ## [0.8.3] - 2013-03-13 500 501 * [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin) 502 * [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin) 503 504 ## [0.8.2] - 2013-02-07 505 506 * [Doc] add Authors 507 * [Fix] fix data races for map access [#29][] (thanks @fsouza) 508 509 ## [0.8.1] - 2013-01-09 510 511 * [Fix] Windows path separators 512 * [Doc] BSD License 513 514 ## [0.8.0] - 2012-11-09 515 516 * kqueue: directory watching improvements (thanks @vmirage) 517 * inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto) 518 * [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr) 519 520 ## [0.7.4] - 2012-10-09 521 522 * [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji) 523 * [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig) 524 * [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig) 525 * [Fix] kqueue: modify after recreation of file 526 527 ## [0.7.3] - 2012-09-27 528 529 * [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage) 530 * [Fix] kqueue: no longer get duplicate CREATE events 531 532 ## [0.7.2] - 2012-09-01 533 534 * kqueue: events for created directories 535 536 ## [0.7.1] - 2012-07-14 537 538 * [Fix] for renaming files 539 540 ## [0.7.0] - 2012-07-02 541 542 * [Feature] FSNotify flags 543 * [Fix] inotify: Added file name back to event path 544 545 ## [0.6.0] - 2012-06-06 546 547 * kqueue: watch files after directory created (thanks @tmc) 548 549 ## [0.5.1] - 2012-05-22 550 551 * [Fix] inotify: remove all watches before Close() 552 553 ## [0.5.0] - 2012-05-03 554 555 * [API] kqueue: return errors during watch instead of sending over channel 556 * kqueue: match symlink behavior on Linux 557 * inotify: add `DELETE_SELF` (requested by @taralx) 558 * [Fix] kqueue: handle EINTR (reported by @robfig) 559 * [Doc] Godoc example [#1][] (thanks @davecheney) 560 561 ## [0.4.0] - 2012-03-30 562 563 * Go 1 released: build with go tool 564 * [Feature] Windows support using winfsnotify 565 * Windows does not have attribute change notifications 566 * Roll attribute notifications into IsModify 567 568 ## [0.3.0] - 2012-02-19 569 570 * kqueue: add files when watch directory 571 572 ## [0.2.0] - 2011-12-30 573 574 * update to latest Go weekly code 575 576 ## [0.1.0] - 2011-10-19 577 578 * kqueue: add watch on file creation to match inotify 579 * kqueue: create file event 580 * inotify: ignore `IN_IGNORED` events 581 * event String() 582 * linux: common FileEvent functions 583 * initial commit 584 585 [#79]: https://github.com/howeyc/fsnotify/pull/79 586 [#77]: https://github.com/howeyc/fsnotify/pull/77 587 [#72]: https://github.com/howeyc/fsnotify/issues/72 588 [#71]: https://github.com/howeyc/fsnotify/issues/71 589 [#70]: https://github.com/howeyc/fsnotify/issues/70 590 [#63]: https://github.com/howeyc/fsnotify/issues/63 591 [#62]: https://github.com/howeyc/fsnotify/issues/62 592 [#60]: https://github.com/howeyc/fsnotify/issues/60 593 [#59]: https://github.com/howeyc/fsnotify/issues/59 594 [#49]: https://github.com/howeyc/fsnotify/issues/49 595 [#45]: https://github.com/howeyc/fsnotify/issues/45 596 [#40]: https://github.com/howeyc/fsnotify/issues/40 597 [#36]: https://github.com/howeyc/fsnotify/issues/36 598 [#33]: https://github.com/howeyc/fsnotify/issues/33 599 [#29]: https://github.com/howeyc/fsnotify/issues/29 600 [#25]: https://github.com/howeyc/fsnotify/issues/25 601 [#24]: https://github.com/howeyc/fsnotify/issues/24 602 [#21]: https://github.com/howeyc/fsnotify/issues/21