summaryrefslogtreecommitdiff
path: root/apt-private
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2018-09-15 17:45:16 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2018-09-15 17:45:16 +0200
commit32e0587d1819ca4b09cd146b0114a1c56ce4a8a9 (patch)
tree8773f651557f6e2306d5510dd0dcff6bb7b4e79c /apt-private
parenta5953d914488c80c28fba6b59d2f0be461cd9f03 (diff)
Show all architectures in 'apt list' output
The uniqueness in std::set containers is ensured by the ordering operator we provide, but it was not considering that different versions can have the same description like the different architectures for a version of a package. Closes: #908218
Diffstat (limited to 'apt-private')
-rw-r--r--apt-private/private-cacheset.h15
-rw-r--r--apt-private/private-list.cc2
2 files changed, 11 insertions, 6 deletions
diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h
index d20d00b68..3370bd03a 100644
--- a/apt-private/private-cacheset.h
+++ b/apt-private/private-cacheset.h
@@ -26,6 +26,7 @@ public:
{}
const pkgCache::DescFile * CachedDescFile() const { return descFile; }
operator pkgCache::VerIterator() const { return iter; }
+ map_id_t ID() const { return iter->ID; }
};
struct VersionSortDescriptionLocality /*{{{*/
@@ -36,17 +37,21 @@ struct VersionSortDescriptionLocality /*{{{*/
pkgCache::DescFile const *A = v_lhs.CachedDescFile();
pkgCache::DescFile const *B = v_rhs.CachedDescFile();
- if (A == nullptr && B == nullptr)
- return false;
-
if (A == nullptr)
+ {
+ if (B == nullptr)
+ return v_lhs.ID() < v_rhs.ID();
return true;
-
- if (B == nullptr)
+ }
+ else if (B == nullptr)
return false;
if (A->File == B->File)
+ {
+ if (A->Offset == B->Offset)
+ return v_lhs.ID() < v_rhs.ID();
return A->Offset < B->Offset;
+ }
return A->File < B->File;
}
diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc
index 2c9b349a3..7c8c89777 100644
--- a/apt-private/private-list.cc
+++ b/apt-private/private-list.cc
@@ -129,7 +129,7 @@ bool DoList(CommandLine &Cmd)
else
ListSingleVersion(CacheFile, records, V, outs, format);
output_map.insert(std::make_pair<std::string, std::string>(
- V.ParentPkg().Name(), outs.str()));
+ V.ParentPkg().FullName(), outs.str()));
}
// FIXME: SORT! and make sorting flexible (alphabetic, by pkg status)