summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2007-09-24 06:49:37 +0000
committerMike Frysinger <vapier@gentoo.org>2007-09-24 06:49:37 +0000
commitc19c0ed408375bfd67dafc1f59055a769496e0f6 (patch)
treedc79a1dda6727a32c8f5b0477254c9e35872beec
parentb2f8469ba3da7ecc5e9198b9ec8c826c9a0abf24 (diff)
downloadportage-c19c0ed408375bfd67dafc1f59055a769496e0f6.tar.gz
portage-c19c0ed408375bfd67dafc1f59055a769496e0f6.tar.bz2
portage-c19c0ed408375bfd67dafc1f59055a769496e0f6.zip
tweak get_config() so that it only executes one external binary (sed) instead of chaining multiple ones
svn path=/main/trunk/; revision=7798
-rwxr-xr-xbin/etc-update24
1 files changed, 15 insertions, 9 deletions
diff --git a/bin/etc-update b/bin/etc-update
index 0b0e3dede..0a6a79e9c 100755
--- a/bin/etc-update
+++ b/bin/etc-update
@@ -17,15 +17,21 @@ if type -P gsed >/dev/null ; then
fi
function get_config() {
- item=$1
-
- # First strip off comment lines, then grab the configuration
- # item. If there's more than one of the same configuration item,
- # then allow the last setting to take precedence.
- local result
- result=$(cut -d'#' -f1-1 ${PORTAGE_CONFIGROOT}etc/etc-update.conf | \
- sed -ne "s/^ *$item *= *\([\"']\{0,1\}\)\(.*\)\1/\2/p" |sed -e '$p;d')
- eval echo $result
+ # the sed here does:
+ # - strip off comments
+ # - match lines that set item in question
+ # - delete the "item =" part
+ # - store the actual value into the hold space
+ # - on the last line, restore the hold space and print it
+ # If there's more than one of the same configuration item, then
+ # the store to the hold space clobbers previous value so the last
+ # setting takes precedence.
+ local item=$1
+ eval echo $(sed -n \
+ -e 's:[[:space:]]*#.*$::' \
+ -e "/^[[:space:]]*$item[[:space:]]*=/{s:[^=]*=[[:space:]]*\([\"']\{0,1\}\)\(.*\)\1:\2:;h}" \
+ -e '${g;p}' \
+ "${PORTAGE_CONFIGROOT}"etc/etc-update.conf)
}
function scan() {