From a3bf98495a46796a0bb09c8a4fce4fc8516c4605 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Wed, 8 Oct 2014 08:01:28 +0000
Subject: [PATCH] base-files: extend USERID:=syntax

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 | 28 ++++++++++++++++-------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 7f148223f5..6f22dd013a 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -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" ] && {
-		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
+				local name id
+
+				name=$(echo $b | cut -d= -f1)
+				id=$(echo $b | cut -d= -f2)
+
 				[ -z "$user" ] && {
-					user=$b
+					user=$name
+					uid=$id
 					continue
 				}
-				[ -z "$group" ] && {
-					group=$b
-					group_add_next $b
+
+				gid=$id
+				[ -n "$gid" ] && group_add $name $gid
+				[ -z "$gid" ] && {
+					group_add_next $name
 					gid=$?
-					user_exists $user || user_add $user "" $gid
+				}
+
+				[ -z "$group" ] && {
+					user_exists $user || user_add $user "$uid" $gid
+					group=$name
 					continue
 				}
-				group_add_next $b
-				group_add_user $b $user
+
+				group_add_user $name $user
 			done
 		done
 	}
-- 
2.30.2