]> git.saurik.com Git - apt.git/commitdiff
Switch FileFd to not transparently gunzip, since that breaks code which expects the...
authormartin@piware.de <>
Thu, 24 Jun 2010 19:27:27 +0000 (21:27 +0200)
committermartin@piware.de <>
Thu, 24 Jun 2010 19:27:27 +0000 (21:27 +0200)
apt-pkg/acquire-item.cc
apt-pkg/contrib/fileutl.cc
apt-pkg/contrib/fileutl.h
apt-pkg/deb/debindexfile.cc
apt-pkg/deb/debrecords.cc
apt-pkg/deb/debsrcrecords.h
cmdline/apt-cache.cc
debian/changelog

index fe81ee791263ca9759a6df1c5d4ef2b385a35847..9abdb0ad0c531b584d40f7b8203396b031672fd1 100644 (file)
@@ -228,7 +228,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)          /*{{{*/
       ss >> ServerSha1 >> size;
       unsigned long const ServerSize = atol(size.c_str());
 
-      FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
+      FileFd fd(CurrentPackagesFile, FileFd::ReadOnlyGzip);
       SHA1Summation SHA1;
       SHA1.AddFD(fd.Fd(), fd.Size());
       string const local_sha1 = SHA1.Result();
@@ -459,7 +459,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff()                                      /*{{{*/
    string FinalFile = _config->FindDir("Dir::State::lists");
    FinalFile += URItoFileName(RealURI);
 
-   FileFd fd(FinalFile, FileFd::ReadOnly);
+   FileFd fd(FinalFile, FileFd::ReadOnlyGzip);
    SHA1Summation SHA1;
    SHA1.AddFD(fd.Fd(), fd.Size());
    string local_sha1 = string(SHA1.Result());
index 11a9e7f7bc4702497437a2881c1f33457c350147..2b91a46f72a375c328836cc2c0665da55b502069 100644 (file)
@@ -604,12 +604,16 @@ bool FileFd::Open(string FileName,OpenMode Mode, unsigned long Perms)
    {
       case ReadOnly:
       iFd = open(FileName.c_str(),O_RDONLY);
+      break;
+
+      case ReadOnlyGzip:
+      iFd = open(FileName.c_str(),O_RDONLY);
       if (iFd > 0 && FileName.compare(FileName.size()-3, 3, ".gz") == 0) {
-         gz = gzdopen (iFd, "r");
-         if (gz == NULL) {
-             close (iFd);
-             iFd = -1;
-         }
+        gz = gzdopen (iFd, "r");
+        if (gz == NULL) {
+            close (iFd);
+            iFd = -1;
+        }
       }
       break;
       
index 9925bbed41be69ffb37738b16c25256e2e06af1c..c4b28212608629f2ee07beb27f5c08152db97a99 100644 (file)
@@ -41,7 +41,7 @@ class FileFd
    gzFile gz;
    
    public:
-   enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp};
+   enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp,ReadOnlyGzip};
    
    inline bool Read(void *To,unsigned long Size,bool AllowEof)
    {
index 9832329c0e3f0be13290ac33fb387e58145e2f84..7d7bd09fb61db93c6b5c946153efeeef28bf8b77 100644 (file)
@@ -273,7 +273,7 @@ unsigned long debPackagesIndex::Size() const
 bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
 {
    string PackageFile = IndexFile("Packages");
-   FileFd Pkg(PackageFile,FileFd::ReadOnly);
+   FileFd Pkg(PackageFile,FileFd::ReadOnlyGzip);
    debListParser Parser(&Pkg);
    if (_error->PendingError() == true)
       return _error->Error("Problem opening %s",PackageFile.c_str());
@@ -464,7 +464,7 @@ bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
    string TranslationFile = IndexFile(Language);
    if (TranslationsAvailable() && FileExists(TranslationFile))
    {
-     FileFd Trans(TranslationFile,FileFd::ReadOnly);
+     FileFd Trans(TranslationFile,FileFd::ReadOnlyGzip);
      debListParser TransParser(&Trans);
      if (_error->PendingError() == true)
        return false;
@@ -544,7 +544,7 @@ unsigned long debStatusIndex::Size() const
 /* */
 bool debStatusIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
 {
-   FileFd Pkg(File,FileFd::ReadOnly);
+   FileFd Pkg(File,FileFd::ReadOnlyGzip);
    if (_error->PendingError() == true)
       return false;
    debListParser Parser(&Pkg);
index 34ef0d8f25801e5c7f44804dab85a3c14d5607b2..ec9e395ef9d1e636d5456affc2e28941fea55257 100644 (file)
@@ -19,7 +19,7 @@
 // ---------------------------------------------------------------------
 /* */
 debRecordParser::debRecordParser(string FileName,pkgCache &Cache) : 
-                  File(FileName,FileFd::ReadOnly), 
+                  File(FileName,FileFd::ReadOnlyGzip), 
                   Tags(&File, std::max(Cache.Head().MaxVerFileSize, 
                                       Cache.Head().MaxDescFileSize) + 200)
 {
index c39d78bae66b202f1726eed515594db12f04b04e..905264daa0608a7665a5fde3c688f6d14ee292b9 100644 (file)
@@ -48,7 +48,7 @@ class debSrcRecordParser : public pkgSrcRecords::Parser
    virtual bool Files(vector<pkgSrcRecords::File> &F);
 
    debSrcRecordParser(string const &File,pkgIndexFile const *Index) 
-      : Parser(Index), Fd(File,FileFd::ReadOnly), Tags(&Fd,102400), 
+      : Parser(Index), Fd(File,FileFd::ReadOnlyGzip), Tags(&Fd,102400), 
         Buffer(0), BufSize(0) {}
    ~debSrcRecordParser();
 };
index 3f68579cc0386b933dc8700dc3ae748490cda212..2b47184f9b54a26c76f40011a7fd654fe55531c7 100644 (file)
@@ -1220,7 +1220,7 @@ bool DisplayRecord(pkgCache::VerIterator V)
    if (I.IsOk() == false)
       return _error->Error(_("Package file %s is out of sync."),I.FileName());
    
-   FileFd PkgF(I.FileName(),FileFd::ReadOnly);
+   FileFd PkgF(I.FileName(),FileFd::ReadOnlyGzip);
    if (_error->PendingError() == true)
       return false;
    
index e44d7986d9e06cdb0071f8d8e7c8e037b8c1c952..f3f2d3df43ccb9e80acce1c0424334908ad4c20d 100644 (file)
@@ -9,13 +9,17 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low
     - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right
       CXXFLAGS.
   * apt-pkg/contrib/fileutl.{h,cc}:
-    - Add support for transparent reading of gzipped files.
+    - Add support for reading of gzipped files with the new "ReadOnlyGzip"
+      OpenMode.
     - Link against zlib (in apt-pkg/makefile) and add zlib build dependency.
     - [ABI BREAK] This adds a new private member to FileFd, but its
-      initialization is in the public header file. This also changes the
-      behaviour of FileFd for reading gzipped files.
+      initialization is in the public header file.
   * configure.in:
     - Check for zlib library and headers.
+  * apt-pkg/acquire-item.cc, apt-pkg/deb/debindexfile.cc,
+    apt-pkg/deb/debrecords.cc, apt-pkg/deb/debsrcrecords.h,
+    cmdline/apt-cache.cc:
+    - Open Packages, Sources, and Translations indexes in "ReadOnlyGzip" mode.
   * apt-pkg/deb/debindexfile.cc:
     - If we do not find uncompressed package/source/translation indexes, look
       for gzip compressed ones.