aboutsummaryrefslogtreecommitdiffstats
path: root/databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in
diff options
context:
space:
mode:
Diffstat (limited to 'databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in')
-rw-r--r--databases/courier-authlib-usergdbm/files/patch-userdb::pw2userdb.in104
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))