Просмотр исходного кода

merged debian-sid branch and resolved conflicts

Michael Vogt лет назад: 13
Родитель
Сommit
3444603f5f
100 измененных файлов с 6930 добавлено и 2041 удалено
  1. 1 2
      apt-inst/extract.cc
  2. 18 12
      apt-pkg/acquire-item.cc
  3. 1 1
      apt-pkg/aptconfiguration.cc
  4. 1 2
      apt-pkg/cachefilter.cc
  5. 2 0
      apt-pkg/cacheiterators.h
  6. 1 1
      apt-pkg/contrib/configuration.cc
  7. 5 5
      apt-pkg/contrib/fileutl.cc
  8. 385 0
      apt-pkg/contrib/gpgv.cc
  9. 82 0
      apt-pkg/contrib/gpgv.h
  10. 3 5
      apt-pkg/contrib/netrc.cc
  11. 1 1
      apt-pkg/contrib/progress.cc
  12. 11 5
      apt-pkg/contrib/strutl.cc
  13. 1 0
      apt-pkg/contrib/strutl.h
  14. 7 1
      apt-pkg/deb/debindexfile.cc
  15. 8 18
      apt-pkg/deb/deblistparser.cc
  16. 25 7
      apt-pkg/deb/debmetaindex.cc
  17. 8 3
      apt-pkg/deb/debversion.cc
  18. 7 10
      apt-pkg/deb/dpkgpm.cc
  19. 41 15
      apt-pkg/depcache.cc
  20. 0 1
      apt-pkg/edsp.cc
  21. 4 120
      apt-pkg/indexcopy.cc
  22. 11 6
      apt-pkg/indexcopy.h
  23. 5 1
      apt-pkg/indexrecords.cc
  24. 6 8
      apt-pkg/makefile
  25. 3 1
      apt-pkg/orderlist.cc
  26. 40 23
      apt-pkg/pkgcache.cc
  27. 113 66
      apt-pkg/pkgcachegen.cc
  28. 8 1
      apt-pkg/pkgcachegen.h
  29. 5 1
      apt-pkg/sourcelist.cc
  30. 5 6
      apt-pkg/srcrecords.cc
  31. 8 1
      apt-pkg/tagfile.cc
  32. 2 2
      apt-pkg/tagfile.h
  33. 1 1
      apt-pkg/vendor.cc
  34. 1 1
      apt-pkg/versionmatch.cc
  35. 3 3
      cmdline/apt-get.cc
  36. 150 4
      debian/changelog
  37. 1 1
      debian/control
  38. 1 1
      doc/apt-verbatim.ent
  39. 12 0
      doc/apt.conf.5.xml
  40. 83 73
      doc/po/de.po
  41. 83 73
      doc/po/es.po
  42. 83 73
      doc/po/fr.po
  43. 1378 1083
      doc/po/it.po
  44. 83 73
      doc/po/ja.po
  45. 83 73
      doc/po/pl.po
  46. 83 73
      doc/po/pt.po
  47. 83 73
      doc/po/pt_BR.po
  48. 46 59
      ftparchive/writer.cc
  49. 11 0
      methods/connect.cc
  50. 2 13
      methods/gpgv.cc
  51. 0 2
      methods/rfc2553emu.cc
  52. 4 0
      po/ar.po
  53. 8 0
      po/ast.po
  54. 8 0
      po/bg.po
  55. 8 1
      po/ca.po
  56. 8 1
      po/cs.po
  57. 8 0
      po/cy.po
  58. 8 0
      po/da.po
  59. 8 0
      po/de.po
  60. 8 0
      po/dz.po
  61. 8 0
      po/el.po
  62. 8 0
      po/es.po
  63. 8 0
      po/eu.po
  64. 8 0
      po/fi.po
  65. 10 3
      po/fr.po
  66. 8 0
      po/gl.po
  67. 8 0
      po/hu.po
  68. 10 0
      po/it.po
  69. 14 6
      po/ja.po
  70. 8 0
      po/km.po
  71. 9 0
      po/ko.po
  72. 4 0
      po/ku.po
  73. 8 0
      po/lt.po
  74. 8 0
      po/mr.po
  75. 8 0
      po/nb.po
  76. 8 0
      po/ne.po
  77. 8 0
      po/nl.po
  78. 8 0
      po/nn.po
  79. 8 0
      po/pl.po
  80. 8 0
      po/pt.po
  81. 8 0
      po/pt_BR.po
  82. 8 0
      po/ro.po
  83. 8 1
      po/ru.po
  84. 8 0
      po/sk.po
  85. 8 0
      po/sl.po
  86. 9 0
      po/sv.po
  87. 8 0
      po/th.po
  88. 8 0
      po/tl.po
  89. 3494 0
      po/tr.po
  90. 9 0
      po/uk.po
  91. 8 0
      po/vi.po
  92. 8 0
      po/zh_CN.po
  93. 8 0
      po/zh_TW.po
  94. 21 4
      test/integration/framework
  95. 2 1
      test/integration/run-tests
  96. 2 0
      test/integration/test-apt-cdrom
  97. 1 1
      test/integration/test-apt-get-download
  98. 11 19
      test/integration/test-bug-595691-empty-and-broken-archive-files
  99. 61 0
      test/integration/test-cve-2013-1051-InRelease-parsing
  100. 0 0
      test/integration/test-releasefile-verification

+ 1 - 2
apt-inst/extract.cc

@@ -81,8 +81,6 @@ pkgExtract::pkgExtract(pkgFLCache &FLCache,pkgCache::VerIterator Ver) :
 /* This performs the setup for the extraction.. */
 bool pkgExtract::DoItem(Item &Itm,int &Fd)
 {
-   char Temp[sizeof(FileName)];
-   
    /* Strip any leading/trailing /s from the filename, then copy it to the
       temp buffer and re-apply the leading / We use a class variable
       to store the new filename for use by the three extraction funcs */
@@ -183,6 +181,7 @@ bool pkgExtract::DoItem(Item &Itm,int &Fd)
       // See if we can recover the backup file
       if (Nde.end() == false)
       {
+	 char Temp[sizeof(FileName)];
 	 snprintf(Temp,sizeof(Temp),"%s.%s",Itm.Name,TempExt);
 	 if (rename(Temp,Itm.Name) != 0 && errno != ENOENT)
 	    return _error->Errno("rename",_("Failed to rename %s to %s"),

+ 18 - 12
apt-pkg/acquire-item.cc

@@ -560,7 +560,7 @@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
    Desc.Owner = this;
    Desc.ShortDesc = ShortDesc;
 
-   if(available_patches.size() == 0) 
+   if(available_patches.empty() == true)
    {
       // we are done (yeah!)
       Finish(true);
@@ -1514,20 +1514,17 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
    if (AuthPass == true)
    {
       // gpgv method failed, if we have a good signature 
-      string LastGoodSigFile = _config->FindDir("Dir::State::lists");
-      if (DestFile == SigFile)
-	 LastGoodSigFile.append(URItoFileName(RealURI));
-      else
-	 LastGoodSigFile.append("partial/").append(URItoFileName(RealURI)).append(".gpg.reverify");
+      string LastGoodSigFile = _config->FindDir("Dir::State::lists").append("partial/").append(URItoFileName(RealURI));
+      if (DestFile != SigFile)
+	 LastGoodSigFile.append(".gpg");
+      LastGoodSigFile.append(".reverify");
 
       if(FileExists(LastGoodSigFile))
       {
+	 string VerifiedSigFile = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
 	 if (DestFile != SigFile)
-	 {
-	    string VerifiedSigFile = _config->FindDir("Dir::State::lists") +
-					URItoFileName(RealURI) + ".gpg";
-	    Rename(LastGoodSigFile,VerifiedSigFile);
-	 }
+	    VerifiedSigFile.append(".gpg");
+	 Rename(LastGoodSigFile, VerifiedSigFile);
 	 Status = StatTransientNetworkError;
 	 _error->Warning(_("A error occurred during the signature "
 			   "verification. The repository is not updated "
@@ -1588,6 +1585,15 @@ pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire *Owner,		/*{{{*/
 	MetaSigURI(MetaSigURI), MetaSigURIDesc(MetaSigURIDesc), MetaSigShortDesc(MetaSigShortDesc)
 {
    SigFile = DestFile;
+
+   // keep the old InRelease around in case of transistent network errors
+   string const Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
+   struct stat Buf;
+   if (stat(Final.c_str(),&Buf) == 0)
+   {
+      string const LastGoodSig = DestFile + ".reverify";
+      Rename(Final,LastGoodSig);
+   }
 }
 									/*}}}*/
 // pkgAcqMetaClearSig::Custom600Headers - Insert custom request headers	/*{{{*/
@@ -1654,7 +1660,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
       assumption here that all the available sources for this version share
       the same extension.. */
    // Skip not source sources, they do not have file fields.
-   for (; Vf.end() == false; Vf++)
+   for (; Vf.end() == false; ++Vf)
    {
       if ((Vf.File()->Flags & pkgCache::Flag::NotSource) != 0)
 	 continue;

+ 1 - 1
apt-pkg/aptconfiguration.cc

@@ -401,8 +401,8 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache
 		close(external[1]);
 
 		FILE *dpkg = fdopen(external[0], "r");
-		char buf[1024];
 		if(dpkg != NULL) {
+			char buf[1024];
 			while (fgets(buf, sizeof(buf), dpkg) != NULL) {
 				char* arch = strtok(buf, " ");
 				while (arch != NULL) {

+ 1 - 2
apt-pkg/cachefilter.cc

@@ -71,8 +71,7 @@ static std::string CompleteArch(std::string const &arch) {
 }
 									/*}}}*/
 PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::string const &pattern, bool const isPattern) :/*{{{*/
-					literal(pattern), isPattern(isPattern), d(NULL) {
-	complete = CompleteArch(pattern);
+					literal(pattern), complete(CompleteArch(pattern)), isPattern(isPattern), d(NULL) {
 }
 									/*}}}*/
 bool PackageArchitectureMatchesSpecification::operator() (char const * const &arch) {/*{{{*/

+ 2 - 0
apt-pkg/cacheiterators.h

@@ -286,6 +286,8 @@ class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> {
 	bool IsIgnorable(PrvIterator const &Prv) const;
 	bool IsIgnorable(PkgIterator const &Pkg) const;
 	bool IsMultiArchImplicit() const;
+	bool IsSatisfied(VerIterator const &Ver) const;
+	bool IsSatisfied(PrvIterator const &Prv) const;
 	void GlobOr(DepIterator &Start,DepIterator &End);
 	Version **AllTargets() const;
 	bool SmartTargetPkg(PkgIterator &Result) const;

+ 1 - 1
apt-pkg/contrib/configuration.cc

@@ -970,7 +970,7 @@ Configuration::MatchAgainstConfig::MatchAgainstConfig(char const * Config)
 	 continue;
       }
    }
-   if (strings.size() == 0)
+   if (strings.empty() == true)
       patterns.push_back(NULL);
 }
 									/*}}}*/

+ 5 - 5
apt-pkg/contrib/fileutl.cc

@@ -389,7 +389,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
 
    std::vector<string> List;
 
-   if (DirectoryExists(Dir.c_str()) == false)
+   if (DirectoryExists(Dir) == false)
    {
       _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str());
       return List;
@@ -415,14 +415,14 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
       if (Ent->d_type != DT_REG)
 #endif
       {
-	 if (RealFileExists(File.c_str()) == false)
+	 if (RealFileExists(File) == false)
 	 {
 	    // do not show ignoration warnings for directories
 	    if (
 #ifdef _DIRENT_HAVE_D_TYPE
 		Ent->d_type == DT_DIR ||
 #endif
-		DirectoryExists(File.c_str()) == true)
+		DirectoryExists(File) == true)
 	       continue;
 	    if (SilentIgnore.Match(Ent->d_name) == false)
 	       _error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str());
@@ -503,7 +503,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, bool SortList)
 
    std::vector<string> List;
 
-   if (DirectoryExists(Dir.c_str()) == false)
+   if (DirectoryExists(Dir) == false)
    {
       _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str());
       return List;
@@ -528,7 +528,7 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, bool SortList)
       if (Ent->d_type != DT_REG)
 #endif
       {
-	 if (RealFileExists(File.c_str()) == false)
+	 if (RealFileExists(File) == false)
 	 {
 	    if (Debug == true)
 	       std::clog << "Bad file: " << Ent->d_name << " → it is not a real file" << std::endl;

+ 385 - 0
apt-pkg/contrib/gpgv.cc

@@ -0,0 +1,385 @@
+// -*- mode: cpp; mode: fold -*-
+// Include Files							/*{{{*/
+#include<config.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include<apt-pkg/configuration.h>
+#include<apt-pkg/error.h>
+#include<apt-pkg/strutl.h>
+#include<apt-pkg/fileutl.h>
+#include<apt-pkg/gpgv.h>
+
+#include <apti18n.h>
+									/*}}}*/
+static char * GenerateTemporaryFileTemplate(const char *basename)	/*{{{*/
+{
+   const char *tmpdir = getenv("TMPDIR");
+#ifdef P_tmpdir
+   if (!tmpdir)
+      tmpdir = P_tmpdir;
+#endif
+   if (!tmpdir)
+      tmpdir = "/tmp";
+
+   std::string out;
+   strprintf(out,  "%s/%s.XXXXXX", tmpdir, basename);
+   return strdup(out.c_str());
+}
+									/*}}}*/
+// ExecGPGV - returns the command needed for verify			/*{{{*/
+// ---------------------------------------------------------------------
+/* Generating the commandline for calling gpgv is somehow complicated as
+   we need to add multiple keyrings and user supplied options.
+   Also, as gpgv has no options to enforce a certain reduced style of
+   clear-signed files (=the complete content of the file is signed and
+   the content isn't encoded) we do a divide and conquer approach here
+   and split up the clear-signed file in message and signature for gpgv
+*/
+void ExecGPGV(std::string const &File, std::string const &FileGPG,
+             int const &statusfd, int fd[2])
+{
+   #define EINTERNAL 111
+   std::string const gpgvpath = _config->Find("Dir::Bin::gpg", "/usr/bin/gpgv");
+   // FIXME: remove support for deprecated APT::GPGV setting
+   std::string const trustedFile = _config->Find("APT::GPGV::TrustedKeyring", _config->FindFile("Dir::Etc::Trusted"));
+   std::string const trustedPath = _config->FindDir("Dir::Etc::TrustedParts");
+
+   bool const Debug = _config->FindB("Debug::Acquire::gpgv", false);
+
+   if (Debug == true)
+   {
+      std::clog << "gpgv path: " << gpgvpath << std::endl;
+      std::clog << "Keyring file: " << trustedFile << std::endl;
+      std::clog << "Keyring path: " << trustedPath << std::endl;
+   }
+
+   std::vector<std::string> keyrings;
+   if (DirectoryExists(trustedPath))
+     keyrings = GetListOfFilesInDir(trustedPath, "gpg", false, true);
+   if (RealFileExists(trustedFile) == true)
+     keyrings.push_back(trustedFile);
+
+   std::vector<const char *> Args;
+   Args.reserve(30);
+
+   if (keyrings.empty() == true)
+   {
+      // TRANSLATOR: %s is the trusted keyring parts directory
+      ioprintf(std::cerr, _("No keyring installed in %s."),
+	    _config->FindDir("Dir::Etc::TrustedParts").c_str());
+      exit(EINTERNAL);
+   }
+
+   Args.push_back(gpgvpath.c_str());
+   Args.push_back("--ignore-time-conflict");
+
+   char statusfdstr[10];
+   if (statusfd != -1)
+   {
+      Args.push_back("--status-fd");
+      snprintf(statusfdstr, sizeof(statusfdstr), "%i", statusfd);
+      Args.push_back(statusfdstr);
+   }
+
+   for (std::vector<std::string>::const_iterator K = keyrings.begin();
+	K != keyrings.end(); ++K)
+   {
+      Args.push_back("--keyring");
+      Args.push_back(K->c_str());
+   }
+
+   Configuration::Item const *Opts;
+   Opts = _config->Tree("Acquire::gpgv::Options");
+   if (Opts != 0)
+   {
+      Opts = Opts->Child;
+      for (; Opts != 0; Opts = Opts->Next)
+      {
+	 if (Opts->Value.empty() == true)
+	    continue;
+	 Args.push_back(Opts->Value.c_str());
+      }
+   }
+
+   std::vector<std::string> dataHeader;
+   char * sig = NULL;
+   char * data = NULL;
+
+   // file with detached signature
+   if (FileGPG != File)
+   {
+      Args.push_back(FileGPG.c_str());
+      Args.push_back(File.c_str());
+   }
+   else // clear-signed file
+   {
+      sig = GenerateTemporaryFileTemplate("apt.sig");
+      data = GenerateTemporaryFileTemplate("apt.data");
+      if (sig == NULL || data == NULL)
+      {
+	 ioprintf(std::cerr, "Couldn't create tempfile names for splitting up %s", File.c_str());
+	 exit(EINTERNAL);
+      }
+
+      int const sigFd = mkstemp(sig);
+      int const dataFd = mkstemp(data);
+      if (sigFd == -1 || dataFd == -1)
+      {
+	 if (dataFd != -1)
+	    unlink(sig);
+	 if (sigFd != -1)
+	    unlink(data);
+	 ioprintf(std::cerr, "Couldn't create tempfiles for splitting up %s", File.c_str());
+	 exit(EINTERNAL);
+      }
+
+      FileFd signature;
+      signature.OpenDescriptor(sigFd, FileFd::WriteOnly, true);
+      FileFd message;
+      message.OpenDescriptor(dataFd, FileFd::WriteOnly, true);
+
+      if (signature.Failed() == true || message.Failed() == true ||
+	    SplitClearSignedFile(File, &message, &dataHeader, &signature) == false)
+      {
+	 if (dataFd != -1)
+	    unlink(sig);
+	 if (sigFd != -1)
+	    unlink(data);
+	 ioprintf(std::cerr, "Splitting up %s into data and signature failed", File.c_str());
+	 exit(EINTERNAL);
+      }
+      Args.push_back(sig);
+      Args.push_back(data);
+   }
+
+   Args.push_back(NULL);
+
+   if (Debug == true)
+   {
+      std::clog << "Preparing to exec: " << gpgvpath;
+      for (std::vector<const char *>::const_iterator a = Args.begin(); *a != NULL; ++a)
+	 std::clog << " " << *a;
+      std::clog << std::endl;
+   }
+
+   if (statusfd != -1)
+   {
+      int const nullfd = open("/dev/null", O_RDONLY);
+      close(fd[0]);
+      // Redirect output to /dev/null; we read from the status fd
+      if (statusfd != STDOUT_FILENO)
+	 dup2(nullfd, STDOUT_FILENO);
+      if (statusfd != STDERR_FILENO)
+	 dup2(nullfd, STDERR_FILENO);
+      // Redirect the pipe to the status fd (3)
+      dup2(fd[1], statusfd);
+
+      putenv((char *)"LANG=");
+      putenv((char *)"LC_ALL=");
+      putenv((char *)"LC_MESSAGES=");
+   }
+
+   if (FileGPG != File)
+   {
+      execvp(gpgvpath.c_str(), (char **) &Args[0]);
+      ioprintf(std::cerr, "Couldn't execute %s to check %s", Args[0], File.c_str());
+      exit(EINTERNAL);
+   }
+   else
+   {
+//#define UNLINK_EXIT(X) exit(X)
+#define UNLINK_EXIT(X) unlink(sig);unlink(data);exit(X)
+
+      // for clear-signed files we have created tempfiles we have to clean up
+      // and we do an additional check, so fork yet another time …
+      pid_t pid = ExecFork();
+      if(pid < 0) {
+	 ioprintf(std::cerr, "Fork failed for %s to check %s", Args[0], File.c_str());
+	 UNLINK_EXIT(EINTERNAL);
+      }
+      if(pid == 0)
+      {
+	 if (statusfd != -1)
+	    dup2(fd[1], statusfd);
+	 execvp(gpgvpath.c_str(), (char **) &Args[0]);
+	 ioprintf(std::cerr, "Couldn't execute %s to check %s", Args[0], File.c_str());
+	 UNLINK_EXIT(EINTERNAL);
+      }
+
+      // Wait and collect the error code - taken from WaitPid as we need the exact Status
+      int Status;
+      while (waitpid(pid,&Status,0) != pid)
+      {
+	 if (errno == EINTR)
+	    continue;
+	 ioprintf(std::cerr, _("Waited for %s but it wasn't there"), "gpgv");
+	 UNLINK_EXIT(EINTERNAL);
+      }
+#undef UNLINK_EXIT
+      // we don't need the files any longer
+      unlink(sig);
+      unlink(data);
+      free(sig);
+      free(data);
+
+      // check if it exit'ed normally …
+      if (WIFEXITED(Status) == false)
+      {
+	 ioprintf(std::cerr, _("Sub-process %s exited unexpectedly"), "gpgv");
+	 exit(EINTERNAL);
+      }
+
+      // … and with a good exit code
+      if (WEXITSTATUS(Status) != 0)
+      {
+	 ioprintf(std::cerr, _("Sub-process %s returned an error code (%u)"), "gpgv", WEXITSTATUS(Status));
+	 exit(WEXITSTATUS(Status));
+      }
+
+      // everything fine
+      exit(0);
+   }
+   exit(EINTERNAL); // unreachable safe-guard
+}
+									/*}}}*/
+// SplitClearSignedFile - split message into data/signature		/*{{{*/
+bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile,
+      std::vector<std::string> * const ContentHeader, FileFd * const SignatureFile)
+{
+   FILE *in = fopen(InFile.c_str(), "r");
+   if (in == NULL)
+      return _error->Errno("fopen", "can not open %s", InFile.c_str());
+
+   bool found_message_start = false;
+   bool found_message_end = false;
+   bool skip_until_empty_line = false;
+   bool found_signature = false;
+   bool first_line = true;
+
+   char *buf = NULL;
+   size_t buf_size = 0;
+   ssize_t line_len = 0;
+   while ((line_len = getline(&buf, &buf_size, in)) != -1)
+   {
+      _strrstrip(buf);
+      if (found_message_start == false)
+      {
+	 if (strcmp(buf, "-----BEGIN PGP SIGNED MESSAGE-----") == 0)
+	 {
+	    found_message_start = true;
+	    skip_until_empty_line = true;
+	 }
+      }
+      else if (skip_until_empty_line == true)
+      {
+	 if (strlen(buf) == 0)
+	    skip_until_empty_line = false;
+	 // save "Hash" Armor Headers, others aren't allowed
+	 else if (ContentHeader != NULL && strncmp(buf, "Hash: ", strlen("Hash: ")) == 0)
+	    ContentHeader->push_back(buf);
+      }
+      else if (found_signature == false)
+      {
+	 if (strcmp(buf, "-----BEGIN PGP SIGNATURE-----") == 0)
+	 {
+	    found_signature = true;
+	    found_message_end = true;
+	    if (SignatureFile != NULL)
+	    {
+	       SignatureFile->Write(buf, strlen(buf));
+	       SignatureFile->Write("\n", 1);
+	    }
+	 }
+	 else if (found_message_end == false) // we are in the message block
+	 {
+	    // we don't have any fields which need dash-escaped,
+	    // but implementations are free to encode all lines …
+	    char const * dashfree = buf;
+	    if (strncmp(dashfree, "- ", 2) == 0)
+	       dashfree += 2;
+	    if(first_line == true) // first line does not need a newline
+	       first_line = false;
+	    else if (ContentFile != NULL)
+	       ContentFile->Write("\n", 1);
+	    else
+	       continue;
+	    if (ContentFile != NULL)
+	       ContentFile->Write(dashfree, strlen(dashfree));
+	 }
+      }
+      else if (found_signature == true)
+      {
+	 if (SignatureFile != NULL)
+	 {
+	    SignatureFile->Write(buf, strlen(buf));
+	    SignatureFile->Write("\n", 1);
+	 }
+	 if (strcmp(buf, "-----END PGP SIGNATURE-----") == 0)
+	    found_signature = false; // look for other signatures
+      }
+      // all the rest is whitespace, unsigned garbage or additional message blocks we ignore
+   }
+   fclose(in);
+
+   if (found_signature == true)
+      return _error->Error("Signature in file %s wasn't closed", InFile.c_str());
+
+   // if we haven't found any of them, this an unsigned file,
+   // so don't generate an error, but splitting was unsuccessful none-the-less
+   if (first_line == true && found_message_start == false && found_message_end == false)
+      return false;
+   // otherwise one missing indicates a syntax error
+   else if (first_line == true || found_message_start == false || found_message_end == false)
+     return _error->Error("Splitting of file %s failed as it doesn't contain all expected parts %i %i %i", InFile.c_str(), first_line, found_message_start, found_message_end);
+
+   return true;
+}
+									/*}}}*/
+bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile) /*{{{*/
+{
+   char * const message = GenerateTemporaryFileTemplate("fileutl.message");
+   int const messageFd = mkstemp(message);
+   if (messageFd == -1)
+   {
+      free(message);
+      return _error->Errno("mkstemp", "Couldn't create temporary file to work with %s", ClearSignedFileName.c_str());
+   }
+   // we have the fd, thats enough for us
+   unlink(message);
+   free(message);
+
+   MessageFile.OpenDescriptor(messageFd, FileFd::ReadWrite, true);
+   if (MessageFile.Failed() == true)
+      return _error->Error("Couldn't open temporary file to work with %s", ClearSignedFileName.c_str());
+
+   _error->PushToStack();
+   bool const splitDone = SplitClearSignedFile(ClearSignedFileName.c_str(), &MessageFile, NULL, NULL);
+   bool const errorDone = _error->PendingError();
+   _error->MergeWithStack();
+   if (splitDone == false)
+   {
+      MessageFile.Close();
+
+      if (errorDone == true)
+	 return false;
+
+      // we deal with an unsigned file
+      MessageFile.Open(ClearSignedFileName, FileFd::ReadOnly);
+   }
+   else // clear-signed
+   {
+      if (MessageFile.Seek(0) == false)
+	 return _error->Errno("lseek", "Unable to seek back in message for file %s", ClearSignedFileName.c_str());
+   }
+
+   return MessageFile.Failed() == false;
+}
+									/*}}}*/

+ 82 - 0
apt-pkg/contrib/gpgv.h

@@ -0,0 +1,82 @@
+// -*- mode: cpp; mode: fold -*-
+// Description								/*{{{*/
+/* ######################################################################
+
+   Helpers to deal with gpgv better and more easily
+
+   ##################################################################### */
+									/*}}}*/
+#ifndef CONTRIB_GPGV_H
+#define CONTRIB_GPGV_H
+
+#include <string>
+#include <vector>
+
+#include <apt-pkg/fileutl.h>
+
+#if __GNUC__ >= 4
+	#define APT_noreturn	__attribute__ ((noreturn))
+#else
+	#define APT_noreturn	/* no support */
+#endif
+
+/** \brief generates and run the command to verify a file with gpgv
+ *
+ * If File and FileSig specify the same file it is assumed that we
+ * deal with a clear-signed message. In that case the file will be
+ * rewritten to be in a good-known format without uneeded whitespaces
+ * and additional messages (unsigned or signed).
+ *
+ * @param File is the message (unsigned or clear-signed)
+ * @param FileSig is the signature (detached or clear-signed)
+ */
+void ExecGPGV(std::string const &File, std::string const &FileSig,
+      int const &statusfd, int fd[2]) APT_noreturn;
+inline void ExecGPGV(std::string const &File, std::string const &FileSig,
+      int const &statusfd = -1) {
+   int fd[2];
+   ExecGPGV(File, FileSig, statusfd, fd);
+};
+
+#undef APT_noreturn
+
+/** \brief Split an inline signature into message and signature
+ *
+ *  Takes a clear-signed message and puts the first signed message
+ *  in the content file and all signatures following it into the
+ *  second. Unsigned messages, additional messages as well as
+ *  whitespaces are discarded. The resulting files are suitable to
+ *  be checked with gpgv.
+ *
+ *  If a FileFd pointers is NULL it will not be used and the content
+ *  which would have been written to it is silently discarded.
+ *
+ *  The content of the split files is undefined if the splitting was
+ *  unsuccessful.
+ *
+ *  Note that trying to split an unsigned file will fail, but
+ *  not generate an error message.
+ *
+ *  @param InFile is the clear-signed file
+ *  @param ContentFile is the FileFd the message will be written to
+ *  @param ContentHeader is a list of all required Amored Headers for the message
+ *  @param SignatureFile is the FileFd all signatures will be written to
+ *  @return true if the splitting was successful, false otherwise
+ */
+bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile,
+      std::vector<std::string> * const ContentHeader, FileFd * const SignatureFile);
+
+/** \brief open a file which might be clear-signed
+ *
+ * This method tries to extract the (signed) message of a file.
+ * If the file isn't signed it will just open the given filename.
+ * Otherwise the message is extracted to a temporary file which
+ * will be opened instead.
+ *
+ * @param ClearSignedFileName is the name of the file to open
+ * @param[out] MessageFile is the FileFd in which the file will be opened
+ * @return true if opening was successful, otherwise false
+ */
+bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile);
+
+#endif

+ 3 - 5
apt-pkg/contrib/netrc.cc

@@ -50,14 +50,10 @@ static int parsenetrc_string (char *host, std::string &login, std::string &passw
   FILE *file;
   int retcode = 1;
   int specific_login = (login.empty() == false);
-  char *home = NULL;
   bool netrc_alloc = false;
 
-  int state_our_login = false;  /* With specific_login,
-                                   found *our* login name */
-
   if (!netrcfile) {
-    home = getenv ("HOME"); /* portable environment reader */
+    char const * home = getenv ("HOME"); /* portable environment reader */
 
     if (!home) {
       struct passwd *pw;
@@ -86,6 +82,8 @@ static int parsenetrc_string (char *host, std::string &login, std::string &passw
     int state = NOTHING;
     char state_login = 0;        /* Found a login keyword */
     char state_password = 0;     /* Found a password keyword */
+    int state_our_login = false;  /* With specific_login,
+				     found *our* login name */
 
     while (!done && getline(&netrcbuffer, &netrcbuffer_size, file) != -1) {
       tok = strtok_r (netrcbuffer, " \t\n", &tok_buf);

+ 1 - 1
apt-pkg/contrib/progress.cc

@@ -192,7 +192,7 @@ void OpTextProgress::Update()
    }
    
    // Print the spinner
-   snprintf(S,sizeof(S),_("\r%s... %u%%"),Op.c_str(),(unsigned int)Percent);
+   snprintf(S,sizeof(S),_("%c%s... %u%%"),'\r',Op.c_str(),(unsigned int)Percent);
    Write(S);
 
    OldOp = Op;

+ 11 - 5
apt-pkg/contrib/strutl.cc

@@ -117,7 +117,13 @@ char *_strstrip(char *String)
 
    if (*String == 0)
       return String;
-
+   return _strrstrip(String);
+}
+									/*}}}*/
+// strrstrip - Remove white space from the back of a string	/*{{{*/
+// ---------------------------------------------------------------------
+char *_strrstrip(char *String)
+{
    char *End = String + strlen(String) - 1;
    for (;End != String - 1 && (*End == ' ' || *End == '\t' || *End == '\n' ||
 			       *End == '\r'); End--);
@@ -1247,7 +1253,7 @@ string StripEpoch(const string &VerStr)
       return VerStr;
    return VerStr.substr(i+1);
 }
-
+									/*}}}*/
 // tolower_ascii - tolower() function that ignores the locale		/*{{{*/
 // ---------------------------------------------------------------------
 /* This little function is the most called method we have and tries
@@ -1285,14 +1291,14 @@ bool CheckDomainList(const string &Host,const string &List)
    return false;
 }
 									/*}}}*/
-// DeEscapeString - unescape (\0XX and \xXX) from a string      	/*{{{*/
+// DeEscapeString - unescape (\0XX and \xXX) from a string		/*{{{*/
 // ---------------------------------------------------------------------
 /* */
 string DeEscapeString(const string &input)
 {
    char tmp[3];
-   string::const_iterator it, escape_start;
-   string output, octal, hex;
+   string::const_iterator it;
+   string output;
    for (it = input.begin(); it != input.end(); ++it)
    {
       // just copy non-escape chars

+ 1 - 0
apt-pkg/contrib/strutl.h

@@ -35,6 +35,7 @@ using std::ostream;
 
 bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest);
 char *_strstrip(char *String);
+char *_strrstrip(char *String); // right strip only
 char *_strtabexpand(char *String,size_t Len);
 bool ParseQuoteWord(const char *&String,std::string &Res);
 bool ParseCWord(const char *&String,std::string &Res);

+ 7 - 1
apt-pkg/deb/debindexfile.cc

@@ -22,6 +22,7 @@
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/acquire-item.h>
 #include <apt-pkg/debmetaindex.h>
+#include <apt-pkg/gpgv.h>
 
 #include <sys/stat.h>
 									/*}}}*/
@@ -337,7 +338,12 @@ bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const
 
    if (releaseExists == true || FileExists(ReleaseFile) == true)
    {
-      FileFd Rel(ReleaseFile,FileFd::ReadOnly);
+      FileFd Rel;
+      // Beware: The 'Release' file might be clearsigned in case the
+      // signature for an 'InRelease' file couldn't be checked
+      if (OpenMaybeClearSignedFile(ReleaseFile, Rel) == false)
+	 return false;
+
       if (_error->PendingError() == true)
 	 return false;
       Parser.LoadReleaseInfo(File,Rel,Section);

+ 8 - 18
apt-pkg/deb/deblistparser.cc

@@ -284,7 +284,7 @@ unsigned short debListParser::VersionHash()
                             "Replaces",0};
    unsigned long Result = INIT_FCS;
    char S[1024];
-   for (const char **I = Sections; *I != 0; I++)
+   for (const char * const *I = Sections; *I != 0; ++I)
    {
       const char *Start;
       const char *End;
@@ -295,13 +295,13 @@ unsigned short debListParser::VersionHash()
          of certain fields. dpkg also has the rather interesting notion of
          reformatting depends operators < -> <= */
       char *J = S;
-      for (; Start != End; Start++)
+      for (; Start != End; ++Start)
       {
-	 if (isspace(*Start) == 0)
-	    *J++ = tolower_ascii(*Start);
-	 if (*Start == '<' && Start[1] != '<' && Start[1] != '=')
-	    *J++ = '=';
-	 if (*Start == '>' && Start[1] != '>' && Start[1] != '=')
+	 if (isspace(*Start) != 0)
+	    continue;
+	 *J++ = tolower_ascii(*Start);
+
+	 if ((*Start == '<' || *Start == '>') && Start[1] != *Start && Start[1] != '=')
 	    *J++ = '=';
       }
 
@@ -801,13 +801,12 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,
    map_ptrloc const storage = WriteUniqString(component);
    FileI->Component = storage;
 
-   // FIXME: Code depends on the fact that Release files aren't compressed
+   // FIXME: should use FileFd and TagSection
    FILE* release = fdopen(dup(File.Fd()), "r");
    if (release == NULL)
       return false;
 
    char buffer[101];
-   bool gpgClose = false;
    while (fgets(buffer, sizeof(buffer), release) != NULL)
    {
       size_t len = 0;
@@ -819,15 +818,6 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,
       if (buffer[len] == '\0')
 	 continue;
 
-      // only evalute the first GPG section
-      if (strncmp("-----", buffer, 5) == 0)
-      {
-	 if (gpgClose == true)
-	    break;
-	 gpgClose = true;
-	 continue;
-      }
-
       // seperate the tag from the data
       const char* dataStart = strchr(buffer + len, ':');
       if (dataStart == NULL)

+ 25 - 7
apt-pkg/deb/debmetaindex.cc

@@ -229,6 +229,8 @@ vector <struct IndexTarget *>* debReleaseIndex::ComputeIndexTargets() const {
 									/*}}}*/
 bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const
 {
+   bool const tryInRelease = _config->FindB("Acquire::TryInRelease", true);
+
    // special case for --print-uris
    if (GetAll) {
       vector <struct IndexTarget *> *targets = ComputeIndexTargets();
@@ -236,16 +238,32 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const
 	 new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
 			 (*Target)->ShortDesc, HashString());
       }
+
+      // this is normally created in pkgAcqMetaSig, but if we run
+      // in --print-uris mode, we add it here
+      if (tryInRelease == false)
+	 new pkgAcqMetaIndex(Owner, MetaIndexURI("Release"),
+	       MetaIndexInfo("Release"), "Release",
+	       MetaIndexURI("Release.gpg"),
+	       ComputeIndexTargets(),
+	       new indexRecords (Dist));
    }
 
-	new pkgAcqMetaClearSig(Owner, MetaIndexURI("InRelease"),
-		MetaIndexInfo("InRelease"), "InRelease",
-		MetaIndexURI("Release"), MetaIndexInfo("Release"), "Release",
-		MetaIndexURI("Release.gpg"), MetaIndexInfo("Release.gpg"), "Release.gpg",
-		ComputeIndexTargets(),
-		new indexRecords (Dist));
+   if (tryInRelease == true)
+      new pkgAcqMetaClearSig(Owner, MetaIndexURI("InRelease"),
+	    MetaIndexInfo("InRelease"), "InRelease",
+	    MetaIndexURI("Release"), MetaIndexInfo("Release"), "Release",
+	    MetaIndexURI("Release.gpg"), MetaIndexInfo("Release.gpg"), "Release.gpg",
+	    ComputeIndexTargets(),
+	    new indexRecords (Dist));
+   else
+      new pkgAcqMetaSig(Owner, MetaIndexURI("Release.gpg"),
+	    MetaIndexInfo("Release.gpg"), "Release.gpg",
+	    MetaIndexURI("Release"), MetaIndexInfo("Release"), "Release",
+	    ComputeIndexTargets(),
+	    new indexRecords (Dist));
 
-	return true;
+   return true;
 }
 
 void debReleaseIndex::SetTrusted(bool const Trusted)

+ 8 - 3
apt-pkg/deb/debversion.cc

@@ -215,10 +215,15 @@ bool debVersioningSystem::CheckDep(const char *PkgVer,
       return true;
    if (PkgVer == 0 || PkgVer[0] == 0)
       return false;
-   
+   Op &= 0x0F;
+
+   // fast track for (equal) strings [by location] which are by definition equal versions
+   if (PkgVer == DepVer)
+      return Op == pkgCache::Dep::Equals || Op == pkgCache::Dep::LessEq || Op == pkgCache::Dep::GreaterEq;
+
    // Perform the actual comparision.
-   int Res = CmpVersion(PkgVer,DepVer);
-   switch (Op & 0x0F)
+   int const Res = CmpVersion(PkgVer, DepVer);
+   switch (Op)
    {
       case pkgCache::Dep::LessEq:
       if (Res <= 0)

+ 7 - 10
apt-pkg/deb/dpkgpm.cc

@@ -147,11 +147,11 @@ static
 pkgCache::VerIterator FindNowVersion(const pkgCache::PkgIterator &Pkg)
 {
    pkgCache::VerIterator Ver;
-   for (Ver = Pkg.VersionList(); Ver.end() == false; Ver++)
+   for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
    {
       pkgCache::VerFileIterator Vf = Ver.FileList();
       pkgCache::PkgFileIterator F = Vf.File();
-      for (F = Vf.File(); F.end() == false; F++)
+      for (F = Vf.File(); F.end() == false; ++F)
       {
          if (F && F.Archive())
          {
@@ -1590,12 +1590,12 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    if (!logfile_name.empty())
    {
       FILE *log = NULL;
-      char buf[1024];
 
       fprintf(report, "DpkgTerminalLog:\n");
       log = fopen(logfile_name.c_str(),"r");
       if(log != NULL)
       {
+	 char buf[1024];
 	 while( fgets(buf, sizeof(buf), log) != NULL)
 	    fprintf(report, " %s", buf);
 	 fclose(log);
@@ -1614,13 +1614,11 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    // attach dmesg log (to learn about segfaults)
    if (FileExists("/bin/dmesg"))
    {
-      FILE *log = NULL;
-      char buf[1024];
-
       fprintf(report, "Dmesg:\n");
-      log = popen("/bin/dmesg","r");
+      FILE *log = popen("/bin/dmesg","r");
       if(log != NULL)
       {
+	 char buf[1024];
 	 while( fgets(buf, sizeof(buf), log) != NULL)
 	    fprintf(report, " %s", buf);
 	 pclose(log);
@@ -1630,13 +1628,12 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg)
    // attach df -l log (to learn about filesystem status)
    if (FileExists("/bin/df"))
    {
-      FILE *log = NULL;
-      char buf[1024];
 
       fprintf(report, "Df:\n");
-      log = popen("/bin/df -l","r");
+      FILE *log = popen("/bin/df -l","r");
       if(log != NULL)
       {
+	 char buf[1024];
 	 while( fgets(buf, sizeof(buf), log) != NULL)
 	    fprintf(report, " %s", buf);
 	 pclose(log);

+ 41 - 15
apt-pkg/depcache.cc

@@ -351,18 +351,15 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res)
       PkgIterator Pkg = Dep.TargetPkg();
       // Check the base package
       if (Type == NowVersion && Pkg->CurrentVer != 0)
-	 if (VS().CheckDep(Pkg.CurrentVer().VerStr(),Dep->CompareOp,
-				 Dep.TargetVer()) == true)
+	 if (Dep.IsSatisfied(Pkg.CurrentVer()) == true)
 	    return true;
       
       if (Type == InstallVersion && PkgState[Pkg->ID].InstallVer != 0)
-	 if (VS().CheckDep(PkgState[Pkg->ID].InstVerIter(*this).VerStr(),
-				 Dep->CompareOp,Dep.TargetVer()) == true)
+	 if (Dep.IsSatisfied(PkgState[Pkg->ID].InstVerIter(*this)) == true)
 	    return true;
       
       if (Type == CandidateVersion && PkgState[Pkg->ID].CandidateVer != 0)
-	 if (VS().CheckDep(PkgState[Pkg->ID].CandidateVerIter(*this).VerStr(),
-				 Dep->CompareOp,Dep.TargetVer()) == true)
+	 if (Dep.IsSatisfied(PkgState[Pkg->ID].CandidateVerIter(*this)) == true)
 	    return true;
    }
    
@@ -398,7 +395,7 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res)
       }
       
       // Compare the versions.
-      if (VS().CheckDep(P.ProvideVersion(),Dep->CompareOp,Dep.TargetVer()) == true)
+      if (Dep.IsSatisfied(P) == true)
       {
 	 Res = P.OwnerPkg();
 	 return true;
@@ -951,6 +948,37 @@ struct CompareProviders {
    {
       pkgCache::PkgIterator const A = AV.ParentPkg();
       pkgCache::PkgIterator const B = BV.ParentPkg();
+      // Prefer MA:same packages if other architectures for it are installed
+      if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same ||
+	  (BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+      {
+	 bool instA = false;
+	 if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+	 {
+	    pkgCache::GrpIterator Grp = A.Group();
+	    for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+	       if (P->CurrentVer != 0)
+	       {
+		  instA = true;
+		  break;
+	       }
+	 }
+	 bool instB = false;
+	 if ((BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same)
+	 {
+	    pkgCache::GrpIterator Grp = B.Group();
+	    for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+	    {
+	       if (P->CurrentVer != 0)
+	       {
+		  instB = true;
+		  break;
+	       }
+	    }
+	 }
+	 if (instA != instB)
+	    return instA == false;
+      }
       // Prefer packages in the same group as the target; e.g. foo:i386, foo:amd64
       if (A->Group != B->Group)
       {
@@ -1161,14 +1189,13 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
       {
 	 APT::VersionList verlist;
 	 pkgCache::VerIterator Cand = PkgState[Start.TargetPkg()->ID].CandidateVerIter(*this);
-	 if (Cand.end() == false && VS().CheckDep(Cand.VerStr(), Start->CompareOp, Start.TargetVer()) == true)
+	 if (Cand.end() == false && Start.IsSatisfied(Cand) == true)
 	    verlist.insert(Cand);
 	 for (PrvIterator Prv = Start.TargetPkg().ProvidesList(); Prv.end() != true; ++Prv)
 	 {
 	    pkgCache::VerIterator V = Prv.OwnerVer();
 	    pkgCache::VerIterator Cand = PkgState[Prv.OwnerPkg()->ID].CandidateVerIter(*this);
-	    if (Cand.end() == true || V != Cand ||
-		VS().CheckDep(Prv.ProvideVersion(), Start->CompareOp, Start.TargetVer()) == false)
+	    if (Cand.end() == true || V != Cand || Start.IsSatisfied(Prv) == false)
 	       continue;
 	    verlist.insert(Cand);
 	 }
@@ -1376,7 +1403,7 @@ bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer,
 	 if (Cand.end() == true)
 	    continue;
 	 // check if the current candidate is enough for the versioned dependency - and installable?
-	 if (VS().CheckDep(P.CandVersion(), Start->CompareOp, Start.TargetVer()) == true &&
+	 if (Start.IsSatisfied(Cand) == true &&
 	     (VersionState(Cand.DependsList(), DepInstall, DepCandMin, DepCandPolicy) & DepCandMin) == DepCandMin)
 	 {
 	    itsFine = true;
@@ -1410,7 +1437,7 @@ bool pkgDepCache::SetCandidateRelease(pkgCache::VerIterator TargetVer,
 	    V = Match.Find(D.TargetPkg());
 
 	 // check if the version from this release could satisfy the dependency
-	 if (V.end() == true || VS().CheckDep(V.VerStr(), D->CompareOp, D.TargetVer()) == false)
+	 if (V.end() == true || D.IsSatisfied(V) == false)
 	 {
 	    if (stillOr == true)
 	       continue;
@@ -1740,7 +1767,7 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 	   for(VerIterator V = d.TargetPkg().VersionList(); 
 	       !V.end(); ++V)
 	   {
-	      if(_system->VS->CheckDep(V.VerStr(), d->CompareOp, d.TargetVer()))
+	      if(d.IsSatisfied(V))
 	      {
 		if(debug_autoremove)
 		  {
@@ -1762,8 +1789,7 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
 	   for(PrvIterator prv=d.TargetPkg().ProvidesList(); 
 	       !prv.end(); ++prv)
 	   {
-	      if(_system->VS->CheckDep(prv.ProvideVersion(), d->CompareOp, 
-				       d.TargetVer()))
+	      if(d.IsSatisfied(prv))
 	      {
 		if(debug_autoremove)
 		  {

+ 0 - 1
apt-pkg/edsp.cc

@@ -475,7 +475,6 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output)
 	 fprintf(output, "Autoremove: %d\n", Pkg.CurrentVer()->ID);
 	 if (Debug == true)
 	    fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr());
-	    fprintf(stderr, "Autoremove: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr());
       }
       else
 	 continue;

+ 4 - 120
apt-pkg/indexcopy.cc

@@ -141,7 +141,6 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List,
 	    File = OrigPath + ChopDirs(File,Chop);
 	 
 	 // See if the file exists
-	 bool Mangled = false;
 	 if (NoStat == false || Hits < 10)
 	 {
 	    // Attempt to fix broken structure
@@ -164,6 +163,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List,
 	    if (stat(string(CDROM + Prefix + File).c_str(),&Buf) != 0 || 
 		Buf.st_size == 0)
 	    {
+	       bool Mangled = false;
 	       // Attempt to fix busted symlink support for one instance
 	       string OrigFile = File;
 	       string::size_type Start = File.find("binary-");
@@ -593,9 +593,9 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
       if(pid == 0)
       {
 	 if (useInRelease == true)
-	    RunGPGV(inrelease, inrelease);
+	    ExecGPGV(inrelease, inrelease);
 	 else
-	    RunGPGV(release, releasegpg);
+	    ExecGPGV(release, releasegpg);
       }
 
       if(!ExecWait(pid, "gpgv")) {
@@ -639,120 +639,6 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
       }
    }   
 
-   return true;
-}
-									/*}}}*/
-// SigVerify::RunGPGV - returns the command needed for verify		/*{{{*/
-// ---------------------------------------------------------------------
-/* Generating the commandline for calling gpgv is somehow complicated as
-   we need to add multiple keyrings and user supplied options. Also, as
-   the cdrom code currently can not use the gpgv method we have two places
-   these need to be done - so the place for this method is wrong but better
-   than code duplication… */
-bool SigVerify::RunGPGV(std::string const &File, std::string const &FileGPG,
-			int const &statusfd, int fd[2])
-{
-   if (File == FileGPG)
-   {
-      FILE* gpg = fopen(File.c_str(), "r");
-      if (gpg == NULL)
-	 return _error->Errno("RunGPGV", _("Could not open file %s"), File.c_str());
-      fclose(gpg);
-      if (!StartsWithGPGClearTextSignature(File))
-	 return _error->Error(_("File %s doesn't start with a clearsigned message"), File.c_str());
-   }
-
-
-   string const gpgvpath = _config->Find("Dir::Bin::gpg", "/usr/bin/gpgv");
-   // FIXME: remove support for deprecated APT::GPGV setting
-   string const trustedFile = _config->Find("APT::GPGV::TrustedKeyring", _config->FindFile("Dir::Etc::Trusted"));
-   string const trustedPath = _config->FindDir("Dir::Etc::TrustedParts");
-
-   bool const Debug = _config->FindB("Debug::Acquire::gpgv", false);
-
-   if (Debug == true)
-   {
-      std::clog << "gpgv path: " << gpgvpath << std::endl;
-      std::clog << "Keyring file: " << trustedFile << std::endl;
-      std::clog << "Keyring path: " << trustedPath << std::endl;
-   }
-
-   std::vector<string> keyrings;
-   if (DirectoryExists(trustedPath))
-     keyrings = GetListOfFilesInDir(trustedPath, "gpg", false, true);
-   if (RealFileExists(trustedFile) == true)
-     keyrings.push_back(trustedFile);
-
-   std::vector<const char *> Args;
-   Args.reserve(30);
-
-   if (keyrings.empty() == true)
-   {
-      // TRANSLATOR: %s is the trusted keyring parts directory
-      return _error->Error(_("No keyring installed in %s."),
-			   _config->FindDir("Dir::Etc::TrustedParts").c_str());
-   }
-
-   Args.push_back(gpgvpath.c_str());
-   Args.push_back("--ignore-time-conflict");
-
-   if (statusfd != -1)
-   {
-      Args.push_back("--status-fd");
-      char fd[10];
-      snprintf(fd, sizeof(fd), "%i", statusfd);
-      Args.push_back(fd);
-   }
-
-   for (vector<string>::const_iterator K = keyrings.begin();
-	K != keyrings.end(); ++K)
-   {
-      Args.push_back("--keyring");
-      Args.push_back(K->c_str());
-   }
-
-   Configuration::Item const *Opts;
-   Opts = _config->Tree("Acquire::gpgv::Options");
-   if (Opts != 0)
-   {
-      Opts = Opts->Child;
-      for (; Opts != 0; Opts = Opts->Next)
-      {
-	 if (Opts->Value.empty() == true)
-	    continue;
-	 Args.push_back(Opts->Value.c_str());
-      }
-   }
-
-   Args.push_back(FileGPG.c_str());
-   if (FileGPG != File)
-      Args.push_back(File.c_str());
-   Args.push_back(NULL);
-
-   if (Debug == true)
-   {
-      std::clog << "Preparing to exec: " << gpgvpath;
-      for (std::vector<const char *>::const_iterator a = Args.begin(); *a != NULL; ++a)
-	 std::clog << " " << *a;
-      std::clog << std::endl;
-   }
-
-   if (statusfd != -1)
-   {
-      int const nullfd = open("/dev/null", O_RDONLY);
-      close(fd[0]);
-      // Redirect output to /dev/null; we read from the status fd
-      dup2(nullfd, STDOUT_FILENO);
-      dup2(nullfd, STDERR_FILENO);
-      // Redirect the pipe to the status fd (3)
-      dup2(fd[1], statusfd);
-
-      putenv((char *)"LANG=");
-      putenv((char *)"LC_ALL=");
-      putenv((char *)"LC_MESSAGES=");
-   }
-
-   execvp(gpgvpath.c_str(), (char **) &Args[0]);
    return true;
 }
 									/*}}}*/
@@ -795,9 +681,7 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name,	/*{{{*/
    unsigned int WrongSize = 0;
    unsigned int Packages = 0;
    for (vector<string>::iterator I = List.begin(); I != List.end(); ++I)
-   {      
-      string OrigPath = string(*I,CDROM.length());
-
+   {
       // Open the package file
       FileFd Pkg(*I, FileFd::ReadOnly, FileFd::Auto);
       off_t const FileSize = Pkg.Size();

+ 11 - 6
apt-pkg/indexcopy.h

@@ -14,6 +14,9 @@
 #include <string>
 #include <stdio.h>
 
+#include <apt-pkg/gpgv.h>
+#include <apt-pkg/macros.h>
+
 #ifndef APT_8_CLEANER_HEADERS
 using std::string;
 using std::vector;
@@ -96,13 +99,15 @@ class SigVerify								/*{{{*/
    bool CopyAndVerify(std::string CDROM,std::string Name,std::vector<std::string> &SigList,
 		      std::vector<std::string> PkgList,std::vector<std::string> SrcList);
 
-   /** \brief generates and run the command to verify a file with gpgv */
-   static bool RunGPGV(std::string const &File, std::string const &FileOut,
-		       int const &statusfd, int fd[2]);
-   inline static bool RunGPGV(std::string const &File, std::string const &FileOut,
+   __deprecated static bool RunGPGV(std::string const &File, std::string const &FileOut,
+		       int const &statusfd, int fd[2]) {
+      ExecGPGV(File, FileOut, statusfd, fd);
+      return false;
+   };
+   __deprecated static bool RunGPGV(std::string const &File, std::string const &FileOut,
 			      int const &statusfd = -1) {
-      int fd[2];
-      return RunGPGV(File, FileOut, statusfd, fd);
+      ExecGPGV(File, FileOut, statusfd);
+      return false;
    };
 };
 									/*}}}*/

+ 5 - 1
apt-pkg/indexrecords.cc

@@ -12,6 +12,7 @@
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/hashes.h>
+#include <apt-pkg/gpgv.h>
 
 #include <sys/stat.h>
 #include <clocale>
@@ -57,7 +58,10 @@ bool indexRecords::Exists(string const &MetaKey) const
 
 bool indexRecords::Load(const string Filename)				/*{{{*/
 {
-   FileFd Fd(Filename, FileFd::ReadOnly);
+   FileFd Fd;
+   if (OpenMaybeClearSignedFile(Filename, Fd) == false)
+      return false;
+
    pkgTagFile TagFile(&Fd, Fd.Size() + 256); // XXX
    if (_error->PendingError() == true)
    {

+ 6 - 8
apt-pkg/makefile

@@ -27,15 +27,13 @@ APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR)
 SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \
          contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \
 	 contrib/hashsum.cc contrib/md5.cc contrib/sha1.cc \
-	 contrib/sha2_internal.cc\
-         contrib/hashes.cc \
+	 contrib/sha2_internal.cc contrib/hashes.cc \
 	 contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \
-	 contrib/fileutl.cc 
-HEADERS = mmap.h error.h configuration.h fileutl.h  cmndline.h netrc.h\
-	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h sha256.h\
-	  sha2_internal.h \
-          hashes.h hashsum_template.h\
-	  macros.h weakptr.h
+	 contrib/fileutl.cc contrib/gpgv.cc
+HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h \
+	  md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h sha256.h \
+	  sha2_internal.h hashes.h hashsum_template.h \
+	  macros.h weakptr.h gpgv.h
 
 # Source code for the core main library
 SOURCE+= pkgcache.cc version.cc depcache.cc \

+ 3 - 1
apt-pkg/orderlist.cc

@@ -331,9 +331,11 @@ int pkgOrderList::Score(PkgIterator Pkg)
       }
 
    // Important Required Standard Optional Extra
-   signed short PrioMap[] = {0,5,4,3,1,0};
    if (Cache[Pkg].InstVerIter(Cache)->Priority <= 5)
+   {
+      signed short PrioMap[] = {0,5,4,3,1,0};
       Score += PrioMap[Cache[Pkg].InstVerIter(Cache)->Priority];
+   }
    return Score;
 }
 									/*}}}*/

+ 40 - 23
apt-pkg/pkgcache.cc

@@ -182,18 +182,17 @@ unsigned long pkgCache::sHash(const string &Str) const
 {
    unsigned long Hash = 0;
    for (string::const_iterator I = Str.begin(); I != Str.end(); ++I)
-      Hash = 5*Hash + tolower_ascii(*I);
+      Hash = 41 * Hash + tolower_ascii(*I);
    return Hash % _count(HeaderP->PkgHashTable);
 }
 
 unsigned long pkgCache::sHash(const char *Str) const
 {
-   unsigned long Hash = 0;
-   for (const char *I = Str; *I != 0; ++I)
-      Hash = 5*Hash + tolower_ascii(*I);
+   unsigned long Hash = tolower_ascii(*Str);
+   for (const char *I = Str + 1; *I != 0; ++I)
+      Hash = 41 * Hash + tolower_ascii(*I);
    return Hash % _count(HeaderP->PkgHashTable);
 }
-
 									/*}}}*/
 // Cache::SingleArchFindPkg - Locate a package by name			/*{{{*/
 // ---------------------------------------------------------------------
@@ -206,9 +205,14 @@ pkgCache::PkgIterator pkgCache::SingleArchFindPkg(const string &Name)
    Package *Pkg = PkgP + HeaderP->PkgHashTable[Hash(Name)];
    for (; Pkg != PkgP; Pkg = PkgP + Pkg->NextPackage)
    {
-      if (Pkg->Name != 0 && StrP[Pkg->Name] == Name[0] &&
-          stringcasecmp(Name,StrP + Pkg->Name) == 0)
-         return PkgIterator(*this,Pkg);
+      if (unlikely(Pkg->Name == 0))
+	 continue;
+
+      int const cmp = strcasecmp(Name.c_str(), StrP + Pkg->Name);
+      if (cmp == 0)
+	 return PkgIterator(*this, Pkg);
+      else if (cmp < 0)
+	 break;
    }
    return PkgIterator(*this,0);
 }
@@ -265,9 +269,14 @@ pkgCache::GrpIterator pkgCache::FindGrp(const string &Name) {
 	// Look at the hash bucket for the group
 	Group *Grp = GrpP + HeaderP->GrpHashTable[sHash(Name)];
 	for (; Grp != GrpP; Grp = GrpP + Grp->Next) {
-		if (Grp->Name != 0 && StrP[Grp->Name] == Name[0] &&
-		    stringcasecmp(Name, StrP + Grp->Name) == 0)
+		if (unlikely(Grp->Name == 0))
+		   continue;
+
+		int const cmp = strcasecmp(Name.c_str(), StrP + Grp->Name);
+		if (cmp == 0)
 			return GrpIterator(*this, Grp);
+		else if (cmp < 0)
+			break;
 	}
 
 	return GrpIterator(*this,0);
@@ -279,22 +288,22 @@ pkgCache::GrpIterator pkgCache::FindGrp(const string &Name) {
    type in the weird debian style.. */
 const char *pkgCache::CompTypeDeb(unsigned char Comp)
 {
-   const char *Ops[] = {"","<=",">=","<<",">>","=","!="};
-   if ((unsigned)(Comp & 0xF) < 7)
-      return Ops[Comp & 0xF];
-   return "";	 
+   const char * const Ops[] = {"","<=",">=","<<",">>","=","!="};
+   if (unlikely((unsigned)(Comp & 0xF) >= sizeof(Ops)/sizeof(Ops[0])))
+      return "";
+   return Ops[Comp & 0xF];
 }
 									/*}}}*/
 // Cache::CompType - Return a string describing the compare type	/*{{{*/
 // ---------------------------------------------------------------------
-/* This returns a string representation of the dependency compare 
+/* This returns a string representation of the dependency compare
    type */
 const char *pkgCache::CompType(unsigned char Comp)
 {
-   const char *Ops[] = {"","<=",">=","<",">","=","!="};
-   if ((unsigned)(Comp & 0xF) < 7)
-      return Ops[Comp & 0xF];
-   return "";	 
+   const char * const Ops[] = {"","<=",">=","<",">","=","!="};
+   if (unlikely((unsigned)(Comp & 0xF) >= sizeof(Ops)/sizeof(Ops[0])))
+      return "";
+   return Ops[Comp & 0xF];
 }
 									/*}}}*/
 // Cache::DepType - Return a string describing the dep type		/*{{{*/
@@ -625,8 +634,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
       {
 	 if (IsIgnorable(I.ParentPkg()) == true)
 	    continue;
-
-	 if (Owner->VS->CheckDep(I.VerStr(),S->CompareOp,TargetVer()) == false)
+	 if (IsSatisfied(I) == false)
 	    continue;
 
 	 Size++;
@@ -639,8 +647,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
       {
 	 if (IsIgnorable(I) == true)
 	    continue;
-
-	 if (Owner->VS->CheckDep(I.ProvideVersion(),S->CompareOp,TargetVer()) == false)
+	 if (IsSatisfied(I) == false)
 	    continue;
 
 	 Size++;
@@ -748,6 +755,16 @@ bool pkgCache::DepIterator::IsMultiArchImplicit() const
    return false;
 }
 									/*}}}*/
+// DepIterator::IsSatisfied - check if a version satisfied the dependency /*{{{*/
+bool pkgCache::DepIterator::IsSatisfied(VerIterator const &Ver) const
+{
+   return Owner->VS->CheckDep(Ver.VerStr(),S->CompareOp,TargetVer());
+}
+bool pkgCache::DepIterator::IsSatisfied(PrvIterator const &Prv) const
+{
+   return Owner->VS->CheckDep(Prv.ProvideVersion(),S->CompareOp,TargetVer());
+}
+									/*}}}*/
 // ostream operator to handle string representation of a dependecy	/*{{{*/
 // ---------------------------------------------------------------------
 /* */

+ 113 - 66
apt-pkg/pkgcachegen.cc

@@ -300,36 +300,35 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator
 
    for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver)
    {
-      pkgCache::DescIterator Desc = Ver.DescriptionList();
+      pkgCache::DescIterator VerDesc = Ver.DescriptionList();
 
       // a version can only have one md5 describing it
-      if (Desc.end() == true || MD5SumValue(Desc.md5()) != CurMd5)
+      if (VerDesc.end() == true || MD5SumValue(VerDesc.md5()) != CurMd5)
 	 continue;
 
       // don't add a new description if we have one for the given
       // md5 && language
-      if (IsDuplicateDescription(Desc, CurMd5, CurLang) == true)
+      if (IsDuplicateDescription(VerDesc, CurMd5, CurLang) == true)
 	 continue;
 
+      pkgCache::DescIterator Desc;
       Dynamic<pkgCache::DescIterator> DynDesc(Desc);
-      // we add at the end, so that the start is constant as we need
-      // that to be able to efficiently share these lists
-      map_ptrloc *LastDesc = &Ver->DescriptionList;
-      for (;Desc.end() == false && Desc->NextDesc != 0; ++Desc);
-      if (Desc.end() == false)
-	 LastDesc = &Desc->NextDesc;
 
-      void const * const oldMap = Map.Data();
-      map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc);
+      map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, VerDesc->md5sum);
       if (unlikely(descindex == 0 && _error->PendingError()))
 	 return _error->Error(_("Error occurred while processing %s (%s%d)"),
 			      Pkg.Name(), "NewDescription", 1);
-      if (oldMap != Map.Data())
-	 LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap;
-      *LastDesc = descindex;
+
       Desc->ParentPkg = Pkg.Index();
 
-      if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false)
+      // we add at the end, so that the start is constant as we need
+      // that to be able to efficiently share these lists
+      VerDesc = Ver.DescriptionList(); // old value might be invalid after ReMap
+      for (;VerDesc.end() == false && VerDesc->NextDesc != 0; ++VerDesc);
+      map_ptrloc * const LastNextDesc = (VerDesc.end() == true) ? &Ver->DescriptionList : &VerDesc->NextDesc;
+      *LastNextDesc = descindex;
+
+      if (NewFileDesc(Desc,List) == false)
 	 return _error->Error(_("Error occurred while processing %s (%s%d)"),
 			      Pkg.Name(), "NewFileDesc", 1);
 
@@ -391,7 +390,7 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    }
 
    // Add a new version
-   map_ptrloc const verindex = NewVersion(Ver,Version,*LastVer);
+   map_ptrloc const verindex = NewVersion(Ver, Version, Pkg.Index(), Hash, *LastVer);
    if (verindex == 0 && _error->PendingError())
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
 			   Pkg.Name(), "NewVersion", 1);
@@ -399,8 +398,6 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    if (oldMap != Map.Data())
 	 LastVer += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap;
    *LastVer = verindex;
-   Ver->ParentPkg = Pkg.Index();
-   Ver->Hash = Hash;
 
    if (unlikely(List.NewVersion(Ver) == false))
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
@@ -464,11 +461,8 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
 	       pkgCache::VerIterator ConVersion = D.ParentVer();
 	       Dynamic<pkgCache::VerIterator> DynV(ConVersion);
 	       // duplicate the Conflicts/Breaks/Replaces for :none arch
-	       if (D->Version == 0)
-		  NewDepends(Pkg, ConVersion, "", 0, D->Type, OldDepLast);
-	       else
-		  NewDepends(Pkg, ConVersion, D.TargetVer(),
-			     D->CompareOp, D->Type, OldDepLast);
+	       NewDepends(Pkg, ConVersion, D->Version,
+		     D->CompareOp, D->Type, OldDepLast);
 	    }
 	 }
       }
@@ -509,19 +503,16 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator
    // We haven't found reusable descriptions, so add the first description
    pkgCache::DescIterator Desc = Ver.DescriptionList();
    Dynamic<pkgCache::DescIterator> DynDesc(Desc);
-   map_ptrloc *LastDesc = &Ver->DescriptionList;
 
-   oldMap = Map.Data();
-   map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc);
+   map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, 0);
    if (unlikely(descindex == 0 && _error->PendingError()))
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
 			   Pkg.Name(), "NewDescription", 2);
-   if (oldMap != Map.Data())
-       LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap;
-   *LastDesc = descindex;
+
    Desc->ParentPkg = Pkg.Index();
+   Ver->DescriptionList = descindex;
 
-   if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false)
+   if (NewFileDesc(Desc,List) == false)
       return _error->Error(_("Error occurred while processing %s (%s%d)"),
 			   Pkg.Name(), "NewFileDesc", 2);
 
@@ -564,7 +555,7 @@ bool pkgCacheGenerator::MergeFileProvides(ListParser &List)
       Dynamic<pkgCache::VerIterator> DynVer(Ver);
       for (; Ver.end() == false; ++Ver)
       {
-	 if (Ver->Hash == Hash && Version.c_str() == Ver.VerStr())
+	 if (Ver->Hash == Hash && Version == Ver.VerStr())
 	 {
 	    if (List.CollectFileProvides(Cache,Ver) == false)
 	       return _error->Error(_("Error occurred while processing %s (%s%d)"),
@@ -602,8 +593,11 @@ bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, const string &Name)
 
    // Insert it into the hash table
    unsigned long const Hash = Cache.Hash(Name);
-   Grp->Next = Cache.HeaderP->GrpHashTable[Hash];
-   Cache.HeaderP->GrpHashTable[Hash] = Group;
+   map_ptrloc *insertAt = &Cache.HeaderP->GrpHashTable[Hash];
+   while (*insertAt != 0 && strcasecmp(Name.c_str(), Cache.StrP + (Cache.GrpP + *insertAt)->Name) > 0)
+      insertAt = &(Cache.GrpP + *insertAt)->Next;
+   Grp->Next = *insertAt;
+   *insertAt = Group;
 
    Grp->ID = Cache.HeaderP->GroupCount++;
    return true;
@@ -632,11 +626,14 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg,const string &Name
    // Insert the package into our package list
    if (Grp->FirstPackage == 0) // the group is new
    {
+      Grp->FirstPackage = Package;
       // Insert it into the hash table
       unsigned long const Hash = Cache.Hash(Name);
-      Pkg->NextPackage = Cache.HeaderP->PkgHashTable[Hash];
-      Cache.HeaderP->PkgHashTable[Hash] = Package;
-      Grp->FirstPackage = Package;
+      map_ptrloc *insertAt = &Cache.HeaderP->PkgHashTable[Hash];
+      while (*insertAt != 0 && strcasecmp(Name.c_str(), Cache.StrP + (Cache.PkgP + *insertAt)->Name) > 0)
+	 insertAt = &(Cache.PkgP + *insertAt)->NextPackage;
+      Pkg->NextPackage = *insertAt;
+      *insertAt = Package;
    }
    else // Group the Packages together
    {
@@ -675,6 +672,7 @@ bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G,
    bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
    pkgCache::PkgIterator D = G.PackageList();
    Dynamic<pkgCache::PkgIterator> DynD(D);
+   map_ptrloc const VerStrIdx = V->VerStr;
    for (; D.end() != true; D = G.NextPkg(D))
    {
       if (Arch == D.Arch() || D->VersionList == 0)
@@ -685,16 +683,16 @@ bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G,
       if (coInstall == true)
       {
 	 // Replaces: ${self}:other ( << ${binary:Version})
-	 NewDepends(D, V, V.VerStr(),
+	 NewDepends(D, V, VerStrIdx,
 		    pkgCache::Dep::Less, pkgCache::Dep::Replaces,
 		    OldDepLast);
 	 // Breaks: ${self}:other (!= ${binary:Version})
-	 NewDepends(D, V, V.VerStr(),
+	 NewDepends(D, V, VerStrIdx,
 		    pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks,
 		    OldDepLast);
       } else {
 	 // Conflicts: ${self}:other
-	 NewDepends(D, V, "",
+	 NewDepends(D, V, 0,
 		    pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts,
 		    OldDepLast);
       }
@@ -711,17 +709,18 @@ bool pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator &V,
    bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same);
    if (coInstall == true)
    {
+      map_ptrloc const VerStrIdx = V->VerStr;
       // Replaces: ${self}:other ( << ${binary:Version})
-      NewDepends(D, V, V.VerStr(),
+      NewDepends(D, V, VerStrIdx,
 		 pkgCache::Dep::Less, pkgCache::Dep::Replaces,
 		 OldDepLast);
       // Breaks: ${self}:other (!= ${binary:Version})
-      NewDepends(D, V, V.VerStr(),
+      NewDepends(D, V, VerStrIdx,
 		 pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks,
 		 OldDepLast);
    } else {
       // Conflicts: ${self}:other
-      NewDepends(D, V, "",
+      NewDepends(D, V, 0,
 		 pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts,
 		 OldDepLast);
    }
@@ -767,6 +766,8 @@ bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver,
 /* This puts a version structure in the linked list */
 unsigned long pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver,
 					    const string &VerStr,
+					    map_ptrloc const ParentPkg,
+					    unsigned long const Hash,
 					    unsigned long Next)
 {
    // Get a structure
@@ -778,12 +779,37 @@ unsigned long pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver,
    Ver = pkgCache::VerIterator(Cache,Cache.VerP + Version);
    //Dynamic<pkgCache::VerIterator> DynV(Ver); // caller MergeListVersion already takes care of it
    Ver->NextVer = Next;
+   Ver->ParentPkg = ParentPkg;
+   Ver->Hash = Hash;
    Ver->ID = Cache.HeaderP->VersionCount++;
+
+   // try to find the version string in the group for reuse
+   pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+   pkgCache::GrpIterator Grp = Pkg.Group();
+   if (Pkg.end() == false && Grp.end() == false)
+   {
+      for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P))
+      {
+	 if (Pkg == P)
+	    continue;
+	 for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V)
+	 {
+	    int const cmp = strcmp(V.VerStr(), VerStr.c_str());
+	    if (cmp == 0)
+	    {
+	       Ver->VerStr = V->VerStr;
+	       return Version;
+	    }
+	    else if (cmp < 0)
+	       break;
+	 }
+      }
+   }
+   // haven't found the version string, so create
    map_ptrloc const idxVerStr = WriteStringInMap(VerStr);
    if (unlikely(idxVerStr == 0))
       return 0;
    Ver->VerStr = idxVerStr;
-   
    return Version;
 }
 									/*}}}*/
@@ -825,9 +851,9 @@ bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
 // ---------------------------------------------------------------------
 /* This puts a description structure in the linked list */
 map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
-					    const string &Lang, 
-                                            const MD5SumValue &md5sum,
-					    map_ptrloc Next)
+					    const string &Lang,
+					    const MD5SumValue &md5sum,
+					    map_ptrloc idxmd5str)
 {
    // Get a structure
    map_ptrloc const Description = AllocateInMap(sizeof(pkgCache::Description));
@@ -836,14 +862,21 @@ map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
 
    // Fill it in
    Desc = pkgCache::DescIterator(Cache,Cache.DescP + Description);
-   Desc->NextDesc = Next;
    Desc->ID = Cache.HeaderP->DescriptionCount++;
-   map_ptrloc const idxlanguage_code = WriteStringInMap(Lang);
-   map_ptrloc const idxmd5sum = WriteStringInMap(md5sum.Value());
-   if (unlikely(idxlanguage_code == 0 || idxmd5sum == 0))
+   map_ptrloc const idxlanguage_code = WriteUniqString(Lang);
+   if (unlikely(idxlanguage_code == 0))
       return 0;
    Desc->language_code = idxlanguage_code;
-   Desc->md5sum = idxmd5sum;
+
+   if (idxmd5str != 0)
+      Desc->md5sum = idxmd5str;
+   else
+   {
+      map_ptrloc const idxmd5sum = WriteStringInMap(md5sum.Value());
+      if (unlikely(idxmd5sum == 0))
+	 return 0;
+      Desc->md5sum = idxmd5sum;
+   }
 
    return Description;
 }
@@ -858,35 +891,49 @@ bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg,
 				   unsigned int const &Op,
 				   unsigned int const &Type,
 				   map_ptrloc* &OldDepLast)
+{
+   map_ptrloc index = 0;
+   if (Version.empty() == false)
+   {
+      int const CmpOp = Op & 0x0F;
+      // =-deps are used (79:1) for lockstep on same-source packages (e.g. data-packages)
+      if (CmpOp == pkgCache::Dep::Equals && strcmp(Version.c_str(), Ver.VerStr()) == 0)
+	 index = Ver->VerStr;
+
+      if (index == 0)
+      {
+	 void const * const oldMap = Map.Data();
+	 index = WriteStringInMap(Version);
+	 if (unlikely(index == 0))
+	    return false;
+	 if (OldDepLast != 0 && oldMap != Map.Data())
+	    OldDepLast += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap;
+      }
+   }
+   return NewDepends(Pkg, Ver, index, Op, Type, OldDepLast);
+}
+bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg,
+				   pkgCache::VerIterator &Ver,
+				   map_ptrloc const Version,
+				   unsigned int const &Op,
+				   unsigned int const &Type,
+				   map_ptrloc* &OldDepLast)
 {
    void const * const oldMap = Map.Data();
    // Get a structure
    map_ptrloc const Dependency = AllocateInMap(sizeof(pkgCache::Dependency));
    if (unlikely(Dependency == 0))
       return false;
-   
+
    // Fill it in
    pkgCache::DepIterator Dep(Cache,Cache.DepP + Dependency);
    Dynamic<pkgCache::DepIterator> DynDep(Dep);
    Dep->ParentVer = Ver.Index();
    Dep->Type = Type;
    Dep->CompareOp = Op;
+   Dep->Version = Version;
    Dep->ID = Cache.HeaderP->DependsCount++;
 
-   // Probe the reverse dependency list for a version string that matches
-   if (Version.empty() == false)
-   {
-/*      for (pkgCache::DepIterator I = Pkg.RevDependsList(); I.end() == false; I++)
-	 if (I->Version != 0 && I.TargetVer() == Version)
-	    Dep->Version = I->Version;*/
-      if (Dep->Version == 0) {
-	 map_ptrloc const index = WriteStringInMap(Version);
-	 if (unlikely(index == 0))
-	    return false;
-	 Dep->Version = index;
-      }
-   }
-
    // Link it to the package
    Dep->Package = Pkg.Index();
    Dep->NextRevDepends = Pkg->RevDepends;

+ 8 - 1
apt-pkg/pkgcachegen.h

@@ -77,7 +77,14 @@ class pkgCacheGenerator							/*{{{*/
    bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver,
 		   std::string const &Version, unsigned int const &Op,
 		   unsigned int const &Type, map_ptrloc* &OldDepLast);
-   unsigned long NewVersion(pkgCache::VerIterator &Ver,const std::string &VerStr,unsigned long Next);
+   bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver,
+		   map_ptrloc const Version, unsigned int const &Op,
+		   unsigned int const &Type, map_ptrloc* &OldDepLast);
+   __deprecated unsigned long NewVersion(pkgCache::VerIterator &Ver,const std::string &VerStr,unsigned long Next)
+   { return NewVersion(Ver, VerStr, 0, 0, Next); }
+   unsigned long NewVersion(pkgCache::VerIterator &Ver,const std::string &VerStr,
+			    map_ptrloc const ParentPkg, unsigned long const Hash,
+			    unsigned long Next);
    map_ptrloc NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang,const MD5SumValue &md5sum,map_ptrloc Next);
 
    public:

+ 5 - 1
apt-pkg/sourcelist.cc

@@ -270,7 +270,11 @@ bool pkgSourceList::ReadAppend(string File)
       // CNC:2003-02-20 - Do not break if '#' is inside [].
       for (I = Buffer; *I != 0 && *I != '#'; I++)
          if (*I == '[')
-	    I = strchr(I + 1, ']');
+         {
+	    char *b_end = strchr(I + 1, ']');
+            if (b_end != NULL)
+               I = b_end;
+         }
       *I = 0;
       
       const char *C = _strstrip(Buffer);

+ 5 - 6
apt-pkg/srcrecords.cc

@@ -42,7 +42,7 @@ pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0), Current(0
    }
    
    // Doesn't work without any source index files
-   if (Files.size() == 0)
+   if (Files.empty() == true)
    {
       _error->Error(_("You must put some 'source' URIs"
 		    " in your sources.list"));
@@ -121,14 +121,13 @@ pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool const &SrcOn
 /* */
 const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type)
 {
-   const char *fields[] = {"Build-Depends", 
-                           "Build-Depends-Indep",
+   const char *fields[] = {"Build-Depends",
+			   "Build-Depends-Indep",
 			   "Build-Conflicts",
 			   "Build-Conflicts-Indep"};
-   if (Type < 4) 
-      return fields[Type]; 
-   else 
+   if (unlikely(Type >= sizeof(fields)/sizeof(fields[0])))
       return "";
+   return fields[Type];
 }
 									/*}}}*/
 

+ 8 - 1
apt-pkg/tagfile.cc

@@ -282,10 +282,17 @@ void pkgTagSection::Trim()
    for (; Stop > Section + 2 && (Stop[-2] == '\n' || Stop[-2] == '\r'); Stop--);
 }
 									/*}}}*/
+// TagSection::Exists - return True if a tag exists                	/*{{{*/
+bool pkgTagSection::Exists(const char* const Tag)
+{
+   unsigned int tmp;
+   return Find(Tag, tmp);
+}
+									/*}}}*/
 // TagSection::Find - Locate a tag					/*{{{*/
 // ---------------------------------------------------------------------
 /* This searches the section for a tag that matches the given string. */
-bool pkgTagSection::Find(const char *Tag,unsigned &Pos) const
+bool pkgTagSection::Find(const char *Tag,unsigned int &Pos) const
 {
    unsigned int Length = strlen(Tag);
    unsigned int I = AlphaIndexes[AlphaHash(Tag)];

+ 2 - 2
apt-pkg/tagfile.h

@@ -59,7 +59,7 @@ class pkgTagSection
    inline bool operator !=(const pkgTagSection &rhs) {return Section != rhs.Section;};
    
    bool Find(const char *Tag,const char *&Start, const char *&End) const;
-   bool Find(const char *Tag,unsigned &Pos) const;
+   bool Find(const char *Tag,unsigned int &Pos) const;
    std::string FindS(const char *Tag) const;
    signed int FindI(const char *Tag,signed long Default = 0) const ;
    unsigned long long FindULL(const char *Tag, unsigned long long const &Default = 0) const;
@@ -73,7 +73,7 @@ class pkgTagSection
    virtual void TrimRecord(bool BeforeRecord, const char* &End);
    
    inline unsigned int Count() const {return TagCount;};
-   inline bool Exists(const char* const Tag) {return AlphaIndexes[AlphaHash(Tag)] != 0;}
+   bool Exists(const char* const Tag);
  
    inline void Get(const char *&Start,const char *&Stop,unsigned int I) const
                    {Start = Section + Indexes[I]; Stop = Section + Indexes[I+1];}

+ 1 - 1
apt-pkg/vendor.cc

@@ -12,7 +12,7 @@ Vendor::Vendor(std::string VendorID,
    this->VendorID = VendorID;
    this->Origin = Origin;
    for (std::vector<struct Vendor::Fingerprint *>::iterator I = FingerprintList->begin();
-	I != FingerprintList->end(); I++)
+	I != FingerprintList->end(); ++I)
    {
       if (_config->FindB("Debug::Vendor", false))
          std::cerr << "Vendor \"" << VendorID << "\": Mapping \""

+ 1 - 1
apt-pkg/versionmatch.cc

@@ -181,9 +181,9 @@ pkgCache::VerIterator pkgVersionMatch::Find(pkgCache::PkgIterator Pkg)
 bool pkgVersionMatch::ExpressionMatches(const char *pattern, const char *string)
 {
    if (pattern[0] == '/') {
-      bool res = false;
       size_t length = strlen(pattern);
       if (pattern[length - 1] == '/') {
+	 bool res = false;
 	 regex_t preg;
 	 char *regex = strdup(pattern + 1);
 	 regex[length - 2] = '\0';

+ 3 - 3
cmdline/apt-get.cc

@@ -1912,7 +1912,6 @@ bool DoInstall(CommandLine &CmdL)
       return false;
    }
 
-   unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 };
 
   TryToInstall InstallAction(Cache, Fix, BrokenFix);
   TryToRemove RemoveAction(Cache, Fix);
@@ -1920,6 +1919,7 @@ bool DoInstall(CommandLine &CmdL)
    // new scope for the ActionGroup
    {
       pkgDepCache::ActionGroup group(Cache);
+      unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 };
 
       for (unsigned short i = 0; order[i] != 0; ++i)
       {
@@ -2023,7 +2023,7 @@ bool DoInstall(CommandLine &CmdL)
 
    /* Print out a list of suggested and recommended packages */
    {
-      string SuggestsList, RecommendsList, List;
+      string SuggestsList, RecommendsList;
       string SuggestsVersions, RecommendsVersions;
       for (unsigned J = 0; J < Cache->Head().PackageCount; J++)
       {
@@ -2711,7 +2711,7 @@ bool DoSource(CommandLine &CmdL)
 	 {
 	    string buildopts = _config->Find("APT::Get::Host-Architecture");
 	    if (buildopts.empty() == false)
-	       buildopts = "-a " + buildopts + " ";
+	       buildopts = "-a" + buildopts + " ";
 	    buildopts.append(_config->Find("DPkg::Build-Options","-b -uc"));
 
 	    // Call dpkg-buildpackage

+ 150 - 4
debian/changelog

@@ -28,7 +28,150 @@ apt (0.9.8~exp1) UNRELEASED; urgency=low
 
  -- Michael Vogt <mvo@debian.org>  Fri, 01 Mar 2013 12:12:39 +0100
 
-apt (0.9.7.8) UNRELEASED; urgency=low
+apt (0.9.7.9~exp3) UNRELEASED; urgency=low
+
+  [ Michael Vogt ]
+  * apt-pkg/sourcelist.cc:
+    - fix segfault when a hostname contains a [, thanks to 
+      Tzafrir Cohen (closes: #704653)
+  * debian/control:
+    - replace manpages-it (closes: #704723)
+
+  [ David Kalnischkies ]
+  * various simple changes to fix cppcheck warnings
+  * apt-pkg/pkgcachegen.cc:
+    - do not store the MD5Sum for every description language variant as
+      it will be the same for all so it can be shared to save cache space
+    - handle language tags for descriptions are unique strings to be shared
+    - factor version string creation out of NewDepends, so we can easily reuse
+      version strings e.g. for implicit multi-arch dependencies
+    - equal comparisions are used mostly in same-source relations,
+      so use this to try to reuse some version strings
+    - sort group and package names in the hashtable on insert
+    - share version strings between same versions (of different architectures)
+      to save some space and allow quick comparisions later on
+  * apt-pkg/pkgcache.cc:
+    - assume sorted hashtable entries for groups/packages
+  * apt-pkg/cacheiterators.h:
+    - provide DepIterator::IsSatisfied as a nicer shorthand for DepCheck
+  * apt-pkg/deb/debversion.cc:
+    - add a string-equal shortcut for equal version comparisions
+
+  [ Marc Deslauriers ]
+  * make apt-ftparchive generate missing deb-src hashes (LP: #1078697)
+
+ -- Michael Vogt <mvo@debian.org>  Mon, 08 Apr 2013 08:43:21 +0200
+
+apt (0.9.7.9~exp2) experimental; urgency=low
+
+  [ Programs translations ]
+  * Update all PO files and apt-all.pot
+  * French translation completed (Christian Perrier)
+  
+  [ Daniel Hartwig ]
+  * cmdline/apt-get.cc:
+    - do not have space between "-a" and option when cross building
+      (closes: #703792)
+  * test/integration/test-apt-get-download:
+    - fix test now that #1098752 is fixed
+  * po/{ca,cs,ru}.po:
+    - fix merge artifact
+
+  [ David Kalnischkies ]
+  * apt-pkg/indexcopy.cc:
+    - rename RunGPGV to ExecGPGV and move it to apt-pkg/contrib/gpgv.cc
+  * apt-pkg/contrib/gpgv.cc:
+    - ExecGPGV is a method which should never return, so mark it as such
+      and fix the inconsistency of returning in error cases
+    - don't close stdout/stderr if it is also the statusfd
+    - if ExecGPGV deals with a clear-signed file it will split this file
+      into data and signatures, pass it to gpgv for verification
+    - add method to open (maybe) clearsigned files transparently
+  * apt-pkg/acquire-item.cc:
+    - keep the last good InRelease file around just as we do it with
+      Release.gpg in case the new one we download isn't good for us
+  * apt-pkg/deb/debmetaindex.cc:
+    - reenable InRelease by default
+  * ftparchive/writer.cc,
+    apt-pkg/deb/debindexfile.cc,
+    apt-pkg/deb/deblistparser.cc:
+    - use OpenMaybeClearSignedFile to be free from detecting and
+      skipping clearsigning metadata in dsc and Release files
+
+  [ Michael Vogt ]
+  * add regression test for CVE-2013-1051
+  * implement GPGSplit() based on the idea from Ansgar Burchardt
+    (many thanks!)
+  * methods/connect.cc:
+    - use Errno() instead of strerror(), thanks to David Kalnischk
+  * doc/apt.conf.5.xml:
+    - document Acquire::ForceIPv{4,6}
+
+ -- Michael Vogt <mvo@debian.org>  Wed, 03 Apr 2013 14:19:58 +0200
+
+apt (0.9.7.9~exp1) experimental; urgency=low
+
+  [ Niels Thykier ]
+  * test/libapt/assert.h, test/libapt/run-tests:
+    - exit with status 1 on test failure
+  
+  [ Daniel Hartwig ]
+  * test/integration/framework:
+    - continue after test failure but preserve exit status
+
+  [ Programs translation updates ]
+  * Turkish (Mert Dirik). Closes: #703526
+
+  [ Colin Watson ]
+  * methods/connect.cc:
+    - provide useful error message in case of EAI_SYSTEM
+      (closes: #703603)
+  
+  [ Michael Vogt ]
+  * add new config options "Acquire::ForceIPv4" and 
+    "Acquire::ForceIPv6" to allow focing one or the other
+    (closes: #611891)
+  * lp:~mvo/apt/fix-tagfile-hash:
+    - fix false positives in pkgTagSection.Exists(), thanks to
+      Niels Thykier for the testcase (closes: #703240)
+    - this will require rebuilds of the clients as this used to
+      be a inline function
+
+ -- Michael Vogt <mvo@debian.org>  Fri, 22 Mar 2013 21:57:08 +0100
+
+apt (0.9.7.8) unstable; urgency=criticial
+
+  * SECURITY UPDATE: InRelease verification bypass
+    - CVE-2013-1051
+  
+  [ Programs translation updates ]
+  * Japanese (Kenshi Muto). Closes: #699783
+  
+  [ David Kalnischk ]
+  * apt-pkg/deb/debmetaindex.cc,
+    test/integration/test-bug-595691-empty-and-broken-archive-files,
+  * [ABI BREAK] apt-pkg/pkgcache.h:
+    - adjust pkgCache::State::VerPriority enum, to match reality
+    test/integration/test-releasefile-verification:
+    - disable InRelease downloading until the verification issue is
+      fixed, thanks to Ansgar Burchardt for finding the flaw
+    - quote plus in filenames to work around a bug in the S3 server
+      (LP: #1003633)
+  * apt-pkg/indexrecords.cc:
+    - support '\r' in the Release file
+
+ -- Michael Vogt <mvo@debian.org>  Thu, 14 Mar 2013 07:47:36 +0100
+
+apt (0.9.7.8~exp2) experimental; urgency=low
+
+  * include two missing patches to really fix bug #696225, thanks to
+    Guillem Jover 
+  * ensure sha512 is really used when available, thanks to Tyler Hicks
+   (LP: #1098752)
+
+ -- Michael Vogt <mvo@debian.org>  Fri, 01 Mar 2013 19:06:55 +0100
+
+apt (0.9.7.8~exp1) experimental; urgency=low
 
   [ Manpages translation updates ]
   * Italian (Beatrice Torracca). Closes: #696601
@@ -39,8 +182,6 @@ apt (0.9.7.8) UNRELEASED; urgency=low
   [ Michael Vogt ]
   * fix pkgProblemResolver::Scores, thanks to Paul Wise. 
     Closes: #697577
-  * [ABI BREAK] apt-pkg/pkgcache.h:
-    - adjust pkgCache::State::VerPriority enum, to match reality
   * fix missing translated apt.8 manpages, thanks to Helge Kreutzmann
     for the report. Closes: #696923
   * apt-pkg/contrib/progress.cc:
@@ -66,7 +207,12 @@ apt (0.9.7.8) UNRELEASED; urgency=low
   * apt-pkg/indexrecords.cc:
     - support '\r' in the Release file
 
- -- Christian Perrier <bubulle@debian.org>  Mon, 24 Dec 2012 07:01:20 +0100
+  [ David Kalnischkies ]
+  * apt-pkg/depcache.cc:
+    - prefer to install packages which have an already installed M-A:same
+      sibling while choosing providers (LP: #1130419)
+
+ -- Michael Vogt <mvo@debian.org>  Fri, 01 Mar 2013 14:16:42 +0100
 
 apt (0.9.7.7) unstable; urgency=low
 

+ 1 - 1
debian/control

@@ -18,7 +18,7 @@ Vcs-Browser: http://bzr.debian.org/loggerhead/apt/debian-sid/
 Package: apt
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg
-Replaces: manpages-pl (<< 20060617-3~)
+Replaces: manpages-pl (<< 20060617-3~), manpages-it
 Conflicts: python-apt (<< 0.7.93.2~)
 Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, xz-utils, python-apt
 Description: commandline package manager

+ 1 - 1
doc/apt-verbatim.ent

@@ -213,7 +213,7 @@
 ">
 
 <!-- this will be updated by 'prepare-release' -->
-<!ENTITY apt-product-version "0.9.8~exp1~20130301">
+<!ENTITY apt-product-version "0.9.7.9~exp2">
 
 <!-- Codenames for debian releases -->
 <!ENTITY oldstable-codename "squeeze">

+ 12 - 0
doc/apt.conf.5.xml

@@ -554,6 +554,18 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      </listitem>
      </varlistentry>
 
+     <varlistentry><term><option>ForceIPv4</option></term>
+	 <listitem><para>
+         When downloading, force to use only the IPv4 protocol.
+	 </para></listitem>
+     </varlistentry>
+
+     <varlistentry><term><option>ForceIPv6</option></term>
+	 <listitem><para>
+         When downloading, force to use only the IPv6 protocol.
+	 </para></listitem>
+     </varlistentry>
+
    </variablelist>
  </refsect1>
 

+ 83 - 73
doc/po/de.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt-doc 0.9.7\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 12:50+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-06-25 22:49+0100\n"
 "Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
 "Language-Team: German <debian-l10n-german@lists.debian.org>\n"
@@ -1543,14 +1543,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "Dateien"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -4269,13 +4269,23 @@ msgstr ""
 "in <filename>/var/lib/apt/lists/</filename> gefunden werden, an das Ende der "
 "Liste hinzugefügt (nach einem impliziten »<literal>none</literal>«)."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr "Verzeichnisse"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -4295,7 +4305,7 @@ msgstr ""
 "nicht mit <filename>/</filename> oder <filename>./</filename> beginnen."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4318,7 +4328,7 @@ msgstr ""
 "Standardverzeichnis in <literal>Dir::Cache</literal> enthalten."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4333,7 +4343,7 @@ msgstr ""
 "Konfigurationsdatei erfolgt)."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4345,7 +4355,7 @@ msgstr ""
 "geladen."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4363,7 +4373,7 @@ msgstr ""
 "Programms an."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4383,7 +4393,7 @@ msgstr ""
 "<filename>/tmp/staging/var/lib/dpkg/status</filename> nachgesehen."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4401,12 +4411,12 @@ msgstr ""
 "diese Muster verwandt werden."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr "APT in DSelect"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4417,7 +4427,7 @@ msgstr ""
 "<literal>DSelect</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4440,7 +4450,7 @@ msgstr ""
 "vor dem Herunterladen neuer Pakete durch."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
@@ -4449,7 +4459,7 @@ msgstr ""
 "übermittelt, wenn es für die Installationsphase durchlaufen wird."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
@@ -4458,7 +4468,7 @@ msgstr ""
 "übermittelt, wenn es für die Aktualisierungsphase durchlaufen wird."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
@@ -4467,12 +4477,12 @@ msgstr ""
 "nachfragen, um fortzufahren. Vorgabe ist es, nur bei Fehlern nachzufragen."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr "Wie APT &dpkg; aufruft"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
@@ -4481,7 +4491,7 @@ msgstr ""
 "stehen im Abschnitt <literal>DPkg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4492,7 +4502,7 @@ msgstr ""
 "jedes Listenelement wird als einzelnes Argument an &dpkg; übermittelt."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4506,7 +4516,7 @@ msgstr ""
 "APT abgebrochen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4522,7 +4532,7 @@ msgstr ""
 "die es installieren wird, auf der Standardeingabe übergeben, einen pro Zeile."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4538,7 +4548,7 @@ msgstr ""
 "literal> gegeben wird."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
@@ -4547,7 +4557,7 @@ msgstr ""
 "die Vorgabe ist <filename>/</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
@@ -4557,12 +4567,12 @@ msgstr ""
 "Programme werden erstellt."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr "Dpkd-Trigger-Benutzung (und zugehörige Optionen)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4589,7 +4599,7 @@ msgstr ""
 "Pakete konfiguriert werden."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4603,7 +4613,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4628,7 +4638,7 @@ msgstr ""
 "Optionenkombination wäre <placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4651,7 +4661,7 @@ msgstr ""
 "anhängen."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4681,7 +4691,7 @@ msgstr ""
 "enden könnte und möglicherweise nicht mehr startbar ist."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4700,7 +4710,7 @@ msgstr ""
 "deaktivieren."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4716,7 +4726,7 @@ msgstr ""
 "benötigt werden."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4734,7 +4744,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4758,12 +4768,12 @@ msgstr ""
 "mit ihren Vorgabewerten. <placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr "Periodische- und Archivoptionen"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4777,12 +4787,12 @@ msgstr ""
 "Dokumentation dieser Optionen zu erhalten."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr "Fehlersuchoptionen"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4800,7 +4810,7 @@ msgstr ""
 "könnten es sein:"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4811,7 +4821,7 @@ msgstr ""
 "getroffenen Entscheidungen ein."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4822,7 +4832,7 @@ msgstr ""
 "<literal>apt-get -s install</literal>) als nicht root-Anwender auszuführen."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4834,7 +4844,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
@@ -4843,12 +4853,12 @@ msgstr ""
 "Daten in CD-ROM-IDs aus."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr "Eine vollständige Liste der Fehlersuchoptionen von APT folgt."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
@@ -4856,28 +4866,28 @@ msgstr ""
 "literal>-Quellen beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 "gibt Informationen aus, die sich auf das Herunterladen von Paketen per FTP "
 "beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 "gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTP "
 "beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr ""
 "gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTPS "
 "beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
@@ -4886,7 +4896,7 @@ msgstr ""
 "mittels <literal>gpg</literal> beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
@@ -4895,13 +4905,13 @@ msgstr ""
 "CD-ROMs gespeichert sind."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 "beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
@@ -4910,7 +4920,7 @@ msgstr ""
 "Bibliotheken generiert wurde."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4921,7 +4931,7 @@ msgstr ""
 "ID für eine CD-ROM generiert wird."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
@@ -4931,14 +4941,14 @@ msgstr ""
 "gleichen Zeit laufen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 "protokolliert, wenn Elemente aus der globalen Warteschlange zum "
 "Herunterladen hinzugefügt oder entfernt werden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
@@ -4947,7 +4957,7 @@ msgstr ""
 "und kryptografischen Signaturen von heruntergeladenen Dateien beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
@@ -4956,7 +4966,7 @@ msgstr ""
 "Diffs und Fehler, die die Paketindexlisten-Diffs betreffen, aus."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
@@ -4966,7 +4976,7 @@ msgstr ""
 "werden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
@@ -4974,7 +4984,7 @@ msgstr ""
 "durchführen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
@@ -4984,7 +4994,7 @@ msgstr ""
 "beziehen."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -5000,7 +5010,7 @@ msgstr ""
 "literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -5033,7 +5043,7 @@ msgstr ""
 "erscheint."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
@@ -5043,7 +5053,7 @@ msgstr ""
 "sind, aus."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
@@ -5052,7 +5062,7 @@ msgstr ""
 "und alle während deren Auswertung gefundenen Fehler aus."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
@@ -5062,7 +5072,7 @@ msgstr ""
 "soll."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr ""
@@ -5070,12 +5080,12 @@ msgstr ""
 "von &dpkg; ausgeführt werden."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr "gibt die Priorität jeder Paketliste beim Start aus."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
@@ -5085,7 +5095,7 @@ msgstr ""
 "aufgetreten ist)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -5097,7 +5107,7 @@ msgstr ""
 "Marker</literal> beschrieben."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
@@ -5106,13 +5116,13 @@ msgstr ""
 "filename> gelesenen Anbieter aus."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "Beispiele"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -5122,7 +5132,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

+ 83 - 73
doc/po/es.po

@@ -38,7 +38,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.9.7.1\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 12:50+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-07-14 12:21+0200\n"
 "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
@@ -1619,14 +1619,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "Ficheros"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -4307,13 +4307,23 @@ msgstr ""
 "se añaden al final de la lista (después de un «<literal>none</literal>» "
 "implícito)."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr "Directorios"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -4334,7 +4344,7 @@ msgstr ""
 "filename> ó <filename>./</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4356,7 +4366,7 @@ msgstr ""
 "directorio predeterminado está en <literal>Dir::Cache</literal>"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4372,7 +4382,7 @@ msgstr ""
 "<envar>APT_CONFIG</envar>)."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4383,7 +4393,7 @@ msgstr ""
 "Al finalizar este proceso carga el fichero de configuración principal."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4400,7 +4410,7 @@ msgstr ""
 "literal> especifican la ubicación de sus respectivos programas."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4421,7 +4431,7 @@ msgstr ""
 "staging/var/lib/dpkg/status</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4439,12 +4449,12 @@ msgstr ""
 "de expresiones regulares."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr "APT con DSelect"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4455,7 +4465,7 @@ msgstr ""
 "encuentran en la sección <literal>DSelect</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4477,7 +4487,7 @@ msgstr ""
 "realiza esta acción antes de descargar paquetes nuevos."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
@@ -4486,7 +4496,7 @@ msgstr ""
 "la línea de ordenes al ejecutar la fase de instalación."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
@@ -4495,7 +4505,7 @@ msgstr ""
 "la línea de ordenes al ejecutar la fase de actualización."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
@@ -4505,12 +4515,12 @@ msgstr ""
 "preguntará en caso de error."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr "Invocación de APT a dpkg"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
@@ -4519,7 +4529,7 @@ msgstr ""
 "se encuentran en la sección <literal>DPkg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4530,7 +4540,7 @@ msgstr ""
 "introduce a &dpkg; como un sólo argumento."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4543,7 +4553,7 @@ msgstr ""
 "sh</filename>; en caso de fallo, APT cancela la acción."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4559,7 +4569,7 @@ msgstr ""
 "la entrada estándar."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4575,7 +4585,7 @@ msgstr ""
 "literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
@@ -4584,7 +4594,7 @@ msgstr ""
 "predeterminado es <filename>/</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
@@ -4594,12 +4604,12 @@ msgstr ""
 "paquetes y a producir todos los binarios."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr "Uso del disparador de dpkg (y de las opciones relacionadas)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4626,7 +4636,7 @@ msgstr ""
 "tiempo (o más) durante la configuración de todos los paquetes."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4640,7 +4650,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4664,7 +4674,7 @@ msgstr ""
 "type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4687,7 +4697,7 @@ msgstr ""
 "eliminación."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4717,7 +4727,7 @@ msgstr ""
 "imposibilidad de arrancar el sistema. "
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4735,7 +4745,7 @@ msgstr ""
 "desactivar esta opción en todas las ejecuciones menos la última."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4751,7 +4761,7 @@ msgstr ""
 "los disparadores necesarios para configurar este paquete."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4769,7 +4779,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4794,12 +4804,12 @@ msgstr ""
 "<placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr "Las opciones «Periodic» y «Archives»"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4813,12 +4823,12 @@ msgstr ""
 "documentación de estas opciones."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr "Opciones de depuración"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4835,7 +4845,7 @@ msgstr ""
 "para un usuario normal, aunque unas cuantas sí son:"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4846,7 +4856,7 @@ msgstr ""
 "purge</literal>."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4857,7 +4867,7 @@ msgstr ""
 "<literal>apt-get -s install</literal>) como un usuario normal."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4869,7 +4879,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
@@ -4878,14 +4888,14 @@ msgstr ""
 "statfs en los identificadores de los discos ópticos."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr ""
 "A continuación, se muestra la lista completa de las opciones de depuración "
 "de apt."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
@@ -4893,26 +4903,26 @@ msgstr ""
 "<literal>cdrom://</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 "Muestra la información relacionada con la descarga de paquetes mediante FTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 "Muestra la información relacionada con la descarga de paquetes mediante HTTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr ""
 "Muestra la información relacionada con la descarga de paquetes mediante "
 "HTTPS."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
@@ -4921,7 +4931,7 @@ msgstr ""
 "criptográficas mediante <literal>gpg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
@@ -4930,14 +4940,14 @@ msgstr ""
 "paquetes almacenadas en CD-ROM."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 "Describe el proceso de resolución de dependencias de compilación en &apt-"
 "get;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
@@ -4946,7 +4956,7 @@ msgstr ""
 "<literal>apt</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4957,7 +4967,7 @@ msgstr ""
 "identificador de un CD-ROM."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
@@ -4967,14 +4977,14 @@ msgstr ""
 "a la vez."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 "Registra los elementos que se añaden o se borran de la cola de descarga "
 "global."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
@@ -4984,7 +4994,7 @@ msgstr ""
 "ficheros descargados."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
@@ -4993,7 +5003,7 @@ msgstr ""
 "lista de índices de paquetes, y los errores relacionados con éstos."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
@@ -5003,7 +5013,7 @@ msgstr ""
 "índices completos."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
@@ -5011,7 +5021,7 @@ msgstr ""
 "descargas."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
@@ -5020,7 +5030,7 @@ msgstr ""
 "de los paquetes y con la eliminación de los paquetes sin usar."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -5036,7 +5046,7 @@ msgstr ""
 "literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -5067,7 +5077,7 @@ msgstr ""
 "la sección en la que aparece el paquete."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
@@ -5076,7 +5086,7 @@ msgstr ""
 "invocó, con los argumentos separados por un espacio."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
@@ -5085,7 +5095,7 @@ msgstr ""
 "estado y cualquier error encontrado durante el análisis."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
@@ -5094,7 +5104,7 @@ msgstr ""
 "literal> debería entregar los paquetes a &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr ""
@@ -5102,12 +5112,12 @@ msgstr ""
 "&dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr "Muestra la prioridad de cada lista de paquetes al iniciarse."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
@@ -5116,7 +5126,7 @@ msgstr ""
 "lo que ocurre cuando se encuentra un problema de dependencias complejo)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -5127,7 +5137,7 @@ msgstr ""
 "misma que la descrita en <literal>Debug::pkgDepCache::Marker</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
@@ -5136,13 +5146,13 @@ msgstr ""
 "vendors.list</filename>."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "Ejemplos"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -5152,7 +5162,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

+ 83 - 73
doc/po/fr.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 12:50+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-07-04 21:08-0600\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
@@ -1538,14 +1538,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "Fichiers"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -4257,13 +4257,23 @@ msgstr ""
 "<filename>/var/lib/apt/lists/</filename> seront ajoutés à la fin de la liste "
 "(après un « <literal>none</literal> » implicite)."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr "Les répertoires"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -4283,7 +4293,7 @@ msgstr ""
 "<filename>./</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4306,7 +4316,7 @@ msgstr ""
 "Cache</literal>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4321,7 +4331,7 @@ msgstr ""
 "fichier de configuration indiqué par la variable <envar>APT_CONFIG</envar>)."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4332,7 +4342,7 @@ msgstr ""
 "configuration est chargé."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4350,7 +4360,7 @@ msgstr ""
 "programmes correspondants."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4372,7 +4382,7 @@ msgstr ""
 "staging/var/lib/dpkg/status</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4390,12 +4400,12 @@ msgstr ""
 "est possible d'utiliser la syntaxe des expressions rationnelles."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr "APT et DSelect"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4406,7 +4416,7 @@ msgstr ""
 "<literal>DSelect</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4429,7 +4439,7 @@ msgstr ""
 "avant de récupérer de nouveaux paquets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
@@ -4438,7 +4448,7 @@ msgstr ""
 "&apt-get; lors de la phase d'installation."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
@@ -4447,7 +4457,7 @@ msgstr ""
 "&apt-get; lors de la phase de mise à jour."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
@@ -4457,12 +4467,12 @@ msgstr ""
 "d'erreur que l'on propose à l'utilisateur d'intervenir."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr "Méthode d'appel de &dpkg; par APT"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
@@ -4471,7 +4481,7 @@ msgstr ""
 "&dpkg; : elles figurent dans la section <literal>DPkg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4482,7 +4492,7 @@ msgstr ""
 "est passé comme un seul paramètre à &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4495,7 +4505,7 @@ msgstr ""
 "<filename>/bin/sh</filename> : APT s'arrête dès que l'une d'elles échoue."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4511,7 +4521,7 @@ msgstr ""
 "qu'il va installer, à raison d'un par ligne."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4527,7 +4537,7 @@ msgstr ""
 "literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
@@ -4536,7 +4546,7 @@ msgstr ""
 "le répertoire <filename>/</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
@@ -4546,14 +4556,14 @@ msgstr ""
 "créés."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr ""
 "utilisation des actions différées (« triggers ») de dpkg (et options "
 "associées)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4580,7 +4590,7 @@ msgstr ""
 "pendant la configuration des paquets."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4594,7 +4604,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4618,7 +4628,7 @@ msgstr ""
 "<placeholder type=\"literallayout\" id=\"0\"/>."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4641,7 +4651,7 @@ msgstr ""
 "options « unpack » et « remove »."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4671,7 +4681,7 @@ msgstr ""
 "configuré et donc éventuellement non amorçable."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4690,7 +4700,7 @@ msgstr ""
 "peut conserver l'option active."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4708,7 +4718,7 @@ msgstr ""
 "celles concernant le paquet en cours de traitement."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4726,7 +4736,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4752,12 +4762,12 @@ msgstr ""
 "id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr "Options « Periodic » et « Archive »"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4769,12 +4779,12 @@ msgstr ""
 "script <literal>/etc/cron.daily/apt</literal>, lancé quotidiennement."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr "Les options de débogage"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4792,7 +4802,7 @@ msgstr ""
 "peuvent tout de même être utiles :"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4803,7 +4813,7 @@ msgstr ""
 "upgrade, upgrade, install, remove et purge</literal>."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4815,7 +4825,7 @@ msgstr ""
 "superutilisateur."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4827,7 +4837,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
@@ -4836,12 +4846,12 @@ msgstr ""
 "type statfs dans les identifiants de CD."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr "Liste complète des options de débogage de APT :"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
@@ -4849,24 +4859,24 @@ msgstr ""
 "literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 "Affiche les informations concernant le téléchargement de paquets par FTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 "Affiche les informations concernant le téléchargement de paquets par HTTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr "Print information related to downloading packages using HTTPS."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
@@ -4875,7 +4885,7 @@ msgstr ""
 "cryptographiques avec <literal>gpg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
@@ -4884,14 +4894,14 @@ msgstr ""
 "stockées sur CD."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 "Décrit le processus de résolution des dépendances pour la construction de "
 "paquets source ( « build-dependencies » ) par &apt-get;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
@@ -4900,7 +4910,7 @@ msgstr ""
 "librairies d'<literal>apt</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4911,7 +4921,7 @@ msgstr ""
 "utilisés sur le système de fichier du CD."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
@@ -4921,14 +4931,14 @@ msgstr ""
 "temps."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 "Trace les ajouts et suppressions d'éléments de la queue globale de "
 "téléchargement."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
@@ -4938,7 +4948,7 @@ msgstr ""
 "éventuelles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
@@ -4948,7 +4958,7 @@ msgstr ""
 "éventuelles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
@@ -4958,7 +4968,7 @@ msgstr ""
 "place des fichiers complets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
@@ -4966,7 +4976,7 @@ msgstr ""
 "effectivement des téléchargements."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
@@ -4975,7 +4985,7 @@ msgstr ""
 "automatiquement, et la suppression des paquets inutiles."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -4990,7 +5000,7 @@ msgstr ""
 "de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -5026,7 +5036,7 @@ msgstr ""
 "de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
@@ -5035,7 +5045,7 @@ msgstr ""
 "paramètres sont séparés par des espaces."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
@@ -5045,7 +5055,7 @@ msgstr ""
 "fichier."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
@@ -5054,18 +5064,18 @@ msgstr ""
 "<literal>apt</literal> passe les paquets à &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr "Affiche, au lancement, la priorité de chaque liste de paquets."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
@@ -5074,7 +5084,7 @@ msgstr ""
 "concerne que les cas où un problème de dépendances complexe se présente)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -5085,7 +5095,7 @@ msgstr ""
 "est décrite dans <literal>Debug::pkgDepCache::Marker</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
@@ -5094,13 +5104,13 @@ msgstr ""
 "list</filename>."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "Exemples"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -5110,7 +5120,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

Разница между файлами не показана из-за своего большого размера
+ 1378 - 1083
doc/po/it.po


+ 83 - 73
doc/po/ja.po

@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.7.25.3\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 22:07+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-08-08 07:58+0900\n"
 "Last-Translator: KURASAWA Nozomu <nabetaro@debian.or.jp>\n"
 "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n"
@@ -1530,14 +1530,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "ファイル"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -4101,13 +4101,23 @@ msgstr ""
 "Translation ファイルを、リストの最後 (暗黙の \"<literal>none</literal>\" の"
 "後) に追加します。"
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr "ディレクトリ"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -4126,7 +4136,7 @@ msgstr ""
 "サブアイテムすべてに、前に付加するデフォルトディレクトリを含んでいます。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4147,7 +4157,7 @@ msgstr ""
 "様、<literal>Dir::Cache</literal> はデフォルトディレクトリを含んでいます。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4161,7 +4171,7 @@ msgstr ""
 "ファイルを指定された場合のみ、この設定の効果があります)"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4172,7 +4182,7 @@ msgstr ""
 "します。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4189,7 +4199,7 @@ msgstr ""
 "プログラムの場所を指定します。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4209,7 +4219,7 @@ msgstr ""
 "<filename>/tmp/staging/var/lib/dpkg/status</filename> から探します。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4225,12 +4235,12 @@ msgstr ""
 "フォルト値を見ればわかる通り、このパターンには正規表現を使用できます。"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr "DSelect での APT"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4241,7 +4251,7 @@ msgstr ""
 "ます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4262,7 +4272,7 @@ msgstr ""
 "パッケージをダウンロードする直前に行います。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
@@ -4271,7 +4281,7 @@ msgstr ""
 "されます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
@@ -4280,7 +4290,7 @@ msgstr ""
 "されます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
@@ -4289,12 +4299,12 @@ msgstr ""
 "します。デフォルトはエラーが発生した場合のみです。"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr "APT が &dpkg; を呼ぶ方法"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
@@ -4303,7 +4313,7 @@ msgstr ""
 "<literal>DPkg</literal> セクションにあります。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4313,7 +4323,7 @@ msgstr ""
 "なければなりません。また、各リストは単一の引数として &dpkg; に渡されます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4325,7 +4335,7 @@ msgstr ""
 "bin/sh</filename> を通して呼び出され、何か問題があれば APT が異常終了します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4340,7 +4350,7 @@ msgstr ""
 "マンドの標準入力に送ります。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4355,7 +4365,7 @@ msgstr ""
 "Install-Pkgs</literal> で与えられるコマンドです。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
@@ -4364,7 +4374,7 @@ msgstr ""
 "<filename>/</filename> です。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
@@ -4373,12 +4383,12 @@ msgstr ""
 "ます。デフォルトでは署名を無効にし、全バイナリを生成します。"
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr "dpkg トリガの使い方 (および関連オプション)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4402,7 +4412,7 @@ msgstr ""
 "(もしくはそれ以上) の時間 100% のままとなり、進捗レポートを壊してしまいます。"
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4416,7 +4426,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4439,7 +4449,7 @@ msgstr ""
 "\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4459,7 +4469,7 @@ msgstr ""
 "在 APT は、このフラグを、展開呼び出しや削除呼び出しにも追加します。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4486,7 +4496,7 @@ msgstr ""
 "能性があるからです。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4503,7 +4513,7 @@ msgstr ""
 "では、最後以外のすべての実行で、無効にできます。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4518,7 +4528,7 @@ msgstr ""
 "ことに注意してください。"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4536,7 +4546,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4559,12 +4569,12 @@ msgstr ""
 "\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr "Periodic オプションと Archives オプション"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4577,12 +4587,12 @@ msgstr ""
 "トは、このスクリプトの先頭を参照してください。"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr "デバッグオプション"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4598,7 +4608,7 @@ msgstr ""
 "のオプションは興味がないでしょうが、以下のものは興味を引くかもしれません。"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4609,7 +4619,7 @@ msgstr ""
 "にします。"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4620,7 +4630,7 @@ msgstr ""
 "literal>) を行う場合に使用します。"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4632,7 +4642,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
@@ -4641,34 +4651,34 @@ msgstr ""
 "ないようにします。"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr "以下は apt に対するデバッグオプションのすべてです。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 "<literal>cdrom://</literal> ソースへのアクセスに関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr "FTP を用いたパッケージのダウンロードに関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr "HTTP を用いたパッケージのダウンロードに関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr "HTTPS を用いたパッケージのダウンロードに関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
@@ -4676,7 +4686,7 @@ msgstr ""
 "<literal>gpg</literal> を用いた暗号署名の検証に関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
@@ -4685,12 +4695,12 @@ msgstr ""
 "します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr "&apt-get; での構築依存関係解決のプロセスを説明します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
@@ -4698,7 +4708,7 @@ msgstr ""
 "<literal>apt</literal> ライブラリが生成した、暗号化ハッシュを出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4708,7 +4718,7 @@ msgstr ""
 "システムにある使用済・未使用ブロックの数からの情報を含めないようにします。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
@@ -4717,13 +4727,13 @@ msgstr ""
 "<quote><literal>apt-get update</literal></quote> を実行できるようになります。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 "グローバルダウンロードキューに対する項目の追加・削除の際にログを出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
@@ -4732,7 +4742,7 @@ msgstr ""
 "ジやエラーを出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
@@ -4741,7 +4751,7 @@ msgstr ""
 "します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
@@ -4750,14 +4760,14 @@ msgstr ""
 "リストへのパッチ適用に関する情報を出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
 "実際のダウンロードを行う際の、サブプロセスとのやりとりをログに出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
@@ -4766,7 +4776,7 @@ msgstr ""
 "に出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -4781,7 +4791,7 @@ msgstr ""
 "路に対応しています。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -4810,7 +4820,7 @@ msgstr ""
 "ます。<literal>section</literal> はパッケージが現れるセクション名です。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
@@ -4819,7 +4829,7 @@ msgstr ""
 "切られます。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
@@ -4828,7 +4838,7 @@ msgstr ""
 "を解析中に発生したエラーを出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
@@ -4837,18 +4847,18 @@ msgstr ""
 "のトレースを生成します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr "&dpkg; を呼び出す際に、実行手順を追跡した状態メッセージを出力します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr "起動時の各パッケージの優先度を表示します。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
@@ -4857,7 +4867,7 @@ msgstr ""
 "した場合にのみ、適用されます)。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -4868,7 +4878,7 @@ msgstr ""
 "説明したものと同じです。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
@@ -4877,13 +4887,13 @@ msgstr ""
 "します。"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "サンプル"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -4893,7 +4903,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

+ 83 - 73
doc/po/pl.po

@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.9.7.3\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 12:50+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-07-28 21:59+0200\n"
 "Last-Translator: Robert Luberda <robert@debian.org>\n"
 "Language-Team: Polish <manpages-pl-list@lists.sourceforge.net>\n"
@@ -1613,14 +1613,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "Pliki"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -3981,13 +3981,23 @@ msgid ""
 "added to the end of the list (after an implicit \"<literal>none</literal>\")."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -3999,7 +4009,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4012,7 +4022,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4022,7 +4032,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4030,7 +4040,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4041,7 +4051,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4054,7 +4064,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4065,12 +4075,12 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4078,7 +4088,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4091,40 +4101,40 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4132,7 +4142,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4141,7 +4151,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4151,7 +4161,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4161,26 +4171,26 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4195,7 +4205,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4209,7 +4219,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4223,7 +4233,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4236,7 +4246,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4253,7 +4263,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4264,7 +4274,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4274,7 +4284,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4292,7 +4302,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4306,12 +4316,12 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4320,13 +4330,13 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 #, fuzzy
 msgid "Debug options"
 msgstr "opcje"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4337,7 +4347,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4345,7 +4355,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4353,7 +4363,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4363,7 +4373,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 #, fuzzy
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
@@ -4373,59 +4383,59 @@ msgstr ""
 "in CDROM IDs."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4433,53 +4443,53 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -4489,7 +4499,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -4507,46 +4517,46 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -4554,20 +4564,20 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "Przykłady"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -4575,7 +4585,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

+ 83 - 73
doc/po/pt.po

@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt 0.9.7.1\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 22:07+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2012-09-03 01:53+0100\n"
 "Last-Translator: Américo Monteiro <a_monteiro@netcabo.pt>\n"
 "Language-Team: Portuguese <l10n@debianpt.org>\n"
@@ -1566,14 +1566,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr "Ficheiros"
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 msgid "See Also"
@@ -4243,13 +4243,23 @@ msgstr ""
 "filename> serão adicionados ao final da lista (após um \"<literal>none</"
 "literal>\" implícito)."
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr "Directórios"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -4268,7 +4278,7 @@ msgstr ""
 "items que não começam com <filename>/</filename> ou <filename>./</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -4290,7 +4300,7 @@ msgstr ""
 "literal>"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -4305,7 +4315,7 @@ msgstr ""
 "ficheiro de configuração especificado por <envar>APT_CONFIG</envar>)."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -4316,7 +4326,7 @@ msgstr ""
 "estar feito então é carregado o ficheiro de configuração principal."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -4334,7 +4344,7 @@ msgstr ""
 "respectivos programas."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -4355,7 +4365,7 @@ msgstr ""
 "procurado em <filename>/tmp/staging/var/lib/dpkg/status</filename>."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -4373,12 +4383,12 @@ msgstr ""
 "expressão regular."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr "APT em DSelect"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -4389,7 +4399,7 @@ msgstr ""
 "<literal>DSelect</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -4411,7 +4421,7 @@ msgstr ""
 "pacotes."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
@@ -4420,7 +4430,7 @@ msgstr ""
 "comandos quando é corrido para a fase de instalação."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
@@ -4429,7 +4439,7 @@ msgstr ""
 "comandos quando é executado para a fase de actualização."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
@@ -4438,12 +4448,12 @@ msgstr ""
 "continuar. A predefinição é avisar apenas em caso de erro."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr "Como o APT chama o &dpkg;"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
@@ -4452,7 +4462,7 @@ msgstr ""
 "&dpkg;. Estas estão na secção <literal>DPkg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -4463,7 +4473,7 @@ msgstr ""
 "um argumento único ao &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4476,7 +4486,7 @@ msgstr ""
 "bin/sh</filename>, caso algum deles falhe, o APT irá abortar."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -4492,7 +4502,7 @@ msgstr ""
 "instalar, um por cada linha na entrada standard."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -4507,7 +4517,7 @@ msgstr ""
 "dado ao <literal>Pre-Install-Pkgs</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
@@ -4516,7 +4526,7 @@ msgstr ""
 "predefinição é <filename>/</filename>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
@@ -4525,12 +4535,12 @@ msgstr ""
 "predefinição é desactivar a assinatura e produzir todos os binários."
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr "Utilização trigger do dpkg (e opções relacionadas)"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -4556,7 +4566,7 @@ msgstr ""
 "100% enquanto na realidade está a configurar todos os pacotes."
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -4570,7 +4580,7 @@ msgstr ""
 "DPkg::TriggersPending \"true\";"
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -4594,7 +4604,7 @@ msgstr ""
 "\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -4616,7 +4626,7 @@ msgstr ""
 "chamadas unpack e remove."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -4646,7 +4656,7 @@ msgstr ""
 "arrancar."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -4664,7 +4674,7 @@ msgstr ""
 "esta opção em todas excepto na última execução."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -4680,7 +4690,7 @@ msgstr ""
 "configurar este pacote."
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -4698,7 +4708,7 @@ msgstr ""
 "};"
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -4722,12 +4732,12 @@ msgstr ""
 "predefinidos. <placeholder type=\"literallayout\" id=\"0\"/>"
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr "Opções Periodic e Archives"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -4740,12 +4750,12 @@ msgstr ""
 "Veja o cabeçalho deste script para uma breve documentação das suas opções."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr "Opções de depuração"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -4762,7 +4772,7 @@ msgstr ""
 "interesse para o utilizador normal, mas algumas podem ter:"
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -4773,7 +4783,7 @@ msgstr ""
 "remove, purge</literal>."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -4784,7 +4794,7 @@ msgstr ""
 "<literal>apt-get -s install</literal>) como um utilizador não root."
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -4796,7 +4806,7 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
@@ -4805,12 +4815,12 @@ msgstr ""
 "IDs de CD-ROM."
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr "Segue-se uma lista completa de opções de depuração para o apt."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
@@ -4818,25 +4828,25 @@ msgstr ""
 "literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 "Escreve informação relacionada com o descarregamento de pacotes usando FTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 "Escreve informação relacionada com o descarregamento de pacotes usando HTTP."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr ""
 "Escreve informação relacionada com o descarregamento de pacotes usando HTTPS."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
@@ -4845,7 +4855,7 @@ msgstr ""
 "criptográficas usando <literal>gpg</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
@@ -4854,13 +4864,13 @@ msgstr ""
 "armazenados em CD-ROMs."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 "Descreve os processos de resolver dependências de compilação no &apt-get;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
@@ -4869,7 +4879,7 @@ msgstr ""
 "<literal>apt</literal>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -4880,7 +4890,7 @@ msgstr ""
 "para um CD-ROM."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
@@ -4890,14 +4900,14 @@ msgstr ""
 "literal></quote> ao mesmo tempo."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 "Regista no log quando os items são adicionados ou removidos da fila de "
 "download global."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
@@ -4906,7 +4916,7 @@ msgstr ""
 "checksums e assinaturas criptográficas dos ficheiros descarregados."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
@@ -4916,7 +4926,7 @@ msgstr ""
 "pacote."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
@@ -4925,7 +4935,7 @@ msgstr ""
 "do apt quando se descarrega diffs de índice em vez de índices completos."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
@@ -4933,7 +4943,7 @@ msgstr ""
 "downloads."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
@@ -4942,7 +4952,7 @@ msgstr ""
 "de pacotes e com a remoção de pacotes não utilizados."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -4957,7 +4967,7 @@ msgstr ""
 "literal>; veja <literal>Debug::pkgProblemResolver</literal> para isso."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -4988,7 +4998,7 @@ msgstr ""
 "pacote aparece."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
@@ -4998,7 +5008,7 @@ msgstr ""
 "único."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
@@ -5007,7 +5017,7 @@ msgstr ""
 "estado e quaisquer erros encontrados enquanto os analisa."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
@@ -5016,7 +5026,7 @@ msgstr ""
 "literal> deve passar os pacotes ao &dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr ""
@@ -5024,12 +5034,12 @@ msgstr ""
 "&dpkg;."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr "Escreve a prioridade da cada lista de pacote no arranque."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
@@ -5038,7 +5048,7 @@ msgstr ""
 "acontece quando é encontrado um problema de dependências complexo)."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -5049,7 +5059,7 @@ msgstr ""
 "mesma que é descrita em <literal>Debug::pkgDepCache::Marker</literal>"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
@@ -5058,13 +5068,13 @@ msgstr ""
 "vendors.list</filename>."
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 msgid "Examples"
 msgstr "Exemplos"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -5074,7 +5084,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-cache;, &apt-config;, &apt-preferences;."
 

+ 83 - 73
doc/po/pt_BR.po

@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: apt\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
-"POT-Creation-Date: 2012-08-30 12:50+0300\n"
+"POT-Creation-Date: 2013-04-02 15:13+0300\n"
 "PO-Revision-Date: 2004-09-20 17:02+0000\n"
 "Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
 "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n"
@@ -1091,14 +1091,14 @@ msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:518 apt-cache.8.xml:343 apt-key.8.xml:174 apt-mark.8.xml:125
-#: apt.conf.5.xml:1156 apt_preferences.5.xml:698
+#: apt.conf.5.xml:1168 apt_preferences.5.xml:698
 msgid "Files"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
 #: apt-get.8.xml:528 apt-cache.8.xml:350 apt-key.8.xml:195 apt-mark.8.xml:131
 #: apt-secure.8.xml:191 apt-cdrom.8.xml:144 apt-config.8.xml:109
-#: apt.conf.5.xml:1162 apt_preferences.5.xml:705 sources.list.5.xml:252
+#: apt.conf.5.xml:1174 apt_preferences.5.xml:705 sources.list.5.xml:252
 #: apt-extracttemplates.1.xml:70 apt-sortpkgs.1.xml:63
 #: apt-ftparchive.1.xml:607
 #, fuzzy
@@ -2975,13 +2975,23 @@ msgid ""
 "added to the end of the list (after an implicit \"<literal>none</literal>\")."
 msgstr ""
 
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:559
+msgid "When downloading, force to use only the IPv4 protocol."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: apt.conf.5.xml:565
+msgid "When downloading, force to use only the IPv6 protocol."
+msgstr ""
+
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:560
+#: apt.conf.5.xml:572
 msgid "Directories"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:562
+#: apt.conf.5.xml:574
 msgid ""
 "The <literal>Dir::State</literal> section has directories that pertain to "
 "local state information. <literal>lists</literal> is the directory to place "
@@ -2993,7 +3003,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:569
+#: apt.conf.5.xml:581
 msgid ""
 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
 "information, such as the two package caches <literal>srcpkgcache</literal> "
@@ -3006,7 +3016,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:578
+#: apt.conf.5.xml:590
 msgid ""
 "<literal>Dir::Etc</literal> contains the location of configuration files, "
 "<literal>sourcelist</literal> gives the location of the sourcelist and "
@@ -3016,7 +3026,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:584
+#: apt.conf.5.xml:596
 msgid ""
 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
 "in lexical order from the directory specified. After this is done then the "
@@ -3024,7 +3034,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:588
+#: apt.conf.5.xml:600
 msgid ""
 "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::"
 "Bin::Methods</literal> specifies the location of the method handlers and "
@@ -3035,7 +3045,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:596
+#: apt.conf.5.xml:608
 msgid ""
 "The configuration item <literal>RootDir</literal> has a special meaning.  If "
 "set, all paths in <literal>Dir::</literal> will be relative to "
@@ -3048,7 +3058,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:609
+#: apt.conf.5.xml:621
 msgid ""
 "The <literal>Ignore-Files-Silently</literal> list can be used to specify "
 "which files APT should silently ignore while parsing the files in the "
@@ -3059,12 +3069,12 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:618
+#: apt.conf.5.xml:630
 msgid "APT in DSelect"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:620
+#: apt.conf.5.xml:632
 msgid ""
 "When APT is used as a &dselect; method several configuration directives "
 "control the default behavior. These are in the <literal>DSelect</literal> "
@@ -3072,7 +3082,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:625
+#: apt.conf.5.xml:637
 msgid ""
 "Cache Clean mode; this value may be one of <literal>always</literal>, "
 "<literal>prompt</literal>, <literal>auto</literal>, <literal>pre-auto</"
@@ -3085,40 +3095,40 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:639
+#: apt.conf.5.xml:651
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the install phase."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:644
+#: apt.conf.5.xml:656
 msgid ""
 "The contents of this variable are passed to &apt-get; as command line "
 "options when it is run for the update phase."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:649
+#: apt.conf.5.xml:661
 msgid ""
 "If true the [U]pdate operation in &dselect; will always prompt to continue.  "
 "The default is to prompt only on error."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:655
+#: apt.conf.5.xml:667
 msgid "How APT calls &dpkg;"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:656
+#: apt.conf.5.xml:668
 msgid ""
 "Several configuration directives control how APT invokes &dpkg;. These are "
 "in the <literal>DPkg</literal> section."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:661
+#: apt.conf.5.xml:673
 msgid ""
 "This is a list of options to pass to &dpkg;. The options must be specified "
 "using the list notation and each list item is passed as a single argument to "
@@ -3126,7 +3136,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:667
+#: apt.conf.5.xml:679
 msgid ""
 "This is a list of shell commands to run before/after invoking &dpkg;.  Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -3135,7 +3145,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:674
+#: apt.conf.5.xml:686
 msgid ""
 "This is a list of shell commands to run before invoking &dpkg;. Like "
 "<literal>options</literal> this must be specified in list notation. The "
@@ -3145,7 +3155,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:680
+#: apt.conf.5.xml:692
 msgid ""
 "Version 2 of this protocol dumps more information, including the protocol "
 "version, the APT configuration space and the packages, files and versions "
@@ -3155,26 +3165,26 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:688
+#: apt.conf.5.xml:700
 msgid ""
 "APT chdirs to this directory before invoking &dpkg;, the default is "
 "<filename>/</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:693
+#: apt.conf.5.xml:705
 msgid ""
 "These options are passed to &dpkg-buildpackage; when compiling packages; the "
 "default is to disable signing and produce all binaries."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><title>
-#: apt.conf.5.xml:698
+#: apt.conf.5.xml:710
 msgid "dpkg trigger usage (and related options)"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:699
+#: apt.conf.5.xml:711
 msgid ""
 "APT can call &dpkg; in such a way as to let it make aggressive use of "
 "triggers over multiple calls of &dpkg;. Without further options &dpkg; will "
@@ -3189,7 +3199,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
-#: apt.conf.5.xml:714
+#: apt.conf.5.xml:726
 #, no-wrap
 msgid ""
 "DPkg::NoTriggers \"true\";\n"
@@ -3199,7 +3209,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><para>
-#: apt.conf.5.xml:708
+#: apt.conf.5.xml:720
 msgid ""
 "Note that it is not guaranteed that APT will support these options or that "
 "these options will not cause (big) trouble in the future. If you have "
@@ -3213,7 +3223,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:721
+#: apt.conf.5.xml:733
 msgid ""
 "Add the no triggers flag to all &dpkg; calls (except the ConfigurePending "
 "call).  See &dpkg; if you are interested in what this actually means. In "
@@ -3226,7 +3236,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:729
+#: apt.conf.5.xml:741
 msgid ""
 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
 "and \"<literal>no</literal>\".  The default value is \"<literal>all</literal>"
@@ -3243,7 +3253,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:744
+#: apt.conf.5.xml:756
 msgid ""
 "If this option is set APT will call <command>dpkg --configure --pending</"
 "command> to let &dpkg; handle all required configurations and triggers. This "
@@ -3254,7 +3264,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:751
+#: apt.conf.5.xml:763
 msgid ""
 "Useful for the <literal>smart</literal> configuration as a package which has "
 "pending triggers is not considered as <literal>installed</literal>, and "
@@ -3264,7 +3274,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
-#: apt.conf.5.xml:764
+#: apt.conf.5.xml:776
 #, no-wrap
 msgid ""
 "OrderList::Score {\n"
@@ -3276,7 +3286,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:757
+#: apt.conf.5.xml:769
 msgid ""
 "Essential packages (and their dependencies) should be configured immediately "
 "after unpacking. It is a good idea to do this quite early in the upgrade "
@@ -3290,12 +3300,12 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:777
+#: apt.conf.5.xml:789
 msgid "Periodic and Archives options"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:778
+#: apt.conf.5.xml:790
 msgid ""
 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
 "of options configure behavior of apt periodic updates, which is done by the "
@@ -3304,12 +3314,12 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:786
+#: apt.conf.5.xml:798
 msgid "Debug options"
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:788
+#: apt.conf.5.xml:800
 msgid ""
 "Enabling options in the <literal>Debug::</literal> section will cause "
 "debugging information to be sent to the standard error stream of the program "
@@ -3320,7 +3330,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:799
+#: apt.conf.5.xml:811
 msgid ""
 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
 "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</"
@@ -3328,7 +3338,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:807
+#: apt.conf.5.xml:819
 msgid ""
 "<literal>Debug::NoLocking</literal> disables all file locking.  This can be "
 "used to run some operations (for instance, <literal>apt-get -s install</"
@@ -3336,7 +3346,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:816
+#: apt.conf.5.xml:828
 msgid ""
 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
 "time that <literal>apt</literal> invokes &dpkg;."
@@ -3346,66 +3356,66 @@ msgstr ""
 #. 	   motivating example, except I haven't a clue why you'd want
 #. 	   to do this. 
 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
-#: apt.conf.5.xml:824
+#: apt.conf.5.xml:836
 msgid ""
 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
 "in CD-ROM IDs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:834
+#: apt.conf.5.xml:846
 msgid "A full list of debugging options to apt follows."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:843
+#: apt.conf.5.xml:855
 msgid ""
 "Print information related to accessing <literal>cdrom://</literal> sources."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:854
+#: apt.conf.5.xml:866
 msgid "Print information related to downloading packages using FTP."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:865
+#: apt.conf.5.xml:877
 msgid "Print information related to downloading packages using HTTP."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:876
+#: apt.conf.5.xml:888
 msgid "Print information related to downloading packages using HTTPS."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:887
+#: apt.conf.5.xml:899
 msgid ""
 "Print information related to verifying cryptographic signatures using "
 "<literal>gpg</literal>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:898
+#: apt.conf.5.xml:910
 msgid ""
 "Output information about the process of accessing collections of packages "
 "stored on CD-ROMs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:908
+#: apt.conf.5.xml:920
 msgid "Describes the process of resolving build-dependencies in &apt-get;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:918
+#: apt.conf.5.xml:930
 msgid ""
 "Output each cryptographic hash that is generated by the <literal>apt</"
 "literal> libraries."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:928
+#: apt.conf.5.xml:940
 msgid ""
 "Do not include information from <literal>statfs</literal>, namely the number "
 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
@@ -3413,53 +3423,53 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:939
+#: apt.conf.5.xml:951
 msgid ""
 "Disable all file locking.  For instance, this will allow two instances of "
 "<quote><literal>apt-get update</literal></quote> to run at the same time."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:951
+#: apt.conf.5.xml:963
 msgid "Log when items are added to or removed from the global download queue."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:961
+#: apt.conf.5.xml:973
 msgid ""
 "Output status messages and errors related to verifying checksums and "
 "cryptographic signatures of downloaded files."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:971
+#: apt.conf.5.xml:983
 msgid ""
 "Output information about downloading and applying package index list diffs, "
 "and errors relating to package index list diffs."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:983
+#: apt.conf.5.xml:995
 msgid ""
 "Output information related to patching apt package lists when downloading "
 "index diffs instead of full indices."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:994
+#: apt.conf.5.xml:1006
 msgid ""
 "Log all interactions with the sub-processes that actually perform downloads."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1005
+#: apt.conf.5.xml:1017
 msgid ""
 "Log events related to the automatically-installed status of packages and to "
 "the removal of unused packages."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1015
+#: apt.conf.5.xml:1027
 msgid ""
 "Generate debug messages describing which packages are being automatically "
 "installed to resolve dependencies.  This corresponds to the initial auto-"
@@ -3469,7 +3479,7 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1029
+#: apt.conf.5.xml:1041
 msgid ""
 "Generate debug messages describing which packages are marked as keep/install/"
 "remove while the ProblemResolver does his work.  Each addition or deletion "
@@ -3487,46 +3497,46 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1050
+#: apt.conf.5.xml:1062
 msgid ""
 "When invoking &dpkg;, output the precise command line with which it is being "
 "invoked, with arguments separated by a single space character."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1061
+#: apt.conf.5.xml:1073
 msgid ""
 "Output all the data received from &dpkg; on the status file descriptor and "
 "any errors encountered while parsing it."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1072
+#: apt.conf.5.xml:1084
 msgid ""
 "Generate a trace of the algorithm that decides the order in which "
 "<literal>apt</literal> should pass packages to &dpkg;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1084
+#: apt.conf.5.xml:1096
 msgid ""
 "Output status messages tracing the steps performed when invoking &dpkg;."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1095
+#: apt.conf.5.xml:1107
 msgid "Output the priority of each package list on startup."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1105
+#: apt.conf.5.xml:1117
 msgid ""
 "Trace the execution of the dependency resolver (this applies only to what "
 "happens when a complex dependency problem is encountered)."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1116
+#: apt.conf.5.xml:1128
 msgid ""
 "Display a list of all installed packages with their calculated score used by "
 "the pkgProblemResolver. The description of the package is the same as "
@@ -3534,21 +3544,21 @@ msgid ""
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
-#: apt.conf.5.xml:1128
+#: apt.conf.5.xml:1140
 msgid ""
 "Print information about the vendors read from <filename>/etc/apt/vendors."
 "list</filename>."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><title>
-#: apt.conf.5.xml:1150 apt_preferences.5.xml:545 sources.list.5.xml:211
+#: apt.conf.5.xml:1162 apt_preferences.5.xml:545 sources.list.5.xml:211
 #: apt-ftparchive.1.xml:596
 #, fuzzy
 msgid "Examples"
 msgstr "Exemplos"
 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1151
+#: apt.conf.5.xml:1163
 msgid ""
 "&configureindex; is a configuration file showing example values for all "
 "possible options."
@@ -3556,7 +3566,7 @@ msgstr ""
 
 #.  ? reading apt.conf 
 #. type: Content of: <refentry><refsect1><para>
-#: apt.conf.5.xml:1163
+#: apt.conf.5.xml:1175
 #, fuzzy
 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
 msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;"

+ 46 - 59
ftparchive/writer.cc

@@ -20,6 +20,8 @@
 #include <apt-pkg/md5.h>
 #include <apt-pkg/hashes.h>
 #include <apt-pkg/deblistparser.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/gpgv.h>
 
 #include <sys/types.h>
 #include <unistd.h>
@@ -601,77 +603,62 @@ SourcesWriter::SourcesWriter(string const &DB, string const &BOverrides,string c
 // ---------------------------------------------------------------------
 /* */
 bool SourcesWriter::DoPackage(string FileName)
-{      
+{
    // Open the archive
-   FileFd F(FileName,FileFd::ReadOnly);
-   if (_error->PendingError() == true)
+   FileFd F;
+   if (OpenMaybeClearSignedFile(FileName, F) == false)
       return false;
-   
-   // Stat the file for later
-   struct stat St;
-   if (fstat(F.Fd(),&St) != 0)
-      return _error->Errno("fstat","Failed to stat %s",FileName.c_str());
 
-   if (St.st_size > 128*1024)
+   unsigned long long const FSize = F.FileSize();
+   //FIXME: do we really need to enforce a maximum size of the dsc file?
+   if (FSize > 128*1024)
       return _error->Error("DSC file '%s' is too large!",FileName.c_str());
-         
-   if (BufSize < (unsigned long long)St.st_size+1)
+
+   if (BufSize < FSize + 2)
    {
-      BufSize = St.st_size+1;
-      Buffer = (char *)realloc(Buffer,St.st_size+1);
+      BufSize = FSize + 2;
+      Buffer = (char *)realloc(Buffer , BufSize);
    }
-   
-   if (F.Read(Buffer,St.st_size) == false)
+
+   if (F.Read(Buffer, FSize) == false)
       return false;
 
+   // Stat the file for later (F might be clearsigned, so not F.FileSize())
+   struct stat St;
+   if (stat(FileName.c_str(), &St) != 0)
+      return _error->Errno("fstat","Failed to stat %s",FileName.c_str());
+
    // Hash the file
    char *Start = Buffer;
-   char *BlkEnd = Buffer + St.st_size;
-
-   MD5Summation MD5;
-   SHA1Summation SHA1;
-   SHA256Summation SHA256;
-   SHA256Summation SHA512;
-
-   if (DoMD5 == true)
-      MD5.Add((unsigned char *)Start,BlkEnd - Start);
-   if (DoSHA1 == true)
-      SHA1.Add((unsigned char *)Start,BlkEnd - Start);
-   if (DoSHA256 == true)
-      SHA256.Add((unsigned char *)Start,BlkEnd - Start);
-   if (DoSHA512 == true)
-      SHA512.Add((unsigned char *)Start,BlkEnd - Start);
+   char *BlkEnd = Buffer + FSize;
 
-   // Add an extra \n to the end, just in case
-   *BlkEnd++ = '\n';
-   
-   /* Remove the PGP trailer. Some .dsc's have this without a blank line 
-      before */
-   const char *Key = "-----BEGIN PGP SIGNATURE-----";
-   for (char *MsgEnd = Start; MsgEnd < BlkEnd - strlen(Key) -1; MsgEnd++)
+   Hashes DscHashes;
+   if (FSize == (unsigned long long) St.st_size)
    {
-      if (*MsgEnd == '\n' && strncmp(MsgEnd+1,Key,strlen(Key)) == 0)
-      {
-	 MsgEnd[1] = '\n';
-	 break;
-      }      
+      if (DoMD5 == true)
+	 DscHashes.MD5.Add((unsigned char *)Start,BlkEnd - Start);
+      if (DoSHA1 == true)
+	 DscHashes.SHA1.Add((unsigned char *)Start,BlkEnd - Start);
+      if (DoSHA256 == true)
+	 DscHashes.SHA256.Add((unsigned char *)Start,BlkEnd - Start);
+      if (DoSHA512 == true)
+	 DscHashes.SHA512.Add((unsigned char *)Start,BlkEnd - Start);
    }
-   
-   /* Read records until we locate the Source record. This neatly skips the
-      GPG header (which is RFC822 formed) without any trouble. */
-   pkgTagSection Tags;
-   do
+   else
    {
-      unsigned Pos;
-      if (Tags.Scan(Start,BlkEnd - Start) == false)
-	 return _error->Error("Could not find a record in the DSC '%s'",FileName.c_str());
-      if (Tags.Find("Source",Pos) == true)
-	 break;
-      Start += Tags.size();
+      FileFd DscFile(FileName, FileFd::ReadOnly);
+      DscHashes.AddFD(DscFile, St.st_size, DoMD5, DoSHA1, DoSHA256, DoSHA512);
    }
-   while (1);
+
+   // Add extra \n to the end, just in case (as in clearsigned they are missing)
+   *BlkEnd++ = '\n';
+   *BlkEnd++ = '\n';
+
+   pkgTagSection Tags;
+   if (Tags.Scan(Start,BlkEnd - Start) == false || Tags.Exists("Source") == false)
+      return _error->Error("Could not find a record in the DSC '%s'",FileName.c_str());
    Tags.Trim();
-      
+
    // Lookup the overide information, finding first the best priority.
    string BestPrio;
    string Bins = Tags.FindS("Binary");
@@ -735,23 +722,23 @@ bool SourcesWriter::DoPackage(string FileName)
    string const strippedName = flNotDir(FileName);
    std::ostringstream ostreamFiles;
    if (DoMD5 == true && Tags.Exists("Files"))
-      ostreamFiles << "\n " << string(MD5.Result()) << " " << St.st_size << " "
+      ostreamFiles << "\n " << string(DscHashes.MD5.Result()) << " " << St.st_size << " "
 		   << strippedName << "\n " << Tags.FindS("Files");
    string const Files = ostreamFiles.str();
 
    std::ostringstream ostreamSha1;
    if (DoSHA1 == true && Tags.Exists("Checksums-Sha1"))
-      ostreamSha1 << "\n " << string(SHA1.Result()) << " " << St.st_size << " "
+      ostreamSha1 << "\n " << string(DscHashes.SHA1.Result()) << " " << St.st_size << " "
 		   << strippedName << "\n " << Tags.FindS("Checksums-Sha1");
 
    std::ostringstream ostreamSha256;
    if (DoSHA256 == true && Tags.Exists("Checksums-Sha256"))
-      ostreamSha256 << "\n " << string(SHA256.Result()) << " " << St.st_size << " "
+      ostreamSha256 << "\n " << string(DscHashes.SHA256.Result()) << " " << St.st_size << " "
 		   << strippedName << "\n " << Tags.FindS("Checksums-Sha256");
 
    std::ostringstream ostreamSha512;
    if (DoSHA512 == true && Tags.Exists("Checksums-Sha512"))
-      ostreamSha512 << "\n " << string(SHA512.Result()) << " " << St.st_size << " "
+      ostreamSha512 << "\n " << string(DscHashes.SHA512.Result()) << " " << St.st_size << " "
 		   << strippedName << "\n " << Tags.FindS("Checksums-Sha512");
 
    // Strip the DirStrip prefix from the FileName and add the PathPrefix

+ 11 - 0
methods/connect.cc

@@ -17,6 +17,7 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/strutl.h>
 #include <apt-pkg/acquire-method.h>
+#include <apt-pkg/configuration.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -167,6 +168,13 @@ bool Connect(std::string Host,int Port,const char *Service,int DefPort,int &Fd,
       Hints.ai_flags = AI_ADDRCONFIG;
       Hints.ai_protocol = 0;
       
+      if(_config->FindB("Acquire::ForceIPv4", false) == true)
+         Hints.ai_family = AF_INET;
+      else if(_config->FindB("Acquire::ForceIPv6", false) == true)
+         Hints.ai_family = AF_INET6;
+      else
+         Hints.ai_family = AF_UNSPEC;
+
       // if we couldn't resolve the host before, we don't try now
       if(bad_addr.find(Host) != bad_addr.end()) 
 	 return _error->Error(_("Could not resolve '%s'"),Host.c_str());
@@ -197,6 +205,9 @@ bool Connect(std::string Host,int Port,const char *Service,int DefPort,int &Fd,
 	       return _error->Error(_("Temporary failure resolving '%s'"),
 				    Host.c_str());
 	    }
+	    if (Res == EAI_SYSTEM)
+	       return _error->Errno("getaddrinfo", _("System error resolving '%s:%s'"),
+                                      Host.c_str(),ServStr);
 	    return _error->Error(_("Something wicked happened resolving '%s:%s' (%i - %s)"),
 				 Host.c_str(),ServStr,Res,gai_strerror(Res));
 	 }

+ 2 - 13
methods/gpgv.cc

@@ -6,6 +6,7 @@
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/indexcopy.h>
 #include <apt-pkg/configuration.h>
+#include <apt-pkg/gpgv.h>
 
 #include <utime.h>
 #include <stdio.h>
@@ -70,19 +71,7 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
    if (pid < 0)
       return string("Couldn't spawn new process") + strerror(errno);
    else if (pid == 0)
-   {
-      _error->PushToStack();
-      bool const success = SigVerify::RunGPGV(outfile, file, 3, fd);
-      if (success == false)
-      {
-	 string errmsg;
-	 _error->PopMessage(errmsg);
-	 _error->RevertToStack();
-	 return errmsg;
-      }
-      _error->RevertToStack();
-      exit(111);
-   }
+      ExecGPGV(outfile, file, 3, fd);
    close(fd[1]);
 
    FILE *pipein = fdopen(fd[0], "r");

+ 0 - 2
methods/rfc2553emu.cc

@@ -154,11 +154,9 @@ int getaddrinfo(const char *nodename, const char *servname,
 /* */
 void freeaddrinfo(struct addrinfo *ai)
 {
-   struct addrinfo *Tmp;
    while (ai != 0)
    {
       free(ai->ai_addr);
-      Tmp = ai;
       ai = ai->ai_next;
       free(ai);
    }

+ 4 - 0
po/ar.po

@@ -3203,6 +3203,10 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... تمّ"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "فتح ملف التهيئة %s"

+ 8 - 0
po/ast.po

@@ -3476,6 +3476,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non bloquiáu"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Daqué raro asocedió resolviendo '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Fecho"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Saltando'l ficheru non esistente %s"
 

+ 8 - 0
po/bg.po

@@ -3536,6 +3536,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Без заключване"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Нещо лошо се случи при намирането на IP адреса на „%s:%s“ (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Готово"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Пропускане на несъществуващ файл %s"
 

+ 8 - 1
po/ca.po

@@ -2425,7 +2425,7 @@ msgstr "%c%s… Fet"
 
 #: apt-pkg/contrib/progress.cc:179
 msgid "..."
-msgstr ""
+msgstr ""
 
 #. Print the spinner
 #: apt-pkg/contrib/progress.cc:195
@@ -3521,6 +3521,13 @@ msgstr ""
 msgid "Not locked"
 msgstr "No blocat"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Ha passat alguna cosa estranya en resoldre «%s:%s» (%i - %s)"
+
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s… %u%%"
+
 #~ msgid "decompressor"
 #~ msgstr "decompressor"
 

+ 8 - 1
po/cs.po

@@ -2403,7 +2403,7 @@ msgstr "%c%s… Hotovo"
 
 #: apt-pkg/contrib/progress.cc:179
 msgid "..."
-msgstr ""
+msgstr ""
 
 #. Print the spinner
 #: apt-pkg/contrib/progress.cc:195
@@ -3459,6 +3459,13 @@ msgstr "dpkg byl přerušen, pro nápravu problému musíte ručně spustit „%
 msgid "Not locked"
 msgstr "Není uzamčen"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Něco hodně ošklivého se přihodilo při překladu „%s:%s“ (%i - %s)"
+
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s… %u%%"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Přeskakuji neexistující soubor %s"
 

+ 8 - 0
po/cy.po

@@ -3503,6 +3503,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Digwyddodd rhywbweth hyll wrth ddatrys '%s:%s' (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Wedi Gorffen"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Yn agor y ffeil cyfluniad %s"

+ 8 - 0
po/da.po

@@ -3483,6 +3483,14 @@ msgstr "dpkg blev afbrudt, du skal manuelt køre '%s' for at rette problemet."
 msgid "Not locked"
 msgstr "Ikke låst"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Der skete noget underligt under opløsning af '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Færdig"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Springer ikkeeksisterende fil over %s"
 

+ 8 - 0
po/de.po

@@ -3598,6 +3598,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Nicht gesperrt"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Beim Auflösen von »%s:%s« ist etwas Schlimmes passiert (%i - %s)."
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Fertig"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Nicht vorhandene Datei %s wird übersprungen."
 

+ 8 - 0
po/dz.po

@@ -3429,6 +3429,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "'%s:%s' (%i)་མོས་མཐུན་འབདཝ་ད་ངན་པ་ཅིག་བྱུང་ཡི།"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... འབད་ཚར་ཡོད།"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "རིམ་སྒྲིག་ཡིག་སྣོད་%s་འདི་ཁ་ཕྱེ་དོ།"

+ 8 - 0
po/el.po

@@ -3467,6 +3467,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Κάτι παράξενο συνέβη κατά την εύρεση του '%s:%s' (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Ολοκληρώθηκε"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Άνοιγμα του αρχείου ρυθμίσεων %s"

+ 8 - 0
po/es.po

@@ -3580,6 +3580,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "No bloqueado"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Algo raro pasó al resolver «%s:%s» (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Hecho"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Omitiendo el fichero inexistente %s"
 

+ 8 - 0
po/eu.po

@@ -3432,6 +3432,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Zerbait arraroa pasatu da '%s:%s' (%i) ebaztean"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Eginda"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "%s konfigurazio fitxategia irekitzen"

+ 8 - 0
po/fi.po

@@ -3425,6 +3425,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Jotain kenkkua tapahtui selvitettäessä \"%s: %s\" (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Valmis"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Avataan asetustiedosto %s"

+ 10 - 3
po/fr.po

@@ -3,13 +3,13 @@
 # French messages
 #
 # Pierre Machard <pmachard@tuxfamily.org>, 2002,2003,2004.
-# Christian Perrier <bubulle@debian.org>, 2004-2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
+# Christian Perrier <bubulle@debian.org>, 2004-2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013.
 msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "POT-Creation-Date: 2013-03-01 12:27+0100\n"
-"PO-Revision-Date: 2012-06-25 19:58+0200\n"
+"PO-Revision-Date: 2013-03-24 08:57+0100\n"
 "Last-Translator: Christian Perrier <bubulle@debian.org>\n"
 "Language-Team: French <debian-l10n-french@lists.debian.org>\n"
 "Language: fr\n"
@@ -2484,7 +2484,7 @@ msgstr "%c%s... Fait"
 
 #: apt-pkg/contrib/progress.cc:179
 msgid "..."
-msgstr ""
+msgstr ""
 
 #. Print the spinner
 #: apt-pkg/contrib/progress.cc:195
@@ -3605,6 +3605,13 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non verrouillé"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Erreur système lors de la résolution de « %s:%s » (%s)"
+
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s… %u%%"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Fichier %s inexistant ignoré"
 

+ 8 - 0
po/gl.po

@@ -3522,6 +3522,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non está bloqueado"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Aconteceu algo malo, buscando «%s:%s» (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Feito"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Omitindo o ficheiro inexistente %s"
 

+ 8 - 0
po/hu.po

@@ -3516,6 +3516,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Nincs zárolva"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Hiba történt „%s:%s” feloldásakor (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Kész"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "A nem létező %s fájl kihagyása"
 

+ 10 - 0
po/it.po

@@ -3577,6 +3577,16 @@ msgstr ""
 msgid "Not locked"
 msgstr "Non bloccato"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr ""
+#~ "Si è verificato qualcosa di anormale nella risoluzione di \"%s:%s\" (%i - "
+#~ "%s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Fatto"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Saltato il file inesistente %s"
 

+ 14 - 6
po/ja.po

@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: apt 0.9.7.1\n"
 "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n"
 "POT-Creation-Date: 2013-03-01 12:27+0100\n"
-"PO-Revision-Date: 2013-02-05 09:41+0900\n"
+"PO-Revision-Date: 2012-07-01 00:14+0900\n"
 "Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
 "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n"
 "Language: ja\n"
@@ -227,7 +227,7 @@ msgstr ""
 "  -p=? パッケージキャッシュ\n"
 "  -s=? ソースキャッシュ\n"
 "  -q   プログレス表示をしない\n"
-"  -i   unmet コマンドで重要な依存情報のみを表示する\n"
+"  -i   umnet コマンドで重要な依存情報のみを表示する\n"
 "  -c=? 指定した設定ファイルを読み込む\n"
 "  -o=? 指定した設定オプションを読み込む (例: -o dir::cache=/tmp)\n"
 "詳細は、apt-cache(8) や apt.conf(5) のマニュアルページを参照してください。\n"
@@ -448,8 +448,8 @@ msgstr "'%s' のような仮想パッケージは削除できません\n"
 #, c-format
 msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n"
 msgstr ""
-"パッケージ '%s' はインストールされていないため、削除はできません。'%s' のこと"
-"しょうか?\n"
+"パッケージ %s はインストールされていないため、削除はできません。'%s' のこと"
+"しょうか?\n"
 
 #: cmdline/apt-get.cc:743 cmdline/apt-get.cc:946
 #, c-format
@@ -681,7 +681,7 @@ msgstr[0] ""
 
 #: cmdline/apt-get.cc:1423
 msgid "Note: This is done automatically and on purpose by dpkg."
-msgstr "注意: これは dpkg により自動でわざと行われます。"
+msgstr "注意: これは dpkg により自動でわざと行われます。"
 
 #: cmdline/apt-get.cc:1561
 #, c-format
@@ -2738,7 +2738,7 @@ msgstr ""
 #: apt-pkg/sourcelist.cc:116
 #, c-format
 msgid "Malformed line %lu in source list %s ([%s] has no key)"
-msgstr "ソースリスト %2$s の %1$lu 行目が不正です ([%3$s] にキーがありません)"
+msgstr "ソースリスト %2$s の %1$lu 行目が不正です ([%3$s にキーがありません)"
 
 #: apt-pkg/sourcelist.cc:119
 #, c-format
@@ -3509,5 +3509,13 @@ msgstr ""
 msgid "Not locked"
 msgstr "ロックされていません"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "'%s:%s' (%i - %s) の解決中に何か問題が起こりました"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... 完了"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "存在しないファイル %s をスキップしています"

+ 8 - 0
po/km.po

@@ -3388,6 +3388,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "ការ​ដោះស្រាយ​អ្វី​អាក្រក់ដែល​បាន​កើត​ឡើង​ '%s:%s' (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... ធ្វើរួច​"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "កំពុង​បើ​ឯកសារ​កំណត់រចនាសម្ព័ន្ធ​ %s"

+ 9 - 0
po/ko.po

@@ -3431,6 +3431,15 @@ msgstr ""
 msgid "Not locked"
 msgstr "잠기지 않음"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr ""
+#~ "'%s:%s'의 주소를 알아내는데 무언가 이상한 일이 발생했습니다 (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... 완료"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "%s 파일은 없으므로 무시합니다"
 

+ 4 - 0
po/ku.po

@@ -3215,6 +3215,10 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Çêbû"
+
 #~ msgid "Failed to remove %s"
 #~ msgstr "Rakirina %s biserneket"
 

+ 8 - 0
po/lt.po

@@ -3314,6 +3314,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Laikinas sutrikimas ieškant vardo „%s“"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Baigta"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Praleidžiama jau parsiųsta byla „%s“\n"

+ 8 - 0
po/mr.po

@@ -3402,6 +3402,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "%s:%s' (%i) रिझॉल्व्ह होत असताना काहीतरी वाईट घडले"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... झाले"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "%s संरचना फाईल उघडत आहे"

+ 8 - 0
po/nb.po

@@ -3459,6 +3459,14 @@ msgstr "dpkg ble avbrutt. Du må kjøre «%s» manuelt for å rette problemet,"
 msgid "Not locked"
 msgstr "Ikke låst"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Noe galt skjedde ved oppslag av «%s:%s» (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s ... Ferdig"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Hopper over den ikke-eksisterende fila %s"
 

+ 8 - 0
po/ne.po

@@ -3392,6 +3392,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr " '%s:%s' (%i) हल गर्दा केही दुष्ट घट्यो"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... गरियो"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "कनफिगरेसन फाइल खोलिदैछ %s"

+ 8 - 0
po/nl.po

@@ -3523,6 +3523,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Niet vergrendeld"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Er gebeurde iets raars bij het oplossen van '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Klaar"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Niet-bestaand bestand %s wordt overgeslagen"
 

+ 8 - 0
po/nn.po

@@ -3411,6 +3411,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Det hende noko dumt ved oppslag av «%s:%s» (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s ... Ferdig"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Opnar oppsettsfila %s"

+ 8 - 0
po/pl.po

@@ -3550,6 +3550,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Niezablokowany"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Coś niewłaściwego stało się przy tłumaczeniu \"%s:%s\" (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Gotowe"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Pomijanie nieistniejącego pliku %s"
 

+ 8 - 0
po/pt.po

@@ -3541,6 +3541,14 @@ msgstr ""
 msgid "Not locked"
 msgstr "Sem acesso exclusivo"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Algo estranho aconteceu ao resolver '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Pronto"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "A saltar ficheiro %s inexistente"
 

+ 8 - 0
po/pt_BR.po

@@ -3461,6 +3461,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Pronto"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Abrindo arquivo de configuração %s"

+ 8 - 0
po/ro.po

@@ -3469,6 +3469,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "S-a întâmplat ceva „necurat” la rezolvarea lui „%s:%s” (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Terminat"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Se deschide fișierul de configurare %s"

+ 8 - 1
po/ru.po

@@ -2461,7 +2461,7 @@ msgstr "%c%s… Готово"
 
 #: apt-pkg/contrib/progress.cc:179
 msgid "..."
-msgstr ""
+msgstr ""
 
 #. Print the spinner
 #: apt-pkg/contrib/progress.cc:195
@@ -3554,6 +3554,13 @@ msgstr ""
 msgid "Not locked"
 msgstr "Не заблокирован"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Что-то странное произошло при определении «%s:%s» (%i - %s)"
+
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s… %u%%"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Пропускается несуществующий файл %s"
 

+ 8 - 0
po/sk.po

@@ -3486,6 +3486,14 @@ msgstr "dpkg bol prerušený, musíte ručne opraviť problém spustením „%s
 msgid "Not locked"
 msgstr "Nie je zamknuté"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Niečo veľmi zlé sa prihodilo pri preklade „%s:%s“ (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Hotovo"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Preskakuje sa neexistujúci súbor %s"
 

+ 8 - 0
po/sl.po

@@ -3493,6 +3493,14 @@ msgstr "dpkg je bil prekinjen. Za popravilo napake morate ročno pognati '%s'. "
 msgid "Not locked"
 msgstr "Ni zaklenjeno"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Nekaj čudnega se je zgodilo med razreševanjem '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s ... Narejeno"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Preskok neobstoječe datoteke %s"
 

+ 9 - 0
po/sv.po

@@ -3491,6 +3491,15 @@ msgstr ""
 msgid "Not locked"
 msgstr "Inte låst"
 
+# Okänd felkod; %i = koden
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Något konstigt hände när \"%s:%s\" slogs upp (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Färdig"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Hoppar över icke-existerande filen %s"
 

+ 8 - 0
po/th.po

@@ -3401,6 +3401,14 @@ msgstr "dpkg ถูกขัดจังหวะ คุณต้องเรี
 msgid "Not locked"
 msgstr "ไม่ได้ล็อคอยู่"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "เกิดปัญหาร้ายแรงบางอย่างขณะเปิดหาที่อยู่ '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... เสร็จแล้ว"
+
 #~ msgid "Failed to remove %s"
 #~ msgstr "ไม่สามารถลบ %s"
 

+ 8 - 0
po/tl.po

@@ -3450,6 +3450,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "May naganap na kababalaghan sa pagresolba ng '%s:%s' (%i)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Tapos"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Binubuksan ang talaksang pagsasaayos %s"

Разница между файлами не показана из-за своего большого размера
+ 3494 - 0
po/tr.po


+ 9 - 0
po/uk.po

@@ -3548,6 +3548,15 @@ msgstr ""
 msgid "Not locked"
 msgstr "Не заблоковано"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr ""
+#~ "Сталося щось дивне при спробі отримати IP адрес для '%s:%s' (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Виконано"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Пропускається неіснуючий файл %s"
 

+ 8 - 0
po/vi.po

@@ -3523,6 +3523,14 @@ msgstr "dpkg bị gián đoạn, bạn cần phải tự động chạy “%s”
 msgid "Not locked"
 msgstr "Chưa được khoá"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "Gặp lỗi nghiệm trọng khi tháo gỡ “%s:%s” (%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... Hoàn tất"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "Đang bỏ qua tập tin không tồn tại %s"
 

+ 8 - 0
po/zh_CN.po

@@ -3387,6 +3387,14 @@ msgstr "dpkg 被中断,您必须手工运行 %s 解决此问题。"
 msgid "Not locked"
 msgstr "未锁定"
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "解析“%s:%s”时,出现了某些故障(%i - %s)"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... 完成"
+
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "跳过不存在的文件 %s"
 

+ 8 - 0
po/zh_TW.po

@@ -3373,6 +3373,14 @@ msgstr ""
 msgid "Not locked"
 msgstr ""
 
+#, fuzzy
+#~ msgid "System error resolving '%s:%s'"
+#~ msgstr "在解析 '%s:%s' (%i) 時出了怪事"
+
+#, fuzzy
+#~ msgid "%c%s... %u%%"
+#~ msgstr "%c%s... 完成"
+
 #, fuzzy
 #~ msgid "Skipping nonexistent file %s"
 #~ msgstr "開啟設定檔 %s"

+ 21 - 4
test/integration/framework

@@ -1,5 +1,7 @@
 #!/bin/sh -- # no runable script, just for vi
 
+EXIT_CODE=0
+
 # we all like colorful messages
 if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null && \
    expr match "$(readlink -f /proc/$$/fd/2)" '/dev/pts/[0-9]\+' > /dev/null; then
@@ -36,7 +38,7 @@ msgtest() {
 }
 msgpass() { echo "${CPASS}PASS${CNORMAL}" >&2; }
 msgskip() { echo "${CWARNING}SKIP${CNORMAL}" >&2; }
-msgfail() { echo "${CFAIL}FAIL${CNORMAL}" >&2; }
+msgfail() { echo "${CFAIL}FAIL${CNORMAL}" >&2; EXIT_CODE=$((EXIT_CODE+1)); }
 
 # enable / disable Debugging
 MSGLEVEL=${MSGLEVEL:-3}
@@ -113,9 +115,18 @@ gdb() {
 	APT_CONFIG=aptconfig.conf LD_LIBRARY_PATH=${BUILDDIRECTORY} $(which gdb) ${BUILDDIRECTORY}/$1
 }
 
+exitwithstatus() {
+        # error if we about to overflow, but ...
+        #   "255 failures ought to be enough for everybody"
+        if [ $EXIT_CODE -gt 255 ]; then
+            msgdie "Total failure count $EXIT_CODE too big"
+        fi
+        exit $((EXIT_CODE <= 255 ? EXIT_CODE : 255));
+}
+
 addtrap() {
 	CURRENTTRAP="$CURRENTTRAP $1"
-	trap "$CURRENTTRAP exit;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+	trap "$CURRENTTRAP exitwithstatus;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
 }
 
 setupenvironment() {
@@ -328,9 +339,15 @@ Package: $NAME" >> ${BUILDDIR}/debian/control
 	fi
 
 	echo '3.0 (native)' > ${BUILDDIR}/debian/source/format
-	local SRCS="$( (cd ${BUILDDIR}/..; dpkg-source -b ${NAME}-${VERSION} 2>&1) | grep '^dpkg-source: info: building' | grep -o '[a-z0-9._+~-]*$')"
-	for SRC in $SRCS; do
+	(cd ${BUILDDIR}/..; dpkg-source -b ${NAME}-${VERSION} 2>&1) | sed -n 's#^dpkg-source: info: building [^ ]\+ in ##p' \
+		| while read SRC; do
 		echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist
+#		if expr match "${SRC}" '.*\.dsc' >/dev/null 2>&1; then
+#			gpg --yes --no-default-keyring --secret-keyring ./keys/joesixpack.sec \
+#				--keyring ./keys/joesixpack.pub --default-key 'Joe Sixpack' \
+#				--clearsign -o "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+#			mv "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+#		fi
 	done
 
 	for arch in $(echo "$ARCH" | sed -e 's#,#\n#g' | sed -e "s#^native\$#$(getarchitecture 'native')#"); do

+ 2 - 1
test/integration/run-tests

@@ -37,4 +37,5 @@ for testcase in $(run-parts --list $DIR | grep '/test-'); do
 done
 
 echo "failures: $FAIL"
-exit $FAIL
+# ensure we don't overflow
+exit $((FAIL <= 255 ? FAIL : 255))

+ 2 - 0
test/integration/test-apt-cdrom

@@ -24,6 +24,8 @@ cat Translation-de | xz --format=lzma > Translation-de.lzma
 cat Translation-de | xz > Translation-de.xz
 rm Translation-en Translation-de
 cd - > /dev/null
+addtrap "chmod -R +w $PWD/rootdir/media/cdrom/dists/;"
+chmod -R -w rootdir/media/cdrom/dists
 
 aptcdrom add -m -o quiet=1 > apt-cdrom.log 2>&1
 sed -i -e '/^Using CD-ROM/ d' -e '/gpgv/ d' -e '/^Identifying/ d' -e '/Reading / d' apt-cdrom.log

+ 1 - 1
test/integration/test-apt-get-download

@@ -26,7 +26,7 @@ testdownload apt_1.0_all.deb apt stable
 testdownload apt_2.0_all.deb apt
 
 DEBFILE="$(readlink -f aptarchive)/pool/apt_2.0_all.deb"
-testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) sha256:$(sha256sum $DEBFILE | cut -d' ' -f 1)" aptget download apt --print-uris
+testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) sha512:$(sha512sum $DEBFILE | cut -d' ' -f 1)" aptget download apt --print-uris
 
 # deb:677887
 testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms

+ 11 - 19
test/integration/test-bug-595691-empty-and-broken-archive-files

@@ -13,7 +13,7 @@ setupflataptarchive
 testaptgetupdate() {
 	rm -rf rootdir/var/lib/apt
 	aptget update 2>> testaptgetupdate.diff >> testaptgetupdate.diff || true
-	sed -i -e '/^Fetched / d' -e '/Ign / d' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff
+	sed -i -e '/^Fetched / d' -e '/Ign / d' -e '/Release/ d' -e 's#Get:[0-9]\+ #Get: #' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff
 	GIVEN="$1"
 	shift
 	msgtest "Test for correctness of" "apt-get update with $*"
@@ -81,22 +81,18 @@ testoverfile() {
 	setupcompressor "$1"
 
 	createemptyfile 'en'
-	testaptgetupdate "Get:1 file:  InRelease []
-Reading package lists..." "empty file en.$COMPRESS over file"
+	testaptgetupdate 'Reading package lists...' "empty file en.$COMPRESS over file"
 
 	createemptyarchive 'en'
-	testaptgetupdate "Get:1 file:  InRelease []
-Reading package lists..." "empty archive en.$COMPRESS over file"
+	testaptgetupdate 'Reading package lists...' "empty archive en.$COMPRESS over file"
 
 	createemptyarchive 'Packages'
 	# FIXME: Why omits the file transport the Packages Get line?
 	#Get:3 file:  Packages []
-	testaptgetupdate "Get:1 file:  InRelease []
-Reading package lists..." "empty archive Packages.$COMPRESS over file"
+	testaptgetupdate 'Reading package lists...' "empty archive Packages.$COMPRESS over file"
 
 	createemptyfile 'Packages'
-	testaptgetupdate "Get:1 file:  InRelease []
-Err file:  Packages
+	testaptgetupdate "Err file:  Packages
   Empty files can't be valid archives
 W: Failed to fetch ${COMPRESSOR}:$(readlink -f aptarchive/Packages.$COMPRESS)  Empty files can't be valid archives
 
@@ -107,26 +103,22 @@ testoverhttp() {
 	setupcompressor "$1"
 
 	createemptyfile 'en'
-	testaptgetupdate "Get:1 http://localhost  InRelease []
-Get:2 http://localhost  Packages []
-Get:3 http://localhost  Translation-en
+	testaptgetupdate "Get: http://localhost  Packages []
+Get: http://localhost  Translation-en
 Reading package lists..." "empty file en.$COMPRESS over http"
 
 	createemptyarchive 'en'
-	testaptgetupdate "Get:1 http://localhost  InRelease []
-Get:2 http://localhost  Packages []
-Get:3 http://localhost  Translation-en []
+	testaptgetupdate "Get: http://localhost  Packages []
+Get: http://localhost  Translation-en []
 Reading package lists..." "empty archive en.$COMPRESS over http"
 
 	createemptyarchive 'Packages'
-	testaptgetupdate "Get:1 http://localhost  InRelease []
-Get:2 http://localhost  Packages []
+	testaptgetupdate "Get: http://localhost  Packages []
 Reading package lists..." "empty archive Packages.$COMPRESS over http"
 
 	createemptyfile 'Packages'
 	#FIXME: we should response with a good error message instead
-	testaptgetupdate "Get:1 http://localhost  InRelease []
-Get:2 http://localhost  Packages
+	testaptgetupdate "Get: http://localhost  Packages
 Err http://localhost  Packages
   Empty files can't be valid archives
 W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:8080_Packages)  Empty files can't be valid archives

+ 61 - 0
test/integration/test-cve-2013-1051-InRelease-parsing

@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'good-pkg' 'all' '1.0'
+
+setupaptarchive
+
+changetowebserver
+ARCHIVE='http://localhost/'
+msgtest 'Initial apt-get update should work with' 'InRelease'
+aptget update -qq && msgpass || msgfail
+
+# check that the setup is correct
+testequal "good-pkg:
+  Installed: (none)
+  Candidate: 1.0
+  Version table:
+     1.0 0
+        500 ${ARCHIVE} stable/main i386 Packages" aptcache policy good-pkg
+
+# now exchange to the Packages file, note that this could be
+# done via MITM too
+insertpackage 'stable' 'bad-mitm' 'all' '1.0'
+
+# this builds compressed files and a new (unsigned) Release
+buildaptarchivefromfiles '+1hour'
+
+# add a space into the BEGIN PGP SIGNATURE PART/END PGP SIGNATURE part
+# to trick apt - this is still legal to gpg(v)
+sed -i '/^-----BEGIN PGP SIGNATURE-----/,/^-----END PGP SIGNATURE-----/ s/^$/  /g'  aptarchive/dists/stable/InRelease
+
+# we append the (evil unsigned) Release file to the (good signed) InRelease
+cat aptarchive/dists/stable/Release >> aptarchive/dists/stable/InRelease
+
+
+# ensure the update fails
+# useful for debugging to add "-o Debug::pkgAcquire::auth=true"
+msgtest 'apt-get update for should fail with the modified' 'InRelease'
+aptget update 2>&1 | grep -q 'Hash Sum mismatch' > /dev/null && msgpass || msgfail
+
+# ensure there is no package
+testequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package bad-mitm' aptget install bad-mitm -s
+
+# and verify that its not picked up
+testequal 'N: Unable to locate package bad-mitm' aptcache policy bad-mitm -q=0
+
+# and that the right one is used
+testequal "good-pkg:
+  Installed: (none)
+  Candidate: 1.0
+  Version table:
+     1.0 0
+        500 ${ARCHIVE} stable/main i386 Packages" aptcache policy good-pkg

+ 0 - 0
test/integration/test-releasefile-verification


Некоторые файлы не были показаны из-за большого количества измененных файлов