summaryrefslogtreecommitdiff
path: root/sysutils/user_darwin/files/groupadd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/user_darwin/files/groupadd.sh')
-rwxr-xr-xsysutils/user_darwin/files/groupadd.sh29
1 files changed, 21 insertions, 8 deletions
diff --git a/sysutils/user_darwin/files/groupadd.sh b/sysutils/user_darwin/files/groupadd.sh
index f7e9d92ec61..5fd6ee8156f 100755
--- a/sysutils/user_darwin/files/groupadd.sh
+++ b/sysutils/user_darwin/files/groupadd.sh
@@ -1,5 +1,7 @@
#!/bin/sh
+PATH=/bin:/usr/bin:$PATH
+
while [ $# -gt 1 ]; do
case $1 in
-g) gid="$2" ;;
@@ -8,6 +10,24 @@ while [ $# -gt 1 ]; do
shift; shift
done
+getnextgid()
+{
+ # See the comments in useradd for more details.
+
+ used_gids=`nireport . /groups gid`
+ low_gid=300
+
+ maybe_gid=$low_gid
+ while true; do
+ if echo $used_gids | grep -q $maybe_gid; then
+ maybe_gid=`expr $maybe_gid + 1`
+ else
+ echo $maybe_gid
+ return 0
+ fi
+ done
+}
+
group="$1"
if [ -z "$group" ]; then
echo "groupadd: Must specify group name" 1>&2
@@ -25,14 +45,7 @@ if [ -n "$gid" ]; then
exit 1
fi
else
- # Find a good unused gid. See the comments in useradd for
- # more details
- gid=300
- nireport . /groups gid | sort -n | while read used_gid; do
- if [ $gid = $used_gid ]; then
- gid=`expr $gid + 1`
- fi
- done
+ gid=`getnextgid`
fi
echo "${group}:*:${gid}:" | niload group .