On Fri, Aug 03, 2007 at 08:23:10AM +0300, Damyan Ivanov wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > - -=| Peter Baumann, 2.08.2007 14:55 |=- > > > > After the upgrade to version 2.005-1 debmirror decided to delete my > > whole debian mirror. And as i didn't pay attention during debmirror > > updates this is really annoying. > > > > The corresponding debmirror code is here: > > > > 851 my $gunzf = gzopen($file, "rb") or die "$file: $!"; > > 852 my $line; > > 853 my $res; > > 854 my $loop = 1; > > 855 while ($loop) { > > 856 my $buf = ""; > > 857 while(($res = $gunzf->gzreadline($line) > 0) > > 858 && !($line =~ /^$/)) { > > 859 $buf = $buf . $line; > > 860 } > > 861 if ($res <= 0) { # <-------- THIS IS ALWAYS TRUE AFTER THE > > UPGRADE > > 862 $loop = 0; > > 863 next; > > 864 } > > I have a couple of guesses that you may help with: > > 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. - So it is definitly a change in behaviour of gzreadline() Greetings, Peter Baumann -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]