diff options
author | Dave Reisner <d@falconindy.com> | 2011-06-20 21:01:23 +0200 |
---|---|---|
committer | Dave Reisner <d@falconindy.com> | 2011-06-24 20:55:49 +0200 |
commit | 522c94f16842d4fe307cc72069b16a94c927c6ea (patch) | |
tree | a6e6e1d08c6e54a9d1ff41ca302f6c6b8f9421ad /scripts/repo-add.sh.in | |
parent | 2d32a9a3a348d25d6d0f3d12752399bf7fdf6570 (diff) | |
download | pacman-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>
Diffstat (limited to 'scripts/repo-add.sh.in')
-rw-r--r-- | scripts/repo-add.sh.in | 23 |
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") |