]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - adduser/adduser.perl
Do not accept empty user names.
[pw-darwin.git] / adduser / adduser.perl
index 8dcdaf670b7bbe05674f83ac38bdca9dd58b4056..9378bf8fd7a7a55a0dae5f067b7be71b69338633 100644 (file)
@@ -24,7 +24,7 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 #
-# $Id: adduser.perl,v 1.28 1997/03/09 12:21:45 wosch Exp $
+# $Id: adduser.perl,v 1.35 1997/08/26 22:47:51 wosch Exp $
 
 
 # read variables
@@ -74,18 +74,6 @@ sub variables {
     # shell
     $shell = '';               # $shell{`basename sh`} = sh
 
-    # only for me (=Wolfram)
-    if ($test) {
-       $home = "/home/w/tmp/adduser/home";
-       $etc_shells = "./shells";
-       $etc_passwd = "./master.passwd";
-       $group = "./group";
-       $pwd_mkdb = "pwd_mkdb -p -d .";
-       $config = "adduser.conf";
-       $send_message = "./adduser.message";
-       $logfile = "./log.adduser";
-    }
-
     umask 022;                 # don't give login group write access
 
     $ENV{'PATH'} = "/sbin:/bin:/usr/sbin:/usr/bin";
@@ -117,13 +105,13 @@ sub shells_read {
        }
     }
 
-# Allow /nonexistent and /bin/date as a valid shell for system utils
+    # Allow /nonexistent and /bin/date as a valid shell for system utils
     push(@list, "/nonexistent");
-    push(@shellpref, "no");
+    push(@shellpref, "no") if !grep(/^no$/, @shellpref);
     $shell{"no"} = "/nonexistent";
 
     push(@list, "/bin/date");
-    push(@shellpref, "date");
+    push(@shellpref, "date") if !grep(/^date$/, @shellpref);
     $shell{"date"} = "/bin/date";
 
     return $err;
@@ -261,7 +249,7 @@ sub passwd_read {
            if ($verbose && $sh &&
                !$shell{&basename($sh)} &&
                $p_username !~ /^(news|xten|bin|nobody|uucp)$/ &&
-               $sh !~ /\/(pppd|sliplogin)$/);
+               $sh !~ /\/(pppd|sliplogin|nologin)$/);
        $uid{$p_uid} = $p_username;
        $pwgid{$p_gid} = $p_username;
     }
@@ -329,7 +317,7 @@ sub new_users_name {
 sub new_users_name_valid {
     local($name) = @_;
 
-    if ($name !~ /^[a-z0-9_][a-z0-9_\-]*$/) {
+    if ($name !~ /^[a-z0-9_][a-z0-9_\-]*$/ || $name eq "a-z0-9_-") {
        warn "Wrong username. " .
            "Please use only lowercase characters or digits\a\n";
        return 0;
@@ -397,7 +385,8 @@ sub new_users_class {
     local($def) = @_;
     local($class);
 
-    $class = &confirm_list("Enter login class", 1, $def, "");
+    $class = &confirm_list("Enter login class:", 1, $def, ($def, "default"));
+    $class = "" if $class eq "default";
     return $class;
 }
 
@@ -973,7 +962,7 @@ sub home_create {
     # copy files from  $dotdir to $homedir
     # rename 'dot.foo' files to '.foo'
     print "Copy files from $dotdir to $homedir\n" if $verbose;
-    system("cp -r $dotdir $homedir");
+    system("cp -R $dotdir $homedir");
     system("chmod -R u+wrX,go-w $homedir");
     system("chown -R $name:$group $homedir");