From: fuzzyray Date: Wed, 19 Sep 2007 21:19:06 +0000 (-0000) Subject: Fix handling of '-*' in user alterable variables. (Bug #192979) X-Git-Tag: gentoolkit-0.2.4.3~66 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ef6f84e233155004a5f0e40e877219502a5f204a;p=gentoolkit.git Fix handling of '-*' in user alterable variables. (Bug #192979) svn path=/; revision=447 --- diff --git a/trunk/src/revdep-rebuild/revdep-rebuild b/trunk/src/revdep-rebuild/revdep-rebuild index 19de90d..9d5f933 100755 --- a/trunk/src/revdep-rebuild/revdep-rebuild +++ b/trunk/src/revdep-rebuild/revdep-rebuild @@ -165,11 +165,13 @@ get_file_owner() { :; } # Replace whitespace with linebreaks, normalize repeated '/' chars, and sort -u # (If any libs have whitespace in their filenames, someone needs punishment.) clean_var() { - local a=$(echo ${@%%[[:space:]]-\*[[:space:]]*}) # Deliberately unquoted - # A benchmark shows this loop is faster than piping to sed, - # as long as there aren't more than a handful of '/' chars. - while [[ $a = *//* ]]; do a="${a//\/\///}"; done - sort -u <<< "${a// /$'\n'}" + [[ $@ = '-*'* ]] && return + shopt -s extglob + local a="$@" + a="${a%%[[:space:]]-\*[[:space:]]*}" # Delete what follows -* + a="${a//+([[:space:]])/$'\n'}" # Turn spaces into linebreaks + a="${a//+(\/\/)//}" # Normalize slashes + sort -u <<< "$a" } # Exit and optionally output to sterr die() {