mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-08-05 08:40:13 -04:00
Fix handling of filenames that have an even number of periods before the file extension. Fixes #801939 (If html name ends with 3 periods, calibre will crash on conversion)
This commit is contained in:
parent
fe1695b742
commit
64426fb0ea
@ -106,10 +106,12 @@ def sanitize_file_name(name, substitute='_', as_unicode=False):
|
|||||||
name = name.encode(filesystem_encoding, 'ignore')
|
name = name.encode(filesystem_encoding, 'ignore')
|
||||||
one = _filename_sanitize.sub(substitute, name)
|
one = _filename_sanitize.sub(substitute, name)
|
||||||
one = re.sub(r'\s', ' ', one).strip()
|
one = re.sub(r'\s', ' ', one).strip()
|
||||||
one = re.sub(r'^\.+$', '_', one)
|
bname, ext = os.path.splitext(one)
|
||||||
|
one = re.sub(r'^\.+$', '_', bname)
|
||||||
if as_unicode:
|
if as_unicode:
|
||||||
one = one.decode(filesystem_encoding)
|
one = one.decode(filesystem_encoding)
|
||||||
one = one.replace('..', substitute)
|
one = one.replace('..', substitute)
|
||||||
|
one += ext
|
||||||
# Windows doesn't like path components that end with a period
|
# Windows doesn't like path components that end with a period
|
||||||
if one and one[-1] in ('.', ' '):
|
if one and one[-1] in ('.', ' '):
|
||||||
one = one[:-1]+'_'
|
one = one[:-1]+'_'
|
||||||
@ -132,8 +134,10 @@ def sanitize_file_name_unicode(name, substitute='_'):
|
|||||||
name]
|
name]
|
||||||
one = u''.join(chars)
|
one = u''.join(chars)
|
||||||
one = re.sub(r'\s', ' ', one).strip()
|
one = re.sub(r'\s', ' ', one).strip()
|
||||||
one = re.sub(r'^\.+$', '_', one)
|
bname, ext = os.path.splitext(one)
|
||||||
|
one = re.sub(r'^\.+$', '_', bname)
|
||||||
one = one.replace('..', substitute)
|
one = one.replace('..', substitute)
|
||||||
|
one += ext
|
||||||
# Windows doesn't like path components that end with a period or space
|
# Windows doesn't like path components that end with a period or space
|
||||||
if one and one[-1] in ('.', ' '):
|
if one and one[-1] in ('.', ' '):
|
||||||
one = one[:-1]+'_'
|
one = one[:-1]+'_'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user