[OpenWrt-Devel] [PATCH] base-files: default_postinst() fix variable colision

Etienne CHAMPETIER champetier.etienne at gmail.com
Tue Feb 3 14:55:00 EST 2015


The name variable contains at first the package name,
and after the last group name.
This patch fixes /etc/rc.d symlink creation (at least).

Change name in pkgname, change the other name in ugname
(user group name), and id in ugid (user group id)

Signed-off-by: Etienne CHAMPETIER <champetier.etienne at gmail.com>
---
 package/base-files/files/lib/functions.sh | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 9d98fb0..dc3b805 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -171,51 +171,51 @@ default_prerm() {
 }
 
 default_postinst() {
-	local name rusers
-	name=$(echo $(basename $1) | cut -d. -f1)
-	rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.control)
+	local pkgname rusers
+	pkgname=$(echo $(basename $1) | cut -d. -f1)
+	rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.control)
 	[ -n "$rusers" ] && {
 		local user group uid gid
 		for a in $(echo $rusers | sed "s/Require-User://g"); do
 			user=""
 			group=""
 			for b in $(echo $a | sed "s/:/ /g"); do
-				local name id
+				local ugname ugid
 
-				name=$(echo $b | cut -d= -f1)
-				id=$(echo $b | cut -d= -f2)
+				ugname=$(echo $b | cut -d= -f1)
+				ugid=$(echo $b | cut -d= -f2)
 
 				[ -z "$user" ] && {
-					user=$name
-					uid=$id
+					user=$ugname
+					uid=$ugid
 					continue
 				}
 
-				gid=$id
+				gid=$ugid
 				[ -n "$gid" ] && {
-					group_exists $name || group_add $name $gid
+					group_exists $ugname || group_add $ugname $gid
 				}
 
 				[ -z "$gid" ] && {
-					group_add_next $name
+					group_add_next $ugname
 					gid=$?
 				}
 
 				[ -z "$group" ] && {
 					user_exists $user || user_add $user "$uid" $gid
-					group=$name
+					group=$ugname
 					continue
 				}
 
-				group_add_user $name $user
+				group_add_user $ugname $user
 			done
 		done
 	}
 
-	[ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg )
+	[ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg )
 	[ -n "${IPKG_INSTROOT}" ] || rm -f /tmp/luci-indexcache 2>/dev/null
 
-	[ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do
+	[ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.list | grep "^/etc/init.d/"`; do
 		[ -n "${IPKG_INSTROOT}" ] && $(which bash) ${IPKG_INSTROOT}/etc/rc.common ${IPKG_INSTROOT}$i enable; \
 		[ -n "${IPKG_INSTROOT}" ] || {
 			$i enable
-- 
2.1.0
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list