severity 435656 grave thanks Rationale: breaks unrelated software
-=| Peter Baumann, 3.08.2007 16:46 |=- > On Fri, Aug 03, 2007 at 08:23:10AM +0300, Damyan Ivanov wrote: >> The code above reads until either an empty $line appears, or $res is not >> positive. Could it be possible that the file in question does no contain >> empty lines and thus the inner while reads until EOF? >> >> Or, perhaps $line needs a chomp in order to match /^$/ ? >> (yes, that would mean a behaviour change) > > No. The file is fine (it is e.g dists/lenny/main/binary-i386/Packages.gz). > But this gave me the right direction. Here is the output of the slighly > changed code segment (output enclosed by '-' markers) > > my $gunzf = gzopen($file, "rb") or die "$file: $!"; > my $line; > my $res; > my $loop = 1; > while ($loop) { > my $buf = ""; > while(($res = $gunzf->gzreadline($line) > 0) > && !($line =~ /^$/)) { > printf "%u:%s", length($line), $line; > exit; > $buf = $buf . $line; > } > > > > previous version (1.42-2): > - > 16:Package: 2vcard > - > > > new version (2.005-1) > - > 791:Package: 2vcard > Priority: optional > Section: utils > Installed-Size: 108 > Maintainer: Martin Albisetti <[EMAIL PROTECTED]> > Architecture: i386 > Version: 0.5-1 > Filename: pool/main/2/2vcard/2vcard_0.5-1_i386.deb > Size: 14090 > MD5sum: 074de92c99657c98dff1ed42d580f84b > SHA1: ceea35694c35437ad3f8a1e06ab7d3e698efee56 > SHA256: 814b27ae828b9947d63a1ce628c85e5fb36f95075f3ccdbd23c9c908e067fb6c > Description: A little perl script to convert an addressbook to VCARD file > format > 2vcard is a little perl script that you can use to convert the popular vcard > file format. Currently 2vcard can only convert adressbooks and alias files > from > the following formats: abook,eudora,juno,ldif,mutt,mh and pine. > . > The VCARD format is used by gnomecard, for example, which is turn is used by > the balsa email client. > > - Ouch! It seems only double \n's are detected? Can you also print length($/) around there? Is it zero? If it is, this could be the source of the problem - it seems IO::Compress::Base (which actually implements the gzreadline function) supports several modes, $/ == '' provoking the "paragraph mode". I guess Compress::Zlib's gzreadline() should add "local $/ = ''" before passing the call further to preserve the previous interface. If you confirm that $/ is indeed empty and setting it to '\n' solves the problem, I'll prepare a fix. -- dam JabberID: [EMAIL PROTECTED]
signature.asc
Description: OpenPGP digital signature