diff options
-rw-r--r-- | apt-inst/deb/dpkgdb.cc | 2 | ||||
-rw-r--r-- | apt-pkg/acquire.cc | 8 | ||||
-rw-r--r-- | apt-pkg/deb/debversion.cc | 23 | ||||
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 8 | ||||
-rw-r--r-- | apt-pkg/tagfile.cc | 92 | ||||
-rw-r--r-- | apt-pkg/tagfile.h | 5 | ||||
-rw-r--r-- | buildlib/defaults.mak | 17 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | debian/changelog | 31 | ||||
-rw-r--r-- | debian/compat | 2 | ||||
-rw-r--r-- | debian/control | 4 | ||||
-rw-r--r-- | debian/libapt-pkg-doc.doc-base.cache | 2 | ||||
-rwxr-xr-x | debian/postinst | 5 | ||||
-rwxr-xr-x | debian/rules | 3 | ||||
-rw-r--r-- | doc/apt-ftparchive.1.xml | 4 | ||||
-rw-r--r-- | doc/examples/apt-ftparchive.conf | 6 | ||||
-rw-r--r-- | doc/fr/apt-ftparchive.fr.1.xml | 6 | ||||
-rw-r--r-- | methods/ftp.cc | 7 | ||||
-rw-r--r-- | methods/gpgv.cc | 30 | ||||
-rw-r--r-- | po/apt-all.pot | 184 | ||||
-rw-r--r-- | test/testdeb.cc | 2 | ||||
-rw-r--r-- | test/versions.lst | 7 |
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 « Packages » créé. </para></listitem> </varlistentry> -<varlistentry><term>SrcPackages</term> +<varlistentry><term>Sources</term> <listitem><para> Indique le fichier « Sources » 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 |