base-files: refactor default_postinst()
- Simplify user spec parsing code - Alias IPKG_INSTROOT to shorten code - Quote variables where appropriate - Remove a useless-use-of-cat instance - Suppress errors in case control or list files are missing Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 46975
This commit is contained in:
parent
94295b80ff
commit
33b3594332
1 changed files with 43 additions and 44 deletions
|
@ -174,61 +174,60 @@ default_prerm() {
|
||||||
}
|
}
|
||||||
|
|
||||||
default_postinst() {
|
default_postinst() {
|
||||||
local pkgname rusers ret
|
local root="${IPKG_INSTROOT}"
|
||||||
ret=0
|
local pkgname="$(basename ${1%.*})"
|
||||||
pkgname=$(basename ${1%.*})
|
local rusers="$(sed -ne 's/^Require-User: *//p' $root/usr/lib/opkg/info/${pkgname}.control 2>/dev/null)"
|
||||||
rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.control)
|
local ret=0
|
||||||
[ -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 ugname ugid
|
|
||||||
|
|
||||||
ugname=$(echo $b | cut -d= -f1)
|
if [ -n "$rusers" ]; then
|
||||||
ugid=$(echo $b | cut -d= -f2)
|
local tuple oIFS="$IFS"
|
||||||
|
for tuple in $rusers; do
|
||||||
|
local uid gid uname gname
|
||||||
|
|
||||||
[ -z "$user" ] && {
|
IFS=":"
|
||||||
user=$ugname
|
set -- $tuple; uname="$1"; gname="$2"
|
||||||
uid=$ugid
|
IFS="="
|
||||||
continue
|
set -- $uname; uname="$1"; uid="$2"
|
||||||
}
|
set -- $gname; gname="$1"; gid="$2"
|
||||||
|
IFS="$oIFS"
|
||||||
|
|
||||||
gid=$ugid
|
if [ -n "$gname" ] && [ -n "$gid" ]; then
|
||||||
[ -n "$gid" ] && {
|
group_exists "$gname" || group_add "$gname" "$gid"
|
||||||
group_exists $ugname || group_add $ugname $gid
|
elif [ -n "$gname" ]; then
|
||||||
}
|
group_add_next "$gname"; gid=$?
|
||||||
|
fi
|
||||||
|
|
||||||
[ -z "$gid" ] && {
|
if [ -n "$uname" ]; then
|
||||||
group_add_next $ugname
|
user_exists "$uname" || user_add "$uname" "$uid" "$gid"
|
||||||
gid=$?
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
[ -z "$group" ] && {
|
if [ -n "$uname" ] && [ -n "$gname" ]; then
|
||||||
user_exists $user || user_add $user "$uid" $gid
|
group_add_user "$gname" "$uname"
|
||||||
group=$ugname
|
fi
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
group_add_user $ugname $user
|
unset uid gid uname gname
|
||||||
done
|
done
|
||||||
done
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
if [ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg ]; then
|
if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then
|
||||||
( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.postinst-pkg )
|
( . "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" )
|
||||||
ret=$?
|
ret=$?
|
||||||
fi
|
fi
|
||||||
[ -n "${IPKG_INSTROOT}" ] || rm -f /tmp/luci-indexcache 2>/dev/null
|
|
||||||
|
|
||||||
[ "$PKG_UPGRADE" = "1" ] || for i in `cat ${IPKG_INSTROOT}/usr/lib/opkg/info/${pkgname}.list | grep "^/etc/init.d/"`; do
|
[ -n "$root" ] || rm -f /tmp/luci-indexcache 2>/dev/null
|
||||||
[ -n "${IPKG_INSTROOT}" ] && $(which bash) ${IPKG_INSTROOT}/etc/rc.common ${IPKG_INSTROOT}$i enable; \
|
|
||||||
[ -n "${IPKG_INSTROOT}" ] || {
|
if [ "$PKG_UPGRADE" != "1" ]; then
|
||||||
$i enable
|
local shell="$(which bash)"
|
||||||
$i start
|
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" enable
|
||||||
|
else
|
||||||
|
"$i" enable
|
||||||
|
"$i" start
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue