Oops. I should have sent this to -current :-P
adrian ----- Forwarded message from Adrian Chadd <[EMAIL PROTECTED]> ----- Date: Fri, 7 Feb 2003 16:10:56 +0800 From: Adrian Chadd <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: adduser change: telling you when a group isn't there User-Agent: Mutt/1.4i Hi, The adduser in -current doesn't check if a specified group exists until the call to pw right at the end. eep. My sh foo isn't terribly great, but this did it for me. Comments/rewrites are welcome. I'll commit the group consensus. Adrian diff: --- /usr/src/usr.sbin/adduser/adduser.sh Fri Jan 24 02:05:51 2003 +++ adduser.sh Fri Feb 7 08:04:15 2003 @@ -47,6 +47,16 @@ fi } +# Check whether the given group exists +check_group() { + ${PWCMD} show group $1 1> /dev/null 2> /dev/null + if [ "$?" = "0" ]; then + echo "1" + return + fi + echo "0" +} + # get_nextuid # Output the value of $_uid if it is available for use. If it # is not, output the value of the next higher uid that is available. @@ -570,8 +580,31 @@ get_user get_gecos get_uid - get_logingroup - get_groups + ok="NO" + + # The code creates a group = $user if one doesn't exist. + # We are just going to capture other non-existant groups! + while [ "$ok" = "NO" ] ; do + ok="YES" + get_logingroup + if [ "$ulogingroup" != "" -a "$username" != "$ulogingroup" -a +"`check_group $ulogingroup`" = "0" ]; then + echo "Group $ulogingroup does not exist!" + ok="NO" + fi + done + + ok="NO" + while [ "$ok" = "NO" ] ; do + ok="YES" + get_groups + for i in $ugroups; do + if [ "$username" != "$i" -a "`check_group $i`" = "0" ]; then + echo "Group $i does not exist!" + ok="NO" + fi + done + done + get_class get_shell get_homedir ----- End forwarded message ----- -- Adrian Chadd <angryskul> learning is bad <[EMAIL PROTECTED]> <angryskul> it just makes the people around you dumber (angryskul == alfred@irc) <angryskul> :( To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message