diff options
-rw-r--r-- | Utility/DirWatcher.hs | 4 | ||||
-rw-r--r-- | Utility/Kqueue.hs | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/Utility/DirWatcher.hs b/Utility/DirWatcher.hs index e4ee83191..b70e84b77 100644 --- a/Utility/DirWatcher.hs +++ b/Utility/DirWatcher.hs @@ -102,8 +102,8 @@ watchDir dir prune hooks runstartup = do #if WITH_KQUEUE type DirWatcherHandle = ThreadId watchDir :: FilePath -> Pruner -> WatchHooks -> (IO Kqueue.Kqueue -> IO Kqueue.Kqueue) -> IO DirWatcherHandle -watchDir dir ignored hooks runstartup = do - kq <- runstartup $ Kqueue.initKqueue dir ignored +watchDir dir prune hooks runstartup = do + kq <- runstartup $ Kqueue.initKqueue dir prune forkIO $ Kqueue.runHooks kq hooks #else type DirWatcherHandle = () diff --git a/Utility/Kqueue.hs b/Utility/Kqueue.hs index f44893195..4b72961b2 100644 --- a/Utility/Kqueue.hs +++ b/Utility/Kqueue.hs @@ -198,7 +198,8 @@ handleChange kq@(Kqueue _ _ dirmap pruner) fd olddirinfo = go =<< catchMaybeIO (getDirInfo $ dirName olddirinfo) where go (Just newdirinfo) = do - let changes = olddirinfo // newdirinfo + let changes = filter (not . pruner . changedFile) $ + olddirinfo // newdirinfo let (added, deleted) = partition isAdd changes -- Scan newly added directories to add to the map. |