mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 00:08:50 -05:00
pacman-key: refactor get_from
This function had a variety of pitfalls, including the inability to successfully find a key=value pair where no whitespace surrounded the equals sign. Make it more robust by splitting the line on the equals itself, and performing whitespace trimming on the resulting key/value pair. Signed-off-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
0e85c4989b
commit
df7b390514
@ -76,17 +76,19 @@ This is free software; see the source for copying conditions.\n\
|
||||
There is NO WARRANTY, to the extent permitted by law.\n")"
|
||||
}
|
||||
|
||||
# Read provided file and search for values matching the given key
|
||||
# The contents of the file are expected to be in this format: key = value
|
||||
# 'key', 'equal sign' and 'value' can be surrounded by random whitespace
|
||||
# Usage: get_from "$file" "$key" # returns the value for the first matching key in the file
|
||||
# read the config file "$1" which has key=value pairs, and return the key which
|
||||
# matches "$2". the equals sign between pairs may be surrounded by any amount
|
||||
# of whitespace.
|
||||
get_from() {
|
||||
while read key _ value; do
|
||||
if [[ $key = $2 ]]; then
|
||||
echo "$value"
|
||||
break
|
||||
while IFS='=' read -r key value; do
|
||||
[[ -z $key || ${key:0:1} = '#' ]] && continue
|
||||
|
||||
if [[ ${key%% *} = "$2" && -n ${value##* } ]]; then
|
||||
echo "${value##* }"
|
||||
return 0
|
||||
fi
|
||||
done < "$1"
|
||||
return 1
|
||||
}
|
||||
|
||||
verify_keyring_input() {
|
||||
|
Loading…
Reference in New Issue
Block a user