setCurrentDirectory folder
if (initialScan args)
then getDirectoryContents "." >>=
- mapM_ (\fn -> handleFile (publishOneMsg exchange rkey (Just folder)) (suffix args) fn)
+ mapM_ (\fn -> handleFile (publishOneMsg exchange rkey (Just folder)) (suffix args) (Just folder) fn)
else return ()
inotify <- initINotify
wd <-
inotify
[CloseWrite, MoveIn]
(BS.pack folder)
- (handleEvent (publishOneMsg exchange rkey (Just folder)) (suffix args))
+ (handleEvent (publishOneMsg exchange rkey (Just folder)) (suffix args) (Just folder))
hr $ "BEGIN watching " ++ folder
return (wd,folder)
#else
#if linux_HOST_OS
-- | Hotfolder event handler
handleEvent ::
- (Maybe String -> BL.ByteString -> IO ()) -> [String] -> Event -> IO ()
+ (Maybe String -> BL.ByteString -> IO ()) -> [String] -> Maybe FilePath -> Event -> IO ()
-- just handle closewrite and movedin events
#if MIN_VERSION_hinotify(0,3,10)
-handleEvent func suffixes (Closed False (Just fileName) True) =
- handleFile func suffixes (BS.unpack fileName)
-handleEvent func suffixes (MovedIn False fileName _) =
- handleFile func suffixes (BS.unpack fileName)
+handleEvent func suffixes folder (Closed False (Just fileName) True) =
+ handleFile func suffixes folder (BS.unpack fileName)
+handleEvent func suffixes folder (MovedIn False fileName _) =
+ handleFile func suffixes folder (BS.unpack fileName)
#else
-handleEvent func suffixes (Closed False (Just fileName) True) =
- handleFile func suffixes fileName
-handleEvent func suffixes (MovedIn False fileName _) =
- handleFile func suffixes fileName
+handleEvent func suffixes folder (Closed False (Just fileName) True) =
+ handleFile func suffixes folder fileName
+handleEvent func suffixes folder (MovedIn False fileName _) =
+ handleFile func suffixes folder fileName
#endif
-handleEvent _ _ _ = return ()
+handleEvent _ _ _ _ = return ()
-- | Hotfolder file handler
handleFile ::
- (Maybe String -> BL.ByteString -> IO ()) -> [String] -> FilePath -> IO ()
-handleFile _ _ ('.':_) = return () -- ignore hidden files
-handleFile func suffixes@(_:_) fileName =
+ (Maybe String -> BL.ByteString -> IO ()) -> [String] -> Maybe FilePath -> FilePath -> IO ()
+handleFile _ _ _ ('.':_) = return () -- ignore hidden files
+handleFile func suffixes@(_:_) folder fileName =
if any (flip isSuffixOf fileName) suffixes
- then handleFile func [] fileName
+ then handleFile func [] folder fileName
else return ()
-handleFile func [] fileName =
+handleFile func [] folder fileName =
X.catch
- (BL.readFile fileName >>= func (Just fileName))
+ (mapM_ setCurrentDirectory folder >> BL.readFile fileName >>= func (Just fileName))
(\e -> printparam "exception in handleFile" (e :: X.IOException))
#endif
-- | Publish one message with our settings
-> BL.ByteString
-> IO ()
publishOneMsg' chan a exchange rkey folder fn content = do
- mapM_ setCurrentDirectory folder
printparam "sending" [folder, fn]
(mtype, mencoding) <-
if (magic a) && isJust fn