From nobody  Sun Jul 19 21:43:57 1998
Received: (from nobody@localhost)
          by hub.freebsd.org (8.8.8/8.8.8) id VAA21056;
          Sun, 19 Jul 1998 21:43:57 -0700 (PDT)
          (envelope-from nobody)
Message-Id: <199807200443.VAA21056@hub.freebsd.org>
Date: Sun, 19 Jul 1998 21:43:57 -0700 (PDT)
From: annmarie@afct.org.au
To: freebsd-gnats-submit@freebsd.org
Subject: Suggestions for minor modifications to adduser
X-Send-Pr-Version: www-1.0

>Number:         7324
>Category:       bin
>Synopsis:       adduser(8) suggestions for minor modifications
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    mtm
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 19 21:50:01 PDT 1998
>Closed-Date:    Fri Jun 26 19:08:17 UTC 2009
>Last-Modified:  Fri Jun 26 19:08:17 UTC 2009
>Originator:     AnnMarie Scott
>Release:        FreeBSD 2.2.6-RELEASE i386
>Organization:
Adelaide Festival Centre Trust
>Environment:
FreeBSD travis.bass.net.au 2.2.6-RELEASE FreeBSD 2.2.6-RELEASE #0: Thu Jun 18 10:19:05 CST 1998     annmarie@travis.bass.net.au:/usr/src/sys/compile/TRAVIS  i386

>Description:
I have a few suggestions for adduser:

1. Stop tromping on the group passwords.
2. Support for "/home/nohome" as a dummy user home directory.
3. Second user copy of welcome message.
>How-To-Repeat:

>Fix:
I have a patch file available - please contact me if you'd like a copy.
>Release-Note:
>Audit-Trail:

From: AnnMarie Scott <annmarie@afct.org.au>
To: freebsd-gnats-submit@freebsd.org
Cc:  Subject: Re: bin/7324: Suggestions for minor modifications to adduser
Date: Tue, 21 Jul 1998 08:50:49 +0930

 This is a multi-part message in MIME format.
 --------------06965B09DA9F89DBD055109D
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
  
 --------------06965B09DA9F89DBD055109D
 Content-Type: text/plain; charset=us-ascii; name="adduser.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline; filename="adduser.patch"
 
 *** adduser	Tue Jun 30 12:48:02 1998
 --- adduser.new	Tue Jun 30 12:48:02 1998
 ***************
 *** 255,259 ****
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 --- 255,259 ----
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$g_pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 ***************
 *** 262,266 ****
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
   	$groupmembers{$g_gid} = $memb;
 --- 262,266 ----
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $g_pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
   	$groupmembers{$g_gid} = $memb;
 ***************
 *** 271,274 ****
 --- 271,275 ----
   	    if $gid{$g_gid} && $verbose;
   	$gid{$g_gid} = $g_groupname;
 + 	$gpass{$g_gid} = $g_pw;
       }
       close G;
 ***************
 *** 564,568 ****
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, "$group_login:*:$g_id:");
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
 --- 565,569 ----
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, "$group_login:$gpass{$g_id}:$g_id:");
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
 ***************
 *** 578,586 ****
   	#warn "$group_login $groupname{$group_login} $groupmembers{$groupname{$group_login}}\n";
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 ! 	    push(@a, "$gid{$e}:*:$e:$groupmembers{$e}");
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, "$group_login:*:$g_id:");
       }
   
 --- 579,587 ----
   	#warn "$group_login $groupname{$group_login} $groupmembers{$groupname{$group_login}}\n";
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 ! 	    push(@a, "$gid{$e}:$gpass{$e}:$e:$groupmembers{$e}");
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, "$group_login:$gpass{$g_id}:$g_id:");
       }
   
 ***************
 *** 601,605 ****
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "no", ("root", "second_mail_address", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 --- 602,606 ----
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "$cc", ("root", "$cc", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 ***************
 *** 761,765 ****
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     &sendmessage($name, @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
       &home_create($name, $group_login);
 --- 762,766 ----
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     &sendmessage("$name $cc", @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
       &home_create($name, $group_login);
 
 --------------06965B09DA9F89DBD055109D--
 

From: AnnMarie Scott <annmarie@afct.org.au>
To: freebsd-gnats-submit@freebsd.org
Cc:  Subject: Re: bin/7324: Suggestions for minor modifications to adduser
Date: Tue, 21 Jul 1998 11:46:12 +0930

 This is a multi-part message in MIME format.
 --------------29D9A70BEDD10329564E7CC1
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Argh.  Sent the wrong patch file!  Here's the _right_ one.
 --------------29D9A70BEDD10329564E7CC1
 Content-Type: text/plain; charset=us-ascii; name="adduser.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline; filename="adduser.patch"
 
 *** adduser	Wed Jul  8 11:17:55 1998
 --- adduser.new	Wed Jul  8 11:55:49 1998
 ***************
 *** 34,38 ****
       $dotdir = "/usr/share/skel"; # copy dotfiles from this dir
       $dotdir_bak = $dotdir;
 !     $send_message = "no"; # send message to new user
       $send_message_bak = '/etc/adduser.message';
       $config = "/etc/adduser.conf"; # config file for adduser
 --- 34,39 ----
       $dotdir = "/usr/share/skel"; # copy dotfiles from this dir
       $dotdir_bak = $dotdir;
 !     $send_message = "no"; 	# send message to new user
 !     $cc = "no"; 		# send cc of message
       $send_message_bak = '/etc/adduser.message';
       $config = "/etc/adduser.conf"; # config file for adduser
 ***************
 *** 255,259 ****
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 --- 256,260 ----
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$g_pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 ***************
 *** 262,266 ****
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
   	$groupmembers{$g_gid} = $memb;
 --- 263,267 ----
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $g_pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
   	$groupmembers{$g_gid} = $memb;
 ***************
 *** 271,274 ****
 --- 272,276 ----
   	    if $gid{$g_gid} && $verbose;
   	$gid{$g_gid} = $g_groupname;
 + 	$gpass{$g_gid} = $g_pw;
       }
       close G;
 ***************
 *** 538,542 ****
   Class:	  $class
   Groups:	  $group_login $new_groups
 ! HOME:	  $home/$name
   Shell:	  $sh
   EOF
 --- 540,544 ----
   Class:	  $class
   Groups:	  $group_login $new_groups
 ! HOME:	  $homedir
   Shell:	  $sh
   EOF
 ***************
 *** 564,568 ****
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, "$group_login:*:$g_id:");
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
 --- 566,570 ----
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, "$group_login:$gpass{$g_id}:$g_id:");
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
 ***************
 *** 578,586 ****
   	#warn "$group_login $groupname{$group_login} $groupmembers{$groupname{$group_login}}\n";
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 ! 	    push(@a, "$gid{$e}:*:$e:$groupmembers{$e}");
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, "$group_login:*:$g_id:");
       }
   
 --- 580,588 ----
   	#warn "$group_login $groupname{$group_login} $groupmembers{$groupname{$group_login}}\n";
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 ! 	    push(@a, "$gid{$e}:$gpass{$e}:$e:$groupmembers{$e}");
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, "$group_login:$gpass{$g_id}:$g_id:");
       }
   
 ***************
 *** 601,605 ****
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "no", ("root", "second_mail_address", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 --- 603,607 ----
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "$cc", ("root", "$cc", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 ***************
 *** 705,709 ****
   	$new_groups = &new_users_groups($name, $new_groups);
   	$password = &new_users_password;
 ! 
   
   	if (&new_users_ok) {
 --- 707,712 ----
   	$new_groups = &new_users_groups($name, $new_groups);
   	$password = &new_users_password;
 !         # allow "nohome" for dummy user homedirs
 !         $homedir = ($home =~ /nohome/) ? $home : "$home/$name";
   
   	if (&new_users_ok) {
 ***************
 *** 714,718 ****
   	    # obscure perl bug
   	    $new_entry = "$name\:" . "$cryptpwd" .
 ! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$home/$name:$sh";
   	    &append_file($etc_passwd, "$new_entry");
   	    &new_users_pwdmkdb("$new_entry");
 --- 717,721 ----
   	    # obscure perl bug
   	    $new_entry = "$name\:" . "$cryptpwd" .
 ! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$homedir:$sh";
   	    &append_file($etc_passwd, "$new_entry");
   	    &new_users_pwdmkdb("$new_entry");
 ***************
 *** 721,725 ****
   	    &new_users_sendmessage;
   	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 ! 	    &home_create($name, $group_login);
   	} else {
   	    $new_users_ok = 0;
 --- 724,728 ----
   	    &new_users_sendmessage;
   	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 ! 	    &home_create($name, $group_login) if $homedir !~ /nohome/;
   	} else {
   	    $new_users_ok = 0;
 ***************
 *** 739,742 ****
 --- 742,747 ----
       $defaultshell = &shell_default_valid($defaultshell);
       return 0 unless $home = &home_partition_valid($home);
 +     # allow "nohome" for dummy user homedirs
 +     $homedir = ($home =~ /nohome/) ? $home : "$home/$name";
       return 0 if $dotdir ne &dotdir_default_valid($dotdir);
       $send_message = &message_default;
 ***************
 *** 756,767 ****
       # obscure perl bug
       $new_entry = "$name\:" . "$cryptpwd" .
 ! 	"\:$u_id\:$g_id\:$class\:0:0:$fullname:$home/$name:$sh";
       &append_file($etc_passwd, "$new_entry");
       &new_users_pwdmkdb("$new_entry");
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     &sendmessage($name, @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 !     &home_create($name, $group_login);
   }
   
 --- 761,773 ----
       # obscure perl bug
       $new_entry = "$name\:" . "$cryptpwd" .
 ! 	"\:$u_id\:$g_id\:$class\:0:0:$fullname:$homedir:$sh";
       &append_file($etc_passwd, "$new_entry");
       &new_users_pwdmkdb("$new_entry");
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     $cc = "" if $cc eq "no";
 !     &sendmessage("$name $cc", @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 !     &home_create($name, $group_login) if $homedir !~ /nohome/;
   }
   
 ***************
 *** 949,953 ****
   sub home_create {
       local($name, $group) = @_;
 -     local($homedir) = "$home/$name";
   
       if (-e "$homedir") {
 --- 955,958 ----
 ***************
 *** 1318,1321 ****
 --- 1323,1327 ----
       # prepare some variables
       $send_message = "no" unless $send_message;
 +     $cc = "no" unless ($cc && $send_message);
       $defaultpasswd = "no" unless $defaultpasswd;
       local($shpref) = "'" . join("', '", @shellpref) . "'";
 ***************
 *** 1344,1347 ****
 --- 1350,1356 ----
   # send this file to new user ("/etc/adduser.message" or "no")
   send_message = "$send_message"
 + 
 + # send copy of message to this user (username or "no")
 + cc = "$cc"
   
   # config file for adduser ("/etc/adduser.conf")
 
 --------------29D9A70BEDD10329564E7CC1--
 
State-Changed-From-To: open->analyzed 
State-Changed-By: thepish 
State-Changed-When: Wed Jul 22 05:26:22 PDT 1998 
State-Changed-Why:  
Minor changes suggested to submitted patch and submitter feedback requested. 
Responsible-Changed-From-To: freebsd-bugs->wosch 
Responsible-Changed-By: wosch 
Responsible-Changed-When: Tue Jul 28 03:02:39 PDT 1998 
Responsible-Changed-Why:  
My area. 

From: AnnMarie Scott <annmarie@afct.org.au>
To: freebsd-gnats-submit@freebsd.org, annmarie@afct.org.au
Cc:  Subject: Re: bin/7324: Suggestions for minor modifications to adduser
Date: Tue, 18 Aug 1998 09:56:13 +0930

 This is a multi-part message in MIME format.
 --------------0741CC5886837526220A643B
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Revised patch:
 
 - respects multiple definitions of the same group
 - automatically splits groups that are too long (> 200 users/>1024
 chars) across multiple group entries, rather than trashing them
 - can configure how you want user default directory allocated (based on
 user name, or a "fixed" target)
 - addition of -c option for specification of cc address
 - minor typo corrections
 
 (Attached)
 
 I've tested this to a point here, but I'd like someone to sanity check
 my modifications if possible..
 
 Cheers,
 AnnMarie
 --------------0741CC5886837526220A643B
 Content-Type: text/plain; charset=us-ascii; name="adduser.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline; filename="adduser.patch"
 
 *** adduser.orig	Tue Aug 18 09:27:51 1998
 --- adduser	Tue Aug 18 09:27:51 1998
 ***************
 *** 34,38 ****
       $dotdir = "/usr/share/skel"; # copy dotfiles from this dir
       $dotdir_bak = $dotdir;
 !     $send_message = "no"; # send message to new user
       $send_message_bak = '/etc/adduser.message';
       $config = "/etc/adduser.conf"; # config file for adduser
 --- 34,39 ----
       $dotdir = "/usr/share/skel"; # copy dotfiles from this dir
       $dotdir_bak = $dotdir;
 !     $send_message = "no"; 	# send message to new user
 !     $cc = "no"; 		# send cc of message
       $send_message_bak = '/etc/adduser.message';
       $config = "/etc/adduser.conf"; # config file for adduser
 ***************
 *** 40,43 ****
 --- 41,46 ----
       $logfile = "/var/log/adduser"; # logfile
       $home = "/home";		# default HOME
 +     $user_dir = 'USER';
 +     $defaultdir = $user_dir;	# user directory, $user_dir means username
       $etc_shells = "/etc/shells";
       $etc_passwd = "/etc/master.passwd";
 ***************
 *** 69,74 ****
       # group
       $groupname ='';		# $groupname{groupname} = gid
 !     $groupmembers = '';		# $groupmembers{gid} = members of group/kommalist
 !     $gid = '';			# $gid{gid} = groupname;    gid form group db
   
       # shell
 --- 72,77 ----
       # group
       $groupname ='';		# $groupname{groupname} = gid
 !     $groupmembers = '';		# $groupmembers{gid} = comma sep list of members
 !     $gid = '';			# $gid{gid} = groupname; gid from group db
   
       # shell
 ***************
 *** 255,259 ****
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 --- 258,262 ----
   # read /etc/group
   sub group_read {
 !     local($g_groupname,$g_pw,$g_gid, $memb);
   
       print "Check $group\n" if $verbose;
 ***************
 *** 262,268 ****
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
 ! 	$groupmembers{$g_gid} = $memb;
   	warn "Groupname exists twice: $g_groupname:$g_gid ->  $g_groupname:$groupname{$g_groupname}\n"
   	    if $groupname{$g_groupname} && $verbose;
 --- 265,274 ----
   	chop;
   	push(@group_backup, $_);
 ! 	($g_groupname, $g_pw, $g_gid, $memb) = (split(/:/, $_))[0..3];
   
 !         # Multiple definitions of the same group with different members are
 !         # allowed
 !         $groupmembers{$g_gid} .= "," if $groupmembers{$g_gid};
 ! 	$groupmembers{$g_gid} .= $memb;
   	warn "Groupname exists twice: $g_groupname:$g_gid ->  $g_groupname:$groupname{$g_groupname}\n"
   	    if $groupname{$g_groupname} && $verbose;
 ***************
 *** 271,274 ****
 --- 277,281 ----
   	    if $gid{$g_gid} && $verbose;
   	$gid{$g_gid} = $g_groupname;
 + 	$gpass{$g_gid} = $g_pw;
       }
       close G;
 ***************
 *** 397,409 ****
       $groupmembers{$gid} .= "$name";
   
 -     local(@l) = split(',', $groupmembers{$gid});
 -     # group(5): A group cannot have more than 200 members. 
 -     # The maximum line length of /etc/group is 1024 characters. 
 -     # Longer lines will be skiped.
 -     if ($#l >= 200 || 
 - 	length($groupmembers{$gid}) > 1024 - 50) { # 50 is for group name
 - 	warn "WARNING, maybe group line ``$gid{$gid}'' is to long or to\n" .
 - 	    "much users in group, see group(5)\a\n";
 -     }
       return $name;
   }
 --- 404,407 ----
 ***************
 *** 538,542 ****
   Class:	  $class
   Groups:	  $group_login $new_groups
 ! HOME:	  $home/$name
   Shell:	  $sh
   EOF
 --- 536,540 ----
   Class:	  $class
   Groups:	  $group_login $new_groups
 ! HOME:	  $homedir
   Shell:	  $sh
   EOF
 ***************
 *** 559,571 ****
   # update group database
   sub new_users_group_update {
 !     local($e, @a);
   
       # Add *new* group
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, "$group_login:*:$g_id:");
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
 - 	# $groupmembers{$g_id} = $group_login;
       }
   
 --- 557,570 ----
   # update group database
   sub new_users_group_update {
 !     local($e, @a, $prefix, $line, $i);
 ! 
 !     $prefix = "$group_login:$gpass{$g_id}:$g_id:";
   
       # Add *new* group
       if (!defined($groupname{$group_login}) &&
   	!defined($gid{$groupname{$group_login}})) {
 ! 	push(@group_backup, $prefix);
   	$groupname{$group_login} = $g_id;
   	$gid{$g_id} = $group_login;
       }
   
 ***************
 *** 576,588 ****
   	# new login group is already in name space
   	rename($group, "$group.bak");
 - 	#warn "$group_login $groupname{$group_login} $groupmembers{$groupname{$group_login}}\n";
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 ! 	    push(@a, "$gid{$e}:*:$e:$groupmembers{$e}");
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, "$group_login:*:$g_id:");
       }
 - 
   }
   
 --- 575,601 ----
   	# new login group is already in name space
   	rename($group, "$group.bak");
   	foreach $e (sort {$a <=> $b} (keys %gid)) {
 !           $prefix = "$gid{$e}:$gpass{$e}:$e:";
 !           # group(5): A group cannot have more than 200 members. 
 !           # The maximum line length of /etc/group is 1024 characters. 
 !           # Longer lines will be skiped.
 !           local(@l) = split(',', $groupmembers{$e});
 !           foreach $member (sort @l) {
 !             if (($i == 200) || ((length("$prefix$line")) > 1016))
 !             {
 !               push(@a, "$prefix$line");
 !               $line = $i = "";
 !             }
 !             $line .= "," if $line;
 !             $line .= $member;
 !             $i++;
 !           }
 !           push(@a, "$prefix$line");
 !           $line = $i = "";
   	}
   	&append_file($group, @a);
       } else {
 ! 	&append_file($group, $prefix);
       }
   }
   
 ***************
 *** 601,605 ****
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "no", ("root", "second_mail_address", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 --- 614,618 ----
       local($cc) =
   	&confirm_list("Send message to ``$name'' and:",
 ! 		      1, "$cc", ("root", "$cc", "no"));
       local($e);
       $cc = "" if $cc eq "no";
 ***************
 *** 705,709 ****
   	$new_groups = &new_users_groups($name, $new_groups);
   	$password = &new_users_password;
 ! 
   
   	if (&new_users_ok) {
 --- 718,722 ----
   	$new_groups = &new_users_groups($name, $new_groups);
   	$password = &new_users_password;
 !         $homedir = ($defaultdir eq $user_dir) ? "$home/$name" : "$home/$defaultdir";
   
   	if (&new_users_ok) {
 ***************
 *** 714,718 ****
   	    # obscure perl bug
   	    $new_entry = "$name\:" . "$cryptpwd" .
 ! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$home/$name:$sh";
   	    &append_file($etc_passwd, "$new_entry");
   	    &new_users_pwdmkdb("$new_entry");
 --- 727,731 ----
   	    # obscure perl bug
   	    $new_entry = "$name\:" . "$cryptpwd" .
 ! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$homedir:$sh";
   	    &append_file($etc_passwd, "$new_entry");
   	    &new_users_pwdmkdb("$new_entry");
 ***************
 *** 721,725 ****
   	    &new_users_sendmessage;
   	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 ! 	    &home_create($name, $group_login);
   	} else {
   	    $new_users_ok = 0;
 --- 734,738 ----
   	    &new_users_sendmessage;
   	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 !             &home_create($name, $group_login) if (!-e "$homedir");
   	} else {
   	    $new_users_ok = 0;
 ***************
 *** 739,742 ****
 --- 752,756 ----
       $defaultshell = &shell_default_valid($defaultshell);
       return 0 unless $home = &home_partition_valid($home);
 +     $homedir = ($defaultdir eq $user_dir) ? "$home/$name" : "$home/$defaultdir";
       return 0 if $dotdir ne &dotdir_default_valid($dotdir);
       $send_message = &message_default;
 ***************
 *** 756,767 ****
       # obscure perl bug
       $new_entry = "$name\:" . "$cryptpwd" .
 ! 	"\:$u_id\:$g_id\:$class\:0:0:$fullname:$home/$name:$sh";
       &append_file($etc_passwd, "$new_entry");
       &new_users_pwdmkdb("$new_entry");
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     &sendmessage($name, @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 !     &home_create($name, $group_login);
   }
   
 --- 770,782 ----
       # obscure perl bug
       $new_entry = "$name\:" . "$cryptpwd" .
 ! 	"\:$u_id\:$g_id\:$class\:0:0:$fullname:$homedir:$sh";
       &append_file($etc_passwd, "$new_entry");
       &new_users_pwdmkdb("$new_entry");
       &new_users_group_update;
       &new_users_passwd_update;  print "Added user ``$name''\n";
 !     $cc = "" if $cc eq "no";
 !     &sendmessage("$name $cc", @message_buffer) if $send_message ne "no";
       &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
 !     &home_create($name, $group_login) if (!-e "$homedir");
   }
   
 ***************
 *** 795,798 ****
 --- 810,814 ----
       [-home home]
       [-message message_file]
 +     [-c|cc_message email_address]
       [-noconfig]
       [-shell shell]
 ***************
 *** 846,853 ****
   sub hints {
       if ($verbose) {
 ! 	print "Use option ``-silent'' if you don't want see " .
   	      "all warnings & questions.\n\n";
       } else {
 ! 	print "Use option ``-verbose'' if you want see more warnings & " .
   	      "questions \nor try to repair bugs.\n\n";
       }
 --- 862,869 ----
   sub hints {
       if ($verbose) {
 ! 	print "Use option ``-silent'' if you don't want to see " .
   	      "all warnings & questions.\n\n";
       } else {
 ! 	print "Use option ``-verbose'' if you want to see more warnings & " .
   	      "questions \nor try to repair bugs.\n\n";
       }
 ***************
 *** 874,877 ****
 --- 890,894 ----
   	elsif (/^--?(message)$/) { $send_message = $argv[0]; shift @argv;
   				   $sendmessage = 1; }
 + 	elsif (/^--?(c|cc_message)$/) { $cc = $argv[0]; shift @argv }
   	elsif (/^--?(batch)$/)	 {
   	    @batch = splice(@argv, 0, 5); $verbose = 0;
 ***************
 *** 949,956 ****
   sub home_create {
       local($name, $group) = @_;
 -     local($homedir) = "$home/$name";
   
       if (-e "$homedir") {
 ! 	warn "HOME Directory ``$homedir'' already exist\a\n";
   	return 0;
       }
 --- 966,972 ----
   sub home_create {
       local($name, $group) = @_;
   
       if (-e "$homedir") {
 ! 	warn "HOME Directory ``$homedir'' already exists\a\n";
   	return 0;
       }
 ***************
 *** 1008,1012 ****
   
   	if (-d $d) {
 ! 	    warn "Oops, $d already exist\n" if $verbose;
   	} else {
   	    print "Create $d\n" if $verbose;
 --- 1024,1028 ----
   
   	if (-d $d) {
 ! 	    warn "Oops, $d already exists\n" if $verbose;
   	} else {
   	    print "Create $d\n" if $verbose;
 ***************
 *** 1091,1095 ****
   # YES or NO question
   # return 1 if &confirm("message", "yes") and answer is yes
 ! #	or if &confirm("message", "no") an answer is no
   # otherwise 0
   sub confirm_yn {
 --- 1107,1111 ----
   # YES or NO question
   # return 1 if &confirm("message", "yes") and answer is yes
 ! #	or if &confirm("message", "no") and answer is no
   # otherwise 0
   sub confirm_yn {
 ***************
 *** 1230,1234 ****
       while(!flock(F, $LOCK_EX | $LOCK_NB)) {
   	warn "Cannot lock file: $file\a\n";
 ! 	die "Sorry, give up\n"
   	    unless &confirm_yn("Try again?", "yes");
       }
 --- 1246,1250 ----
       while(!flock(F, $LOCK_EX | $LOCK_NB)) {
   	warn "Cannot lock file: $file\a\n";
 ! 	die "Sorry, I give up\n"
   	    unless &confirm_yn("Try again?", "yes");
       }
 ***************
 *** 1318,1321 ****
 --- 1334,1338 ----
       # prepare some variables
       $send_message = "no" unless $send_message;
 +     $cc = "no" unless ($cc && $send_message);
       $defaultpasswd = "no" unless $defaultpasswd;
       local($shpref) = "'" . join("', '", @shellpref) . "'";
 ***************
 *** 1345,1348 ****
 --- 1362,1368 ----
   send_message = "$send_message"
   
 + # send copy of message to this user (username or "no")
 + cc = "$cc"
 + 
   # config file for adduser ("/etc/adduser.conf")
   config = "$config"
 ***************
 *** 1351,1356 ****
   logfile = "$logfile"
   
 ! # default HOME directory ("/home")
   home = "$home"
   
   # List of directories where shells located
 --- 1371,1379 ----
   logfile = "$logfile"
   
 ! # default HOME partition ("/home")
   home = "$home"
 + 
 + # default user directory as ('USER' for same as username or other)
 + defaultdir = $defaultdir
   
   # List of directories where shells located
 
 --------------0741CC5886837526220A643B--
 
Responsible-Changed-From-To: wosch->freebsd-bugs 
Responsible-Changed-By: wosch 
Responsible-Changed-When: Sun Jan 13 03:57:52 PST 2002 
Responsible-Changed-Why:  
I'm no longer the maintainer of adduser. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=7324 
Responsible-Changed-From-To: freebsd-bugs->mtm 
Responsible-Changed-By: mtm 
Responsible-Changed-When: Sat Feb 22 15:47:51 PST 2003 
Responsible-Changed-Why:  
I believe items 1 and 2 are no longer an issue. I'll take 
care of adding item 3. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=7324 
State-Changed-From-To: analyzed->closed 
State-Changed-By: linimon 
State-Changed-When: Fri Jun 26 19:06:44 UTC 2009 
State-Changed-Why:  
The perl code was replaced by a shell script several years ago, so 
this PR is obsolete.  Sorry. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=7324 
>Unformatted:

