From: Chris R. <chr...@us...> - 2004-02-07 18:41:04
|
Update of /cvsroot/perl-ldap/ldap/lib/Net/LDAP In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11682/lib/Net/LDAP Modified Files: LDIF.pm Log Message: Fix for comment parsing bug from Peter Marschall Index: LDIF.pm =================================================================== RCS file: /cvsroot/perl-ldap/ldap/lib/Net/LDAP/LDIF.pm,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- LDIF.pm 20 Jan 2004 07:11:33 -0000 1.21 +++ LDIF.pm 7 Feb 2004 18:38:07 -0000 1.22 @@ -76,17 +76,20 @@ { local $/ = ""; my $fh = $self->{'fh'}; - my $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; + 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> || ''; @@ -112,8 +115,13 @@ $self->_clear_error(); @ldif = $self->_read_lines; - return unless @ldif; - shift @ldif if @ldif && $ldif[0] !~ /\D/; + + unless (@ldif) { # empty records are errors if not at eof + $self->_error("illegal empty LDIF entry") if (!$self->eof()); + return; + } + # What does that mean ??? + #shift @ldif if @ldif && $ldif[0] !~ /\D/; if (@ldif and $ldif[0] =~ /^version:\s+(\d+)/) { $self->{version} = $1; |