diff options
Diffstat (limited to 'Utility')
-rw-r--r-- | Utility/INotify.hs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/Utility/INotify.hs b/Utility/INotify.hs index 7b5a1fbea..2ce2b36aa 100644 --- a/Utility/INotify.hs +++ b/Utility/INotify.hs @@ -90,15 +90,21 @@ watchDir i dir ignored hooks | otherwise -> noop - -- Ignore creation events for regular files, which won't be - -- done being written when initially created, but handle for - -- directories and symlinks. go (Created { isDirectory = isd, filePath = f }) | isd = recurse $ indir f - | hashook addSymlinkHook = - checkfiletype Files.isSymbolicLink addSymlinkHook f - | otherwise = noop - -- Closing a file is assumed to mean it's done being written. + | otherwise = do + ms <- getstatus f + case ms of + Just s + | Files.isSymbolicLink s -> + when (hashook addSymlinkHook) $ + runhook addSymlinkHook f ms + | Files.isRegularFile s -> + when (hashook addHook) $ + runhook addHook f ms + _ -> noop + -- Closing a file is assumed to mean it's done being written, + -- so a new add event is sent. go (Closed { isDirectory = False, maybeFilePath = Just f }) = checkfiletype Files.isRegularFile addHook f -- When a file or directory is moved in, scan it to add new |