openbsd-ports/mail/courier-authlib/patches/patch-userdb_pw2userdb_in
mbalmer cf379d32df Authentication libraries for courier. New versions of maildrop, courier-imap
and friends use these for authentication purposes.
port made with help from bernd, thanks.
2006-11-03 11:45:31 +00:00

104 lines
2.4 KiB
Plaintext

$OpenBSD: patch-userdb_pw2userdb_in,v 1.1.1.1 2006/11/03 11:45:31 mbalmer Exp $
--- userdb/pw2userdb.in.orig Fri Jan 6 11:29:43 2006
+++ userdb/pw2userdb.in Fri Jan 6 11:31:23 2006
@@ -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 @@ die "Invalid options.\n" unless
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( /:/ );
+ open(PASSWD, $shadow) || die "$!\n";
- ($uid,$gid)=($fixed_uid,$fixed_gid) if $vpopuid;
+ while (<PASSWD>)
+ {
+ chop if /\n$/;
+ next if /^#/;
+ ($acct,$passwd,$uid,$gid,$class,$change,$expire,$name,$home,$shell)=split( /:/ );
- $PASSWORD{$acct}=$passwd if $passwd ne "x";
- $UID{$acct}=$uid;
- $GID{$acct}=$gid;
- $HOME{$acct}=$home;
- $SHELL{$acct}=$shell;
+ ($uid,$gid)=($fixed_uid,$fixed_gid) if $vpopuid;
+ $name =~ s/\|/./g; # Just in case
- $name =~ s/\|/./g; # Just in case
- $GECOS{$acct}=$name;
-}
-close (PASSWD);
+ $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";
-if ( -f $shadow && ! $noshadow)
-{
- open (SHADOW, $shadow) || die "$!\n";
- while (<SHADOW>)
+ while (<PASSWD>)
{
+ chop if /\n$/;
next if /^#/;
- ($acct,$passwd,$dummy)=split(/:/);
- $PASSWORD{$acct}=$passwd;
+ ($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 (SHADOW);
+ close (PASSWD);
+
+ if ( -f $shadow && ! $noshadow)
+ {
+ open (SHADOW, $shadow) || die "$!\n";
+ while (<SHADOW>)
+ {
+
+ next if /^#/;
+ ($acct,$passwd,$dummy)=split(/:/);
+ $PASSWORD{$acct}=$passwd;
+ }
+ close (SHADOW);
+ }
}
while ( defined ($key=each %UID))