create source_safe() function which temporarily disables extglob and
exits on error.

Signed-off-by: Dave Reisner <[email protected]>
---
 scripts/makepkg.sh.in |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 61c95af..c7bde9c 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -858,6 +858,15 @@ error_function() {
        exit 2 # $E_BUILD_FAILED
 }
 
+source_safe() {
+       shopt -u extglob
+       if ! source "$@"; then
+               error "$(gettext "Failed to source %s")" "$1"
+               exit 1
+       fi
+       shopt -s extglob
+}
+
 run_function_safe() {
        local restoretrap
 
@@ -1781,7 +1790,7 @@ devel_update() {
                        if [[ -f $BUILDFILE && -w $BUILDFILE ]]; then
                                @SEDINPLACE@ "s/^pkgver=[^ 
]*/pkgver=$newpkgver/" "$BUILDFILE"
                                @SEDINPLACE@ "s/^pkgrel=[^ ]*/pkgrel=1/" 
"$BUILDFILE"
-                               source "$BUILDFILE"
+                               source_safe "$BUILDFILE"
                        fi
                fi
        fi
@@ -1990,7 +1999,7 @@ MAKEPKG_CONF=${MAKEPKG_CONF:-$confdir/makepkg.conf}
 
 # Source the config file; fail if it is not found
 if [[ -r $MAKEPKG_CONF ]]; then
-       source "$MAKEPKG_CONF"
+       source_safe "$MAKEPKG_CONF"
 else
        error "$(gettext "%s not found.")" "$MAKEPKG_CONF"
        plain "$(gettext "Aborting...")"
@@ -2000,7 +2009,7 @@ fi
 # Source user-specific makepkg.conf overrides, but only if no override config
 # file was specified
 if [[ $MAKEPKG_CONF = "$confdir/makepkg.conf" && -r ~/.makepkg.conf ]]; then
-       source ~/.makepkg.conf
+       source_safe ~/.makepkg.conf
 fi
 
 # set pacman command if not already defined
@@ -2116,9 +2125,7 @@ if [[ ! -f $BUILDFILE ]]; then
        else
                # PKGBUILD passed through a pipe
                BUILDFILE=/dev/stdin
-               shopt -u extglob
-               source "$BUILDFILE"
-               shopt -s extglob
+               source_safe "$BUILDFILE"
        fi
 else
        crlftest=$(file "$BUILDFILE" | grep -F 'CRLF' || true)
@@ -2130,9 +2137,7 @@ else
        if [[ ${BUILDFILE:0:1} != "/" ]]; then
                BUILDFILE="$startdir/$BUILDFILE"
        fi
-       shopt -u extglob
-       source "$BUILDFILE"
-       shopt -s extglob
+       source_safe "$BUILDFILE"
 fi
 
 # set defaults if they weren't specified in buildfile
-- 
1.7.9


Reply via email to