-if [ "$1" = "testrm" ]; then
- testrm $2
- exit $?
-elif [ "$1" = del ]; then
- if testrm $2; then
- echo "Removing $MODE $2" | `bannercmd "${MODE}del-$2"`
- /usr/sbin/${MODE}del $2 || :
- if [ -x /usr/sbin/nscd ]; then
- case "${MODE}" in
- user)
- /usr/sbin/nscd -i passwd
- ;;
- group)
- /usr/sbin/nscd -i group
- ;;
- esac
+groupremove() {
+ local name="$1"
+ local gid=$(getgid "$name" 2>/dev/null)
+
+ echo "Removing group $name" | $(bannercmd "groupdel-$name")
+ /usr/sbin/groupdel $name || :
+
+ # flush nscd cache
+ [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i group
+}
+
+userremove() {
+ local uid=$(id -un "$name" 2>/dev/null)
+
+ echo "Removing user $name" | $(bannercmd "userdel-$name")
+ /usr/sbin/userdel $name || :
+
+ # flush nscd cache
+ [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i passwd
+}
+
+remove() {
+ local mode=$1
+ local name=$2
+ if ! testrm $mode $name; then
+ return
+ fi
+
+ ${mode}remove $name
+}
+
+addtogroup() {
+ local user="$1"
+ local group="$2"
+ local uid=$(id -un "$user" 2>/dev/null)
+ local gid=$(getgid "$group" 2>/dev/null)
+
+ if [ -z "$gid" ]; then
+ if [ "$quiet" ]; then
+ return
+ else
+ die "group $group does not exist"
+ fi
+ fi
+
+ if [ -z "$uid" ]; then
+ if [ "$quiet" ]; then
+ return
+ else
+ die "user $user does not exist"