commit 457c568dbdd314b4d664f8304371f24717f3108a
Author: Juergen Spitzmueller <[email protected]>
Date: Thu Feb 13 08:13:22 2020 +0100
Handle encoding error in layout file parsing more gracefully
Issue a warning about non-decodable files, but do not break
completely.
Addresses #11736
(cherry picked from commit c4da8d38c9d235c6da85c554c391ad4a5b6d958e)
---
lib/configure.py | 43 ++++++++++++++++++++++++++-----------------
status.23x | 6 ++++--
2 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/lib/configure.py b/lib/configure.py
index c115ac1..602e090 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -1417,25 +1417,34 @@ def checkLatexConfig(check_config, bool_docbook):
classname = file.split(os.sep)[-1].split('.')[0]
decline = ""
catline = ""
- for line in open(file, 'r', encoding='utf8').readlines():
- if not empty.match(line) and line[0] != '#'[0]:
- if decline == "":
- logger.warning("Failed to find valid \Declare line "
- "for layout file `%s'.\n\t=> Skipping this file!" %
file)
- nodeclaration = True
- # A class, but no category declaration. Just break.
+ try:
+ for line in open(file, 'r', encoding='utf8').readlines():
+ if not empty.match(line) and line[0] != '#'[0]:
+ if decline == "":
+ logger.warning("Failed to find valid \Declare line "
+ "for layout file `%s'.\n\t=> Skipping this file!"
% file)
+ nodeclaration = True
+ # A class, but no category declaration. Just break.
+ break
+ if declare.match(line) != None:
+ decline = "\\TestDocClass{%s}{%s}" % (classname,
line[1:].strip())
+ testclasses.append(decline)
+ elif category.match(line) != None:
+ catline = ("\\DeclareCategory{%s}{%s}"
+ % (classname, category.match(line).groups()[0]))
+ testclasses.append(catline)
+ if catline == "" or decline == "":
+ continue
break
- if declare.match(line) != None:
- decline = "\\TestDocClass{%s}{%s}" % (classname,
line[1:].strip())
- testclasses.append(decline)
- elif category.match(line) != None:
- catline = ("\\DeclareCategory{%s}{%s}"
- % (classname, category.match(line).groups()[0]))
- testclasses.append(catline)
- if catline == "" or decline == "":
+ if nodeclaration:
continue
- break
- if nodeclaration:
+ except UnicodeDecodeError:
+
logger.warning("**************************************************\n"
+ "Layout file '%s'\n"
+ "cannot be decoded in utf-8.\n"
+ "Please check if the file has the correct
encoding.\n"
+ "Skipping this file!\n"
+
"**************************************************" % file)
continue
testclasses.sort()
cl = open('chklayouts.tex', 'w', encoding='utf8')
diff --git a/status.23x b/status.23x
index 147b17b..7b202f9 100644
--- a/status.23x
+++ b/status.23x
@@ -53,6 +53,7 @@ What's new
- Correctly strike out deleted text after deleted display math (bug 11716).
+
* USER INTERFACE
- Fix backspace deletion of selected items with change tracking (bug 11630).
@@ -84,11 +85,12 @@ What's new
-
* ADVANCED FIND AND REPLACE
-
* BUILD/INSTALLATION
+- Do not break configuration if a layout file is not decodable. Rather than
that,
+ issue a warning and skip that file (bug 11736).
+
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs