]> woffs.de Git - fd/haskell-amqp-utils.git/commitdiff
fix chdir
authorFrank Doepper <[email protected]>
Thu, 2 Sep 2021 15:03:50 +0000 (17:03 +0200)
committerFrank Doepper <[email protected]>
Thu, 2 Sep 2021 15:03:50 +0000 (17:03 +0200)
agitprop.hs

index cc849e9eeefebe2db22d97af3cbff0a10dad6dc8..39f93b423e0c4e7d969be2530442b20ea6fb66e8 100644 (file)
@@ -107,7 +107,7 @@ watchHotfolder args publishOneMsg (folder, exchange, rkey) = do
   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 <-
@@ -115,7 +115,7 @@ watchHotfolder args publishOneMsg (folder, exchange, rkey) = do
      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
@@ -144,32 +144,32 @@ confirmCallback (deliveryTag, isAll, ackType) =
 #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
@@ -183,7 +183,6 @@ publishOneMsg' ::
   -> 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