summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbubulle@debian.org <>2006-05-10 20:27:12 +0200
committerbubulle@debian.org <>2006-05-10 20:27:12 +0200
commitfa7733bcf513215a5e8cbd6d9be3d867444b5f1e (patch)
treedaf6265a900f471c65c411b89e195808228ab90e
parent7bbc5183958e2cb5989a45ba3bf04eacd07c6534 (diff)
parent41ca14b3108dbb7b01d1adceee857b52bc955bd5 (diff)
Sync with Michael
-rw-r--r--apt-inst/deb/dpkgdb.cc2
-rw-r--r--apt-pkg/acquire.cc8
-rw-r--r--apt-pkg/deb/debversion.cc23
-rw-r--r--apt-pkg/deb/dpkgpm.cc8
-rw-r--r--apt-pkg/tagfile.cc92
-rw-r--r--apt-pkg/tagfile.h5
-rw-r--r--buildlib/defaults.mak17
-rw-r--r--configure.in2
-rw-r--r--debian/changelog31
-rw-r--r--debian/compat2
-rw-r--r--debian/control4
-rw-r--r--debian/libapt-pkg-doc.doc-base.cache2
-rwxr-xr-xdebian/postinst5
-rwxr-xr-xdebian/rules3
-rw-r--r--doc/apt-ftparchive.1.xml4
-rw-r--r--doc/examples/apt-ftparchive.conf6
-rw-r--r--doc/fr/apt-ftparchive.fr.1.xml6
-rw-r--r--methods/ftp.cc7
-rw-r--r--methods/gpgv.cc30
-rw-r--r--po/apt-all.pot184
-rw-r--r--test/testdeb.cc2
-rw-r--r--test/versions.lst7
22 files changed, 240 insertions, 210 deletions
diff --git a/apt-inst/deb/dpkgdb.cc b/apt-inst/deb/dpkgdb.cc
index c6a0e80e6..718e1ab98 100644
--- a/apt-inst/deb/dpkgdb.cc
+++ b/apt-inst/deb/dpkgdb.cc
@@ -383,7 +383,7 @@ bool debDpkgDB::ReadyFileList(OpProgress &Progress)
return _error->Error(_("The pkg cache must be initialized first"));
if (FList != 0)
{
- Progress.OverallProgress(1,1,1,_("Reading file list"));
+ Progress.OverallProgress(1,1,1,_("Reading file listing"));
return true;
}
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index 57cf60bfe..fff1b2b6a 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -818,7 +818,13 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner)
unsigned long ETA =
(unsigned long)((TotalBytes - CurrentBytes) / CurrentCPS);
- snprintf(msg,sizeof(msg), _("Downloading file %li of %li (%s remaining)"), i, TotalItems, TimeToStr(ETA).c_str());
+ // only show the ETA if it makes sense
+ if (ETA > 0 && ETA < 172800 /* two days */ )
+ snprintf(msg,sizeof(msg), _("Retrieving file %li of %li (%s remaining)"), i, TotalItems, TimeToStr(ETA).c_str());
+ else
+ snprintf(msg,sizeof(msg), _("Retrieving file %li of %li"), i, TotalItems);
+
+
// build the status str
status << "dlstatus:" << i
diff --git a/apt-pkg/deb/debversion.cc b/apt-pkg/deb/debversion.cc
index aeee61929..064d8fa5b 100644
--- a/apt-pkg/deb/debversion.cc
+++ b/apt-pkg/deb/debversion.cc
@@ -59,7 +59,7 @@ int debVersioningSystem::CmpFragment(const char *A,const char *AEnd,
}
/* Iterate over the whole string
- What this does is to spilt the whole string into groups of
+ What this does is to split the whole string into groups of
numeric and non numeric portions. For instance:
a67bhgs89
Has 4 portions 'a', '67', 'bhgs', '89'. A more normal:
@@ -140,6 +140,27 @@ int debVersioningSystem::DoCmpVersion(const char *A,const char *AEnd,
if (rhs == BEnd)
rhs = B;
+ // Special case: a zero epoch is the same as no epoch,
+ // so remove it.
+ if (lhs != A)
+ {
+ for (; *A == '0'; ++A);
+ if (A == lhs)
+ {
+ ++A;
+ ++lhs;
+ }
+ }
+ if (rhs != B)
+ {
+ for (; *B == '0'; ++B);
+ if (B == rhs)
+ {
+ ++B;
+ ++rhs;
+ }
+ }
+
// Compare the epoch
int Res = CmpFragment(A,lhs,B,rhs);
if (Res != 0)
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index fe8fbca74..667db8ff2 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -375,8 +375,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
},
// Purge operation
{
- {"config-files", _("Preparing for remove with config %s")},
- {"not-installed", _("Removed with config %s")},
+ {"config-files", _("Preparing to completely remove %s")},
+ {"not-installed", _("Completely removed %s")},
{NULL, NULL}
},
};
@@ -623,8 +623,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
'status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited
*/
- char* list[4];
- TokSplitString(':', line, list, 5);
+ char* list[5];
+ TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
char *pkg = list[1];
char *action = _strstrip(list[2]);
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
index cae0fa819..dc1ba3f9e 100644
--- a/apt-pkg/tagfile.cc
+++ b/apt-pkg/tagfile.cc
@@ -35,20 +35,20 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
Fd(*pFd),
Size(Size)
{
- if (Fd.IsOpen() == false)
+ if (Fd.IsOpen() == false || Fd.Size() == 0)
{
Buffer = 0;
Start = End = Buffer = 0;
- Done = true;
iOffset = 0;
+ Map = NULL;
return;
}
- Buffer = new char[Size];
- Start = End = Buffer;
- Done = false;
+ Map = new MMap (Fd, MMap::Public | MMap::ReadOnly);
+ Buffer = (char *) Map->Data ();
+ Start = Buffer;
+ End = Buffer + Map->Size ();
iOffset = 0;
- Fill();
}
/*}}}*/
// TagFile::~pkgTagFile - Destructor /*{{{*/
@@ -56,7 +56,7 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) :
/* */
pkgTagFile::~pkgTagFile()
{
- delete [] Buffer;
+ delete Map;
}
/*}}}*/
// TagFile::Step - Advance to the next section /*{{{*/
@@ -64,14 +64,13 @@ pkgTagFile::~pkgTagFile()
/* If the Section Scanner fails we refill the buffer and try again. */
bool pkgTagFile::Step(pkgTagSection &Tag)
{
+ if (Start == End)
+ return false;
+
if (Tag.Scan(Start,End - Start) == false)
{
- if (Fill() == false)
- return false;
-
- if (Tag.Scan(Start,End - Start) == false)
- return _error->Error(_("Unable to parse package file %s (1)"),
- Fd.Name().c_str());
+ return _error->Error(_("Unable to parse package file %s (1)"),
+ Fd.Name().c_str());
}
Start += Tag.size();
iOffset += Tag.size();
@@ -80,50 +79,6 @@ bool pkgTagFile::Step(pkgTagSection &Tag)
return true;
}
/*}}}*/
-// TagFile::Fill - Top up the buffer /*{{{*/
-// ---------------------------------------------------------------------
-/* This takes the bit at the end of the buffer and puts it at the start
- then fills the rest from the file */
-bool pkgTagFile::Fill()
-{
- unsigned long EndSize = End - Start;
- unsigned long Actual = 0;
-
- memmove(Buffer,Start,EndSize);
- Start = Buffer;
- End = Buffer + EndSize;
-
- if (Done == false)
- {
- // See if only a bit of the file is left
- if (Fd.Read(End,Size - (End - Buffer),&Actual) == false)
- return false;
- if (Actual != Size - (End - Buffer))
- Done = true;
- End += Actual;
- }
-
- if (Done == true)
- {
- if (EndSize <= 3 && Actual == 0)
- return false;
- if (Size - (End - Buffer) < 4)
- return true;
-
- // Append a double new line if one does not exist
- unsigned int LineCount = 0;
- for (const char *E = End - 1; E - End < 6 && (*E == '\n' || *E == '\r'); E--)
- if (*E == '\n')
- LineCount++;
- for (; LineCount < 2; LineCount++)
- *End++ = '\n';
-
- return true;
- }
-
- return true;
-}
- /*}}}*/
// TagFile::Jump - Jump to a pre-recorded location in the file /*{{{*/
// ---------------------------------------------------------------------
/* This jumps to a pre-recorded file location and reads the record
@@ -141,20 +96,7 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset)
// Reposition and reload..
iOffset = Offset;
- Done = false;
- if (Fd.Seek(Offset) == false)
- return false;
- End = Start = Buffer;
-
- if (Fill() == false)
- return false;
-
- if (Tag.Scan(Start,End - Start) == true)
- return true;
-
- // This appends a double new line (for the real eof handling)
- if (Fill() == false)
- return false;
+ Start = Buffer + iOffset;
if (Tag.Scan(Start,End - Start) == false)
return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str());
@@ -181,7 +123,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength)
Stop = Section = Start;
memset(AlphaIndexes,0,sizeof(AlphaIndexes));
- if (Stop == 0)
+ if (Stop == 0 || MaxLength == 0)
return false;
TagCount = 0;
@@ -212,6 +154,12 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength)
Stop++;
}
+ if ((Stop+1 >= End) && (End[-1] == '\n' || End[-1] == '\r'))
+ {
+ Indexes[TagCount] = (End - 1) - Section;
+ return true;
+ }
+
return false;
}
/*}}}*/
diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h
index 8c948754d..5cff2681c 100644
--- a/apt-pkg/tagfile.h
+++ b/apt-pkg/tagfile.h
@@ -25,6 +25,7 @@
#endif
#include <apt-pkg/fileutl.h>
+#include <apt-pkg/mmap.h>
#include <stdio.h>
class pkgTagSection
@@ -69,15 +70,13 @@ class pkgTagSection
class pkgTagFile
{
FileFd &Fd;
+ MMap *Map;
char *Buffer;
char *Start;
char *End;
- bool Done;
unsigned long iOffset;
unsigned long Size;
- bool Fill();
-
public:
bool Step(pkgTagSection &Section);
diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak
index c3d08d9d4..a171522d5 100644
--- a/buildlib/defaults.mak
+++ b/buildlib/defaults.mak
@@ -174,11 +174,12 @@ ifeq ($(NUM_PROCS),1)
PARALLEL_RUN=no
endif
-ifndef PARALLEL_RUN
- PARALLEL_RUN=yes
- .EXPORT: PARALLEL_RUN
- # handle recursion
- ifneq ($(NUM_PROCS),)
- MAKEFLAGS += -j $(NUM_PROCS)
- endif
-endif
+# mvo: commented out, lead to build failures in the arch-build target
+#ifndef PARALLEL_RUN
+# PARALLEL_RUN=yes
+# .EXPORT: PARALLEL_RUN
+# # handle recursion
+# ifneq ($(NUM_PROCS),)
+# MAKEFLAGS += -j $(NUM_PROCS)
+# endif
+#endif
diff --git a/configure.in b/configure.in
index 8d4b99904..2c4bbcb6f 100644
--- a/configure.in
+++ b/configure.in
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.43.3")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.44")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
diff --git a/debian/changelog b/debian/changelog
index 64c743a7f..772b8e2e9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,34 @@
+apt (0.6.44) unstable; urgency=low
+
+ * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
+ * apt-pkg/deb/dpkgpm.cc:
+ - wording fixes (thanks to Matt Zimmerman)
+ - fix error in dpkg interaction (closes: #364513,
+ thanks to Martin Dickopp)
+ * apt-pkg/tagfile.{cc,h}:
+ - use MMap to read the entries (thanks to Zephaniah E. Hull for the
+ patch) Closes: #350025
+ * Merge from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+ * bg.po: Added, complete to 512t. Closes: #360262
+ * doc/apt-ftparchive.1.xml:
+ - fix documentation for "SrcPackages" -> "Sources"
+ (thanks to Bart Martens for the patch, closes: #307756)
+ * debian/libapt-pkg-doc.doc-base.cache:
+ - remove broken charackter from description (closes: #361129)
+ * apt-inst/deb/dpkgdb.cc, methods/gpgv.cc:
+ - i18n fixes (closes: #349298)
+ * debian/postinst: dont fail on not available
+ /usr/share/doc/apt/examples/sources.list (closes: #361130)
+ * methods/ftp.cc:
+ - unlink empty file in partial if the download failed because
+ the file is missing on the server (closes: #316337)
+ * apt-pkg/deb/debversion.cc:
+ - treats a version string with explicit zero epoch equal
+ than the same without epoch (Policy 5.6.12, closes: #363358)
+ Thanks to Lionel Elie Mamane for the patch
+
+ --
+
apt (0.6.43.3) unstable; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:
diff --git a/debian/compat b/debian/compat
index 00750edc0..7ed6ff82d 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-3
+5
diff --git a/debian/control b/debian/control
index 3b8883f88..53ce851f6 100644
--- a/debian/control
+++ b/debian/control
@@ -3,8 +3,8 @@ Section: admin
Priority: important
Maintainer: APT Development Team <deity@lists.debian.org>
Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>, Michael Vogt <mvo@debian.org>
-Standards-Version: 3.6.1
-Build-Depends: debhelper (>= 4.1.62), libdb4.3-dev, gettext (>= 0.12)
+Standards-Version: 3.6.2.2
+Build-Depends: debhelper (>= 5.0), libdb4.3-dev, gettext (>= 0.12)
Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
Package: apt
diff --git a/debian/libapt-pkg-doc.doc-base.cache b/debian/libapt-pkg-doc.doc-base.cache
index b58b79bd1..59558dee8 100644
--- a/debian/libapt-pkg-doc.doc-base.cache
+++ b/debian/libapt-pkg-doc.doc-base.cache
@@ -4,7 +4,7 @@ Author: Jason Gunthorpe
Abstract: The APT Cache Specification describes the complete implementation
and format of the APT Cache file. The APT Cache file is a way for APT to
parse and store a large number of package files for display in the UI.
- It's primaryã design goal is to make display of a single package in the
+ It's primary design goal is to make display of a single package in the
tree very fast by pre-linking important things like dependencies and
provides. The specification doubles as documentation for one of the
in-memory structures used by the package library and the APT GUI.
diff --git a/debian/postinst b/debian/postinst
index 891792111..1588f5241 100755
--- a/debian/postinst
+++ b/debian/postinst
@@ -12,7 +12,10 @@ set -e
create_apt_conf ()
{
- cp /usr/share/doc/apt/examples/sources.list /etc/apt/sources.list
+ EXAMPLE_SOURCE=/usr/share/doc/apt/examples/sources.list
+ if [ -f $EXAMPLE_SOURCE ]; then
+ cp $EXAMPLE_SOURCE /etc/apt/sources.list
+ fi
}
check_apt_conf ()
diff --git a/debian/rules b/debian/rules
index cd026b4a4..a8bf88762 100755
--- a/debian/rules
+++ b/debian/rules
@@ -36,6 +36,7 @@ endif
# Default rule
build:
+PKG=apt
DEB_BUILD_PROG:=debuild --preserve-envvar PATH --preserve-envvar CCACHE_DIR -us -uc $(DEB_BUILD_PROG_OPTS)
APT_DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p')
APT_CONFVER=$(shell sed -n -e 's/^AC_DEFINE_UNQUOTED(VERSION,"\(.*\)")/\1/p' configure.in)
@@ -335,6 +336,6 @@ cvs-mkul:
arch-build:
rm -rf debian/arch-build
mkdir -p debian/arch-build/apt-$(APT_DEBVER)
- baz inventory -s | xargs cp -a --parents --target=debian/arch-build/apt-$(APT_DEBVER)
+ tar -c --exclude=arch-build --no-recursion -f - `bzr inventory` | (cd debian/arch-build/$(PKG)-$(APT_DEBVER);tar xf -)
$(MAKE) -C debian/arch-build/apt-$(APT_DEBVER) startup doc
(cd debian/arch-build/apt-$(APT_DEBVER); $(DEB_BUILD_PROG))
diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml
index 7c1ae9432..8cfbc72e9 100644
--- a/doc/apt-ftparchive.1.xml
+++ b/doc/apt-ftparchive.1.xml
@@ -407,10 +407,10 @@ for i in Sections do
Sets the Packages file output.</para></listitem>
</varlistentry>
- <varlistentry><term>SrcPackages</term>
+ <varlistentry><term>Sources</term>
<listitem><para>
Sets the Sources file output. At least one of
- <literal>Packages</literal> or <literal>SrcPackages</literal> is required.</para></listitem>
+ <literal>Packages</literal> or <literal>Sources</literal> is required.</para></listitem>
</varlistentry>
<varlistentry><term>Contents</term>
diff --git a/doc/examples/apt-ftparchive.conf b/doc/examples/apt-ftparchive.conf
index 657ec5440..c9d352ab6 100644
--- a/doc/examples/apt-ftparchive.conf
+++ b/doc/examples/apt-ftparchive.conf
@@ -20,21 +20,21 @@ Default {
// Contents file for these in the main section of the sid release
BinDirectory "pool/main" {
Packages "dists/sid/main/binary-i386/Packages";
- SrcPackages "dists/sid/main/source/Sources";
+ Sources "dists/sid/main/source/Sources";
Contents "dists/sid/Contents-i386";
}
// This is the same for the contrib section
BinDirectory "pool/contrib" {
Packages "dists/sid/contrib/binary-i386/Packages";
- SrcPackages "dists/sid/contrib/source/Sources";
+ Sources "dists/sid/contrib/source/Sources";
Contents "dists/sid/Contents-i386";
}
// This is the same for the non-free section
BinDirectory "pool/non-free" {
Packages "dists/sid/non-free/binary-i386/Packages";
- SrcPackages "dists/sid/non-free/source/Sources";
+ Sources "dists/sid/non-free/source/Sources";
Contents "dists/sid/Contents-i386";
};
diff --git a/doc/fr/apt-ftparchive.fr.1.xml b/doc/fr/apt-ftparchive.fr.1.xml
index 61cdfa2ec..9ae6506fc 100644
--- a/doc/fr/apt-ftparchive.fr.1.xml
+++ b/doc/fr/apt-ftparchive.fr.1.xml
@@ -451,10 +451,10 @@ Indique le fichier «&nbsp;Packages&nbsp;» créé.
</para></listitem>
</varlistentry>
-<varlistentry><term>SrcPackages</term>
+<varlistentry><term>Sources</term>
<listitem><para>
Indique le fichier «&nbsp;Sources&nbsp;» créé. L'un des deux fichiers,
-<literal>Packages</literal> ou <literal>SrcPackages</literal> est nécessaire.
+<literal>Packages</literal> ou <literal>Sources</literal> est nécessaire.
</para></listitem>
</varlistentry>
@@ -628,4 +628,4 @@ décimal 100 en cas d'erreur.
&manbugs;
&traducteur;
-</refentry> \ No newline at end of file
+</refentry>
diff --git a/methods/ftp.cc b/methods/ftp.cc
index f595e0ca4..0c2aa00a7 100644
--- a/methods/ftp.cc
+++ b/methods/ftp.cc
@@ -1055,9 +1055,12 @@ bool FtpMethod::Fetch(FetchItem *Itm)
UBuf.modtime = FailTime;
utime(FailFile.c_str(),&UBuf);
- // If the file is missing we hard fail otherwise transient fail
- if (Missing == true)
+ // If the file is missing we hard fail and delete the destfile
+ // otherwise transient fail
+ if (Missing == true) {
+ unlink(FailFile.c_str());
return false;
+ }
Fail(true);
return true;
}
diff --git a/methods/gpgv.cc b/methods/gpgv.cc
index a114ad797..ba7389cba 100644
--- a/methods/gpgv.cc
+++ b/methods/gpgv.cc
@@ -11,6 +11,7 @@
#include <errno.h>
#include <sys/wait.h>
#include <iostream>
+#include <sstream>
#define GNUPGPREFIX "[GNUPG:]"
#define GNUPGBADSIG "[GNUPG:] BADSIG"
@@ -20,7 +21,7 @@
class GPGVMethod : public pkgAcqMethod
{
private:
- const char *VerifyGetSigners(const char *file, const char *outfile,
+ string VerifyGetSigners(const char *file, const char *outfile,
vector<string> &GoodSigners, vector<string> &BadSigners,
vector<string> &NoPubKeySigners);
@@ -32,11 +33,15 @@ class GPGVMethod : public pkgAcqMethod
GPGVMethod() : pkgAcqMethod("1.0",SingleInstance | SendConfig) {};
};
-const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
+string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
vector<string> &GoodSigners,
vector<string> &BadSigners,
vector<string> &NoPubKeySigners)
{
+ // setup a (empty) stringstream for formating the return value
+ std::stringstream ret;
+ ret.str("");
+
if (_config->FindB("Debug::Acquire::gpgv", false))
{
std::cerr << "inside VerifyGetSigners" << std::endl;
@@ -54,9 +59,11 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
std::cerr << "Keyring path: " << pubringpath << std::endl;
}
- if (stat(pubringpath.c_str(), &buff) != 0)
- return (string("Couldn't access keyring: ") + strerror(errno)).c_str();
-
+ if (stat(pubringpath.c_str(), &buff) != 0)
+ {
+ ioprintf(ret, _("Couldn't access keyring: '%s'"), strerror(errno));
+ return ret.str();
+ }
if (pipe(fd) < 0)
{
return "Couldn't create pipe";
@@ -65,7 +72,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
pid = fork();
if (pid < 0)
{
- return (string("Couldn't spawn new process") + strerror(errno)).c_str();
+ return string("Couldn't spawn new process") + strerror(errno);
}
else if (pid == 0)
{
@@ -189,7 +196,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
{
if (GoodSigners.empty())
return _("Internal error: Good signature, but could not determine key fingerprint?!");
- return NULL;
+ return "";
}
else if (WEXITSTATUS(status) == 1)
{
@@ -197,9 +204,8 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
}
else if (WEXITSTATUS(status) == 111)
{
- // FIXME String concatenation considered harmful.
- return (string(_("Could not execute ")) + gpgvpath +
- string(_(" to verify signature (is gnupg installed?)"))).c_str();
+ ioprintf(ret, _("Could not execute '%s' to verify signature (is gnupg installed?)"), gpgvpath.c_str());
+ return ret.str();
}
else
{
@@ -221,8 +227,8 @@ bool GPGVMethod::Fetch(FetchItem *Itm)
URIStart(Res);
// Run gpgv on file, extract contents and get the key ID of the signer
- const char *msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(),
- GoodSigners, BadSigners, NoPubKeySigners);
+ string msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(),
+ GoodSigners, BadSigners, NoPubKeySigners);
if (GoodSigners.empty() || !BadSigners.empty() || !NoPubKeySigners.empty())
{
string errmsg;
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 23de34b5c..d2209487a 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-20 14:06+0100\n"
+"POT-Creation-Date: 2006-05-08 11:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -146,14 +146,14 @@ msgstr ""
msgid " %4i %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2369 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1659
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
@@ -417,7 +417,7 @@ msgid " DeLink limit of %sB hit.\n"
msgstr ""
#: ftparchive/writer.cc:358 apt-inst/extract.cc:181 apt-inst/extract.cc:193
-#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:260
+#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:266
#, c-format
msgid "Failed to stat %s"
msgstr ""
@@ -535,7 +535,7 @@ msgstr ""
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
@@ -694,11 +694,11 @@ msgstr ""
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1800 cmdline/apt-get.cc:1833
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1881 cmdline/apt-get.cc:2117
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
@@ -727,7 +727,7 @@ msgstr ""
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1971
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
@@ -761,7 +761,7 @@ msgstr ""
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2014
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
@@ -770,7 +770,7 @@ msgstr ""
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2023
msgid "Download complete and in download only mode"
msgstr ""
@@ -866,7 +866,7 @@ msgstr ""
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1326
msgid "Unable to lock the list directory"
msgstr ""
@@ -880,27 +880,27 @@ msgstr ""
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1516
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1546
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1549
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1561
msgid ""
"Some packages could not be installed. This may mean that you have\n"
"requested an impossible situation or if you are using the unstable\n"
@@ -908,163 +908,163 @@ msgid ""
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1569
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"that package should be filed."
msgstr ""
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1574
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1577
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1603
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1674
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1675
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1695
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1698 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1703
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1768 cmdline/apt-get.cc:1776
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1876
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1906 cmdline/apt-get.cc:2135
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1959
+#: cmdline/apt-get.cc:1950
#, c-format
msgid "Skipping already downloaded file '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1974
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1979
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1982
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1988
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:2019
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2047
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2059
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2060
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2077
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2096
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2112
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2140
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2160
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2212
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2264
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"package %s can satisfy version requirements"
msgstr ""
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2299
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2324
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2338
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2342
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2374
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2415
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1365,7 +1365,7 @@ msgstr ""
msgid "Internal error getting a package name"
msgstr ""
-#: apt-inst/deb/dpkgdb.cc:205
+#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386
msgid "Reading file listing"
msgstr ""
@@ -1409,10 +1409,6 @@ msgstr ""
msgid "The pkg cache must be initialized first"
msgstr ""
-#: apt-inst/deb/dpkgdb.cc:386
-msgid "Reading file list"
-msgstr ""
-
#: apt-inst/deb/dpkgdb.cc:443
#, c-format
msgid "Failed to find a Package: header, offset %lu"
@@ -1483,12 +1479,12 @@ msgstr ""
msgid "File not found"
msgstr ""
-#: methods/copy.cc:42 methods/gpgv.cc:269 methods/gzip.cc:133
+#: methods/copy.cc:42 methods/gpgv.cc:275 methods/gzip.cc:133
#: methods/gzip.cc:142
msgid "Failed to stat"
msgstr ""
-#: methods/copy.cc:79 methods/gpgv.cc:266 methods/gzip.cc:139
+#: methods/copy.cc:79 methods/gpgv.cc:272 methods/gzip.cc:139
msgid "Failed to set modification time"
msgstr ""
@@ -1637,7 +1633,7 @@ msgstr ""
msgid "Query"
msgstr ""
-#: methods/ftp.cc:1106
+#: methods/ftp.cc:1109
msgid "Unable to invoke "
msgstr ""
@@ -1666,69 +1662,70 @@ msgstr ""
msgid "Could not connect to %s:%s (%s), connection timed out"
msgstr ""
-#: methods/connect.cc:106
+#: methods/connect.cc:108
#, c-format
msgid "Could not connect to %s:%s (%s)."
msgstr ""
#. We say this mainly because the pause here is for the
#. ssh connection that is still going
-#: methods/connect.cc:134 methods/rsh.cc:425
+#: methods/connect.cc:136 methods/rsh.cc:425
#, c-format
msgid "Connecting to %s"
msgstr ""
-#: methods/connect.cc:165
+#: methods/connect.cc:167
#, c-format
msgid "Could not resolve '%s'"
msgstr ""
-#: methods/connect.cc:171
+#: methods/connect.cc:173
#, c-format
msgid "Temporary failure resolving '%s'"
msgstr ""
-#: methods/connect.cc:174
+#: methods/connect.cc:176
#, c-format
msgid "Something wicked happened resolving '%s:%s' (%i)"
msgstr ""
-#: methods/connect.cc:221
+#: methods/connect.cc:223
#, c-format
msgid "Unable to connect to %s %s:"
msgstr ""
-#: methods/gpgv.cc:92
+#: methods/gpgv.cc:64
+#, c-format
+msgid "Couldn't access keyring: '%s'"
+msgstr ""
+
+#: methods/gpgv.cc:99
msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
msgstr ""
-#: methods/gpgv.cc:191
+#: methods/gpgv.cc:198
msgid ""
"Internal error: Good signature, but could not determine key fingerprint?!"
msgstr ""
-#: methods/gpgv.cc:196
+#: methods/gpgv.cc:203
msgid "At least one invalid signature was encountered."
msgstr ""
-#. FIXME String concatenation considered harmful.
-#: methods/gpgv.cc:201
-msgid "Could not execute "
-msgstr ""
-
-#: methods/gpgv.cc:202
-msgid " to verify signature (is gnupg installed?)"
+#: methods/gpgv.cc:207
+#, c-format
+msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
msgstr ""
-#: methods/gpgv.cc:206
+#: methods/gpgv.cc:212
msgid "Unknown error executing gpgv"
msgstr ""
-#: methods/gpgv.cc:237
+#: methods/gpgv.cc:243
msgid "The following signatures were invalid:\n"
msgstr ""
-#: methods/gpgv.cc:244
+#: methods/gpgv.cc:250
msgid ""
"The following signatures couldn't be verified because the public key is not "
"available:\n"
@@ -2104,12 +2101,12 @@ msgstr ""
msgid "Dependency generation"
msgstr ""
-#: apt-pkg/tagfile.cc:73
+#: apt-pkg/tagfile.cc:72
#, c-format
msgid "Unable to parse package file %s (1)"
msgstr ""
-#: apt-pkg/tagfile.cc:160
+#: apt-pkg/tagfile.cc:102
#, c-format
msgid "Unable to parse package file %s (2)"
msgstr ""
@@ -2203,9 +2200,16 @@ msgstr ""
msgid "Archive directory %spartial is missing."
msgstr ""
-#: apt-pkg/acquire.cc:821
+#. only show the ETA if it makes sense
+#. two days
+#: apt-pkg/acquire.cc:823
+#, c-format
+msgid "Retrieving file %li of %li (%s remaining)"
+msgstr ""
+
+#: apt-pkg/acquire.cc:825
#, c-format
-msgid "Downloading file %li of %li (%s remaining)"
+msgid "Retrieving file %li of %li"
msgstr ""
#: apt-pkg/acquire-worker.cc:113
@@ -2346,35 +2350,35 @@ msgstr ""
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:950
+#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:945
msgid "MD5Sum mismatch"
msgstr ""
-#: apt-pkg/acquire-item.cc:645
+#: apt-pkg/acquire-item.cc:640
msgid "There are no public key available for the following key IDs:\n"
msgstr ""
-#: apt-pkg/acquire-item.cc:758
+#: apt-pkg/acquire-item.cc:753
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"to manually fix this package. (due to missing arch)"
msgstr ""
-#: apt-pkg/acquire-item.cc:817
+#: apt-pkg/acquire-item.cc:812
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"manually fix this package."
msgstr ""
-#: apt-pkg/acquire-item.cc:853
+#: apt-pkg/acquire-item.cc:848
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
-#: apt-pkg/acquire-item.cc:940
+#: apt-pkg/acquire-item.cc:935
msgid "Size mismatch"
msgstr ""
@@ -2515,12 +2519,12 @@ msgstr ""
#: apt-pkg/deb/dpkgpm.cc:378
#, c-format
-msgid "Preparing for remove with config %s"
+msgid "Preparing to completely remove %s"
msgstr ""
#: apt-pkg/deb/dpkgpm.cc:379
#, c-format
-msgid "Removed with config %s"
+msgid "Completely removed %s"
msgstr ""
#: methods/rsh.cc:330
diff --git a/test/testdeb.cc b/test/testdeb.cc
index 5986621bb..d28f20114 100644
--- a/test/testdeb.cc
+++ b/test/testdeb.cc
@@ -23,7 +23,7 @@ bool Test(const char *File)
return false;
// Extract it.
- ExtractTar Tar(Deb.GetFile(),Member->Size);
+ ExtractTar Tar(Deb.GetFile(),Member->Size, "gzip");
NullStream Dir;
if (Tar.Go(Dir) == false)
return false;
diff --git a/test/versions.lst b/test/versions.lst
index 008a0f2d7..efc19c4f0 100644
--- a/test/versions.lst
+++ b/test/versions.lst
@@ -20,6 +20,13 @@ z . -1
# Epochs
1:0.4 10.3 1
1:1.25-4 1:1.25-8 -1
+0:1.18.36 1.18.36 0
+
+# Funky, but allowed, characters in upstream version
+9:1.18.36:5.4-20 10:0.5.1-22 -1
+9:1.18.36:5.4-20 9:1.18.36:5.5-1 -1
+9:1.18.36:5.4-20 9:1.18.37:4.3-22 -1
+1.18.36-0.17.35-18 1.18.36-19 1
# Junk
1:1.2.13-3 1:1.2.13-3.1 -1