functions.sh: fix default_postinst function
authorMarko Ratkaj <marko.ratkaj@sartura.hr>
Tue, 7 Nov 2017 05:48:09 +0000 (06:48 +0100)
committerMathias Kresin <dev@kresin.me>
Wed, 8 Nov 2017 22:26:20 +0000 (23:26 +0100)
When we run "opkg install" on a package that installs an uci-defaults
script, functions.sh will fail to evaluate that script in its
default_postinst function.

This happens because there is no "./" present and it searches for the
file in paths specified by the PATH variable. This would work on bash,
but it will not work on ash and some other shells like sh, zsh. This
applys to the ". filename" directive used in this case.

This patch will make the path relative to the /etc/uci-defaults
directory.

Fixes: FS#1021

Signed-off-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
package/base-files/files/lib/functions.sh

index b68db6b6bd7e419627b8330f5bf31a780f817561..992d88f9649b20423d9c2a8da7d2b768ed9e4cb3 100755 (executable)
@@ -240,7 +240,7 @@ default_postinst() {
                [ -d /tmp/.uci ] || mkdir -p /tmp/.uci
                for i in $(sed -ne 's!^/etc/uci-defaults/!!p' "/usr/lib/opkg/info/${pkgname}.list"); do (
                        cd /etc/uci-defaults
-                       [ -f "$i" ] && . "$i" && rm -f "$i"
+                       [ -f "$i" ] && . ./"$i" && rm -f "$i"
                ) done
                uci commit
        fi