@@ -193,6 +193,7 @@ import qualified Streamly.Internal.Data.Fold as FL
193import qualified Streamly.Internal.Data.Parser as PR
193import qualified Streamly.Internal.Data.Parser as PR
194import qualified Streamly.Internal.Data.Stream.IsStream as S
194import qualified Streamly.Internal.Data.Stream.IsStream as S
195import qualified Streamly.Internal.FileSystem.Dir as Dir
195import qualified Streamly.Internal.FileSystem.Dir as Dir
196+import qualified System.Directory as Dir
196import qualified Streamly.Internal.FileSystem.Handle as FH
197import qualified Streamly.Internal.FileSystem.Handle as FH
197import qualified Streamly.Internal.Unicode.Stream as U
198import qualified Streamly.Internal.Unicode.Stream as U
@@ -745,7 +746,8 @@ addToWatch cfg@Config{..} watch0@(Watch handle wdMap) root0 path0 = do
746 -- XXX toDirs currently uses paths as String, we need to convert it
747 -- XXX toDirs currently uses paths as String, we need to convert it
747 -- to "/" separated by byte arrays.
748 -- to "/" separated by byte arrays.
749+ pathIsDir <- Dir.doesDirectoryExist $ utf8ToString absPath
748− when watchRec $ do
750+ when (watchRec && pathIsDir) $ do
749 S.mapM_ (\p -> addToWatch cfg watch0 root (appendPaths path p))
751 S.mapM_ (\p -> addToWatch cfg watch0 root (appendPaths path p))
750 $ S.mapM toUtf8
752 $ S.mapM toUtf8
751 $ Dir.toDirs $ utf8ToString absPath
753 $ Dir.toDirs $ utf8ToString absPath