Hi, On Wednesday 27 July 2005 19:12, David Wood wrote: > I'm no patch expert, so the problem might be with me, but I tried to > apply your patch below with: > > cat ldif.patch | patch -b LDIF.pm > > and got: > > patching file LDIF.pm > Hunk #1 FAILED at 79. > 1 out of 1 hunk FAILED -- saving rejects to file LDIF.pm.rej
Sorry, my fault. Here is the correctd version of the patch. > The LDIF.pm getting patched shows: > > $VERSION = "0.16"; This is the correct version the patch should be applied against. Greetings Peter -- Peter Marschall eMail: [EMAIL PROTECTED]
--- lib/Net/LDAP/LDIF.pm +++ lib/Net/LDAP/LDIF.pm 2005-06-27 13:50:29.000000000 +0200 @@ -9,7 +9,7 @@ require Net::LDAP::Entry; use vars qw($VERSION); -$VERSION = "0.16"; +$VERSION = "0.16_01"; my %mode = qw(w > r < a >>); @@ -79,35 +79,41 @@ sub _read_lines { my $self = shift; - my @ldif; - - { - local $/ = ""; my $fh = $self->{'fh'}; + my @ldif = (); + my $entry = ''; + my $in_comment = 0; my $ln; - do { # allow comments separated by blank lines - $ln = $self->{_next_lines} || scalar <$fh>; - unless ($ln) { - $self->{_next_lines} = ''; - $self->{_current_lines} = ''; - $self->eof(1); - return; - } - $ln =~ s/\n //sg; - $ln =~ s/^#.*\n//mg; - chomp($ln); - $self->{_current_lines} = $ln; - } until ($self->{_current_lines} || $self->eof()); - chomp(@ldif = split(/^/, $ln)); - do { - $ln = scalar <$fh> || ''; - $self->eof(1) unless $ln; - $ln =~ s/\n //sg; - $ln =~ s/^#.*\n//mg; - chomp($ln); - $self->{_next_lines} = $ln; - } until ($self->{_next_lines} || $self->eof()); + + return @ldif if ($self->eof()); + + while (defined($ln = scalar <$fh>)) { + if ($ln =~ /^#/o) { # ignore 1st line of comments + $in_comment = 1; + } + else { + if ($ln =~ /^[ \t]/o) { # append wrapped line (if not in a comment) + $entry .= $ln if (!$in_comment); + } + else { + $in_comment = 0; + if ($ln =~ /^\r?\n$/o) { + # ignore empty line on start of entry + # empty line at non-empty entry indicate entry completion + last if (length($entry)); + } + else { + # append non-empty line + $entry .= $ln; + } + } + } } + $self->eof(1) if (!defined($ln)); + $entry =~ s/\r?\n //sgo; # un-wrap wrapped lines + $entry =~ s/\r?\n\t/ /sgo; # OpenLDAP extension !!! + @ldif = split(/^/, $entry); + map { s/\r?\n$//; } @ldif; @ldif; } @@ -177,7 +183,7 @@ my $dn = shift @ldif; - if (length($1)) { + if (length($1)) { # $1 is the optional colon from above eval { require MIME::Base64 }; if ($@) { $self->_error($@, @ldif);