@@ -31,11 +31,11 @@ import System.Directory (doesDirectoryExist, doesFileExist,
31import Control.Monad (filterM)
31import Control.Monad (filterM)
32import qualified Data.ByteString as B
32import qualified Data.ByteString as B
33import qualified Data.ByteString.Char8 as B8
33import qualified Data.ByteString.Char8 as B8
34−import Control.Arrow ((&&&), second, first)
34+import Control.Arrow ((&&&), second)
35import Control.Applicative ((<$>))
35import Control.Applicative ((<$>))
36−import Data.Monoid (mappend)
37import Data.ByteString.Unsafe (unsafePackAddressLen)
36import Data.ByteString.Unsafe (unsafePackAddressLen)
38import System.IO.Unsafe (unsafePerformIO)
37import System.IO.Unsafe (unsafePerformIO)
38+import System.FilePath ((</>))
40-- | Embed a single file in your source code.
40-- | Embed a single file in your source code.
@@ -90,14 +90,12 @@ notHidden ('.':_) = False
90notHidden _ = True
90notHidden _ = True
92fileList :: FilePath -> IO [(FilePath, B.ByteString)]
92fileList :: FilePath -> IO [(FilePath, B.ByteString)]
93−fileList top = map (first tail) <$> fileList' top ""
93+fileList top = fileList' top ""
95fileList' :: FilePath -> FilePath -> IO [(FilePath, B.ByteString)]
95fileList' :: FilePath -> FilePath -> IO [(FilePath, B.ByteString)]
96fileList' realTop top = do
96fileList' realTop top = do
97− let prefix1 = top ++ "/"
98− prefix2 = realTop ++ prefix1
99− allContents <- filter notHidden <$> getDirectoryContents prefix2
97+ allContents <- filter notHidden <$> getDirectoryContents (realTop </> top)
100− let all' = map (mappend prefix1 &&& mappend prefix2) allContents
98+ let all' = map ((top </>) &&& (\x -> realTop </> top </> x)) allContents
101 files <- filterM (doesFileExist . snd) all' >>=
99 files <- filterM (doesFileExist . snd) all' >>=
102 mapM (liftPair2 . second B.readFile)
100 mapM (liftPair2 . second B.readFile)
103 dirs <- filterM (doesDirectoryExist . snd) all' >>=
101 dirs <- filterM (doesDirectoryExist . snd) all' >>=