base-files: extend USERID:=syntax
authorJohn Crispin <john@openwrt.org>
Wed, 8 Oct 2014 08:01:28 +0000 (08:01 +0000)
committerJohn Crispin <john@openwrt.org>
Wed, 8 Oct 2014 08:01:28 +0000 (08:01 +0000)
it is now possible to inlie the uid and gid in the syntax

USERID:=username=uid:group=gid:group2=gid2:...

Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 42838

package/base-files/files/lib/functions.sh

index 7f148223f525bbfb0859f604a2abd1ed9dead936..6f22dd013a9548d3e53d5487f993164d9f2b06c4 100755 (executable)
@@ -176,24 +176,36 @@ default_postinst() {
        [ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg )
        rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.control)
        [ -n "$rusers" ] && {
        [ -f ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg ] && ( . ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.postinst-pkg )
        rusers=$(grep "Require-User:" ${IPKG_INSTROOT}/usr/lib/opkg/info/${name}.control)
        [ -n "$rusers" ] && {
-               local user group
+               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
                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
+
+                               name=$(echo $b | cut -d= -f1)
+                               id=$(echo $b | cut -d= -f2)
+
                                [ -z "$user" ] && {
                                [ -z "$user" ] && {
-                                       user=$b
+                                       user=$name
+                                       uid=$id
                                        continue
                                }
                                        continue
                                }
-                               [ -z "$group" ] && {
-                                       group=$b
-                                       group_add_next $b
+
+                               gid=$id
+                               [ -n "$gid" ] && group_add $name $gid
+                               [ -z "$gid" ] && {
+                                       group_add_next $name
                                        gid=$?
                                        gid=$?
-                                       user_exists $user || user_add $user "" $gid
+                               }
+
+                               [ -z "$group" ] && {
+                                       user_exists $user || user_add $user "$uid" $gid
+                                       group=$name
                                        continue
                                }
                                        continue
                                }
-                               group_add_next $b
-                               group_add_user $b $user
+
+                               group_add_user $name $user
                        done
                done
        }
                        done
                done
        }