]> git.saurik.com Git - apt.git/commitdiff
* merged ajs apt-ftparchive branch
authorMichael Vogt <michael.vogt@ubuntu.com>
Mon, 24 Jul 2006 20:51:14 +0000 (22:51 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Mon, 24 Jul 2006 20:51:14 +0000 (22:51 +0200)
1  2 
apt-pkg/tagfile.cc
debian/changelog

diff --combined apt-pkg/tagfile.cc
index 79ff18de4063af437eb8415859eead6dba428f5c,1fa007940e0c256f96b94af29cdfffbf15ec98f6..25e2930fac6906b4d24cb3cc5855fdb3bc3bc776
@@@ -35,20 -35,20 +35,20 @@@ pkgTagFile::pkgTagFile(FileFd *pFd,unsi
       Fd(*pFd),
       Size(Size)
  {
 -   if (Fd.IsOpen() == false)
 +   if (Fd.IsOpen() == false || Fd.Size() == 0)
     {
        Buffer = 0;
        Start = End = Buffer = 0;
 -      Done = true;
        iOffset = 0;
 +      Map = NULL;
        return;
     }
     
 -   Buffer = new char[Size];
 -   Start = End = Buffer;
 -   Done = false;
 +   Map = new MMap (Fd, MMap::Public | MMap::ReadOnly);
 +   Buffer = (char *) Map->Data ();
 +   Start = Buffer;
 +   End = Buffer + Map->Size ();
     iOffset = 0;
 -   Fill();
  }
                                                                        /*}}}*/
  // TagFile::~pkgTagFile - Destructor                                  /*{{{*/
@@@ -56,7 -56,7 +56,7 @@@
  /* */
  pkgTagFile::~pkgTagFile()
  {
 -   delete [] Buffer;
 +   delete Map;
  }
                                                                        /*}}}*/
  // TagFile::Step - Advance to the next section                                /*{{{*/
  /* If the Section Scanner fails we refill the buffer and try again. */
  bool pkgTagFile::Step(pkgTagSection &Tag)
  {
 +   if (Start == End)
 +      return false;
 +
     if (Tag.Scan(Start,End - Start) == false)
     {
 -      if (Fill() == false)
 -       return false;
 -      
 -      if (Tag.Scan(Start,End - Start) == false)
 -       return _error->Error(_("Unable to parse package file %s (1)"),
 -                            Fd.Name().c_str());
 +      return _error->Error(_("Unable to parse package file %s (1)"),
 +            Fd.Name().c_str());
     }
     Start += Tag.size();
     iOffset += Tag.size();
  
     Tag.Trim();
 -   return true;
 -}
 -                                                                      /*}}}*/
 -// TagFile::Fill - Top up the buffer                                  /*{{{*/
 -// ---------------------------------------------------------------------
 -/* This takes the bit at the end of the buffer and puts it at the start
 -   then fills the rest from the file */
 -bool pkgTagFile::Fill()
 -{
 -   unsigned long EndSize = End - Start;
 -   unsigned long Actual = 0;
 -   
 -   memmove(Buffer,Start,EndSize);
 -   Start = Buffer;
 -   End = Buffer + EndSize;
 -   
 -   if (Done == false)
 -   {
 -      // See if only a bit of the file is left
 -      if (Fd.Read(End,Size - (End - Buffer),&Actual) == false)
 -       return false;
 -      if (Actual != Size - (End - Buffer))
 -       Done = true;
 -      End += Actual;
 -   }
 -   
 -   if (Done == true)
 -   {
 -      if (EndSize <= 3 && Actual == 0)
 -       return false;
 -      if (Size - (End - Buffer) < 4)
 -       return true;
 -      
 -      // Append a double new line if one does not exist
 -      unsigned int LineCount = 0;
 -      for (const char *E = End - 1; E - End < 6 && (*E == '\n' || *E == '\r'); E--)
 -       if (*E == '\n')
 -          LineCount++;
 -      for (; LineCount < 2; LineCount++)
 -       *End++ = '\n';
 -      
 -      return true;
 -   }
 -   
     return true;
  }
                                                                        /*}}}*/
@@@ -96,10 -141,22 +96,10 @@@ bool pkgTagFile::Jump(pkgTagSection &Ta
  
     // Reposition and reload..
     iOffset = Offset;
 -   Done = false;
 -   if (Fd.Seek(Offset) == false)
 -      return false;
 -   End = Start = Buffer;
 +   Start = Buffer + iOffset;
     
 -   if (Fill() == false)
 -      return false;
 -
 -   if (Tag.Scan(Start,End - Start) == true)
 -      return true;
 -   
 -   // This appends a double new line (for the real eof handling)
 -   if (Fill() == false)
 -      return false;
 -   
 -   if (Tag.Scan(Start,End - Start) == false)
 +   // Start != End is a special case to not fail on empty TagFiles
 +   if (Start != End && Tag.Scan(Start,End - Start) == false)
        return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str());
     
     return true;
@@@ -124,7 -181,7 +124,7 @@@ bool pkgTagSection::Scan(const char *St
     Stop = Section = Start;
     memset(AlphaIndexes,0,sizeof(AlphaIndexes));
  
 -   if (Stop == 0)
 +   if (Stop == 0 || MaxLength == 0)
        return false;
     
     TagCount = 0;
        Stop++;
     }
  
 +   if ((Stop+1 >= End) && (End[-1] == '\n' || End[-1] == '\r'))
 +   {
 +       Indexes[TagCount] = (End - 1) - Section;
 +       return true;
 +   }
 +
     return false;
  }
                                                                        /*}}}*/
@@@ -343,7 -394,8 +343,8 @@@ static const char *iTFRewritePackageOrd
                            "Filename",
                            "Size",
                            "MD5Sum",
-                           "SHA1Sum",
+                           "SHA1",
+                           "SHA256",
                             "MSDOS-Filename",   // Obsolete
                            "Description",
                            0};
diff --combined debian/changelog
index 3d5e3c59ad236042fb20bbcdb78b57673a40f51b,64c743a7f32497f50b170baadc57e4f5af6f573d..1febfe4951526fe8ec8d86fde641efb0442b1f55
@@@ -1,71 -1,3 +1,78 @@@
++apt (0.6.45) unstable; urgency=low
++
++  * apt-pkg/contrib/sha256.cc:
++    - fixed the sha256 generation (closes: #378183)
++
++ --
++
 +apt  (0.6.44.2) unstable; urgency=low 
 +  
 +   * apt-pkg/depcache.cc:
 +     - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
 +   * apt-pkg/acquire-item.cc:
 +     - fix missing chmod() in the new aquire code
 +       (thanks to Bastian Blank, Closes: #367425)
 +   * merged from
 +     http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
 +     * sk.po: Completed to 512t
 +     * eu.po: Completed to 512t
 +     * fr.po: Completed to 512t
 +     * sv.po: Completed to 512t
 +     * Update all PO and the POT. Gives 506t6f for formerly
 +       complete translations
 +
 + -- Michael Vogt <mvo@debian.org>  Wed, 14 Jun 2006 12:00:57 +0200 
 +
 +apt (0.6.44.1-0.1) unstable; urgency=low
 +
 +  * Non-maintainer upload.
 +  * Don't give an error when parsing empty Packages/Sources files.
 +    (Closes: #366931, #367086, #370160)
 +
 + -- Steinar H. Gunderson <sesse@debian.org>  Fri,  9 Jun 2006 00:52:21 +0200
 +
 +apt (0.6.44.1) unstable; urgency=low
 +
 +  * merged from 
 +    http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
 +    - po/LINGUAS: added "bg" Closes: #360262
 +    - po/gl.po: Galician translation update. Closes: #366849
 +    - po/hu.po: Hungarian translation update. Closes: #365448
 +    - po/cs.po: Czech translation updated. Closes: #367244
 +
 + -- Michael Vogt <mvo@debian.org>  Tue, 16 May 2006 21:51:16 +0200
 +
 +apt (0.6.44) unstable; urgency=low
 +
 +  * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
 +  * apt-pkg/deb/dpkgpm.cc: 
 +    - wording fixes (thanks to Matt Zimmerman)
 +    - fix error in dpkg interaction (closes: #364513, 
 +      thanks to Martin Dickopp)
 +  * apt-pkg/tagfile.{cc,h}:
 +    - use MMap to read the entries (thanks to Zephaniah E. Hull for the
 +      patch) Closes: #350025
 +  * Merge from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
 +      * bg.po: Added, complete to 512t. Closes: #360262
 +  * doc/apt-ftparchive.1.xml:
 +    - fix documentation for "SrcPackages" -> "Sources" 
 +      (thanks to Bart Martens for the patch, closes: #307756)
 +  * debian/libapt-pkg-doc.doc-base.cache:
 +    - remove broken charackter from description (closes: #361129)
 +  * apt-inst/deb/dpkgdb.cc, methods/gpgv.cc: 
 +    - i18n fixes (closes: #349298)
 +  * debian/postinst: dont fail on not available
 +    /usr/share/doc/apt/examples/sources.list (closes: #361130)
 +  * methods/ftp.cc:
 +    - unlink empty file in partial if the download failed because
 +      the file is missing on the server (closes: #316337)
 +  * apt-pkg/deb/debversion.cc:
 +    - treats a version string with explicit zero epoch equal
 +      than the same without epoch (Policy 5.6.12, closes: #363358)
 +      Thanks to Lionel Elie Mamane for the patch
 +  
 + -- Michael Vogt <mvo@debian.org>  Mon,  8 May 2006 22:28:53 +0200
 +
  apt (0.6.43.3) unstable; urgency=low
  
    * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186: