diff options
Diffstat (limited to 'sysutils/user_darwin/files/groupadd.sh')
-rwxr-xr-x | sysutils/user_darwin/files/groupadd.sh | 29 |
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 . |