+insert_modules() {
+ for m in $*; do
+ if [ -f /etc/modules.d/$m ]; then
+ sed 's/^[^#]/insmod &/' /etc/modules.d/$m | ash 2>&- || :
+ else
+ modprobe $m
+ fi
+ done
+}
+
+default_prerm() {
+ local name
+ name=$(basename ${1%.*})
+ [ -f /usr/lib/opkg/info/${name}.prerm-pkg ] && . /usr/lib/opkg/info/${name}.prerm-pkg
+ for i in `cat /usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do
+ $i disable
+ $i stop
+ done
+}
+
+default_postinst() {
+ local pkgname rusers ret
+ ret=0
+ pkgname=$(basename ${1%.*})
+ 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 ugname ugid
+
+ ugname=$(echo $b | cut -d= -f1)
+ ugid=$(echo $b | cut -d= -f2)
+
+ [ -z "$user" ] && {
+ user=$ugname
+ uid=$ugid
+ continue
+ }
+
+ gid=$ugid
+ [ -n "$gid" ] && {
+ group_exists $ugname || group_add $ugname $gid
+ }
+
+ [ -z "$gid" ] && {
+ group_add_next $ugname
+ gid=$?
+ }
+
+ [ -z "$group" ] && {
+ user_exists $user || user_add $user "$uid" $gid
+ group=$ugname
+ continue
+ }
+
+ group_add_user $ugname $user
+ done
+ done