mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
A couple more places where NFC normalization was needed in the container. See #1704225 (Private bug)
This commit is contained in:
parent
8d36d399d7
commit
91872292d1
@ -22,7 +22,7 @@ from urlparse import urlparse
|
|||||||
from cssutils import getUrls, replaceUrls
|
from cssutils import getUrls, replaceUrls
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
|
||||||
from calibre import CurrentDir
|
from calibre import CurrentDir, walk
|
||||||
from calibre.constants import iswindows
|
from calibre.constants import iswindows
|
||||||
from calibre.customize.ui import plugin_for_input_format, plugin_for_output_format
|
from calibre.customize.ui import plugin_for_input_format, plugin_for_output_format
|
||||||
from calibre.ebooks import escape_xpath_attr
|
from calibre.ebooks import escape_xpath_attr
|
||||||
@ -122,7 +122,7 @@ def href_to_name(href, root, base=None):
|
|||||||
# assume all such paths are invalid/absolute paths.
|
# assume all such paths are invalid/absolute paths.
|
||||||
return None
|
return None
|
||||||
fullpath = os.path.join(base, *href.split('/'))
|
fullpath = os.path.join(base, *href.split('/'))
|
||||||
return abspath_to_name(fullpath, root)
|
return unicodedata.normalize('NFC', abspath_to_name(fullpath, root))
|
||||||
|
|
||||||
|
|
||||||
class ContainerBase(object): # {{{
|
class ContainerBase(object): # {{{
|
||||||
@ -1132,6 +1132,15 @@ class EpubContainer(Container):
|
|||||||
os.remove(join(tdir, 'mimetype'))
|
os.remove(join(tdir, 'mimetype'))
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
pass
|
pass
|
||||||
|
# Ensure all filenames are in NFC normalized form
|
||||||
|
# has no effect on HFS+ filesystems as they always store filenames
|
||||||
|
# in NFD form
|
||||||
|
for filename in walk(self.root):
|
||||||
|
n = unicodedata.normalize('NFC', filename)
|
||||||
|
if n != filename:
|
||||||
|
s = filename + 'suff1x'
|
||||||
|
os.rename(filename, s)
|
||||||
|
os.rename(s, n)
|
||||||
|
|
||||||
container_path = join(self.root, 'META-INF', 'container.xml')
|
container_path = join(self.root, 'META-INF', 'container.xml')
|
||||||
if not exists(container_path):
|
if not exists(container_path):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user