From e866044b7d2050c5558de8e8e2cc7f7d7f34e715 Mon Sep 17 00:00:00 2001
From: Dalibor Pospisil <dapospis@redhat.com>
Date: Fri, 2 Feb 2018 11:41:00 +0100
Subject: [PATCH 2/5] fixed persistent data load for bash <= 4.1.2
there's no '-g' option to declare in bash <= 4.1.2
therefore declare cannot be used for this purpose
---
src/journal.sh | 51 +++++++++++++++++++++++++++------------------------
1 file changed, 27 insertions(+), 24 deletions(-)
diff --git a/src/journal.sh b/src/journal.sh
index f35d03b..04e4a10 100644
--- a/src/journal.sh
+++ b/src/journal.sh
@@ -937,31 +937,34 @@ __INTERNAL_PrintHeadLog() {
# functions __INTERNAL_PersistentDataLoad and __INTERNAL_PersistentDataSave
# should be called before and after that respectively.
+__INTERNAL_PersistentDataSave_sed='s/^declare/\0 -g/'
+# ugly workaround for bash-4.1.2 and older, where -g does not exist
+# there might be an issue when there's a line break in the variables and there's
+# "")'" or "()'" at the end of the line. This should not never happen, the worst
+# case might happen in the phase name but is is not expected to contain line
+# breaks
+declare -g &> /dev/null || __INTERNAL_PersistentDataSave_sed="s/(^declare -a[^=]+=)'\(/\1(/;s/([\"(]\))'$/\1/;s/declare\s+\S+\s+([^=]+=)/\1/"
+
__INTERNAL_PersistentDataSave() {
- local var
- (
- for var in \
- __INTERNAL_STARTTIME \
- __INTERNAL_TEST_STATE \
- __INTERNAL_PHASES_PASSED \
- __INTERNAL_PHASES_FAILED \
- __INTERNAL_PHASES_SKIPPED \
- __INTERNAL_JOURNAL_OPEN \
- __INTERNAL_PHASE_OPEN \
- __INTERNAL_PHASES_WORST_RESULT \
- __INTERNAL_METAFILE_INDENT_LEVEL \
- __INTERNAL_PHASE_TYPE \
- __INTERNAL_PHASE_NAME \
- __INTERNAL_PHASE_FAILED \
- __INTERNAL_PHASE_PASSED \
- __INTERNAL_PHASE_STARTTIME \
- __INTERNAL_PHASE_TXTLOG_START \
- __INTERNAL_PHASE_METRICS \
- ;
- do
- declare -p $var
- done
- ) | sed -r 's/declare/\0 -g/' > "$__INTERNAL_PERSISTENT_DATA"
+ declare -p \
+ __INTERNAL_STARTTIME \
+ __INTERNAL_TEST_STATE \
+ __INTERNAL_PHASES_PASSED \
+ __INTERNAL_PHASES_FAILED \
+ __INTERNAL_PHASES_SKIPPED \
+ __INTERNAL_JOURNAL_OPEN \
+ __INTERNAL_PHASE_OPEN \
+ __INTERNAL_PHASES_WORST_RESULT \
+ __INTERNAL_METAFILE_INDENT_LEVEL \
+ __INTERNAL_PHASE_TYPE \
+ __INTERNAL_PHASE_NAME \
+ __INTERNAL_PHASE_FAILED \
+ __INTERNAL_PHASE_PASSED \
+ __INTERNAL_PHASE_STARTTIME \
+ __INTERNAL_PHASE_TXTLOG_START \
+ __INTERNAL_PHASE_METRICS \
+ __INTERNAL_TEST_NAME \
+ | sed -r "$__INTERNAL_PersistentDataSave_sed" > "$__INTERNAL_PERSISTENT_DATA"
}
__INTERNAL_PersistentDataLoad() {
--
2.14.3