summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2011-06-20 21:01:23 +0200
committerDave Reisner <d@falconindy.com>2011-06-24 20:55:49 +0200
commit522c94f16842d4fe307cc72069b16a94c927c6ea (patch)
treea6e6e1d08c6e54a9d1ff41ca302f6c6b8f9421ad
parent2d32a9a3a348d25d6d0f3d12752399bf7fdf6570 (diff)
downloadpacman-522c94f16842d4fe307cc72069b16a94c927c6ea.tar.gz
pacman-522c94f16842d4fe307cc72069b16a94c927c6ea.tar.xz
repo-add: bashify reading of .PKGINFO file
grep and sed aren't needed here, and this removes the truly ugly manipulation of IFS. The process substituion could just as well be a herestring, but it breaks vim's syntax highlighting. Style over substance, mang. Signed-off-by: Dave Reisner <d@falconindy.com>
-rw-r--r--scripts/repo-add.sh.in23
1 files changed, 9 insertions, 14 deletions
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index e970da38..82922536 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -19,6 +19,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+shopt -s extglob
+
# gettext initialization
export TEXTDOMAIN='pacman-scripts'
export TEXTDOMAINDIR='@localedir@'
@@ -226,19 +228,14 @@ db_write_entry() {
_groups _licenses _replaces _depends _conflicts _provides _optdepends \
md5sum sha256sum pgpsig
- local OLDIFS="$IFS"
- # IFS (field separator) is only the newline character
- IFS="
-"
-
# read info from the zipped package
local line var val
- for line in $(bsdtar -xOqf "$pkgfile" .PKGINFO |
- grep -v '^#' | sed 's|\(\w*\)\s*=\s*\(.*\)|\1 \2|'); do
- # bash awesomeness here- var is always one word, val is everything else
- var=${line%% *}
- val=${line#* }
- declare $var="$val"
+ while read -r line; do
+ [[ ${line:0:1} = '#' ]] && continue
+ IFS=' =' read -r var val < <(printf '%s\n' "$line")
+
+ # normalize whitespace with an extglob
+ declare "$var=${val//+([[:space:]])/ }"
case "$var" in
group) _groups="$_groups$group\n" ;;
license) _licenses="$_licenses$license\n" ;;
@@ -248,9 +245,7 @@ db_write_entry() {
provides) _provides="$_provides$provides\n" ;;
optdepend) _optdepends="$_optdepends$optdepend\n" ;;
esac
- done
-
- IFS=$OLDIFS
+ done< <(bsdtar -xOqf "$pkgfile" .PKGINFO)
csize=$(@SIZECMD@ "$pkgfile")