freebsd-ports/security/courier-authlib/files/patch-userdb::pw2userdb.in
Oliver Lehmann 19dbf6437b Add BSD master.passwd processing to pw2userdb
Bump PORTREVISION

PR:		ports/78163
Submitted by:	Jose M Rodriguez <josemi@freebsd.jazztel.es>
2005-03-01 21:02:00 +00:00

104 lines
2.3 KiB
Text

--- userdb/pw2userdb.in.orig Wed Jul 19 13:55:15 2000
+++ userdb/pw2userdb.in Tue Mar 1 21:58:51 2005
@@ -7,6 +7,8 @@
# Copyright 1998 - 1999 Double Precision, Inc. See COPYING for
# distribution information.
+# Adapted to BSD master.passwd
+
use Getopt::Long;
#
@@ -22,42 +24,66 @@
if $vpopuid;
$passwd="/etc/passwd" unless $passwd =~ /./;
-$shadow="/etc/shadow" unless $shadow =~ /./;
+$shadow="/etc/master.passwd" unless $shadow =~ /./;
$domain="" unless $domain =~ /./;
$domain="\@$domain" if $domain =~ /./;
-open(PASSWD, $passwd) || die "$!\n";
-
-while (<PASSWD>)
+if (! $noshadow && $shadow =~ /master.passwd$/)
{
- chop if /\n$/;
- next if /^#/;
- ($acct,$passwd,$uid,$gid,$name,$home,$shell)=split( /:/ );
-
- ($uid,$gid)=($fixed_uid,$fixed_gid) if $vpopuid;
-
- $PASSWORD{$acct}=$passwd if $passwd ne "x";
- $UID{$acct}=$uid;
- $GID{$acct}=$gid;
- $HOME{$acct}=$home;
- $SHELL{$acct}=$shell;
-
- $name =~ s/\|/./g; # Just in case
- $GECOS{$acct}=$name;
-}
-close (PASSWD);
+ open(PASSWD, $shadow) || die "$!\n";
-if ( -f $shadow && ! $noshadow)
-{
- open (SHADOW, $shadow) || die "$!\n";
- while (<SHADOW>)
+ while (<PASSWD>)
{
+ chop if /\n$/;
next if /^#/;
- ($acct,$passwd,$dummy)=split(/:/);
+ ($acct,$passwd,$uid,$gid,$class,$change,$expire,$name,$home,$shell)=split( /:/ );
+
+ ($uid,$gid)=($fixed_uid,$fixed_gid) if $vpopuid;
+ $name =~ s/\|/./g; # Just in case
+
$PASSWORD{$acct}=$passwd;
+ $UID{$acct}=$uid;
+ $GID{$acct}=$gid;
+ $HOME{$acct}=$home;
+ $SHELL{$acct}=$shell;
+ $GECOS{$acct}=$name;
+ }
+ close (PASSWD);
+} else {
+ open(PASSWD, $passwd) || die "$!\n";
+
+ while (<PASSWD>)
+ {
+ chop if /\n$/;
+ next if /^#/;
+ ($acct,$passwd,$uid,$gid,$name,$home,$shell)=split( /:/ );
+
+ ($uid,$gid)=($fixed_uid,$fixed_gid) if $vpopuid;
+
+ $PASSWORD{$acct}=$passwd if $passwd ne "x";
+ $UID{$acct}=$uid;
+ $GID{$acct}=$gid;
+ $HOME{$acct}=$home;
+ $SHELL{$acct}=$shell;
+
+ $name =~ s/\|/./g; # Just in case
+ $GECOS{$acct}=$name;
+ }
+ close (PASSWD);
+
+ if ( -f $shadow && ! $noshadow)
+ {
+ open (SHADOW, $shadow) || die "$!\n";
+ while (<SHADOW>)
+ {
+
+ next if /^#/;
+ ($acct,$passwd,$dummy)=split(/:/);
+ $PASSWORD{$acct}=$passwd;
+ }
+ close (SHADOW);
}
- close (SHADOW);
}
while ( defined ($key=each %UID))