]> git.saurik.com Git - apt.git/commitdiff
use the right key for compressor configuration dump
authorDavid Kalnischkies <david@kalnischkies.de>
Tue, 5 Jul 2016 12:08:57 +0000 (14:08 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Tue, 5 Jul 2016 18:44:45 +0000 (20:44 +0200)
The generated dump output is incorrect in sofar as it uses the name as
the key for this compressor, but they don't need to be equal as is the
case if you force some of the inbuilt ones to be disabled as our testing
framework does it at times.

This is hidden from changelog as nobody will actually notice while
describing it in a few words make it sound like an important changeā€¦

Git-Dch: Ignore

cmdline/apt-config.cc

index 6953a81722ed5985af7ef8b449ef2198309a815b..adec8dda4198dfae946c7b776052486f00422b09 100644 (file)
@@ -29,6 +29,7 @@
 #include <iostream>
 #include <string>
 #include <vector>
+#include <map>
 #include <string.h>
 
 #include <apt-private/private-cmndline.h>
@@ -111,12 +112,19 @@ int main(int argc,const char *argv[])                                     /*{{{*/
    for (std::vector<std::string>::const_iterator a = archs.begin(); a != archs.end(); ++a)
       _config->Set("APT::Architectures::", *a);
 
+   string const conf = "APT::Compressor::";
+   std::map<std::string,std::string> CompressorNames;
+   for (auto && key : _config->FindVector("APT::Compressor", "", true))
+   {
+      auto const comp = conf + key + "::Name";
+      CompressorNames.emplace(_config->Find(comp, key), key);
+   }
    std::vector<APT::Configuration::Compressor> const compressors = APT::Configuration::getCompressors();
    _config->Clear("APT::Compressor");
-   string conf = "APT::Compressor::";
    for (std::vector<APT::Configuration::Compressor>::const_iterator c = compressors.begin(); c != compressors.end(); ++c)
    {
-      string comp = conf + c->Name + "::";
+      auto const n = CompressorNames.find(c->Name);
+      string comp = conf + (n == CompressorNames.end() ? c->Name : n->second) + "::";
       _config->Set(comp + "Name", c->Name);
       _config->Set(comp + "Extension", c->Extension);
       _config->Set(comp + "Binary", c->Binary);