#!/bin/sh

REQUESTOR="$1"
GROUP="$2"
MEMBER="$3"
test -z "$MEMBER" && \
  echo "Usage: groups-create requestor groupname firstmember [groupfile]" 1>&2 && exit 1

if test -z "$NO_SYSUTILS"; then
	/usr/sbin/addgroup "$GROUP" || exit 1
	/usr/sbin/adduser "$MEMBER" "$GROUP" || exit 1
	echo "Created group $GROUP with resp $MEMBER for $REQUESTOR"
	exit 0
fi

GROUPFILE="$4"
test -z "$GROUPFILE" && GROUPFILE=./test

echo "$GROUP" | grep -qvx '[a-z][a-z0-9]*' && \
  echo "Error: invalid group name: $GROUP" 1>&2 && exit 1

echo "$MEMBER" | grep -qvx '[a-z][a-z0-9]*' && \
  echo "Error: invalid member name: $MEMBER" 1>&2 && exit 1

grep -q "^$GROUP:" "$GROUPFILE" && \
  echo "Error: group already exists: $GROUP" 1>&2 && exit 1

MAXGID=`sort -rn -t: -k3 "$GROUPFILE"|grep -v '^nogroup:'|head -1|cut -d: -f3`
NEWGID=`expr "$MAXGID" + 1`
test -z "$NEWGID" && \
  echo "Error: could not make a new GID" 1>&2 && exit 1

echo "$GROUP:x:$NEWGID:$MEMBER" >> "$GROUPFILE"
echo "Created group $GROUP with resp $MEMBER and GID $NEWGID for $REQUESTOR"

