kqueue bugfix: apply pruner to changed files

It already applied the pruner when traversing directories, so .git is
excluded, but .gitignore was not. Now it is.
This commit is contained in:
Joey Hess 2012-09-28 17:31:54 -04:00
parent 1363cea260
commit 364ae8317d
2 changed files with 4 additions and 3 deletions

View file

@ -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 = ()

View file

@ -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.