summaryrefslogtreecommitdiffstats
path: root/adduser
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2003-02-08 08:04:53 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2003-02-08 08:04:53 +0000
commitf315700f198aaca1f1fe331dcf2f7007283afce1 (patch)
tree554cc2439e088955f3a57835d5025e20598dd605 /adduser
parentf62899cecf9bdec1db57fba4bac881f44ca1cc8b (diff)
downloadpw-darwin-f315700f198aaca1f1fe331dcf2f7007283afce1.tar.gz
pw-darwin-f315700f198aaca1f1fe331dcf2f7007283afce1.tar.zst
pw-darwin-f315700f198aaca1f1fe331dcf2f7007283afce1.zip
Change the behaviour of adduser to match the previous incarnation a little more.
If any of the given groups do not exist complain and let the user try again. This saves the user from discovering at the end of the process that they've forgotten to add a group or they've typoed. Thanks to cmc/dougb for pointing out how bad my sh fu actually is. Original code by: me Scary sh rewrite by: dougb Reviewed by: dougb
Diffstat (limited to 'adduser')
-rw-r--r--adduser/adduser.sh28
1 files changed, 26 insertions, 2 deletions
diff --git a/adduser/adduser.sh b/adduser/adduser.sh
index 96049bd..ee47bdd 100644
--- a/adduser/adduser.sh
+++ b/adduser/adduser.sh
@@ -570,8 +570,32 @@ input_interactive() {
get_user
get_gecos
get_uid
- get_logingroup
- get_groups
+
+ # The case where group = user is handled elsewhere, so
+ # validate any other groups the user is invited to.
+ until [ "$_logingroup_ok" = yes ]; do
+ get_logingroup
+ _logingroup_ok=yes
+ if [ -n "$ulogingroup" -a "$username" != "$ulogingroup" ]; then
+ if ! ${PWCMD} show group $ulogingroup > /dev/null 2>&1; then
+ echo "Group $ulogingroup does not exist!"
+ _logingroup_ok=no
+ fi
+ fi
+ done
+ until [ "$_groups_ok" = yes ]; do
+ get_groups
+ _groups_ok=yes
+ for i in $ugroups; do
+ if [ "$username" != "$i" ]; then
+ if ! ${PWCMD} show group $i > /dev/null 2>&1; then
+ echo "Group $i does not exist!"
+ _groups_ok=no
+ fi
+ fi
+ done
+ done
+
get_class
get_shell
get_homedir