commit: 0bb79addc38cc95fd0e98b681ea7c626f0d7d21b
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 2 06:14:19 2021 +0000
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Sat Oct 2 06:14:19 2021 +0000
URL:
https://gitweb.gentoo.org/proj/build-docbook-catalog.git/commit/?id=0bb79add
handle corrupt catalogs gracefully
If the files get corrupted for any reason (i.e. are not valid XML),
the current code gets wedged and is unable to recover until the user
deletes or fixes them. Instead, let's throw them away and start over.
Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>
build-docbook-catalog | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/build-docbook-catalog b/build-docbook-catalog
index 1c7f103..6950f3e 100755
--- a/build-docbook-catalog
+++ b/build-docbook-catalog
@@ -161,6 +161,11 @@ multi_xmlcatalog_add() {
create_catalogs() {
local adds
+ # Initialize catalogs if they don't exist or are corrupt.
+ if ! xmllint "${ROOT}${ROOTCATALOG}" >&/dev/null ; then
+ rm -f "${ROOTCATALOG}"
+ echo "Deleting corrupt ${ROOT}${ROOTCATALOG} and starting over"
+ fi
if [[ ! -r ${ROOT}${ROOTCATALOG} ]] ; then
echo "Creating XML Catalog root ${ROOTCATALOG}"
xmlcatalog --noout --create "${ROOT}${ROOTCATALOG}"
@@ -174,6 +179,11 @@ create_catalogs() {
clean_catalog "file://${CATALOG}" "${ROOTCATALOG}"
fi
+ # Initialize catalogs if they don't exist or are corrupt.
+ if ! xmllint "${ROOT}${CATALOG}" >&/dev/null ; then
+ rm -f "${ROOT}${CATALOG}"
+ echo "Deleting corrupt ${CATALOG} and starting over"
+ fi
if [[ ! -r ${ROOT}${CATALOG} ]] ; then
echo "Creating DocBook XML Catalog ${CATALOG}"
xmlcatalog --noout --create "${ROOT}${CATALOG}"