diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 23598f9c74..50a7b40869 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -152,22 +152,27 @@ config_list_foreach() { default_prerm() { local root="${IPKG_INSTROOT}" - local name + local pkgname="$(basename ${1%.*})" + local ret=0 - name=$(basename ${1%.*}) - [ -f "$root/usr/lib/opkg/info/${name}.prerm-pkg" ] && . "$root/usr/lib/opkg/info/${name}.prerm-pkg" + if [ -f "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ]; then + ( . "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ) + ret=$? + fi local shell="$(which bash)" - for i in `cat "$root/usr/lib/opkg/info/${name}.list" | grep "^/etc/init.d/"`; do + for i in $(grep -s "^/etc/init.d/" "$root/usr/lib/opkg/info/${pkgname}.list"); do if [ -n "$root" ]; then ${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" disable else if [ "$PKG_UPGRADE" != "1" ]; then "$i" disable fi - "$i" stop || /bin/true + "$i" stop fi done + + return $ret } add_group_and_user() {