Bug#76027: apt-cdrom: ReduceSourcelist dosn't compare prefix
Package: apt
Version: 0.3.19
Severity: important
I create Debian CD with add-on debian-security, debian-kde and
debian-helix. Packages file are in directories (from root of CD):
debian-helix/dists/woody/main/binary-i386
debian-kde/dists/potato/kde2/binary-i386
debian-security/dists/potato/updates/contrib/binary-i386
debian-security/dists/potato/updates/main/binary-i386
debian-security/dists/potato/updates/non-free/binary-i386
cmdline/apt-cdrom.cc (FindPackages and Drop*) produce correct list of
directories, in which Packages files is. After copying files
by PackageCopy::CopyPackages list is:
debian-helix/ woody main
debian-kde/ potato kde2
debian-security/ potato updates/contrib
debian-security/ potato updates/main
debian-security/ potato updates/non-free
After ReduceSourcelist is:
debian-helix/ woody main
debian-kde/ potato kde2 updates/contrib updates/main updates/non-free
It's bug. debian-kde and debian-security have distribution potato,
and ReduceSourcelist compare only distribution, but not prefix.
Fix is:
diff -r -u apt-0.3.19.dist/cmdline/apt-cdrom.cc apt-0.3.19/cmdline/apt-cdrom.cc
--- apt-0.3.19.dist/cmdline/apt-cdrom.cc Wed Nov 1 10:23:16 2000
+++ apt-0.3.19/cmdline/apt-cdrom.cc Wed Nov 1 13:19:35 2000
@@ -271,6 +271,7 @@
continue;
string Word1 = string(*I,Space,SSpace-Space);
+ string Prefix = string(*I,0,Space);
for (vector<string>::iterator J = List.begin(); J != I; J++)
{
// Find a space..
@@ -281,6 +282,8 @@
if (SSpace2 == string::npos)
continue;
+ if (string(*J,0,Space2) != Prefix)
+ continue;
if (string(*J,Space2,SSpace2-Space2) != Word1)
continue;
**********************************************************************
* Name: Vladimir Michl *
* E-mail: Vladimir.Michl@seznam.cz *
* Web: http://www.penguin.cz/~michlv *
* Tel: +420/68/5391545 Work: 068/5711292 *
* 068/5391545 Czech Republic *
**********************************************************************
Reply to: