EPUB reader: Fixed bug where filepaths weren't sufficiently normalised
This commit is contained in:
parent
1f02ff60ba
commit
9eded27e32
1 changed files with 5 additions and 4 deletions
|
@ -169,10 +169,10 @@ getManifest archive = do
|
||||||
ns <- mkE "xmlns not in namespaces" (lookup "xmlns" namespaces)
|
ns <- mkE "xmlns not in namespaces" (lookup "xmlns" namespaces)
|
||||||
as <- liftM ((map attrToPair) . elAttribs)
|
as <- liftM ((map attrToPair) . elAttribs)
|
||||||
(findElementE (QName "rootfile" (Just ns) Nothing) docElem)
|
(findElementE (QName "rootfile" (Just ns) Nothing) docElem)
|
||||||
root <- mkE "Root not found" (lookup "full-path" as)
|
manifestFile <- mkE "Root not found" (lookup "full-path" as)
|
||||||
let rootdir = dropFileName root
|
let rootdir = dropFileName manifestFile
|
||||||
--mime <- lookup "media-type" as
|
--mime <- lookup "media-type" as
|
||||||
manifest <- findEntryByPathE root archive
|
manifest <- findEntryByPathE manifestFile archive
|
||||||
liftM ((,) rootdir) (parseXMLDocE . UTF8.toStringLazy . fromEntry $ manifest)
|
liftM ((,) rootdir) (parseXMLDocE . UTF8.toStringLazy . fromEntry $ manifest)
|
||||||
|
|
||||||
-- Fixup
|
-- Fixup
|
||||||
|
@ -272,7 +272,8 @@ findAttrE :: MonadError String m => QName -> Element -> m String
|
||||||
findAttrE q e = mkE "findAttr" $ findAttr q e
|
findAttrE q e = mkE "findAttr" $ findAttr q e
|
||||||
|
|
||||||
findEntryByPathE :: MonadError String m => FilePath -> Archive -> m Entry
|
findEntryByPathE :: MonadError String m => FilePath -> Archive -> m Entry
|
||||||
findEntryByPathE path a = mkE ("No entry on path: " ++ path) $ findEntryByPath path a
|
findEntryByPathE (normalise -> path) a =
|
||||||
|
mkE ("No entry on path: " ++ path) $ findEntryByPath path a
|
||||||
|
|
||||||
parseXMLDocE :: MonadError String m => String -> m Element
|
parseXMLDocE :: MonadError String m => String -> m Element
|
||||||
parseXMLDocE doc = mkE "Unable to parse XML doc" $ parseXMLDoc doc
|
parseXMLDocE doc = mkE "Unable to parse XML doc" $ parseXMLDoc doc
|
||||||
|
|
Loading…
Reference in a new issue