Here is another small diff that tidys somemore of adduser. The @message_buffer array is cleared in message_read(), so no need to clear it just before calling message_read().
Also, make the first call to filetest() display an error message if a problem is found but not the following ones. While in message_read and filetest, use my instead of local, and rename $verbose to $myverbose, to indicate scope more easily (there is also a global $verbose variable). Also, move a comment to a more appropriate place. ok? -mark Index: adduser.perl =================================================================== RCS file: /cvs/src/usr.sbin/adduser/adduser.perl,v retrieving revision 1.57 diff -u -p -r1.57 adduser.perl --- adduser.perl 12 May 2011 13:56:23 -0000 1.57 +++ adduser.perl 18 May 2011 07:22:06 -0000 @@ -73,6 +73,7 @@ exit(!&batch(@batch)) if $#batch >= 0; # # Set adduser "default" variables internally before groking config file # Adduser.conf supersedes these sub variables { + # global variables $verbose = 1; # verbose = [0-2] $defaultpasswd = "yes"; # use password for new users $dotdir = "/etc/skel"; # copy dotfiles from this dir @@ -107,7 +108,6 @@ sub variables { $uid_start = 1000; # new users get this uid $uid_end = 2147483647; # max. uid - # global variables # passwd %username = (); # $username{username} = uid %uid = (); # $uid{uid} = username @@ -686,7 +686,6 @@ sub new_users_sendmessage { return 1 if !&confirm_yn("Send welcome message to ``$name''", "yes"); - @message_buffer = (); message_read ($message_file); local($e); @@ -1077,14 +1076,14 @@ sub dirname { # return 1 if $file is a readable file or link sub filetest { - local($file, $verbose) = @_; + my($file, $myverbose) = @_; if (-e $file) { if (-f $file || -l $file) { return 1 if -r _; - warn "$file unreadable\n" if $verbose; + warn "$file unreadable\n" if $myverbose; } else { - warn "$file is not a plain file or link\n" if $verbose; + warn "$file is not a plain file or link\n" if $myverbose; } } return 0; @@ -1386,7 +1385,7 @@ sub message_default { } # try and create the message file - if (&filetest($message_file, 0)) { + if (&filetest($message_file, 1)) { if (&confirm_yn("File ``$message_file'' exists. Overwrite?:", "no")) { print "Retry: choose a different location\n"; @@ -1451,7 +1450,7 @@ EOF # read message file into buffer sub message_read { - local($file) = @_; + my($file) = @_; @message_buffer = (); if (!open(R, "$file")) {