]> git.cameronkatri.com Git - pw-darwin.git/blobdiff - adduser/rmuser.perl
CND has been unused for two years, and RND has been unused for five
[pw-darwin.git] / adduser / rmuser.perl
index b3f140697083b15b911ac506dc5768163b9b83d9..d35a453a63f69e82fb8be4fb8156c060438a5ae5 100644 (file)
@@ -117,9 +117,10 @@ if ($#ARGV == 0) {
     $login_name = &get_login_name;
 }
 
-($name, $password, $uid, $gid, $change, $class, $gecos, $home_dir, $shell) = (getpwnam("$login_name"));
+($name, $password, $uid, $gid, $change, $class, $gecos, $home_dir, $shell) =
+    (getpwnam("$login_name"));
 
-if ($?) {
+if (!defined $uid) {
     print STDERR "${whoami}: Error: User ${login_name} not in password database\n";
     &unlockpw;
     exit 1;
@@ -316,11 +317,22 @@ sub update_passwd_file {
        print STDERR "\n${whoami}: Warning: couldn't set mode of $new_passwd_file to 0600 ($!)\n\tcontinuing, but please check mode of /etc/master.passwd!\n";
     $skipped = 0;
     while (<MASTER_PW>) {
-       if (not /^$login_name\:/io) {
-           print NEW_PW;
-       } else {
+       if (/^\Q$login_name:/o) {
            print STDERR "Dropped entry for $login_name\n" if $debug;
            $skipped = 1;
+       } else {
+           print NEW_PW;
+           # The other perl password tools assume all lowercase entries.
+           # Add a warning to help unsuspecting admins who might be
+           # using the wrong tool for the job, or might otherwise
+           # be unwittingly holding a loaded foot-shooting device.
+           if (/^\Q$login_name:/io) {
+               my $name = $_;
+               $name =~ s#\:.*\n##;
+               print STDERR "\n\n\tThere is also an entry for $name in your",
+                   "password file.\n\tThis can cause problems in some ",
+                   "situations.\n\n";
+           }
        }
     }
     close(NEW_PW);