From 8bba9463cfddb052211a786a35628122cd4ca282 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Sat, 28 Jul 2007 20:00:15 +0000 Subject: [PATCH] * splited lib/sde-config/pkgsel2awk.sh's pkgsel_parse() in pkgsel_pattern(), trying to get debian's bash not crashing git-svn-id: svn://svn.opensde.net/opensde/opensde/trunk@21860 10447126-35f2-4685-b0cf-6dd780d3921f --- lib/sde-config/pkgsel2awk.sh | 43 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/sde-config/pkgsel2awk.sh b/lib/sde-config/pkgsel2awk.sh index aa29627..893f90d 100755 --- a/lib/sde-config/pkgsel2awk.sh +++ b/lib/sde-config/pkgsel2awk.sh @@ -27,8 +27,32 @@ # Result: creates pkgsel.awk output # pkgsel include file # Result: continues processing file specified +pkgsel_pattern() { + local pattern= xpattern= + local address= + + for xpattern; do + pattern="${xpattern#\!}" + [ "$pattern" = "$xpattern" ]; neg=$? + [ "${pattern}" = "${pattern//\//}" ] && pattern="*/$pattern" + pattern="$( echo "$pattern" | sed \ + -e 's,[^a-zA-Z0-9_/\*+\-\[\]],,g' \ + -e 's,[/\.\+],\\\\&,g' \ + -e 's,\*,[^/]*,g' )" + + [ -z "$address" ] || address="$address &&" + + if [ $neg -eq 0 ]; then + address="$address( \$5 ~ \"^${pattern}\$\" )" + else + address="$address( \$5 !~ \"^${pattern}\$\" )" + fi + done + echo "$address" +} + pkgsel_parse() { - local action patterlist pattern + local action patterlist local address first others sed -e '/^#/d;' -e '/^[ \t]*$/d;' "$@" | while read action patternlist ; do @@ -48,24 +72,9 @@ pkgsel_parse() { echo '{ exit; }' continue ;; esac - address="" - while read xpattern ; do - pattern="${xpattern#\!}" - [ "$pattern" = "$xpattern" ]; neg=$? - [ "${pattern}" = "${pattern//\//}" ] && pattern="*/$pattern" - pattern="$( echo "$pattern" | sed \ - -e 's,[^a-zA-Z0-9_/\*+\-\[\]],,g' \ - -e 's,[/\.\+],\\\\&,g' \ - -e 's,\*,[^/]*,g' )" - [ -z "$address" ] || address="$address &&" + address=$( pkgsel_pattern "$patternlist" ) - if [ $neg -eq 0 ]; then - address="$address( \$5 ~ \"^${pattern}\$\" )" - else - address="$address( \$5 !~ \"^${pattern}\$\" )" - fi - done < <( echo "$patternlist" | tr '\t ' '\n\n' ) echo "{ if ( $address ) { $action; } }" done }