#!/bin/sh

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

if test -z "$NO_SYSUTILS"; then
	/usr/sbin/deluser "$MEMBER" "$GROUP" || exit 1
	echo "Removed $MEMBER from group $GROUP for $REQUESTOR"
	exit 0
fi

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

! grep -q "^$GROUP:" "$GROUPFILE" && \
  echo "Error: no such group: $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:.*\<$MEMBER\>" "$GROUPFILE" && \
  echo "Error: $MEMBER not member of $GROUP" 1>&2 && exit 1

grep -q "^$GROUP:x:[0-9]*:$MEMBER\>" "$GROUPFILE" && \
  echo "Error: $MEMBER is the person responsible for $GROUP" 1>&2 && exit 1

sed -i.bak -e "/^$GROUP:/s/,$MEMBER\>//" "$GROUPFILE"
echo "Removed $MEMBER from group $GROUP for $REQUESTOR"

