Procházet zdrojové kódy

merged from lp:~pitti/apt/compressed-indexes

Michael Vogt před 15 roky
rodič
revize
0750e90da1
2 změnil soubory, kde provedl 43 přidání a 9 odebrání
  1. 35 9
      apt-pkg/deb/debindexfile.cc
  2. 8 0
      test/test-indexes.sh

+ 35 - 9
apt-pkg/deb/debindexfile.cc

@@ -149,11 +149,20 @@ bool debSourcesIndex::Exists() const
 /* */
 unsigned long debSourcesIndex::Size() const
 {
+   unsigned long size = 0;
+
+   /* we need to ignore errors here; if the lists are absent, just return 0 */
+   _error->PushToStack();
+
    FileFd f = FileFd (IndexFile("Sources"), FileFd::ReadOnlyGzip);
+   if (!f.Failed())
+      size = f.Size();
 
-   if (f.Failed())
-      return 0;
-   return f.Size();
+   if (_error->PendingError() == true)
+       size = 0;
+   _error->RevertToStack();
+
+   return size;
 }
 									/*}}}*/
 
@@ -269,11 +278,20 @@ bool debPackagesIndex::Exists() const
 /* This is really only used for progress reporting. */
 unsigned long debPackagesIndex::Size() const
 {
+   unsigned long size = 0;
+
+   /* we need to ignore errors here; if the lists are absent, just return 0 */
+   _error->PushToStack();
+
    FileFd f = FileFd (IndexFile("Packages"), FileFd::ReadOnlyGzip);
+   if (!f.Failed())
+      size = f.Size();
 
-   if (f.Failed())
-      return 0;
-   return f.Size();
+   if (_error->PendingError() == true)
+       size = 0;
+   _error->RevertToStack();
+
+   return size;
 }
 									/*}}}*/
 // PackagesIndex::Merge - Load the index file into a cache		/*{{{*/
@@ -460,12 +478,20 @@ bool debTranslationsIndex::Exists() const
 /* This is really only used for progress reporting. */
 unsigned long debTranslationsIndex::Size() const
 {
+   unsigned long size = 0;
+
+   /* we need to ignore errors here; if the lists are absent, just return 0 */
+   _error->PushToStack();
+
    FileFd f = FileFd (IndexFile(Language), FileFd::ReadOnlyGzip);
+   if (!f.Failed())
+      size = f.Size();
 
-   if (f.Failed())
-      return 0;
+   if (_error->PendingError() == true)
+       size = 0;
+   _error->RevertToStack();
 
-   return f.Size();
+   return size;
 }
 									/*}}}*/
 // TranslationsIndex::Merge - Load the index file into a cache		/*{{{*/

+ 8 - 0
test/test-indexes.sh

@@ -135,6 +135,14 @@ echo "deb-src $TEST_SOURCE" >> etc/apt/sources.list
 echo "RootDir \"$WORKDIR\";" > apt_config
 export APT_CONFIG=`pwd`/apt_config
 
+echo "==== no indexes ===="
+echo '--- apt-get check works without indexes'
+[ -z `$APT_GET check` ]
+echo '--- apt-cache policy works without indexes'
+$APT_CACHE policy bash >/dev/null
+echo '--- apt-cache show works without indexes'
+! LC_MESSAGES=C $APT_CACHE show bash 2>&1| grep -q 'E: No packages found'
+
 echo "===== uncompressed indexes ====="
 check_update
 check_indexes