From 3679515479136179e0d95325a6559fcc6d0af7f8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 6 Jun 2015 19:16:45 +0200 Subject: check patch hashes in rred worker instead of in the handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rred is responsible for unpacking and reading the patch files in one go, but we currently only have hashes for the uncompressed patch files, so the handler read the entire patch file before dispatching it to the worker which would read it again – both with an implicit uncompress. Worse, while the workers operate in parallel the handler is the central orchestration unit, so having it busy with work means the workers do (potentially) nothing. This means rred is working with 'untrusted' data, which is bad. Yet, having the unpack in the handler meant that the untrusted uncompress was done as root which isn't better either. Now, we have it at least contained in a binary which we can harden a bit better. In the long run, we want hashes for the compressed patch files through to be safe. --- test/integration/test-pdiff-usage | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test/integration/test-pdiff-usage') diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index 7d72a6944..73df61895 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -170,6 +170,8 @@ SHA256-Patches: generatereleasefiles '+1hour' signreleasefiles testsuccess aptget update "$@" + cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptgetupdate.output + testsuccess grep 'have the expected hashsum' rootdir/tmp/aptgetupdate.output testnopackage oldstuff testsuccessequal "$(cat ${PKGFILE}-new) " aptcache show apt newstuff -- cgit v1.2.3-70-g09d2 From 6d3e5bd8e08564c5eb12ecd869de5bd71e25f59d Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 7 Jun 2015 02:17:15 +0200 Subject: add more parsing error checking for rred The rred parser is very accepting regarding 'invalid' files. Given that we can't trust the input it might be a bit too relaxed. In any case, checking for more errors can't hurt given that we support only a very specific subset of ed commands. --- methods/rred.cc | 70 +++++++++----- test/integration/test-method-rred | 194 ++++++++++++++++++++++++++++++++++++++ test/integration/test-pdiff-usage | 3 +- 3 files changed, 245 insertions(+), 22 deletions(-) create mode 100755 test/integration/test-method-rred (limited to 'test/integration/test-pdiff-usage') diff --git a/methods/rred.cc b/methods/rred.cc index 3da33c126..81ecf8553 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -35,7 +36,7 @@ class MemBlock { char *start; size_t size; char *free; - struct MemBlock *next; + MemBlock *next; MemBlock(size_t size) : size(size), next(NULL) { @@ -116,7 +117,7 @@ struct Change { size_t add_len; /* bytes */ char *add; - Change(int off) + Change(size_t off) { offset = off; del_cnt = add_cnt = add_len = 0; @@ -388,30 +389,37 @@ class Patch { public: - void read_diff(FileFd &f, Hashes * const h) + bool read_diff(FileFd &f, Hashes * const h) { char buffer[BLOCK_SIZE]; bool cmdwanted = true; - Change ch(0); - while(f.ReadLine(buffer, sizeof(buffer))) - { + Change ch(std::numeric_limits::max()); + if (f.ReadLine(buffer, sizeof(buffer)) == NULL) + return _error->Error("Reading first line of patchfile %s failed", f.Name().c_str()); + do { if (h != NULL) h->Add(buffer); if (cmdwanted) { char *m, *c; size_t s, e; - s = strtol(buffer, &m, 10); - if (m == buffer) { - s = e = ch.offset + ch.add_cnt; - c = buffer; - } else if (*m == ',') { - m++; + errno = 0; + s = strtoul(buffer, &m, 10); + if (unlikely(m == buffer || s == ULONG_MAX || errno != 0)) + return _error->Error("Parsing patchfile %s failed: Expected an effected line start", f.Name().c_str()); + else if (*m == ',') { + ++m; e = strtol(m, &c, 10); + if (unlikely(m == c || e == ULONG_MAX || errno != 0)) + return _error->Error("Parsing patchfile %s failed: Expected an effected line end", f.Name().c_str()); + if (unlikely(e < s)) + return _error->Error("Parsing patchfile %s failed: Effected lines end %lu is before start %lu", f.Name().c_str(), e, s); } else { e = s; c = m; } + if (s > ch.offset) + return _error->Error("Parsing patchfile %s failed: Effected line is after previous effected line", f.Name().c_str()); switch(*c) { case 'a': cmdwanted = false; @@ -422,6 +430,8 @@ class Patch { ch.del_cnt = 0; break; case 'c': + if (unlikely(s == 0)) + return _error->Error("Parsing patchfile %s failed: Change command can't effect line zero", f.Name().c_str()); cmdwanted = false; ch.add = NULL; ch.add_cnt = 0; @@ -430,6 +440,8 @@ class Patch { ch.del_cnt = e - s + 1; break; case 'd': + if (unlikely(s == 0)) + return _error->Error("Parsing patchfile %s failed: Delete command can't effect line zero", f.Name().c_str()); ch.offset = s - 1; ch.del_cnt = e - s + 1; ch.add = NULL; @@ -437,9 +449,11 @@ class Patch { ch.add_len = 0; filechanges.add_change(ch); break; + default: + return _error->Error("Parsing patchfile %s failed: Unknown command", f.Name().c_str()); } } else { /* !cmdwanted */ - if (buffer[0] == '.' && buffer[1] == '\n') { + if (strcmp(buffer, ".\n") == 0) { cmdwanted = true; filechanges.add_change(ch); } else { @@ -465,7 +479,8 @@ class Patch { } } } - } + } while(f.ReadLine(buffer, sizeof(buffer))); + return true; } void write_diff(FILE *f) @@ -601,14 +616,14 @@ class RredMethod : public pkgAcqMethod { << std::endl; FileFd p; + Hashes patch_hash(I->ExpectedHashes); // all patches are compressed, even if the name doesn't reflect it - if (p.Open(patch_name, FileFd::ReadOnly, FileFd::Gzip) == false) { - std::cerr << "Could not open patch file " << patch_name << std::endl; + if (p.Open(patch_name, FileFd::ReadOnly, FileFd::Gzip) == false || + patch.read_diff(p, &patch_hash) == false) + { _error->DumpErrors(std::cerr); - abort(); + return false; } - Hashes patch_hash(I->ExpectedHashes); - patch.read_diff(p, &patch_hash); p.Close(); HashStringList const hsl = patch_hash.GetHashStringList(); if (hsl != I->ExpectedHashes) @@ -624,7 +639,6 @@ class RredMethod : public pkgAcqMethod { FILE *out = fopen(Itm->DestFile.c_str(), "w"); Hashes hash(Itm->ExpectedHashes); - patch.apply_against_file(out, inp, &hash); fclose(out); @@ -657,6 +671,16 @@ class RredMethod : public pkgAcqMethod { return true; } + bool Configuration(std::string Message) + { + if (pkgAcqMethod::Configuration(Message) == false) + return false; + + DropPrivsOrDie(); + + return true; + } + public: RredMethod() : pkgAcqMethod("2.0",SingleInstance | SendConfig), Debug(false) {} }; @@ -685,7 +709,11 @@ int main(int argc, char **argv) _error->DumpErrors(std::cerr); exit(1); } - patch.read_diff(p, NULL); + if (patch.read_diff(p, NULL) == false) + { + _error->DumpErrors(std::cerr); + exit(2); + } } if (just_diff) { diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred new file mode 100755 index 000000000..a8de3ea28 --- /dev/null +++ b/test/integration/test-method-rred @@ -0,0 +1,194 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'i386' + +echo 'Package: coolstuff +Version: 0.8.15 +Description: collection of stuff + A lot, too much to iterate all, but at least this: + - stuff + - more stuff + - even more stuff + . + And a cow. + +Package: oldstuff +Version: 0-1 +Description: collection of outdated stuff + A lot, but of no use nowadays, but at least this: + - stuff + - more stuff + - even more stuff + . + And a dog.' > Packages + +testrred() { + msgtest "$1" "$2" + if [ -z "$3" ]; then + echo -n '' > Packages.ed + else + echo "$3" > Packages.ed + fi + rred() { + cat Packages | runapt "${METHODSDIR}/rred" "$@" + } + testsuccessequal "$4" --nomsg rred -f Packages.ed +} + +testrred 'Remove' 'first line' '1d' "$(tail -n +2 ./Packages)" +testrred 'Remove' 'empty line' '10d' "$(head -n 9 ./Packages) +$(tail -n 9 ./Packages)" +testrred 'Remove' 'line in a paragraph' '5d' "$(head -n 4 ./Packages) +$(tail -n 14 ./Packages)" +testrred 'Remove' 'last line' '19d' "$(head -n -1 ./Packages)" +testrred 'Remove' 'multiple single lines' '17d +7d' "$(sed -e '/^ - even more stuff$/ d' ./Packages)" +testrred 'Remove' 'first paragraph' '1,10d' "$(tail -n 9 ./Packages)" +testrred 'Remove' 'a few lines in the middle' '5,14d' "$(head -n 4 ./Packages) +$(tail -n 5 ./Packages)" +testrred 'Remove' 'second paragraph' '10,19d' "$(head -n 9 ./Packages)" +testrred 'Mass Remove' 'all stuff lines' '15,17d +13d +11d +5,7d +3d +1d' "$(sed '/stuff/ d' ./Packages)" + +testrred 'Single line add' 'first line' '0a +Format: 3.0 (native) +.' "Format: 3.0 (native) +$(cat ./Packages)" +testrred 'Single line add' 'last line' '19a +Multi-Arch: foreign +.' "$(cat ./Packages) +Multi-Arch: foreign" +testrred 'Single line add' 'middle' '9a +Multi-Arch: foreign +.' "$(head -n 9 ./Packages) +Multi-Arch: foreign +$(tail -n 10 ./Packages)" + +testrred 'Multi line add' 'first line' '0a +Format: 3.0 (native) +Source: apt +.' "Format: 3.0 (native) +Source: apt +$(cat ./Packages)" +testrred 'Multi line add' 'last line' '19a +Multi-Arch: foreign +Homepage: https://debian.org +.' "$(cat ./Packages) +Multi-Arch: foreign +Homepage: https://debian.org" +testrred 'Multi line add' 'middle' '9a +Multi-Arch: foreign +Homepage: https://debian.org +.' "$(head -n 9 ./Packages) +Multi-Arch: foreign +Homepage: https://debian.org +$(tail -n 10 ./Packages)" + +testrred 'Single line change' 'first line' '1c +Package: supercoolstuff +.' "Package: supercoolstuff +$(tail -n +2 ./Packages)" +testrred 'Single line change' 'in the middle' '9c + And a super cow. +.' "$(head -n 8 ./Packages) + And a super cow. +$(tail -n 10 ./Packages)" +testrred 'Single line change' 'an empty line' '10c + +.' "$(head -n 9 ./Packages) + +$(tail -n 9 ./Packages)" +testrred 'Single line change' 'a spacy line' '10c + +.' "$(head -n 9 ./Packages) + +$(tail -n 9 ./Packages)" +testrred 'Single line change' 'last line' '19c + And a cat. +.' "$(head -n -1 ./Packages) + And a cat." + +testrred 'Multi line change' 'exchange' '5,7c + - good stuff + - more good stuff + - even more good stuff +.' "$(head -n 4 ./Packages) + - good stuff + - more good stuff + - even more good stuff +$(tail -n 12 ./Packages)" +testrred 'Multi line change' 'less' '5,7c + - good stuff + - more good stuff +.' "$(head -n 4 ./Packages) + - good stuff + - more good stuff +$(tail -n 12 ./Packages)" +testrred 'Multi line change' 'more' '5,7c + - good stuff + - more good stuff + - even more good stuff + - bonus good stuff +.' "$(head -n 4 ./Packages) + - good stuff + - more good stuff + - even more good stuff + - bonus good stuff +$(tail -n 12 ./Packages)" + +failrred() { + msgtest 'Failure caused by' "$1" + echo "$2" > Packages.ed + rred() { + cat Packages | runapt "${METHODSDIR}/rred" "$@" + } + testfailure --nomsg rred -f Packages.ed +} + +failrred 'Bogus content' ' +' + +# not a problem per-se, but we want our parser to be really strict +failrred 'Empty patch file' '' +failrred 'Empty line patch file' ' +' +failrred 'Empty line before command' ' +1d' +failrred 'Empty line after command' '1d +' +failrred 'Empty line between commands' '17d + +7d' +failrred 'Empty spaces lines before command' ' +1d' +failrred 'Empty spaces lines after command' '1d + ' +failrred 'Empty spaces lines between commands' '17d + +7d' + +# the line before the first one can't be deleted/changed +failrred 'zero line delete' '0d' +failrred 'zero line change' '0c +Package: supercoolstuff +.' +# and this makes no sense at all +failrred 'negative line delete' '-1d' +failrred 'negative line change' '-1c +Package: supercoolstuff +.' +failrred 'negative line add' '-1a +Package: supercoolstuff +.' +failrred 'Wrong order of commands' '7d +17d' +failrred 'End before start' '7,6d' diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index 73df61895..7a9f6496b 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -165,7 +165,8 @@ SHA256-History: SHA256-Patches: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28 $(sha256sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE) $(basename $PATCHFILE)" > $PATCHINDEX - echo 'I am Mallory and I change files' >> $PATCHFILE + # needs to look like a valid command, otherwise the parser will fail before hashes are checked + echo '1d' >> $PATCHFILE cat $PATCHFILE | gzip > ${PATCHFILE}.gz generatereleasefiles '+1hour' signreleasefiles -- cgit v1.2.3-70-g09d2 From 4f51fd8636592a96aecf17c8bf4cfdb3ea2207cc Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 8 Jun 2015 00:06:41 +0200 Subject: support hashes for compressed pdiff files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At the moment we only have hashes for the uncompressed pdiff files, but via the new '$HASH-Download' field in the .diff/Index hashes can be provided for the .gz compressed pdiff file, which apt will pick up now and use to verify the download. Now, we "just" need a buy in from the creators of repositories… --- apt-pkg/acquire-item.cc | 72 ++++++++++++++++++++++++++++++++------- apt-pkg/acquire-item.h | 11 +++--- apt-pkg/contrib/hashes.cc | 11 ++++-- apt-pkg/contrib/hashes.h | 7 ++++ apt-pkg/indexrecords.cc | 4 +-- methods/rred.cc | 2 +- test/integration/test-pdiff-usage | 46 +++++++++++++++++++++++-- 7 files changed, 125 insertions(+), 28 deletions(-) (limited to 'test/integration/test-pdiff-usage') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 7b69ee993..a3f47242f 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -152,14 +152,18 @@ HashStringList pkgAcqMetaBase::GetExpectedHashes() const APT_CONST bool pkgAcqIndexDiffs::HashesRequired() const { - /* FIXME: We have only hashes for uncompressed pdiffs. - rred uncompresses them on the fly while parsing. - In StateFetchDiff state we also uncompress on the fly for hash check. - Hashes are checked while searching for (next) patch to apply. */ + /* We don't always have the diff of the downloaded pdiff file. + What we have for sure is hashes for the uncompressed file, + but rred uncompresses them on the fly while parsing, so not handled here. + Hashes are (also) checked while searching for (next) patch to apply. */ + if (State == StateFetchDiff) + return available_patches[0].download_hashes.empty() == false; return false; } HashStringList pkgAcqIndexDiffs::GetExpectedHashes() const { + if (State == StateFetchDiff) + return available_patches[0].download_hashes; return HashStringList(); } @@ -168,11 +172,15 @@ APT_CONST bool pkgAcqIndexMergeDiffs::HashesRequired() const /* @see #pkgAcqIndexDiffs::HashesRequired, with the difference that we can check the rred result after all patches are applied as we know the expected result rather than potentially apply more patches */ + if (State == StateFetchDiff) + return patch.download_hashes.empty() == false; return State == StateApplyDiff; } HashStringList pkgAcqIndexMergeDiffs::GetExpectedHashes() const { - if (State == StateApplyDiff) + if (State == StateFetchDiff) + return patch.download_hashes; + else if (State == StateApplyDiff) return GetExpectedHashesFor(Target->MetaKey); return HashStringList(); } @@ -1618,7 +1626,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ std::vector::iterator cur = available_patches.begin(); for (; cur != available_patches.end(); ++cur) { - if (cur->file != filename || unlikely(cur->result_size != size)) + if (cur->file != filename) continue; cur->result_hashes.push_back(HashString(*type, hash)); break; @@ -1630,8 +1638,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ DiffInfo next; next.file = filename; next.result_hashes.push_back(HashString(*type, hash)); - next.result_size = size; - next.patch_size = 0; + next.result_hashes.FileSize(size); available_patches.push_back(next); } else @@ -1679,10 +1686,9 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ { if (cur->file != filename) continue; - if (unlikely(cur->patch_size != 0 && cur->patch_size != size)) - continue; + if (cur->patch_hashes.empty()) + cur->patch_hashes.FileSize(size); cur->patch_hashes.push_back(HashString(*type, hash)); - cur->patch_size = size; break; } if (cur != available_patches.end()) @@ -1694,6 +1700,48 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ } } + for (char const * const * type = HashString::SupportedHashes(); *type != NULL; ++type) + { + std::string tagname = *type; + tagname.append("-Download"); + std::string const tmp = Tags.FindS(tagname.c_str()); + if (tmp.empty() == true) + continue; + + string hash, filename; + unsigned long long size; + std::stringstream ss(tmp); + + // FIXME: all of pdiff supports only .gz compressed patches + while (ss >> hash >> size >> filename) + { + if (unlikely(hash.empty() == true || filename.empty() == true)) + continue; + if (unlikely(APT::String::Endswith(filename, ".gz") == false)) + continue; + filename.erase(filename.length() - 3); + + // see if we have a record for this file already + std::vector::iterator cur = available_patches.begin(); + for (; cur != available_patches.end(); ++cur) + { + if (cur->file != filename) + continue; + if (cur->download_hashes.empty()) + cur->download_hashes.FileSize(size); + cur->download_hashes.push_back(HashString(*type, hash)); + break; + } + if (cur != available_patches.end()) + continue; + if (Debug == true) + std::clog << "pkgAcqDiffIndex: " << IndexDiffFile << ": File " << filename + << " wasn't in the list for the first parsed hash! (download)" << std::endl; + break; + } + } + + bool foundStart = false; for (std::vector::iterator cur = available_patches.begin(); cur != available_patches.end(); ++cur) @@ -1729,7 +1777,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ unsigned long long patchesSize = 0; for (std::vector::const_iterator cur = available_patches.begin(); cur != available_patches.end(); ++cur) - patchesSize += cur->patch_size; + patchesSize += cur->patch_hashes.FileSize(); unsigned long long const sizeLimit = ServerSize * _config->FindI("Acquire::PDiffs::SizeLimit", 100); if (sizeLimit > 0 && (sizeLimit/100) < patchesSize) { diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index f24af1aec..910e4131b 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -705,17 +705,14 @@ struct APT_HIDDEN DiffInfo { /*{{{*/ /** The filename of the diff. */ std::string file; - /** The hashes of the diff */ + /** The hashes of the file after the diff is applied */ HashStringList result_hashes; - /** The hashes of the file after the diff is applied */ + /** The hashes of the diff */ HashStringList patch_hashes; - /** The size of the file after the diff is applied */ - unsigned long long result_size; - - /** The size of the diff itself */ - unsigned long long patch_size; + /** The hashes of the compressed diff */ + HashStringList download_hashes; }; /*}}}*/ /** \brief An item that is responsible for fetching client-merge patches {{{ diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc index 11a7e479b..46cf0ba08 100644 --- a/apt-pkg/contrib/hashes.cc +++ b/apt-pkg/contrib/hashes.cc @@ -188,6 +188,13 @@ unsigned long long HashStringList::FileSize() const /*{{{*/ return strtoull(hv.c_str(), NULL, 10); } /*}}}*/ +bool HashStringList::FileSize(unsigned long long const Size) /*{{{*/ +{ + std::string size; + strprintf(size, "%llu", Size); + return push_back(HashString("Checksum-FileSize", size)); +} + /*}}}*/ bool HashStringList::supported(char const * const type) /*{{{*/ { for (char const * const * t = HashString::SupportedHashes(); *t != NULL; ++t) @@ -361,9 +368,7 @@ APT_IGNORE_DEPRECATED_PUSH if ((d->CalcHashes & SHA512SUM) == SHA512SUM) hashes.push_back(HashString("SHA512", SHA512.Result().Value())); APT_IGNORE_DEPRECATED_POP - std::string SizeStr; - strprintf(SizeStr, "%llu", d->FileSize); - hashes.push_back(HashString("Checksum-FileSize", SizeStr)); + hashes.FileSize(d->FileSize); return hashes; } APT_IGNORE_DEPRECATED_PUSH diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index 176ce4faa..e8d84da9e 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -96,6 +96,13 @@ class HashStringList */ unsigned long long FileSize() const; + /** sets the filesize hash + * + * @param Size of the file + * @return @see #push_back + */ + bool FileSize(unsigned long long const Size); + /** check if the given hash type is supported * * @param type to check diff --git a/apt-pkg/indexrecords.cc b/apt-pkg/indexrecords.cc index c26868cac..7e6da9558 100644 --- a/apt-pkg/indexrecords.cc +++ b/apt-pkg/indexrecords.cc @@ -121,9 +121,7 @@ bool indexRecords::Load(const string Filename) /*{{{*/ indexRecords::checkSum *Sum = new indexRecords::checkSum; Sum->MetaKeyFilename = Name; Sum->Size = Size; - std::string SizeStr; - strprintf(SizeStr, "%llu", Size); - Sum->Hashes.push_back(HashString("Checksum-FileSize", SizeStr)); + Sum->Hashes.FileSize(Size); APT_IGNORE_DEPRECATED(Sum->Hash = HashString(HashString::SupportedHashes()[i],Hash);) Entries[Name] = Sum; } diff --git a/methods/rred.cc b/methods/rred.cc index 81ecf8553..12cf2b4a5 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -627,7 +627,7 @@ class RredMethod : public pkgAcqMethod { p.Close(); HashStringList const hsl = patch_hash.GetHashStringList(); if (hsl != I->ExpectedHashes) - return _error->Error("Patch %s doesn't have the expected hashsum", patch_name.c_str()); + return _error->Error("Hash Sum mismatch for uncompressed patch %s", patch_name.c_str()); } if (Debug == true) diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index 7a9f6496b..3295d5497 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -42,6 +42,8 @@ wasmergeused() { testrun() { msgmsg "Testcase: setup the base with: $*" + local DOWNLOADHASH=true + if [ "$1" = 'nohash' ]; then DOWNLOADHASH=false; shift; fi find aptarchive -name 'Packages*' -type f -delete cp ${PKGFILE} aptarchive/Packages compressfile 'aptarchive/Packages' @@ -76,6 +78,15 @@ SHA256-History: SHA256-Patches: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28 $(sha256sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE) $(basename $PATCHFILE)" > $PATCHINDEX + if $DOWNLOADHASH; then + echo "SHA1-Download: + 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz + $(sha1sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz) +SHA256-Download: + d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz + $(sha256sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz)" >> $PATCHINDEX + fi + generatereleasefiles '+1hour' signreleasefiles find aptarchive -name 'Packages*' -type f -delete @@ -131,6 +142,17 @@ SHA256-Patches: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28 $(sha256sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE) $(basename $PATCHFILE) $(sha256sum ${PATCHFILE2} | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE2}) $(basename ${PATCHFILE2})" > $PATCHINDEX + if $DOWNLOADHASH; then + echo "SHA1-Download: + 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz + $(sha1sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz) + $(sha1sum ${PATCHFILE2}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE2}.gz) $(basename ${PATCHFILE2}.gz) +SHA256-Download: + d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz + $(sha256sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz) + $(sha256sum ${PATCHFILE2}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE2}.gz) $(basename ${PATCHFILE2}.gz)" >> $PATCHINDEX + fi + generatereleasefiles '+2hour' signreleasefiles cp -a aptarchive/Packages Packages-future @@ -150,6 +172,7 @@ SHA256-Patches: mkdir -p aptarchive/Packages.diff PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)" diff -e ${PKGFILE} ${PKGFILE}-new > ${PATCHFILE} || true + cat $PATCHFILE | gzip > ${PATCHFILE}.gz PATCHINDEX='aptarchive/Packages.diff/Index' echo "SHA1-Current: $(sha1sum ${PKGFILE}-new | cut -d' ' -f 1) $(stat -c%s ${PKGFILE}-new) SHA1-History: @@ -165,14 +188,22 @@ SHA256-History: SHA256-Patches: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28 $(sha256sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE) $(basename $PATCHFILE)" > $PATCHINDEX + if $DOWNLOADHASH; then + echo "SHA1-Download: + 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz + $(sha1sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz) +SHA256-Download: + d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz + $(sha256sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz) $(basename ${PATCHFILE}.gz)" >> $PATCHINDEX + fi # needs to look like a valid command, otherwise the parser will fail before hashes are checked - echo '1d' >> $PATCHFILE + echo '1d' > $PATCHFILE cat $PATCHFILE | gzip > ${PATCHFILE}.gz generatereleasefiles '+1hour' signreleasefiles testsuccess aptget update "$@" cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptgetupdate.output - testsuccess grep 'have the expected hashsum' rootdir/tmp/aptgetupdate.output + testsuccess grep 'Hash Sum mismatch' rootdir/tmp/aptgetupdate.output testnopackage oldstuff testsuccessequal "$(cat ${PKGFILE}-new) " aptcache show apt newstuff @@ -201,6 +232,14 @@ SHA256-History: SHA256-Patches: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28 $(sha256sum $PATCHFILE | cut -d' ' -f 1) $(stat -c%s $PATCHFILE)000 $(basename $PATCHFILE)" > $PATCHINDEX + if $DOWNLOADHASH; then + echo "SHA1-Download: + 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz + $(sha1sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz)000 $(basename ${PATCHFILE}.gz) +SHA256-Download: + d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz + $(sha256sum ${PATCHFILE}.gz | cut -d' ' -f 1) $(stat -c%s ${PATCHFILE}.gz)000 $(basename ${PATCHFILE}.gz)" >> $PATCHINDEX + fi generatereleasefiles '+1hour' signreleasefiles #find aptarchive -name 'Packages*' -type f -delete @@ -215,6 +254,9 @@ echo 'Debug::pkgAcquire::Diffs "true"; Debug::Acquire::Transaction "true"; Debug::pkgAcquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf +testrun nohash -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=1 +testrun nohash -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=1 + testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=1 testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=1 testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=0 -- cgit v1.2.3-70-g09d2 From 1eb1836f4b5397497bd34f0cf516e6e4e73117bf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 15 Jun 2015 16:41:43 +0200 Subject: show item ID in Hit, Ign and Err lines as well Again, consistency is the main sellingpoint here, but this way it is now also easier to explain that some files move through different stages and lines are printed for them hence multiple times: That is a bit hard to believe if the number is changing all the time, but now that it keeps consistent. --- apt-pkg/acquire-item.cc | 2 +- apt-private/acqprogress.cc | 38 +++++++++++++++----- apt-private/acqprogress.h | 3 +- po/apt-all.pot | 12 ++++--- po/ar.po | 18 ++++++---- po/ast.po | 20 ++++++----- po/bg.po | 20 ++++++----- po/bs.po | 8 ++--- po/ca.po | 20 ++++++----- po/cs.po | 20 ++++++----- po/cy.po | 20 ++++++----- po/da.po | 20 ++++++----- po/de.po | 20 ++++++----- po/dz.po | 20 ++++++----- po/el.po | 20 ++++++----- po/es.po | 20 ++++++----- po/eu.po | 20 ++++++----- po/fi.po | 20 ++++++----- po/fr.po | 20 ++++++----- po/gl.po | 20 ++++++----- po/he.po | 12 ++++--- po/hu.po | 20 ++++++----- po/it.po | 21 +++++++----- po/ja.po | 20 ++++++----- po/km.po | 20 ++++++----- po/ko.po | 20 ++++++----- po/ku.po | 16 +++++---- po/lt.po | 20 ++++++----- po/mr.po | 20 ++++++----- po/nb.po | 20 ++++++----- po/ne.po | 20 ++++++----- po/nl.po | 20 ++++++----- po/nn.po | 20 ++++++----- po/pl.po | 20 ++++++----- po/pt.po | 20 ++++++----- po/pt_BR.po | 20 ++++++----- po/ro.po | 20 ++++++----- po/ru.po | 20 ++++++----- po/sk.po | 20 ++++++----- po/sl.po | 20 ++++++----- po/sv.po | 20 ++++++----- po/th.po | 20 ++++++----- po/tl.po | 20 ++++++----- po/tr.po | 20 ++++++----- po/uk.po | 20 ++++++----- po/vi.po | 20 ++++++----- po/zh_CN.po | 20 ++++++----- po/zh_TW.po | 20 ++++++----- test/integration/test-apt-acquire-additional-files | 10 +++--- test/integration/test-apt-cdrom | 4 +-- .../integration/test-apt-get-update-unauth-warning | 14 ++++---- test/integration/test-apt-update-ims | 36 +++++++++---------- test/integration/test-apt-update-not-modified | 40 +++++++++++----------- .../test-bug-595691-empty-and-broken-archive-files | 14 ++++---- test/integration/test-bug-602412-dequote-redirect | 2 +- test/integration/test-pdiff-usage | 2 +- .../test-ubuntu-bug-1098738-apt-get-source-md5sum | 8 ++--- 57 files changed, 618 insertions(+), 422 deletions(-) (limited to 'test/integration/test-pdiff-usage') diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 50936b627..5460280ec 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -405,7 +405,7 @@ class APT_HIDDEN NoActionItem : public pkgAcquire::Item /*{{{*/ // Acquire::Item::Item - Constructor /*{{{*/ APT_IGNORE_DEPRECATED_PUSH pkgAcquire::Item::Item(pkgAcquire * const Owner) : - FileSize(0), PartialSize(0), Mode(0), Complete(false), Local(false), + FileSize(0), PartialSize(0), Mode(0), ID(0), Complete(false), Local(false), QueueCounter(0), ExpectedAdditionalItems(0), Owner(Owner) { Owner->Add(this); diff --git a/apt-private/acqprogress.cc b/apt-private/acqprogress.cc index 0c606e48e..dc92e3b2a 100644 --- a/apt-private/acqprogress.cc +++ b/apt-private/acqprogress.cc @@ -49,6 +49,16 @@ void AcqTextStatus::Start() ID = 1; } /*}}}*/ +void AcqTextStatus::AssignItemID(pkgAcquire::ItemDesc &Itm) /*{{{*/ +{ + /* In theory calling it from Fetch() would be enough, but to be + safe we call it from IMSHit and Fail as well. + Also, an Item can pass through multiple stages, so ensure + that it keeps the same number */ + if (Itm.Owner->ID == 0) + Itm.Owner->ID = ID++; +} + /*}}}*/ // AcqTextStatus::IMSHit - Called when an item got a HIT response /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -57,9 +67,11 @@ void AcqTextStatus::IMSHit(pkgAcquire::ItemDesc &Itm) if (Quiet > 1) return; + AssignItemID(Itm); clearLastLine(); - out << _("Hit ") << Itm.Description; + // TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update' + ioprintf(out, _("Hit:%lu %s"), Itm.Owner->ID, Itm.Description.c_str()); out << std::endl; Update = true; } @@ -72,15 +84,16 @@ void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm) Update = true; if (Itm.Owner->Complete == true) return; - - Itm.Owner->ID = ID++; + AssignItemID(Itm); if (Quiet > 1) return; clearLastLine(); - out << _("Get:") << Itm.Owner->ID << ' ' << Itm.Description; + // TRANSLATOR: Very short word to be displayed for files processed in 'apt-get update' + // Potentially replaced later by "Hit:", "Ign:" or "Err:" if something (bad) happens + ioprintf(out, _("Get:%lu %s"), Itm.Owner->ID, Itm.Description.c_str()); if (Itm.Owner->FileSize != 0) out << " [" << SizeToStr(Itm.Owner->FileSize) << "B]"; out << std::endl; @@ -89,9 +102,10 @@ void AcqTextStatus::Fetch(pkgAcquire::ItemDesc &Itm) // AcqTextStatus::Done - Completed a download /*{{{*/ // --------------------------------------------------------------------- /* We don't display anything... */ -void AcqTextStatus::Done(pkgAcquire::ItemDesc &/*Itm*/) +void AcqTextStatus::Done(pkgAcquire::ItemDesc &Itm) { Update = true; + AssignItemID(Itm); } /*}}}*/ // AcqTextStatus::Fail - Called when an item fails to download /*{{{*/ @@ -106,19 +120,25 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm) if (Itm.Owner->Status == pkgAcquire::Item::StatIdle) return; + AssignItemID(Itm); clearLastLine(); if (Itm.Owner->Status == pkgAcquire::Item::StatDone) { - out << _("Ign ") << Itm.Description << std::endl; + // TRANSLATOR: Very short word to be displayed for files in 'apt-get update' + // which failed to download, but the error is ignored (compare "Err:") + ioprintf(out, _("Ign:%lu %s"), Itm.Owner->ID, Itm.Description.c_str()); if (Itm.Owner->ErrorText.empty() == false && _config->FindB("Acquire::Progress::Ignore::ShowErrorText", false) == true) - out << " " << Itm.Owner->ErrorText << std::endl; + out << std::endl << " " << Itm.Owner->ErrorText; + out << std::endl; } else { - out << _("Err ") << Itm.Description << std::endl; - out << " " << Itm.Owner->ErrorText << std::endl; + // TRANSLATOR: Very short word to be displayed for files in 'apt-get update' + // which failed to download and the error is critical (compare "Ign:") + ioprintf(out, _("Err:%lu %s"), Itm.Owner->ID, Itm.Description.c_str()); + out << std::endl << " " << Itm.Owner->ErrorText << std::endl; } Update = true; diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h index 7cf990c65..cbb06fbec 100644 --- a/apt-private/acqprogress.h +++ b/apt-private/acqprogress.h @@ -23,7 +23,8 @@ class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus unsigned long ID; unsigned long Quiet; - void clearLastLine(); + APT_HIDDEN void clearLastLine(); + APT_HIDDEN void AssignItemID(pkgAcquire::ItemDesc &Itm); public: diff --git a/po/apt-all.pot b/po/apt-all.pot index b68d801ea..73b033876 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -1529,19 +1529,23 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " +#, c-format +msgid "Hit:%lu %s" msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" +#, c-format +msgid "Get:%lu %s" msgstr "" #: apt-private/acqprogress.cc:119 -msgid "Ign " +#, c-format +msgid "Ign:%lu %s" msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " +#, c-format +msgid "Err:%lu %s" msgstr "" #: apt-private/acqprogress.cc:150 diff --git a/po/ar.po b/po/ar.po index e2b179d0e..3e71fef80 100644 --- a/po/ar.po +++ b/po/ar.po @@ -1555,20 +1555,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " +#, c-format +msgid "Hit:%lu %s" msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "جلب:" +#, c-format +msgid "Get:%lu %s" +msgstr "جلب:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "تجاهل" +#, c-format +msgid "Ign:%lu %s" +msgstr "تجاهل:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "خطأ" +#, c-format +msgid "Err:%lu %s" +msgstr "خطأ:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ast.po b/po/ast.po index 1efbbc1d2..1995c12f6 100644 --- a/po/ast.po +++ b/po/ast.po @@ -1684,20 +1684,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Oxe " +#, c-format +msgid "Hit:%lu %s" +msgstr "Oxe:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Des:" +#, c-format +msgid "Get:%lu %s" +msgstr "Des:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/bg.po b/po/bg.po index bbe6df3ae..7dff005e6 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1720,20 +1720,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Поп " +#, c-format +msgid "Hit:%lu %s" +msgstr "Поп:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Изт:" +#, c-format +msgid "Get:%lu %s" +msgstr "Изт:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Игн " +#, c-format +msgid "Ign:%lu %s" +msgstr "Игн:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Грш " +#, c-format +msgid "Err:%lu %s" +msgstr "Грш:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/bs.po b/po/bs.po index 9cd1adc85..abb9a570a 100644 --- a/po/bs.po +++ b/po/bs.po @@ -1555,19 +1555,19 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " +msgid "Hit:%lu %s" msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" +msgid "Get:%lu %s" msgstr "" #: apt-private/acqprogress.cc:119 -msgid "Ign " +msgid "Ign:%lu %s" msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " +msgid "Err:%lu %s" msgstr "" #: apt-private/acqprogress.cc:150 diff --git a/po/ca.po b/po/ca.po index cdb3ceeb8..065ad0ea7 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1708,20 +1708,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Obj " +#, c-format +msgid "Hit:%lu %s" +msgstr "Obj:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Bai:" +#, c-format +msgid "Get:%lu %s" +msgstr "Bai:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/cs.po b/po/cs.po index 76fc37b6b..3f6bcb4a7 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1734,20 +1734,24 @@ msgid "Full Text Search" msgstr "Fulltextové hledání" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Cíl " +#, c-format +msgid "Hit:%lu %s" +msgstr "Cíl:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Mám:" +#, c-format +msgid "Get:%lu %s" +msgstr "Mám:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/cy.po b/po/cy.po index e29221cd1..b05bc7c59 100644 --- a/po/cy.po +++ b/po/cy.po @@ -1706,20 +1706,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Presennol " +#, c-format +msgid "Hit:%lu %s" +msgstr "Presennol:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Cyrchu:" +#, c-format +msgid "Get:%lu %s" +msgstr "Cyrchu:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Anwybyddu " +#, c-format +msgid "Ign:%lu %s" +msgstr "Anwybyddu:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Gwall " +#, c-format +msgid "Err:%lu %s" +msgstr "Gwall:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/da.po b/po/da.po index 53d3de059..d6b8e07a1 100644 --- a/po/da.po +++ b/po/da.po @@ -1749,20 +1749,24 @@ msgid "Full Text Search" msgstr "Fuldtekst-søgning" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Havde " +#, c-format +msgid "Hit:%lu %s" +msgstr "Havde:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Henter:" +#, c-format +msgid "Get:%lu %s" +msgstr "Henter:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ignorerer " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ignorerer:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Fejl " +#, c-format +msgid "Err:%lu %s" +msgstr "Fejl:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/de.po b/po/de.po index 85b0cb7ac..d4ca0d5a0 100644 --- a/po/de.po +++ b/po/de.po @@ -1810,20 +1810,24 @@ msgid "Full Text Search" msgstr "Volltextsuche" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "OK " +#, c-format +msgid "Hit:%lu %s" +msgstr "OK:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Holen: " +#, c-format +msgid "Get:%lu %s" +msgstr "Holen:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ign:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Fehl " +#, c-format +msgid "Err:%lu %s" +msgstr "Fehl:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/dz.po b/po/dz.po index 8d1e57b35..a4c50d245 100644 --- a/po/dz.po +++ b/po/dz.po @@ -1674,20 +1674,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "ཨེབ།" +#, c-format +msgid "Hit:%lu %s" +msgstr "ཨེབ།:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "ལེན:" +#, c-format +msgid "Get:%lu %s" +msgstr "ལེན:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "ཨེལ་ཇི་ཨེན:" +#, c-format +msgid "Ign:%lu %s" +msgstr "ཨེལ་ཇི་ཨེན:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "ཨི་ཨར་ཨར།" +#, c-format +msgid "Err:%lu %s" +msgstr "ཨི་ཨར་ཨར།:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/el.po b/po/el.po index e0750b61e..98e1f31c9 100644 --- a/po/el.po +++ b/po/el.po @@ -1695,20 +1695,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Hit " +#, c-format +msgid "Hit:%lu %s" +msgstr "Hit:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Φέρε:" +#, c-format +msgid "Get:%lu %s" +msgstr "Φέρε:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Αγνόησε " +#, c-format +msgid "Ign:%lu %s" +msgstr "Αγνόησε:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Σφάλμα " +#, c-format +msgid "Err:%lu %s" +msgstr "Σφάλμα:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/es.po b/po/es.po index e094ccafa..a2a9a71e9 100644 --- a/po/es.po +++ b/po/es.po @@ -1820,20 +1820,24 @@ msgid "Full Text Search" msgstr "Buscar en todo el texto" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Obj " +#, c-format +msgid "Hit:%lu %s" +msgstr "Obj:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Des:" +#, c-format +msgid "Get:%lu %s" +msgstr "Des:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/eu.po b/po/eu.po index e268f6059..f1e90411a 100644 --- a/po/eu.po +++ b/po/eu.po @@ -1678,20 +1678,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Atzituta " +#, c-format +msgid "Hit:%lu %s" +msgstr "Atzituta:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Hartu:" +#, c-format +msgid "Get:%lu %s" +msgstr "Hartu:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ez ikusi " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ez ikusi:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/fi.po b/po/fi.po index d58fb9b04..c40ed8e9e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -1669,20 +1669,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Löytyi " +#, c-format +msgid "Hit:%lu %s" +msgstr "Löytyi:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Nouda:" +#, c-format +msgid "Get:%lu %s" +msgstr "Nouda:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Siv " +#, c-format +msgid "Ign:%lu %s" +msgstr "Siv:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Vrhe " +#, c-format +msgid "Err:%lu %s" +msgstr "Vrhe:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/fr.po b/po/fr.po index cb9d82856..ecb752f5e 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1774,20 +1774,24 @@ msgid "Full Text Search" msgstr "Recherche en texte intégral" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Atteint " +#, c-format +msgid "Hit:%lu %s" +msgstr "Atteint:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Réception de : " +#, c-format +msgid "Get:%lu %s" +msgstr "Réception de:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ign:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "Err:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/gl.po b/po/gl.po index d6bb1e92e..2adaa302a 100644 --- a/po/gl.po +++ b/po/gl.po @@ -1706,20 +1706,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Teño " +#, c-format +msgid "Hit:%lu %s" +msgstr "Teño:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Rcb:" +#, c-format +msgid "Get:%lu %s" +msgstr "Rcb:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/he.po b/po/he.po index b3ef8f831..ab7b50745 100644 --- a/po/he.po +++ b/po/he.po @@ -1188,19 +1188,23 @@ msgid "" msgstr "" #: cmdline/acqprogress.cc:55 -msgid "Hit " +#, c-format +msgid "Hit:%lu %s" msgstr "" #: cmdline/acqprogress.cc:79 -msgid "Get:" +#, c-format +msgid "Get:%lu %s" msgstr "" #: cmdline/acqprogress.cc:110 -msgid "Ign " +#, c-format +msgid "Ign:%lu %s" msgstr "" #: cmdline/acqprogress.cc:114 -msgid "Err " +#, c-format +msgid "Err:%lu %s" msgstr "" #: cmdline/acqprogress.cc:135 diff --git a/po/hu.po b/po/hu.po index 313f3a492..635184c75 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1714,20 +1714,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Találat " +#, c-format +msgid "Hit:%lu %s" +msgstr "Találat:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Letöltés:" +#, c-format +msgid "Get:%lu %s" +msgstr "Letöltés:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Mellőz " +#, c-format +msgid "Ign:%lu %s" +msgstr "Mellőz:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Hiba " +#, c-format +msgid "Err:%lu %s" +msgstr "Hiba:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/it.po b/po/it.po index 36173e92c..178754c52 100644 --- a/po/it.po +++ b/po/it.po @@ -1766,21 +1766,24 @@ msgid "Full Text Search" msgstr "Ricerca sul testo" #: apt-private/acqprogress.cc:62 -msgid "Hit " -msgstr "Trovato " +#, c-format +msgid "Hit:%lu %s" +msgstr "Trovato:%lu %s" #: apt-private/acqprogress.cc:83 -msgid "Get:" -msgstr "Scaricamento di:" +#, c-format +msgid "Get:%lu %s" +msgstr "Scaricamento di:%lu %s" -# (ndt) questa non so cosa voglia dire #: apt-private/acqprogress.cc:113 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:120 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:143 #, c-format diff --git a/po/ja.po b/po/ja.po index 6c49f2608..f8f55f8aa 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1750,20 +1750,24 @@ msgid "Full Text Search" msgstr "全文検索" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "ヒット " +#, c-format +msgid "Hit:%lu %s" +msgstr "ヒット:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "取得:" +#, c-format +msgid "Get:%lu %s" +msgstr "取得:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "無視 " +#, c-format +msgid "Ign:%lu %s" +msgstr "無視:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "エラー " +#, c-format +msgid "Err:%lu %s" +msgstr "エラー:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/km.po b/po/km.po index 26bfe4361..8c72865f8 100644 --- a/po/km.po +++ b/po/km.po @@ -1652,20 +1652,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "វាយ​" +#, c-format +msgid "Hit:%lu %s" +msgstr "វាយ​:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "យក​ ៖" +#, c-format +msgid "Get:%lu %s" +msgstr "យក​ ៖:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ko.po b/po/ko.po index 5479ab790..51cc27d61 100644 --- a/po/ko.po +++ b/po/ko.po @@ -1666,20 +1666,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "기존 " +#, c-format +msgid "Hit:%lu %s" +msgstr "기존:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "받기:" +#, c-format +msgid "Get:%lu %s" +msgstr "받기:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "무시" +#, c-format +msgid "Ign:%lu %s" +msgstr "무시:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "오류 " +#, c-format +msgid "Err:%lu %s" +msgstr "오류:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ku.po b/po/ku.po index c14ca94bd..540307937 100644 --- a/po/ku.po +++ b/po/ku.po @@ -1558,20 +1558,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " +#, c-format +msgid "Hit:%lu %s" msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Anîn:" +#, c-format +msgid "Get:%lu %s" +msgstr "Anîn:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " +#, c-format +msgid "Ign:%lu %s" msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Çewt" +#, c-format +msgid "Err:%lu %s" +msgstr "Çewt:%lu %s" #: apt-private/acqprogress.cc:150 #, fuzzy, c-format diff --git a/po/lt.po b/po/lt.po index b85a0fbe1..1f485b28d 100644 --- a/po/lt.po +++ b/po/lt.po @@ -1577,20 +1577,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Imamas " +#, c-format +msgid "Hit:%lu %s" +msgstr "Imamas:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Gauti:" +#, c-format +msgid "Get:%lu %s" +msgstr "Gauti:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ignoruotas " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ignoruotas:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Klaida " +#, c-format +msgid "Err:%lu %s" +msgstr "Klaida:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/mr.po b/po/mr.po index 286c5d859..24e470cef 100644 --- a/po/mr.po +++ b/po/mr.po @@ -1656,20 +1656,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "दाबा" +#, c-format +msgid "Hit:%lu %s" +msgstr "दाबा:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "मिळवा:" +#, c-format +msgid "Get:%lu %s" +msgstr "मिळवा:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "आय.जी.एन." +#, c-format +msgid "Ign:%lu %s" +msgstr "आय.जी.एन.:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "दोष इ.आर.आर." +#, c-format +msgid "Err:%lu %s" +msgstr "दोष इ.आर.आर.:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/nb.po b/po/nb.po index 07247be4f..433e33909 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1684,20 +1684,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Funnet " +#, c-format +msgid "Hit:%lu %s" +msgstr "Funnet:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Hent:" +#, c-format +msgid "Get:%lu %s" +msgstr "Hent:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ign:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Feil " +#, c-format +msgid "Err:%lu %s" +msgstr "Feil:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ne.po b/po/ne.po index 54dd771b4..4c6f2d098 100644 --- a/po/ne.po +++ b/po/ne.po @@ -1652,20 +1652,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "हान्नुहोस्" +#, c-format +msgid "Hit:%lu %s" +msgstr "हान्नुहोस्:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "प्राप्त गर्नुहोस्:" +#, c-format +msgid "Get:%lu %s" +msgstr "प्राप्त गर्नुहोस्:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/nl.po b/po/nl.po index 8d226dfef..5c774fe8d 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1776,20 +1776,24 @@ msgid "Full Text Search" msgstr "Volledige tekst doorzoeken" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Geraakt " +#, c-format +msgid "Hit:%lu %s" +msgstr "Geraakt:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Ophalen:" +#, c-format +msgid "Get:%lu %s" +msgstr "Ophalen:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Genegeerd " +#, c-format +msgid "Ign:%lu %s" +msgstr "Genegeerd:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Fout " +#, c-format +msgid "Err:%lu %s" +msgstr "Fout:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/nn.po b/po/nn.po index b3622b6cd..0886c266a 100644 --- a/po/nn.po +++ b/po/nn.po @@ -1668,20 +1668,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Treff " +#, c-format +msgid "Hit:%lu %s" +msgstr "Treff:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Hent:" +#, c-format +msgid "Get:%lu %s" +msgstr "Hent:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ign:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Feil " +#, c-format +msgid "Err:%lu %s" +msgstr "Feil:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/pl.po b/po/pl.po index 0dda22a47..1851fa805 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1749,22 +1749,26 @@ msgstr "" # Ujednolicono z aptitude #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Stary " +#, c-format +msgid "Hit:%lu %s" +msgstr "Stary:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Pobieranie:" +#, c-format +msgid "Get:%lu %s" +msgstr "Pobieranie:%lu %s" # Wyrównane do Hit i Err. #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign. " +#, c-format +msgid "Ign:%lu %s" +msgstr "" # Wyrównane do Hit i Ign. #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Błąd " +#, c-format +msgid "Err:%lu %s" +msgstr "Błąd:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/pt.po b/po/pt.po index a4b1105f8..4f05ada82 100644 --- a/po/pt.po +++ b/po/pt.po @@ -1718,20 +1718,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Hit " +#, c-format +msgid "Hit:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Obter:" +#, c-format +msgid "Get:%lu %s" +msgstr "Obter:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/pt_BR.po b/po/pt_BR.po index 0c4d92d02..5e2abd988 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1687,20 +1687,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Atingido " +#, c-format +msgid "Hit:%lu %s" +msgstr "Atingido:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Obter:" +#, c-format +msgid "Get:%lu %s" +msgstr "Obter:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ro.po b/po/ro.po index 63df026ab..9b0a1494a 100644 --- a/po/ro.po +++ b/po/ro.po @@ -1695,20 +1695,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Atins " +#, c-format +msgid "Hit:%lu %s" +msgstr "Atins:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Luat:" +#, c-format +msgid "Get:%lu %s" +msgstr "Luat:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ignorat " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ignorat:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Eroare" +#, c-format +msgid "Err:%lu %s" +msgstr "Eroare:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/ru.po b/po/ru.po index 260bdd513..2028e5420 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1742,20 +1742,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "В кэше " +#, c-format +msgid "Hit:%lu %s" +msgstr "В кэше:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Получено:" +#, c-format +msgid "Get:%lu %s" +msgstr "Получено:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Игн " +#, c-format +msgid "Ign:%lu %s" +msgstr "Игн:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Ош " +#, c-format +msgid "Err:%lu %s" +msgstr "Ош:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/sk.po b/po/sk.po index 912d1fcf7..631ddd826 100644 --- a/po/sk.po +++ b/po/sk.po @@ -1716,20 +1716,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Už existuje " +#, c-format +msgid "Hit:%lu %s" +msgstr "Už existuje:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Získava sa:" +#, c-format +msgid "Get:%lu %s" +msgstr "Získava sa:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Chyba " +#, c-format +msgid "Err:%lu %s" +msgstr "Chyba:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/sl.po b/po/sl.po index 3210fa504..845fe3c5f 100644 --- a/po/sl.po +++ b/po/sl.po @@ -1717,20 +1717,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Zadetek " +#, c-format +msgid "Hit:%lu %s" +msgstr "Zadetek:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Dobi:" +#, c-format +msgid "Get:%lu %s" +msgstr "Dobi:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Prezr " +#, c-format +msgid "Ign:%lu %s" +msgstr "Prezr:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Nap " +#, c-format +msgid "Err:%lu %s" +msgstr "Nap:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/sv.po b/po/sv.po index 70f4b2d2d..52f65b598 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1698,23 +1698,27 @@ msgstr "" # Måste vara tre bokstäver(?) # "Hit" = aktuell version är fortfarande giltig #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Bra " +#, c-format +msgid "Hit:%lu %s" +msgstr "Bra:%lu %s" # "Get:" = hämtar ny version #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Läs:" +#, c-format +msgid "Get:%lu %s" +msgstr "Läs:%lu %s" # "Ign" = hoppar över #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ign " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ign:%lu %s" # "Err" = fel vid hämtning #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Fel " +#, c-format +msgid "Err:%lu %s" +msgstr "Fel:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/th.po b/po/th.po index 147c3b8b8..60a468ea4 100644 --- a/po/th.po +++ b/po/th.po @@ -1696,20 +1696,24 @@ msgid "Full Text Search" msgstr "ค้นทั่วทั้งเนื้อความ" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "เจอ " +#, c-format +msgid "Hit:%lu %s" +msgstr "เจอ:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "ดึง:" +#, c-format +msgid "Get:%lu %s" +msgstr "ดึง:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "ข้าม " +#, c-format +msgid "Ign:%lu %s" +msgstr "ข้าม:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "ปัญหา " +#, c-format +msgid "Err:%lu %s" +msgstr "ปัญหา:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/tl.po b/po/tl.po index e3da79c8a..970b0b387 100644 --- a/po/tl.po +++ b/po/tl.po @@ -1677,20 +1677,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Tumama " +#, c-format +msgid "Hit:%lu %s" +msgstr "Tumama:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Kunin: " +#, c-format +msgid "Get:%lu %s" +msgstr "Kunin:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "DiPansin " +#, c-format +msgid "Ign:%lu %s" +msgstr "DiPansin:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Err " +#, c-format +msgid "Err:%lu %s" +msgstr "Err:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/tr.po b/po/tr.po index 5d9c3cee3..1e6f38903 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1753,20 +1753,24 @@ msgid "Full Text Search" msgstr "Tam Metin Arama" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Bağlandı " +#, c-format +msgid "Hit:%lu %s" +msgstr "Bağlandı:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Alınıyor: " +#, c-format +msgid "Get:%lu %s" +msgstr "Alınıyor:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Yoksay " +#, c-format +msgid "Ign:%lu %s" +msgstr "Yoksay:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Hata " +#, c-format +msgid "Err:%lu %s" +msgstr "Hata:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/uk.po b/po/uk.po index faeedf941..47976d39c 100644 --- a/po/uk.po +++ b/po/uk.po @@ -1736,20 +1736,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "В кеші " +#, c-format +msgid "Hit:%lu %s" +msgstr "В кеші:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Отр:" +#, c-format +msgid "Get:%lu %s" +msgstr "Отр:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Ігн " +#, c-format +msgid "Ign:%lu %s" +msgstr "Ігн:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Пом " +#, c-format +msgid "Err:%lu %s" +msgstr "Пом:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/vi.po b/po/vi.po index 089d8461a..2edb52f22 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1752,20 +1752,24 @@ msgid "Full Text Search" msgstr "Tìm kiếm toàn văn" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "Tìm thấy " +#, c-format +msgid "Hit:%lu %s" +msgstr "Tìm thấy:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "Lấy:" +#, c-format +msgid "Get:%lu %s" +msgstr "Lấy:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "Bỏq " +#, c-format +msgid "Ign:%lu %s" +msgstr "Bỏq:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "Lỗi " +#, c-format +msgid "Err:%lu %s" +msgstr "Lỗi:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/zh_CN.po b/po/zh_CN.po index 2ff5bcf01..6e9610ac9 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1693,20 +1693,24 @@ msgid "Full Text Search" msgstr "全文搜索" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "命中 " +#, c-format +msgid "Hit:%lu %s" +msgstr "命中:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "获取:" +#, c-format +msgid "Get:%lu %s" +msgstr "获取:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "忽略 " +#, c-format +msgid "Ign:%lu %s" +msgstr "忽略:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "错误 " +#, c-format +msgid "Err:%lu %s" +msgstr "错误:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/po/zh_TW.po b/po/zh_TW.po index e35910df2..201d9d675 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1646,20 +1646,24 @@ msgid "Full Text Search" msgstr "" #: apt-private/acqprogress.cc:66 -msgid "Hit " -msgstr "已有 " +#, c-format +msgid "Hit:%lu %s" +msgstr "已有:%lu %s" #: apt-private/acqprogress.cc:88 -msgid "Get:" -msgstr "下載:" +#, c-format +msgid "Get:%lu %s" +msgstr "下載:%lu %s" #: apt-private/acqprogress.cc:119 -msgid "Ign " -msgstr "略過 " +#, c-format +msgid "Ign:%lu %s" +msgstr "略過:%lu %s" #: apt-private/acqprogress.cc:126 -msgid "Err " -msgstr "錯誤 " +#, c-format +msgid "Err:%lu %s" +msgstr "錯誤:%lu %s" #: apt-private/acqprogress.cc:150 #, c-format diff --git a/test/integration/test-apt-acquire-additional-files b/test/integration/test-apt-acquire-additional-files index ffb9f3135..3465c0a16 100755 --- a/test/integration/test-apt-acquire-additional-files +++ b/test/integration/test-apt-acquire-additional-files @@ -49,8 +49,8 @@ testequal "'http://localhost:8080/dists/unstable/InRelease' localhost:8080_dists 'http://localhost:8080/dists/unstable/main/i18n/Translation-en.bz2' localhost:8080_dists_unstable_main_i18n_Translation-en 0 'http://localhost:8080/dists/unstable/main/Contents-amd64.bz2' localhost:8080_dists_unstable_main_Contents-amd64 0 " aptget update --print-uris -testsuccessequal "Hit http://localhost:8080 unstable InRelease -Get:1 http://localhost:8080 unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B] +testsuccessequal "Hit:1 http://localhost:8080 unstable InRelease +Get:2 http://localhost:8080 unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B] Reading package lists..." aptget update testequal 'rootdir/var/lib/apt/lists/localhost:8080_dists_unstable_main_Contents-amd64' find rootdir/var/lib/apt/lists -name '*Contents*' @@ -74,8 +74,8 @@ testequal "'http://localhost:8080/dists/unstable/InRelease' localhost:8080_dists 'http://localhost:8080/dists/unstable/main/i18n/Translation-en.bz2' localhost:8080_dists_unstable_main_i18n_Translation-en 0 'http://localhost:8080/dists/unstable/main/Contents-amd64.gz.bz2' localhost:8080_dists_unstable_main_Contents-amd64.gz 0 " aptget update --print-uris -testsuccessequal "Hit http://localhost:8080 unstable InRelease -Get:1 http://localhost:8080 unstable/main amd64 Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B] +testsuccessequal "Hit:1 http://localhost:8080 unstable InRelease +Get:2 http://localhost:8080 unstable/main amd64 Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B] Reading package lists..." aptget update testequal 'rootdir/var/lib/apt/lists/localhost:8080_dists_unstable_main_Contents-amd64.gz' find rootdir/var/lib/apt/lists -name '*Contents*' @@ -89,7 +89,7 @@ testequal "'http://localhost:8080/dists/unstable/InRelease' localhost:8080_dists 'http://localhost:8080/dists/unstable/main/binary-amd64/Packages.bz2' localhost:8080_dists_unstable_main_binary-amd64_Packages 0 'http://localhost:8080/dists/unstable/main/i18n/Translation-en.bz2' localhost:8080_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris -testsuccessequal "Hit http://localhost:8080 unstable InRelease +testsuccessequal "Hit:1 http://localhost:8080 unstable InRelease Reading package lists..." aptget update testempty find rootdir/var/lib/apt/lists -name '*Contents*' diff --git a/test/integration/test-apt-cdrom b/test/integration/test-apt-cdrom index 6a218ffb8..108805daa 100755 --- a/test/integration/test-apt-cdrom +++ b/test/integration/test-apt-cdrom @@ -136,14 +136,14 @@ aptcache show testing -o Acquire::Languages=en | grep -q '^Description-en: ' && mv rootdir/media/cdrom-unmounted rootdir/media/cdrom-ejected msgmsg "ensure an update doesn't mess with cdrom sources" testsuccess aptget update -testfileequal rootdir/tmp/testsuccess.output 'Hit cdrom://Debian APT Testdisk 0.8.15 stable InRelease +testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease Reading package lists...' mv rootdir/media/cdrom-ejected rootdir/media/cdrom-unmounted testcdromusage msgmsg 'and again to check that it withstands the temptation even if it could mount' testsuccess aptget update -testfileequal rootdir/tmp/testsuccess.output 'Hit cdrom://Debian APT Testdisk 0.8.15 stable InRelease +testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease Reading package lists...' testcdromusage diff --git a/test/integration/test-apt-get-update-unauth-warning b/test/integration/test-apt-get-update-unauth-warning index 1f4a14e23..5b81d56d2 100755 --- a/test/integration/test-apt-get-update-unauth-warning +++ b/test/integration/test-apt-get-update-unauth-warning @@ -20,9 +20,9 @@ APTARCHIVE=$(readlink -f ./aptarchive) rm -f $APTARCHIVE/dists/unstable/*Release* # update without authenticated files leads to warning -testfailureequal "Ign file:$APTARCHIVE unstable InRelease +testfailureequal "Ign:1 file:$APTARCHIVE unstable InRelease File not found -Err file:$APTARCHIVE unstable Release +Err:2 file:$APTARCHIVE unstable Release File not found W: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file. This is deprecated, please contact the owner of the repository. E: Use --allow-insecure-repositories to force the update" aptget update --no-allow-insecure-repositories @@ -36,13 +36,13 @@ filesize() { stat -c%s "$(aptget files --no-release-info --format '$(URI)' "Created-By: $1" | cut -d'/' -f 3- ).gz" } # allow override -testwarningequal "Ign file:$APTARCHIVE unstable InRelease +testwarningequal "Ign:1 file:$APTARCHIVE unstable InRelease File not found -Ign file:$APTARCHIVE unstable Release +Ign:2 file:$APTARCHIVE unstable Release File not found -Get:1 file:$APTARCHIVE unstable/main Sources [$(filesize 'Sources') B] -Get:2 file:$APTARCHIVE unstable/main i386 Packages [$(filesize 'Packages') B] -Get:3 file:$APTARCHIVE unstable/main Translation-en [$(filesize 'Translations') B] +Get:3 file:$APTARCHIVE unstable/main Sources [$(filesize 'Sources') B] +Get:4 file:$APTARCHIVE unstable/main i386 Packages [$(filesize 'Packages') B] +Get:5 file:$APTARCHIVE unstable/main Translation-en [$(filesize 'Translations') B] Reading package lists... W: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file. This is deprecated, please contact the owner of the repository." aptget update --allow-insecure-repositories # ensure we can not install the package diff --git a/test/integration/test-apt-update-ims b/test/integration/test-apt-update-ims index 7385e701a..2b662171c 100755 --- a/test/integration/test-apt-update-ims +++ b/test/integration/test-apt-update-ims @@ -43,7 +43,7 @@ runtest() { testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" # ensure that we still do a hash check for other files on ims hit of Release - if grep -q '^Hit .* InRelease$' expected.output || ! grep -q '^Ign .* Release\(\.gpg\)\?$' expected.output; then + if grep -q '^Hit:[0-9]\+ .* InRelease$' expected.output || ! grep -q '^Ign:[0-9]\+ .* Release\(\.gpg\)\?$' expected.output; then $TEST aptget update -o Debug::Acquire::gpgv=1 cp rootdir/tmp/${TEST}.output goodsign.output testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" @@ -55,7 +55,7 @@ runtest() { } msgmsg 'InRelease' -EXPECT='Hit http://localhost:8080 unstable InRelease +EXPECT='Hit:1 http://localhost:8080 unstable InRelease Reading package lists...' echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest @@ -63,9 +63,9 @@ echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest msgmsg 'Release/Release.gpg' -EXPECT='Ign http://localhost:8080 unstable InRelease +EXPECT='Ign:1 http://localhost:8080 unstable InRelease 404 Not Found -Hit http://localhost:8080 unstable Release +Hit:2 http://localhost:8080 unstable Release Reading package lists...' find aptarchive -name 'InRelease' -delete echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex @@ -74,10 +74,10 @@ echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest msgmsg 'Release only' -EXPECT="Ign http://localhost:8080 unstable InRelease +EXPECT="Ign:1 http://localhost:8080 unstable InRelease 404 Not Found -Hit http://localhost:8080 unstable Release -Ign http://localhost:8080 unstable Release.gpg +Hit:2 http://localhost:8080 unstable Release +Ign:3 http://localhost:8080 unstable Release.gpg 404 Not Found Reading package lists... W: The data from 'http://localhost:8080 unstable Release' is not signed. Packages from that repository can not be authenticated." @@ -96,7 +96,7 @@ Valid-Until: $(date -d '-1 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" '{}' \; signreleasefiles msgmsg 'expired InRelease' -EXPECT='Hit http://localhost:8080 unstable InRelease +EXPECT='Hit:1 http://localhost:8080 unstable InRelease E: Release file for http://localhost:8080/dists/unstable/InRelease is expired (invalid since). Updates for this repository will not be applied.' echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest 'failure' @@ -104,9 +104,9 @@ echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest 'failure' msgmsg 'expired Release/Release.gpg' -EXPECT='Ign http://localhost:8080 unstable InRelease +EXPECT='Ign:1 http://localhost:8080 unstable InRelease 404 Not Found -Hit http://localhost:8080 unstable Release +Hit:2 http://localhost:8080 unstable Release E: Release file for http://localhost:8080/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied.' find aptarchive -name 'InRelease' -delete echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex @@ -115,10 +115,10 @@ echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex runtest 'failure' msgmsg 'expired Release only' -EXPECT="Ign http://localhost:8080 unstable InRelease +EXPECT="Ign:1 http://localhost:8080 unstable InRelease 404 Not Found -Hit http://localhost:8080 unstable Release -Ign http://localhost:8080 unstable Release.gpg +Hit:2 http://localhost:8080 unstable Release +Ign:3 http://localhost:8080 unstable Release.gpg 404 Not Found W: The data from 'http://localhost:8080 unstable Release' is not signed. Packages from that repository can not be authenticated. E: Release file for http://localhost:8080/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied." @@ -130,13 +130,13 @@ runtest 'failure' 'warning' msgmsg 'no Release at all' -EXPECT="Ign http://localhost:8080 unstable InRelease +EXPECT="Ign:1 http://localhost:8080 unstable InRelease 404 Not Found -Ign http://localhost:8080 unstable Release +Ign:2 http://localhost:8080 unstable Release 404 Not Found -Hit http://localhost:8080 unstable/main Sources -Hit http://localhost:8080 unstable/main amd64 Packages -Hit http://localhost:8080 unstable/main Translation-en +Hit:3 http://localhost:8080 unstable/main Sources +Hit:4 http://localhost:8080 unstable/main amd64 Packages +Hit:5 http://localhost:8080 unstable/main Translation-en Reading package lists... W: The repository 'http://localhost:8080 unstable Release' does not have a Release file. This is deprecated, please contact the owner of the repository." find aptarchive -name '*Release*' -delete diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified index 32818658f..6d176a655 100755 --- a/test/integration/test-apt-update-not-modified +++ b/test/integration/test-apt-update-not-modified @@ -20,14 +20,14 @@ methodtest() { listcurrentlistsdirectory > listsdir.lst # hit again with a good cache - testsuccessequal "Hit $1 unstable InRelease + testsuccessequal "Hit:1 $1 unstable InRelease Reading package lists..." aptget update testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" # drop an architecture, which means the file should be gone now configarchitecture 'i386' sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst - testsuccessequal "Hit $1 unstable InRelease + testsuccessequal "Hit:1 $1 unstable InRelease Reading package lists..." aptget update testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)" @@ -42,9 +42,9 @@ Architecture: amd64 Version: 1 EOF compressfile aptarchive/dists/unstable/main/binary-amd64/Packages - testfailureequal "Hit $1 unstable InRelease -Get:1 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] -Err $1 unstable/main amd64 Packages + testfailureequal "Hit:1 $1 unstable InRelease +Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] +Err:2 $1 unstable/main amd64 Packages Hash Sum mismatch W: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch @@ -54,8 +54,8 @@ E: Some index files failed to download. They have been ignored, or old ones used cp -a aptarchive/dists.good aptarchive/dists # … now everything is fine again - testsuccessequal "Hit $1 unstable InRelease -Get:1 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] + testsuccessequal "Hit:1 $1 unstable InRelease +Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] Reading package lists..." aptget update testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" @@ -74,18 +74,18 @@ Reading package lists..." aptget update listcurrentlistsdirectory > listsdir.lst # hit again with a good cache - testsuccessequal "Ign $1 unstable InRelease + testsuccessequal "Ign:1 $1 unstable InRelease 404 Not Found -Hit $1 unstable Release +Hit:2 $1 unstable Release Reading package lists..." aptget update testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" # drop an architecture, which means the file should be gone now configarchitecture 'i386' sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst - testsuccessequal "Ign $1 unstable InRelease + testsuccessequal "Ign:1 $1 unstable InRelease 404 Not Found -Hit $1 unstable Release +Hit:2 $1 unstable Release Reading package lists..." aptget update testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)" @@ -100,11 +100,11 @@ Architecture: amd64 Version: 1 EOF compressfile aptarchive/dists/unstable/main/binary-amd64/Packages - testfailureequal "Ign $1 unstable InRelease + testfailureequal "Ign:1 $1 unstable InRelease 404 Not Found -Hit $1 unstable Release -Get:1 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] -Err $1 unstable/main amd64 Packages +Hit:2 $1 unstable Release +Get:4 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] +Err:4 $1 unstable/main amd64 Packages Hash Sum mismatch W: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch @@ -115,18 +115,18 @@ E: Some index files failed to download. They have been ignored, or old ones used find aptarchive/dists -name 'InRelease' -delete # … now everything is fine again - testsuccessequal "Ign $1 unstable InRelease + testsuccessequal "Ign:1 $1 unstable InRelease 404 Not Found -Hit $1 unstable Release -Get:1 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] +Hit:2 $1 unstable Release +Get:4 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B] Reading package lists..." aptget update testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" webserverconfig 'aptwebserver::support::modified-since' 'false' webserverconfig 'aptwebserver::support::last-modified' 'false' - testsuccessequal "Ign $1 unstable InRelease + testsuccessequal "Ign:1 $1 unstable InRelease 404 Not Found -Get:1 $1 unstable Release [$(stat -c '%s' 'aptarchive/dists/unstable/Release') B] +Get:2 $1 unstable Release [$(stat -c '%s' 'aptarchive/dists/unstable/Release') B] Reading package lists..." aptget update webserverconfig 'aptwebserver::support::modified-since' 'true' webserverconfig 'aptwebserver::support::last-modified' 'true' diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files index 3042d116d..47dd62712 100755 --- a/test/integration/test-bug-595691-empty-and-broken-archive-files +++ b/test/integration/test-bug-595691-empty-and-broken-archive-files @@ -13,7 +13,7 @@ setupflataptarchive testaptgetupdate() { rm -rf rootdir/var/lib/apt aptget update >testaptgetupdate.diff 2>&1 || true - sed -i -e '/Ign /,+1d' -e '/Release/ d' -e 's#Get:[0-9]\+ #Get: #' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff + sed -i -e '/Ign /,+1d' -e '/Release/ d' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff GIVEN="$1" shift msgtest "Test for correctness of" "apt-get update with $*" @@ -47,12 +47,12 @@ testoverfile() { forcecompressor "$1" createemptyarchive 'Packages' - testaptgetupdate "Get: file:$APTARCHIVE Packages [] + testaptgetupdate "Get:2 file:$APTARCHIVE Packages [] Reading package lists..." "empty archive Packages.$COMPRESS over file" createemptyfile 'Packages' - testaptgetupdate "Get: file:$APTARCHIVE Packages -Err file:$APTARCHIVE Packages + testaptgetupdate "Get:2 file:$APTARCHIVE Packages +Err:2 file:$APTARCHIVE Packages Empty files can't be valid archives W: Failed to fetch ${COMPRESSOR}:${APTARCHIVE}/Packages.$COMPRESS Empty files can't be valid archives @@ -63,13 +63,13 @@ testoverhttp() { forcecompressor "$1" createemptyarchive 'Packages' - testaptgetupdate "Get: http://localhost:8080 Packages [] + testaptgetupdate "Get:2 http://localhost:8080 Packages [] Reading package lists..." "empty archive Packages.$COMPRESS over http" createemptyfile 'Packages' #FIXME: we should response with a good error message instead - testaptgetupdate "Get: http://localhost:8080 Packages -Err http://localhost:8080 Packages + testaptgetupdate "Get:2 http://localhost:8080 Packages +Err:2 http://localhost:8080 Packages Empty files can't be valid archives W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:8080_Packages.${COMPRESS}) Empty files can't be valid archives diff --git a/test/integration/test-bug-602412-dequote-redirect b/test/integration/test-bug-602412-dequote-redirect index ca2378c19..b9d232f90 100755 --- a/test/integration/test-bug-602412-dequote-redirect +++ b/test/integration/test-bug-602412-dequote-redirect @@ -21,7 +21,7 @@ testrun() { testsuccess --nomsg aptget update # check that I-M-S header is kept in redirections - testsuccessequal "Hit $1 unstable InRelease + testsuccessequal "Hit:1 $1 unstable InRelease Reading package lists..." aptget update msgtest 'Test redirection works in' 'package download' diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage index 3295d5497..e5fe21e0f 100755 --- a/test/integration/test-pdiff-usage +++ b/test/integration/test-pdiff-usage @@ -98,7 +98,7 @@ SHA256-Download: msgmsg "Testcase: index is already up-to-date: $*" find rootdir/var/lib/apt/lists -name '*diff_Index' -type f -delete testsuccess aptget update "$@" - testequal 'Hit http://localhost:8080 InRelease + testequal 'Hit:1 http://localhost:8080 InRelease Reading package lists...' aptget update "$@" -o Debug::Acquire::Transaction=0 -o Debug::pkgAcquire::Diffs=0 testsuccessequal "$(cat ${PKGFILE}-new) " aptcache show apt newstuff diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum index 6abb5d12a..48a7f0562 100755 --- a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum +++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum @@ -176,10 +176,10 @@ testmismatch() { Building dependency tree... Need to get 6 B of source archives. Get:1 http://localhost:8080 $1 1.0 (dsc) [3 B] -Err http://localhost:8080 $1 1.0 (dsc) +Err:1 http://localhost:8080 $1 1.0 (dsc) Hash Sum mismatch Get:2 http://localhost:8080 $1 1.0 (tar) [3 B] -Err http://localhost:8080 $1 1.0 (tar) +Err:2 http://localhost:8080 $1 1.0 (tar) Hash Sum mismatch E: Failed to fetch http://localhost:8080/${1}_1.0.dsc Hash Sum mismatch @@ -242,7 +242,7 @@ Building dependency tree... Need to get 6 B of source archives. Get:1 http://localhost:8080 pkg-mixed-sha1-bad 1.0 (tar) [3 B] Get:2 http://localhost:8080 pkg-mixed-sha1-bad 1.0 (dsc) [3 B] -Err http://localhost:8080 pkg-mixed-sha1-bad 1.0 (dsc) +Err:2 http://localhost:8080 pkg-mixed-sha1-bad 1.0 (dsc) Hash Sum mismatch E: Failed to fetch http://localhost:8080/pkg-mixed-sha1-bad_1.0.dsc Hash Sum mismatch @@ -253,7 +253,7 @@ testfailureequal 'Reading package lists... Building dependency tree... Need to get 6 B of source archives. Get:1 http://localhost:8080 pkg-mixed-sha2-bad 1.0 (tar) [3 B] -Err http://localhost:8080 pkg-mixed-sha2-bad 1.0 (tar) +Err:1 http://localhost:8080 pkg-mixed-sha2-bad 1.0 (tar) Hash Sum mismatch Get:2 http://localhost:8080 pkg-mixed-sha2-bad 1.0 (dsc) [3 B] E: Failed to fetch http://localhost:8080/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch -- cgit v1.2.3-70-g09d2