diff options
Diffstat (limited to 'databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in')
-rw-r--r-- | databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in b/databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in new file mode 100644 index 00000000000..7cb79aa49b0 --- /dev/null +++ b/databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in @@ -0,0 +1,104 @@ +--- 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)) |