浏览代码

apt-pkg/cdrom.cc: Accept .bz2, .xz files in addition to .gz files (Closes: #649451)

Julian Andres Klode 15 年之前
父节点
当前提交
baf685fd1d
共有 2 个文件被更改,包括 18 次插入 和 4 次删除
  1. 11 4
      apt-pkg/cdrom.cc
  2. 7 0
      debian/changelog

+ 11 - 4
apt-pkg/cdrom.cc

@@ -81,7 +81,8 @@ bool pkgCdrom::FindPackages(string CD,
    /* Aha! We found some package files. We assume that everything under 
    /* Aha! We found some package files. We assume that everything under 
       this dir is controlled by those package files so we don't look down
       this dir is controlled by those package files so we don't look down
       anymore */
       anymore */
-   if (stat("Packages",&Buf) == 0 || stat("Packages.gz",&Buf) == 0)
+   if (stat("Packages",&Buf) == 0 || stat("Packages.gz",&Buf) == 0 ||
+       stat("Packages.bz2",&Buf) == 0 || stat("Packages.xz",&Buf) == 0)
    {
    {
       List.push_back(CD);
       List.push_back(CD);
       
       
@@ -89,7 +90,8 @@ bool pkgCdrom::FindPackages(string CD,
       if (_config->FindB("APT::CDROM::Thorough",false) == false)
       if (_config->FindB("APT::CDROM::Thorough",false) == false)
 	 return true;
 	 return true;
    }
    }
-   if (stat("Sources.gz",&Buf) == 0 || stat("Sources",&Buf) == 0)
+   if (stat("Sources.xz",&Buf) == 0 || stat("Sources.bz2",&Buf) == 0 ||
+       stat("Sources.gz",&Buf) == 0 || stat("Sources",&Buf) == 0)
    {
    {
       SList.push_back(CD);
       SList.push_back(CD);
       
       
@@ -109,8 +111,11 @@ bool pkgCdrom::FindPackages(string CD,
 	    if (_config->FindB("Debug::aptcdrom",false) == true)
 	    if (_config->FindB("Debug::aptcdrom",false) == true)
 	       std::clog << "found translations: " << Dir->d_name << "\n";
 	       std::clog << "found translations: " << Dir->d_name << "\n";
 	    string file = Dir->d_name;
 	    string file = Dir->d_name;
-	    if(file.substr(file.size()-3,file.size()) == ".gz")
+	    if(file.substr(file.size()-3,file.size()) == ".gz" ||
+	       file.substr(file.size()-3,file.size()) == ".xz")
 	       file = file.substr(0,file.size()-3);
 	       file = file.substr(0,file.size()-3);
+	    if(file.substr(file.size()-4,file.size()) == ".bz2")
+	       file = file.substr(0,file.size()-4);
 	    TransList.push_back(CD+"i18n/"+ file);
 	    TransList.push_back(CD+"i18n/"+ file);
 	 }
 	 }
       }
       }
@@ -258,7 +263,9 @@ bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name)
    {
    {
       struct stat Buf;
       struct stat Buf;
       if (stat((List[I] + Name).c_str(),&Buf) != 0 &&
       if (stat((List[I] + Name).c_str(),&Buf) != 0 &&
-	  stat((List[I] + Name + ".gz").c_str(),&Buf) != 0)
+	  stat((List[I] + Name + ".gz").c_str(),&Buf) != 0 && 
+	  stat((List[I] + Name + ".bz2").c_str(),&Buf) != 0 && 
+	  stat((List[I] + Name + ".xz").c_str(),&Buf) != 0)
 	 _error->Errno("stat","Failed to stat %s%s",List[I].c_str(),
 	 _error->Errno("stat","Failed to stat %s%s",List[I].c_str(),
 		       Name);
 		       Name);
       Inodes[I] = Buf.st_ino;
       Inodes[I] = Buf.st_ino;

+ 7 - 0
debian/changelog

@@ -1,3 +1,10 @@
+apt (0.8.16~exp9) UNRELEASED; urgency=low
+
+  * apt-pkg/cdrom.cc:
+    - Accept .bz2, .xz files in addition to .gz files (Closes: #649451)
+
+ -- Julian Andres Klode <jak@debian.org>  Mon, 21 Nov 2011 18:46:36 +0100
+
 apt (0.8.16~exp8) experimental; urgency=low
 apt (0.8.16~exp8) experimental; urgency=low
 
 
   [ David Kalnischkies ]
   [ David Kalnischkies ]