aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2016-10-30 01:09:10 +0200
committerUlrich Müller <ulm@gentoo.org>2016-10-30 01:09:10 +0200
commita121df41e723306bdd925098ebd4a8939ac188fe (patch)
tree811c8087fe6dbbcc38aea093edf3aeba3ac9538c
parentUpdate version to 1.4.6. (diff)
downloadeselect-a121df41.tar.gz
eselect-a121df41.tar.bz2
eselect-a121df41.zip
Ignore comment lines when parsing config files.
* libs/config.bash.in (store_config): Ignore comment lines in config files and make parsing more robust, bug 598480.
-rw-r--r--ChangeLog5
-rw-r--r--libs/config.bash.in8
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index eb3db3b..e9fc937 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-30 Ulrich Müller <ulm@gentoo.org>
+
+ * libs/config.bash.in (store_config): Ignore comment lines in
+ config files and make parsing more robust, bug 598480.
+
2016-06-17 Ulrich Müller <ulm@gentoo.org>
* configure.ac: Update version to 1.4.6.
diff --git a/libs/config.bash.in b/libs/config.bash.in
index 80ef798..9fbecf0 100644
--- a/libs/config.bash.in
+++ b/libs/config.bash.in
@@ -57,9 +57,11 @@ store_config() {
# parse the names of all settings in the file
local ifs_save=${IFS} IFS=$'\n'
for line in ${content} ; do
- [[ ${line/=/} != ${line} ]] || continue
- line=${line/=*/}
- local ${line}=""
+ line=${line##*([[:space:]])}
+ [[ ${line} != "#"* && ${line} == *=* ]] || continue
+ line=${line%%=*}
+ # assignment will fail if ${line} is not a valid identifier
+ local ${line}="" || continue
vars=(${vars[@]} ${line})
done
IFS=${ifs_save}