* Fix the quadratic performance in substitute().
svn path=/nixpkgs/trunk/; revision=7488
This commit is contained in:
parent
eb98a4c328
commit
592cb44e52
@ -180,7 +180,9 @@ substitute() {
|
|||||||
|
|
||||||
local params=("$@")
|
local params=("$@")
|
||||||
|
|
||||||
local sedArgs=()
|
local sedScript=$NIX_BUILD_TOP/.sedargs
|
||||||
|
rm -f $sedScript
|
||||||
|
touch $sedScript
|
||||||
|
|
||||||
local n p pattern replacement varName
|
local n p pattern replacement varName
|
||||||
|
|
||||||
@ -191,25 +193,26 @@ substitute() {
|
|||||||
pattern=${params[$((n + 1))]}
|
pattern=${params[$((n + 1))]}
|
||||||
replacement=${params[$((n + 2))]}
|
replacement=${params[$((n + 2))]}
|
||||||
n=$((n + 2))
|
n=$((n + 2))
|
||||||
sedArgs=("${sedArgs[@]}" "-e" "s^$pattern^$replacement^g")
|
echo "s^$pattern^$replacement^g" >> $sedScript
|
||||||
|
sedArgs=("${sedArgs[@]}" "-e" )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$p" = "--subst-var"; then
|
if test "$p" = "--subst-var"; then
|
||||||
varName=${params[$((n + 1))]}
|
varName=${params[$((n + 1))]}
|
||||||
n=$((n + 1))
|
n=$((n + 1))
|
||||||
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^${!varName}^g")
|
echo "s^@${varName}@^${!varName}^g" >> $sedScript
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$p" = "--subst-var-by"; then
|
if test "$p" = "--subst-var-by"; then
|
||||||
varName=${params[$((n + 1))]}
|
varName=${params[$((n + 1))]}
|
||||||
replacement=${params[$((n + 2))]}
|
replacement=${params[$((n + 2))]}
|
||||||
n=$((n + 2))
|
n=$((n + 2))
|
||||||
sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^$replacement^g")
|
echo "s^@${varName}@^$replacement^g" >> $sedScript
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
sed "${sedArgs[@]}" < "$input" > "$output".tmp
|
sed -f $sedScript < "$input" > "$output".tmp
|
||||||
if test -x "$output"; then
|
if test -x "$output"; then
|
||||||
chmod +x "$output".tmp
|
chmod +x "$output".tmp
|
||||||
fi
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user