summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire-item.cc438
-rw-r--r--apt-pkg/acquire-item.h64
-rw-r--r--doc/examples/configure-index2
-rw-r--r--methods/makefile7
-rw-r--r--methods/rred.cc262
-rw-r--r--po/apt-all.pot1201
6 files changed, 1333 insertions, 641 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 8ec4ba2c0..46c9d6c2c 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -24,6 +24,8 @@
#include <apt-pkg/strutl.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/tagfile.h>
#include <apti18n.h>
@@ -31,6 +33,7 @@
#include <unistd.h>
#include <errno.h>
#include <string>
+#include <sstream>
#include <stdio.h>
/*}}}*/
@@ -100,7 +103,8 @@ void pkgAcquire::Item::Done(string Message,unsigned long Size,string,
{
// We just downloaded something..
string FileName = LookupTag(Message,"Filename");
- if (Complete == false && FileName == DestFile)
+ // we only inform the Log class if it was actually not a local thing
+ if (Complete == false && !Local && FileName == DestFile)
{
if (Owner->Log != 0)
Owner->Log->Fetched(Size,atoi(LookupTag(Message,"Resume-Point","0").c_str()));
@@ -131,14 +135,430 @@ void pkgAcquire::Item::Rename(string From,string To)
}
/*}}}*/
+
+// AcqDiffIndex::AcqDiffIndex - Constructor
+// ---------------------------------------------------------------------
+/* Get the DiffIndex file first and see if there are patches availabe
+ * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
+ * patches. If anything goes wrong in that process, it will fall back to
+ * the original packages file
+ */
+pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), Description(URIDesc)
+{
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc + "/DiffIndex";
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+ Desc.URI = URI + ".diff/Index";
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI) + string(".DiffIndex");
+
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
+
+ // look for the current package file
+ CurrentPackagesFile = _config->FindDir("Dir::State::lists");
+ CurrentPackagesFile += URItoFileName(RealURI);
+
+ // FIXME: this file:/ check is a hack to prevent fetching
+ // from local sources. this is really silly, and
+ // should be fixed cleanly as soon as possible
+ if(!FileExists(CurrentPackagesFile) ||
+ Desc.URI.substr(0,strlen("file:/")) == "file:/")
+ {
+ // we don't have a pkg file or we don't want to queue
+ if(Debug)
+ std::clog << "No index file, local or canceld by user" << std::endl;
+ Failed("", NULL);
+ return;
+ }
+
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): "
+ << CurrentPackagesFile << std::endl;
+
+ QueueURI(Desc);
+
+}
+
+// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
+// ---------------------------------------------------------------------
+/* The only header we use is the last-modified header. */
+string pkgAcqDiffIndex::Custom600Headers()
+{
+ string Final = _config->FindDir("Dir::State::lists");
+ Final += URItoFileName(RealURI) + string(".IndexDiff");
+
+ if(Debug)
+ std::clog << "Custom600Header-IMS: " << Final << std::endl;
+
+ struct stat Buf;
+ if (stat(Final.c_str(),&Buf) != 0)
+ return "\nIndex-File: true";
+
+ return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
+}
+
+
+bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile
+ << std::endl;
+
+ pkgTagSection Tags;
+ string ServerSha1;
+ vector<DiffInfo> available_patches;
+
+ FileFd Fd(IndexDiffFile,FileFd::ReadOnly);
+ pkgTagFile TF(&Fd);
+ if (_error->PendingError() == true)
+ return false;
+
+ if(TF.Step(Tags) == true)
+ {
+ string local_sha1;
+ bool found = false;
+ DiffInfo d;
+ string size;
+
+ string tmp = Tags.FindS("SHA1-Current");
+ std::stringstream ss(tmp);
+ ss >> ServerSha1;
+
+ FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ local_sha1 = string(SHA1.Result());
+
+ if(local_sha1 == ServerSha1)
+ {
+ // we have the same sha1 as the server
+ if(Debug)
+ std::clog << "Package file is up-to-date" << std::endl;
+ // set found to true, this will queue a pkgAcqIndexDiffs with
+ // a empty availabe_patches
+ found = true;
+ }
+ else
+ {
+ if(Debug)
+ std::clog << "SHA1-Current: " << ServerSha1 << std::endl;
+
+ // check the historie and see what patches we need
+ string history = Tags.FindS("SHA1-History");
+ std::stringstream hist(history);
+ while(hist >> d.sha1 >> size >> d.file)
+ {
+ d.size = atoi(size.c_str());
+ // read until the first match is found
+ if(d.sha1 == local_sha1)
+ found=true;
+ // from that point on, we probably need all diffs
+ if(found)
+ {
+ if(Debug)
+ std::clog << "Need to get diff: " << d.file << std::endl;
+ available_patches.push_back(d);
+ }
+ }
+ }
+
+ // we have something, queue the next diff
+ if(found)
+ {
+ // queue the diffs
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return true;
+ }
+ }
+
+ // Nothing found, report and return false
+ // Failing here is ok, if we return false later, the full
+ // IndexFile is queued
+ if(Debug)
+ std::clog << "Can't find a patch in the index file" << std::endl;
+ return false;
+}
+
+void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file aquire" << std::endl;
+
+ new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5);
+
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+}
+
+void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading the index
+ // rename the index
+ FinalFile += string(".IndexDiff");
+ if(Debug)
+ std::clog << "Renaming: " << DestFile << " -> " << FinalFile
+ << std::endl;
+ Rename(DestFile,FinalFile);
+ chmod(FinalFile.c_str(),0644);
+ DestFile = FinalFile;
+
+ if(!ParseDiffIndex(DestFile))
+ return Failed("", NULL);
+
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+// AcqIndexDiffs::AcqIndexDiffs - Constructor
+// ---------------------------------------------------------------------
+/* The package diff is added to the queue. one object is constructed
+ * for each diff and the index
+ */
+pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5, vector<DiffInfo> diffs)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5),
+ available_patches(diffs)
+{
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI);
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc;
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+
+ if(available_patches.size() == 0)
+ {
+ // we are done (yeah!)
+ Finish(true);
+ }
+ else
+ {
+ // get the next diff
+ State = StateFetchDiff;
+ QueueNextDiff();
+ }
+}
+
+
+void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file aquire" << std::endl;
+ new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc,
+ ExpectedMD5);
+ Finish();
+}
+
+
+// helper that cleans the item out of the fetcher queue
+void pkgAcqIndexDiffs::Finish(bool allDone)
+{
+ // we restore the original name, this is required, otherwise
+ // the file will be cleaned
+ if(allDone)
+ {
+ DestFile = _config->FindDir("Dir::State::lists");
+ DestFile += URItoFileName(RealURI);
+
+ // do the final md5sum checking
+ MD5Summation sum;
+ FileFd Fd(DestFile, FileFd::ReadOnly);
+ sum.AddFD(Fd.Fd(), Fd.Size());
+ Fd.Close();
+ string MD5 = (string)sum.Result();
+
+ if (!ExpectedMD5.empty() && MD5 != ExpectedMD5)
+ {
+ Status = StatAuthError;
+ ErrorText = _("MD5Sum mismatch");
+ Rename(DestFile,DestFile + ".FAILED");
+ Dequeue();
+ return;
+ }
+
+ // this is for the "real" finish
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ if(Debug)
+ std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl;
+ return;
+ }
+
+ if(Debug)
+ std::clog << "Finishing: " << Desc.URI << std::endl;
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+bool pkgAcqIndexDiffs::QueueNextDiff()
+{
+
+ // calc sha1 of the just patched file
+ string FinalFile = _config->FindDir("Dir::State::lists");
+ FinalFile += URItoFileName(RealURI);
+
+ FileFd fd(FinalFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ string local_sha1 = string(SHA1.Result());
+ if(Debug)
+ std::clog << "QueueNextDiff: "
+ << FinalFile << " (" << local_sha1 << ")"<<std::endl;
+
+ // remove all patches until the next matching patch is found
+ // this requires the Index file to be ordered
+ for(vector<DiffInfo>::iterator I=available_patches.begin();
+ available_patches.size() > 0 &&
+ I != available_patches.end() &&
+ (*I).sha1 != local_sha1;
+ I++)
+ {
+ available_patches.erase(I);
+ }
+
+ // error checking and falling back if no patch was found
+ if(available_patches.size() == 0)
+ {
+ Failed("", NULL);
+ return false;
+ }
+
+ // queue the right diff
+ Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz";
+ Desc.Description = available_patches[0].file + string(".pdiff");
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file);
+
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl;
+
+ QueueURI(Desc);
+
+ return true;
+}
+
+
+
+void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateFetchDiff)
+ {
+
+ if(Debug)
+ std::clog << "Sending to gzip method: " << FinalFile << std::endl;
+
+ string FileName = LookupTag(Message,"Filename");
+ State = StateUnzipDiff;
+ Local = true;
+ Desc.URI = "gzip:" + FileName;
+ DestFile += ".decomp";
+ QueueURI(Desc);
+ Mode = "gzip";
+ return;
+ }
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateUnzipDiff)
+ {
+
+ // rred excepts the patch as $FinalFile.ed
+ Rename(DestFile,FinalFile+".ed");
+
+ if(Debug)
+ std::clog << "Sending to rred method: " << FinalFile << std::endl;
+
+ State = StateApplyDiff;
+ Local = true;
+ Desc.URI = "rred:" + FinalFile;
+ QueueURI(Desc);
+ Mode = "rred";
+ return;
+ }
+
+
+ // success in download/apply a diff, queue next (if needed)
+ if(State == StateApplyDiff)
+ {
+ // remove the just applied patch
+ available_patches.erase(available_patches.begin());
+
+ // move into place
+ if(Debug)
+ {
+ std::clog << "Moving patched file in place: " << std::endl
+ << DestFile << " -> " << FinalFile << std::endl;
+ }
+ Rename(DestFile,FinalFile);
+ chmod(FinalFile.c_str(),0644);
+
+ // see if there is more to download
+ if(available_patches.size() > 0) {
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ return Finish();
+ } else
+ return Finish(true);
+ }
+}
+
+
// AcqIndex::AcqIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The package file is added to the queue and a second class is
instantiated to fetch the revision file */
pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
string URI,string URIDesc,string ShortDesc,
- string ExpectedMD5, string comprExt) :
- Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
+ string ExpectedMD5, string comprExt)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
{
Decompression = false;
Erase = false;
@@ -532,6 +952,7 @@ void pkgAcqMetaIndex::RetrievalDone(string Message)
// Move it into position
Rename(DestFile,FinalFile);
}
+ chmod(FinalFile.c_str(),0644);
DestFile = FinalFile;
}
@@ -601,9 +1022,14 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify)
}
}
- // Queue Packages file
- new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
- (*Target)->ShortDesc, ExpectedIndexMD5);
+ // Queue Packages file (either diff or full packages files, depending
+ // on the users option)
+ if(_config->FindB("Acquire::PDiffs",true) == true)
+ new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
+ else
+ new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
}
}
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
index da1bea801..3649d7a03 100644
--- a/apt-pkg/acquire-item.h
+++ b/apt-pkg/acquire-item.h
@@ -82,6 +82,70 @@ class pkgAcquire::Item
virtual ~Item();
};
+// item for index diffs
+
+struct DiffInfo {
+ string file;
+ string sha1;
+ unsigned long size;
+};
+
+class pkgAcqDiffIndex : public pkgAcquire::Item
+{
+ protected:
+ bool Debug;
+ pkgAcquire::ItemDesc Desc;
+ string RealURI;
+ string ExpectedMD5;
+ string CurrentPackagesFile;
+ string Description;
+
+ public:
+ // Specialized action members
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ virtual void Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+ virtual string Custom600Headers();
+
+ // helpers
+ bool ParseDiffIndex(string IndexDiffFile);
+
+ pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesct, string ExpectedMD5);
+};
+
+class pkgAcqIndexDiffs : public pkgAcquire::Item
+{
+ protected:
+ bool Debug;
+ pkgAcquire::ItemDesc Desc;
+ string RealURI;
+ string ExpectedMD5;
+
+ // this is the SHA-1 sum we expect after the patching
+ string Description;
+ vector<DiffInfo> available_patches;
+ enum {StateFetchIndex,StateFetchDiff,StateUnzipDiff,StateApplyDiff} State;
+
+ public:
+
+ // Specialized action members
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ virtual void Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+
+ // various helpers
+ bool QueueNextDiff();
+ bool ApplyDiff(string PatchFile);
+ void Finish(bool allDone=false);
+
+ pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesct, string ExpectedMD5,
+ vector<DiffInfo> diffs=vector<DiffInfo>());
+};
+
// Item class for index files
class pkgAcqIndex : public pkgAcquire::Item
{
diff --git a/doc/examples/configure-index b/doc/examples/configure-index
index 73e20aa43..e58ba7b87 100644
--- a/doc/examples/configure-index
+++ b/doc/examples/configure-index
@@ -104,6 +104,8 @@ Acquire
Queue-Mode "host"; // host|access
Retries "0";
Source-Symlinks "true";
+
+ PDiffs "true"; // try to get the IndexFile diffs
// HTTP method configuration
http
diff --git a/methods/makefile b/methods/makefile
index 1e3b1ef85..d0b5a28c0 100644
--- a/methods/makefile
+++ b/methods/makefile
@@ -59,6 +59,13 @@ LIB_MAKES = apt-pkg/makefile
SOURCE = ftp.cc rfc2553emu.cc connect.cc
include $(PROGRAM_H)
+# The rred method
+PROGRAM=rred
+SLIBS = -lapt-pkg $(SOCKETLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = rred.cc
+include $(PROGRAM_H)
+
# The rsh method
PROGRAM=rsh
SLIBS = -lapt-pkg
diff --git a/methods/rred.cc b/methods/rred.cc
new file mode 100644
index 000000000..6fa57f3a6
--- /dev/null
+++ b/methods/rred.cc
@@ -0,0 +1,262 @@
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/acquire-method.h>
+#include <apt-pkg/strutl.h>
+#include <apt-pkg/hashes.h>
+
+#include <sys/stat.h>
+#include <unistd.h>
+#include <utime.h>
+#include <stdio.h>
+#include <errno.h>
+#include <apti18n.h>
+
+/* this method implements a patch functionality similar to "patch --ed" that is
+ * used by the "tiffany" incremental packages download stuff. it differs from
+ * "ed" insofar that it is way more restricted (and therefore secure). in the
+ * moment only the "c", "a" and "d" commands of ed are implemented (diff
+ * doesn't output any other). additionally the records must be reverse sorted
+ * by line number and may not overlap (diff *seems* to produce this kind of
+ * output).
+ * */
+
+const char *Prog;
+
+class RredMethod : public pkgAcqMethod
+{
+ bool Debug;
+ // the size of this doesn't really matter (except for performance)
+ const static int BUF_SIZE = 1024;
+ // the ed commands
+ enum Mode {MODE_CHANGED, MODE_DELETED, MODE_ADDED};
+ // return values
+ enum State {ED_OK, ED_ORDERING, ED_PARSER, ED_FAILURE};
+ // this applies a single hunk, it uses a tail recursion to
+ // reverse the hunks in the file
+ int ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash);
+ // apply a patch file
+ int ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file, Hashes *hash);
+ // the methods main method
+ virtual bool Fetch(FetchItem *Itm);
+
+ public:
+
+ RredMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {};
+};
+
+int RredMethod::ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash) {
+ int pos;
+ int startline;
+ int stopline;
+ int mode;
+ int written;
+ char *idx;
+
+ /* get the current command and parse it*/
+ if (fgets(buffer, bufsize, ed_cmds) == NULL) {
+ return line;
+ }
+ startline = strtol(buffer, &idx, 10);
+ if (startline < line) {
+ return ED_ORDERING;
+ }
+ if (*idx == ',') {
+ idx++;
+ stopline = strtol(idx, &idx, 10);
+ }
+ else {
+ stopline = startline;
+ }
+ if (*idx == 'c') {
+ mode = MODE_CHANGED;
+ if (Debug == true) {
+ std::clog << "changing from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else if (*idx == 'a') {
+ mode = MODE_ADDED;
+ if (Debug == true) {
+ std::clog << "adding after line " << startline << std::endl;
+ }
+ }
+ else if (*idx == 'd') {
+ mode = MODE_DELETED;
+ if (Debug == true) {
+ std::clog << "deleting from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else {
+ return ED_PARSER;
+ }
+ /* get the current position */
+ pos = ftell(ed_cmds);
+ /* if this is add or change then go to the next full stop */
+ if ((mode == MODE_CHANGED) || (mode == MODE_ADDED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ buffer[0] = ' ';
+ }
+ } while (strncmp(buffer, ".", 1) != 0);
+ }
+ /* do the recursive call */
+ line = ed_rec(ed_cmds, in_file, out_file, line, buffer, bufsize,
+ hash);
+ /* pass on errors */
+ if (line < 0) {
+ return line;
+ }
+ /* apply our hunk */
+ fseek(ed_cmds, pos, SEEK_SET);
+ /* first wind to the current position */
+ if (mode != MODE_ADDED) {
+ startline -= 1;
+ }
+ while (line < startline) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ line++;
+ }
+ /* include from ed script */
+ if ((mode == MODE_ADDED) || (mode == MODE_CHANGED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ if (strncmp(buffer, ".", 1) != 0) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ break;
+ }
+ } while (1);
+ }
+ /* ignore the corresponding number of lines from input */
+ if ((mode == MODE_DELETED) || (mode == MODE_CHANGED)) {
+ while (line < stopline) {
+ fgets(buffer, bufsize, in_file);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ }
+ line++;
+ }
+ }
+ return line;
+}
+
+int RredMethod::ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file,
+ Hashes *hash) {
+ char buffer[BUF_SIZE];
+ int result;
+ int written;
+
+ /* we do a tail recursion to read the commands in the right order */
+ result = ed_rec(ed_cmds, in_file, out_file, 0, buffer, BUF_SIZE,
+ hash);
+
+ /* read the rest from infile */
+ if (result > 0) {
+ while (fgets(buffer, BUF_SIZE, in_file) != NULL) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ return ED_FAILURE;
+ }
+ return ED_OK;
+}
+
+
+bool RredMethod::Fetch(FetchItem *Itm)
+{
+ Debug = _config->FindB("Debug::pkgAcquire::RRed",false);
+ URI Get = Itm->Uri;
+ string Path = Get.Host + Get.Path; // To account for relative paths
+ // Path contains the filename to patch
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ URIStart(Res);
+ // Res.Filename the destination filename
+
+ if (Debug == true)
+ std::clog << "Patching " << Path << " with " << Path
+ << ".ed and putting result into " << Itm->DestFile << std::endl;
+ // Open the source and destination files (the d'tor of FileFd will do
+ // the cleanup/closing of the fds)
+ FileFd From(Path,FileFd::ReadOnly);
+ FileFd Patch(Path+".ed",FileFd::ReadOnly);
+ FileFd To(Itm->DestFile,FileFd::WriteEmpty);
+ To.EraseOnFailure();
+ if (_error->PendingError() == true)
+ return false;
+
+ Hashes Hash;
+ FILE* fFrom = fdopen(From.Fd(), "r");
+ FILE* fPatch = fdopen(Patch.Fd(), "r");
+ FILE* fTo = fdopen(To.Fd(), "w");
+ // now do the actual patching
+ if (ed_file(fPatch, fFrom, fTo, &Hash) != ED_OK) {
+ _error->Errno("rred", _("Could not patch file"));
+ return false;
+ }
+
+ // write out the result
+ fflush(fFrom);
+ fflush(fPatch);
+ fflush(fTo);
+ From.Close();
+ Patch.Close();
+ To.Close();
+
+ // Transfer the modification times
+ struct stat Buf;
+ if (stat(Path.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ struct utimbuf TimeBuf;
+ TimeBuf.actime = Buf.st_atime;
+ TimeBuf.modtime = Buf.st_mtime;
+ if (utime(Itm->DestFile.c_str(),&TimeBuf) != 0)
+ return _error->Errno("utime",_("Failed to set modification time"));
+
+ if (stat(Itm->DestFile.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ // return done
+ Res.LastModified = Buf.st_mtime;
+ Res.Size = Buf.st_size;
+ Res.TakeHashes(Hash);
+ URIDone(Res);
+
+ return true;
+}
+
+int main(int argc, char *argv[])
+{
+ RredMethod Mth;
+
+ Prog = strrchr(argv[0],'/');
+ Prog++;
+
+ return Mth.Run();
+}
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 6f84389e4..46672e159 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-10-11 20:34+0200\n"
+"POT-Creation-Date: 2005-08-19 11:53+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: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:2387 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:545
+#: cmdline/apt-get.cc:2322 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1659
+#: cmdline/apt-cache.cc:1658
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
@@ -192,18 +192,6 @@ msgid ""
"See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
msgstr ""
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr ""
@@ -252,31 +240,31 @@ msgstr ""
msgid "Cannot get debconf version. Is debconf installed?"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:167 ftparchive/apt-ftparchive.cc:341
+#: ftparchive/apt-ftparchive.cc:163 ftparchive/apt-ftparchive.cc:337
msgid "Package extension list is too long"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:169 ftparchive/apt-ftparchive.cc:183
-#: ftparchive/apt-ftparchive.cc:206 ftparchive/apt-ftparchive.cc:256
-#: ftparchive/apt-ftparchive.cc:270 ftparchive/apt-ftparchive.cc:292
+#: ftparchive/apt-ftparchive.cc:165 ftparchive/apt-ftparchive.cc:179
+#: ftparchive/apt-ftparchive.cc:202 ftparchive/apt-ftparchive.cc:252
+#: ftparchive/apt-ftparchive.cc:266 ftparchive/apt-ftparchive.cc:288
#, c-format
msgid "Error processing directory %s"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:254
+#: ftparchive/apt-ftparchive.cc:250
msgid "Source extension list is too long"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:371
+#: ftparchive/apt-ftparchive.cc:367
msgid "Error writing header to contents file"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:401
+#: ftparchive/apt-ftparchive.cc:397
#, c-format
msgid "Error processing contents %s"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:556
+#: ftparchive/apt-ftparchive.cc:551
msgid ""
"Usage: apt-ftparchive [options] command\n"
"Commands: packages binarypath [overridefile [pathprefix]]\n"
@@ -318,47 +306,40 @@ msgid ""
" -o=? Set an arbitrary configuration option"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:762
+#: ftparchive/apt-ftparchive.cc:757
msgid "No selections matched"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:835
+#: ftparchive/apt-ftparchive.cc:830
#, c-format
msgid "Some files are missing in the package file group `%s'"
msgstr ""
-#: ftparchive/cachedb.cc:47
+#: ftparchive/cachedb.cc:45
#, c-format
msgid "DB was corrupted, file renamed to %s.old"
msgstr ""
-#: ftparchive/cachedb.cc:65
+#: ftparchive/cachedb.cc:63
#, c-format
msgid "DB is old, attempting to upgrade %s"
msgstr ""
-#: ftparchive/cachedb.cc:76
-msgid ""
-"DB format is invalid. If you upgraded from a older version of apt, please "
-"remove and re-create the database."
-msgstr ""
-
-#: ftparchive/cachedb.cc:81
+#: ftparchive/cachedb.cc:73
#, c-format
msgid "Unable to open DB file %s: %s"
msgstr ""
-#: ftparchive/cachedb.cc:127 apt-inst/extract.cc:181 apt-inst/extract.cc:193
-#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:272
+#: ftparchive/cachedb.cc:114
#, c-format
-msgid "Failed to stat %s"
+msgid "File date has changed %s"
msgstr ""
-#: ftparchive/cachedb.cc:242
+#: ftparchive/cachedb.cc:155
msgid "Archive has no control record"
msgstr ""
-#: ftparchive/cachedb.cc:448
+#: ftparchive/cachedb.cc:267
msgid "Unable to get a cursor"
msgstr ""
@@ -372,79 +353,75 @@ msgstr ""
msgid "W: Unable to stat %s\n"
msgstr ""
-#: ftparchive/writer.cc:135
+#: ftparchive/writer.cc:126
msgid "E: "
msgstr ""
-#: ftparchive/writer.cc:137
+#: ftparchive/writer.cc:128
msgid "W: "
msgstr ""
-#: ftparchive/writer.cc:144
+#: ftparchive/writer.cc:135
msgid "E: Errors apply to file "
msgstr ""
-#: ftparchive/writer.cc:161 ftparchive/writer.cc:191
+#: ftparchive/writer.cc:152 ftparchive/writer.cc:182
#, c-format
msgid "Failed to resolve %s"
msgstr ""
-#: ftparchive/writer.cc:173
+#: ftparchive/writer.cc:164
msgid "Tree walking failed"
msgstr ""
-#: ftparchive/writer.cc:198
+#: ftparchive/writer.cc:189
#, c-format
msgid "Failed to open %s"
msgstr ""
-#: ftparchive/writer.cc:257
+#: ftparchive/writer.cc:246
#, c-format
msgid " DeLink %s [%s]\n"
msgstr ""
-#: ftparchive/writer.cc:265
+#: ftparchive/writer.cc:254
#, c-format
msgid "Failed to readlink %s"
msgstr ""
-#: ftparchive/writer.cc:269
+#: ftparchive/writer.cc:258
#, c-format
msgid "Failed to unlink %s"
msgstr ""
-#: ftparchive/writer.cc:276
+#: ftparchive/writer.cc:265
#, c-format
msgid "*** Failed to link %s to %s"
msgstr ""
-#: ftparchive/writer.cc:286
+#: ftparchive/writer.cc:275
#, c-format
msgid " DeLink limit of %sB hit.\n"
msgstr ""
-#: ftparchive/writer.cc:390
-msgid "Archive had no package field"
-msgstr ""
-
-#: ftparchive/writer.cc:398 ftparchive/writer.cc:613
+#: 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:256
#, c-format
-msgid " %s has no override entry\n"
+msgid "Failed to stat %s"
msgstr ""
-#: ftparchive/writer.cc:443 ftparchive/writer.cc:701
-#, c-format
-msgid " %s maintainer is %s not %s\n"
+#: ftparchive/writer.cc:378
+msgid "Archive had no package field"
msgstr ""
-#: ftparchive/writer.cc:623
+#: ftparchive/writer.cc:386 ftparchive/writer.cc:595
#, c-format
-msgid " %s has no source override entry\n"
+msgid " %s has no override entry\n"
msgstr ""
-#: ftparchive/writer.cc:627
+#: ftparchive/writer.cc:429 ftparchive/writer.cc:677
#, c-format
-msgid " %s has no binary override entry either\n"
+msgid " %s maintainer is %s not %s\n"
msgstr ""
#: ftparchive/contents.cc:317
@@ -542,221 +519,200 @@ msgstr ""
msgid "Failed to rename %s to %s"
msgstr ""
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1484
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr ""
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr ""
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr ""
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr ""
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr ""
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr ""
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr ""
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr ""
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr ""
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr ""
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr ""
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr ""
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr ""
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr ""
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
msgstr ""
-#: cmdline/apt-get.cc:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr ""
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr ""
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr ""
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr ""
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr ""
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr ""
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr ""
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr ""
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
-#: cmdline/apt-get.cc:693
-msgid "Authentication warning overridden.\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:855
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:755
-msgid "Internal error, InstallPackages was called with broken packages!"
-msgstr ""
-
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:775
-msgid "Internal error, Ordering didn't finish"
-msgstr ""
-
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1818 cmdline/apt-get.cc:1851
+#: cmdline/apt-get.cc:788 cmdline/apt-get.cc:1778 cmdline/apt-get.cc:1811
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1899 cmdline/apt-get.cc:2135
+#: cmdline/apt-get.cc:798 cmdline/apt-get.cc:1859 cmdline/apt-get.cc:2070
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
-#: cmdline/apt-get.cc:816
-msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
-msgstr ""
-
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:818
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:821
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:826
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr ""
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:829
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1989
-#, c-format
-msgid "Couldn't determine free space in %s"
-msgstr ""
-
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:846
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:861 cmdline/apt-get.cc:881
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:863
msgid "Yes, do as I say!"
msgstr ""
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:865
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
@@ -764,74 +720,74 @@ msgid ""
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:871 cmdline/apt-get.cc:890
msgid "Abort."
msgstr ""
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:886
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:958 cmdline/apt-get.cc:1334 cmdline/apt-get.cc:1968
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:976
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2041
+#: cmdline/apt-get.cc:977 cmdline/apt-get.cc:1977
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:983
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:987
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:992
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:993
msgid "Aborting install."
msgstr ""
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1026
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1036
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1054
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1065
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1077
msgid " [Installed]"
msgstr ""
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1082
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1087
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
@@ -839,79 +795,79 @@ msgid ""
"is only available from another source\n"
msgstr ""
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1106
msgid "However the following packages replace it:"
msgstr ""
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1109
#, c-format
msgid "Package %s has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1129
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1137
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1164
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1172
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1282
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1326
+#: cmdline/apt-get.cc:1295 cmdline/apt-get.cc:1389
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1353
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1372
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529
+#: cmdline/apt-get.cc:1471 cmdline/apt-get.cc:1507
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1516
+#: cmdline/apt-get.cc:1494
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1546
+#: cmdline/apt-get.cc:1524
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1549
+#: cmdline/apt-get.cc:1527
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1561
+#: cmdline/apt-get.cc:1539
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"
@@ -919,163 +875,149 @@ msgid ""
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1569
+#: cmdline/apt-get.cc:1547
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:1574
+#: cmdline/apt-get.cc:1552
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1577
+#: cmdline/apt-get.cc:1555
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1603
+#: cmdline/apt-get.cc:1581
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1692
+#: cmdline/apt-get.cc:1652
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1693
+#: cmdline/apt-get.cc:1653
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1713
+#: cmdline/apt-get.cc:1673
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1676 methods/ftp.cc:702 methods/connect.cc:99
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1721
+#: cmdline/apt-get.cc:1681
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1786 cmdline/apt-get.cc:1794
-msgid "Internal error, problem resolver broke stuff"
-msgstr ""
-
-#: cmdline/apt-get.cc:1894
+#: cmdline/apt-get.cc:1854
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:1924 cmdline/apt-get.cc:2153
+#: cmdline/apt-get.cc:1881 cmdline/apt-get.cc:2088
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1968
-#, c-format
-msgid "Skipping already downloaded file '%s'\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:1992
+#: cmdline/apt-get.cc:1928
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1933
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2000
+#: cmdline/apt-get.cc:1936
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2006
+#: cmdline/apt-get.cc:1942
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2037
+#: cmdline/apt-get.cc:1973
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2065
+#: cmdline/apt-get.cc:2001
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2077
+#: cmdline/apt-get.cc:2013
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2078
-#, c-format
-msgid "Check if the 'dpkg-dev' package is installed.\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:2095
+#: cmdline/apt-get.cc:2030
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2114
+#: cmdline/apt-get.cc:2049
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2130
+#: cmdline/apt-get.cc:2065
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2158
+#: cmdline/apt-get.cc:2093
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2178
+#: cmdline/apt-get.cc:2113
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2230
+#: cmdline/apt-get.cc:2165
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2282
+#: cmdline/apt-get.cc:2217
#, 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:2317
+#: cmdline/apt-get.cc:2252
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2342
+#: cmdline/apt-get.cc:2277
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2356
+#: cmdline/apt-get.cc:2291
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2360
+#: cmdline/apt-get.cc:2295
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2392
+#: cmdline/apt-get.cc:2327
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2433
+#: cmdline/apt-get.cc:2368
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1203,19 +1145,19 @@ msgstr ""
msgid "Failed to create pipes"
msgstr ""
-#: apt-inst/contrib/extracttar.cc:144
+#: apt-inst/contrib/extracttar.cc:143
msgid "Failed to exec gzip "
msgstr ""
-#: apt-inst/contrib/extracttar.cc:181 apt-inst/contrib/extracttar.cc:207
+#: apt-inst/contrib/extracttar.cc:180 apt-inst/contrib/extracttar.cc:206
msgid "Corrupted archive"
msgstr ""
-#: apt-inst/contrib/extracttar.cc:196
+#: apt-inst/contrib/extracttar.cc:195
msgid "Tar checksum failed, archive corrupted"
msgstr ""
-#: apt-inst/contrib/extracttar.cc:299
+#: apt-inst/contrib/extracttar.cc:298
#, c-format
msgid "Unknown TAR header type %u, member %s"
msgstr ""
@@ -1276,7 +1218,7 @@ msgstr ""
msgid "Failed to write file %s"
msgstr ""
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr ""
@@ -1329,8 +1271,7 @@ msgid "File %s/%s overwrites the one in the package %s"
msgstr ""
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr ""
@@ -1376,7 +1317,7 @@ msgstr ""
msgid "Internal error getting a package name"
msgstr ""
-#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386
+#: apt-inst/deb/dpkgdb.cc:205
msgid "Reading file listing"
msgstr ""
@@ -1420,6 +1361,10 @@ 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"
@@ -1462,369 +1407,6 @@ msgstr ""
msgid "Unparsable control file"
msgstr ""
-#: methods/cdrom.cc:114
-#, c-format
-msgid "Unable to read the cdrom database %s"
-msgstr ""
-
-#: methods/cdrom.cc:123
-msgid ""
-"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
-"cannot be used to add new CD-ROMs"
-msgstr ""
-
-#: methods/cdrom.cc:131
-msgid "Wrong CD-ROM"
-msgstr ""
-
-#: methods/cdrom.cc:164
-#, c-format
-msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
-msgstr ""
-
-#: methods/cdrom.cc:169
-msgid "Disk not found."
-msgstr ""
-
-#: methods/cdrom.cc:177 methods/file.cc:79 methods/rsh.cc:264
-msgid "File not found"
-msgstr ""
-
-#: methods/copy.cc:42 methods/gpgv.cc:281 methods/gzip.cc:141
-#: methods/gzip.cc:150
-msgid "Failed to stat"
-msgstr ""
-
-#: methods/copy.cc:79 methods/gpgv.cc:278 methods/gzip.cc:147
-msgid "Failed to set modification time"
-msgstr ""
-
-#: methods/file.cc:44
-msgid "Invalid URI, local URIS must not start with //"
-msgstr ""
-
-#. Login must be before getpeername otherwise dante won't work.
-#: methods/ftp.cc:162
-msgid "Logging in"
-msgstr ""
-
-#: methods/ftp.cc:168
-msgid "Unable to determine the peer name"
-msgstr ""
-
-#: methods/ftp.cc:173
-msgid "Unable to determine the local name"
-msgstr ""
-
-#: methods/ftp.cc:204 methods/ftp.cc:232
-#, c-format
-msgid "The server refused the connection and said: %s"
-msgstr ""
-
-#: methods/ftp.cc:210
-#, c-format
-msgid "USER failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:217
-#, c-format
-msgid "PASS failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:237
-msgid ""
-"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
-"is empty."
-msgstr ""
-
-#: methods/ftp.cc:265
-#, c-format
-msgid "Login script command '%s' failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:291
-#, c-format
-msgid "TYPE failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
-msgid "Connection timeout"
-msgstr ""
-
-#: methods/ftp.cc:335
-msgid "Server closed the connection"
-msgstr ""
-
-#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:471 methods/rsh.cc:190
-msgid "Read error"
-msgstr ""
-
-#: methods/ftp.cc:345 methods/rsh.cc:197
-msgid "A response overflowed the buffer."
-msgstr ""
-
-#: methods/ftp.cc:362 methods/ftp.cc:374
-msgid "Protocol corruption"
-msgstr ""
-
-#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:510 methods/rsh.cc:232
-msgid "Write error"
-msgstr ""
-
-#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
-msgid "Could not create a socket"
-msgstr ""
-
-#: methods/ftp.cc:698
-msgid "Could not connect data socket, connection timed out"
-msgstr ""
-
-#: methods/ftp.cc:704
-msgid "Could not connect passive socket."
-msgstr ""
-
-#: methods/ftp.cc:722
-msgid "getaddrinfo was unable to get a listening socket"
-msgstr ""
-
-#: methods/ftp.cc:736
-msgid "Could not bind a socket"
-msgstr ""
-
-#: methods/ftp.cc:740
-msgid "Could not listen on the socket"
-msgstr ""
-
-#: methods/ftp.cc:747
-msgid "Could not determine the socket's name"
-msgstr ""
-
-#: methods/ftp.cc:779
-msgid "Unable to send PORT command"
-msgstr ""
-
-#: methods/ftp.cc:789
-#, c-format
-msgid "Unknown address family %u (AF_*)"
-msgstr ""
-
-#: methods/ftp.cc:798
-#, c-format
-msgid "EPRT failed, server said: %s"
-msgstr ""
-
-#: methods/ftp.cc:818
-msgid "Data socket connect timed out"
-msgstr ""
-
-#: methods/ftp.cc:825
-msgid "Unable to accept connection"
-msgstr ""
-
-#: methods/ftp.cc:864 methods/http.cc:958 methods/rsh.cc:303
-msgid "Problem hashing file"
-msgstr ""
-
-#: methods/ftp.cc:877
-#, c-format
-msgid "Unable to fetch file, server said '%s'"
-msgstr ""
-
-#: methods/ftp.cc:892 methods/rsh.cc:322
-msgid "Data socket timed out"
-msgstr ""
-
-#: methods/ftp.cc:922
-#, c-format
-msgid "Data transfer failed, server said '%s'"
-msgstr ""
-
-#. Get the files information
-#: methods/ftp.cc:997
-msgid "Query"
-msgstr ""
-
-#: methods/ftp.cc:1109
-msgid "Unable to invoke "
-msgstr ""
-
-#: methods/connect.cc:64
-#, c-format
-msgid "Connecting to %s (%s)"
-msgstr ""
-
-#: methods/connect.cc:71
-#, c-format
-msgid "[IP: %s %s]"
-msgstr ""
-
-#: methods/connect.cc:80
-#, c-format
-msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
-msgstr ""
-
-#: methods/connect.cc:86
-#, c-format
-msgid "Cannot initiate the connection to %s:%s (%s)."
-msgstr ""
-
-#: methods/connect.cc:93
-#, c-format
-msgid "Could not connect to %s:%s (%s), connection timed out"
-msgstr ""
-
-#: 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:136 methods/rsh.cc:425
-#, c-format
-msgid "Connecting to %s"
-msgstr ""
-
-#: methods/connect.cc:167
-#, c-format
-msgid "Could not resolve '%s'"
-msgstr ""
-
-#: methods/connect.cc:173
-#, c-format
-msgid "Temporary failure resolving '%s'"
-msgstr ""
-
-#: methods/connect.cc:176
-#, c-format
-msgid "Something wicked happened resolving '%s:%s' (%i)"
-msgstr ""
-
-#: methods/connect.cc:223
-#, c-format
-msgid "Unable to connect to %s %s:"
-msgstr ""
-
-#: methods/gpgv.cc:65
-#, c-format
-msgid "Couldn't access keyring: '%s'"
-msgstr ""
-
-#: methods/gpgv.cc:100
-msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
-msgstr ""
-
-#: methods/gpgv.cc:204
-msgid ""
-"Internal error: Good signature, but could not determine key fingerprint?!"
-msgstr ""
-
-#: methods/gpgv.cc:209
-msgid "At least one invalid signature was encountered."
-msgstr ""
-
-#: methods/gpgv.cc:213
-#, c-format
-msgid "Could not execute '%s' to verify signature (is gnupg installed?)"
-msgstr ""
-
-#: methods/gpgv.cc:218
-msgid "Unknown error executing gpgv"
-msgstr ""
-
-#: methods/gpgv.cc:249
-msgid "The following signatures were invalid:\n"
-msgstr ""
-
-#: methods/gpgv.cc:256
-msgid ""
-"The following signatures couldn't be verified because the public key is not "
-"available:\n"
-msgstr ""
-
-#: methods/gzip.cc:64
-#, c-format
-msgid "Couldn't open pipe for %s"
-msgstr ""
-
-#: methods/gzip.cc:109
-#, c-format
-msgid "Read error from %s process"
-msgstr ""
-
-#: methods/http.cc:376
-msgid "Waiting for headers"
-msgstr ""
-
-#: methods/http.cc:522
-#, c-format
-msgid "Got a single header line over %u chars"
-msgstr ""
-
-#: methods/http.cc:530
-msgid "Bad header line"
-msgstr ""
-
-#: methods/http.cc:549 methods/http.cc:556
-msgid "The HTTP server sent an invalid reply header"
-msgstr ""
-
-#: methods/http.cc:585
-msgid "The HTTP server sent an invalid Content-Length header"
-msgstr ""
-
-#: methods/http.cc:600
-msgid "The HTTP server sent an invalid Content-Range header"
-msgstr ""
-
-#: methods/http.cc:602
-msgid "This HTTP server has broken range support"
-msgstr ""
-
-#: methods/http.cc:626
-msgid "Unknown date format"
-msgstr ""
-
-#: methods/http.cc:773
-msgid "Select failed"
-msgstr ""
-
-#: methods/http.cc:778
-msgid "Connection timed out"
-msgstr ""
-
-#: methods/http.cc:801
-msgid "Error writing to output file"
-msgstr ""
-
-#: methods/http.cc:832
-msgid "Error writing to file"
-msgstr ""
-
-#: methods/http.cc:860
-msgid "Error writing to the file"
-msgstr ""
-
-#: methods/http.cc:874
-msgid "Error reading from server. Remote end closed connection"
-msgstr ""
-
-#: methods/http.cc:876
-msgid "Error reading from server"
-msgstr ""
-
-#: methods/http.cc:1107
-msgid "Bad header data"
-msgstr ""
-
-#: methods/http.cc:1124
-msgid "Connection failed"
-msgstr ""
-
-#: methods/http.cc:1215
-msgid "Internal error"
-msgstr ""
-
#: apt-pkg/contrib/mmap.cc:82
msgid "Can't mmap an empty file"
msgstr ""
@@ -1834,7 +1416,7 @@ msgstr ""
msgid "Couldn't make mmap of %lu bytes"
msgstr ""
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:941
#, c-format
msgid "Selection %s not found"
msgstr ""
@@ -2009,11 +1591,19 @@ msgstr ""
msgid "Could not open file %s"
msgstr ""
+#: apt-pkg/contrib/fileutl.cc:471 methods/ftp.cc:338 methods/rsh.cc:190
+msgid "Read error"
+msgstr ""
+
#: apt-pkg/contrib/fileutl.cc:492
#, c-format
msgid "read, still have %lu to read but none left"
msgstr ""
+#: apt-pkg/contrib/fileutl.cc:510 methods/ftp.cc:446 methods/rsh.cc:232
+msgid "Write error"
+msgstr ""
+
#: apt-pkg/contrib/fileutl.cc:522
#, c-format
msgid "write, still have %lu to write but couldn't"
@@ -2100,74 +1690,74 @@ msgstr ""
msgid "extra"
msgstr ""
-#: apt-pkg/depcache.cc:61 apt-pkg/depcache.cc:90
+#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89
msgid "Building dependency tree"
msgstr ""
-#: apt-pkg/depcache.cc:62
+#: apt-pkg/depcache.cc:61
msgid "Candidate versions"
msgstr ""
-#: apt-pkg/depcache.cc:91
+#: apt-pkg/depcache.cc:90
msgid "Dependency generation"
msgstr ""
-#: apt-pkg/tagfile.cc:106
+#: apt-pkg/tagfile.cc:73
#, c-format
msgid "Unable to parse package file %s (1)"
msgstr ""
-#: apt-pkg/tagfile.cc:193
+#: apt-pkg/tagfile.cc:160
#, c-format
msgid "Unable to parse package file %s (2)"
msgstr ""
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr ""
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:426
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr ""
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr ""
@@ -2211,24 +1801,17 @@ msgstr ""
msgid "Archive directory %spartial is missing."
msgstr ""
-#. only show the ETA if it makes sense
-#. two days
-#: apt-pkg/acquire.cc:823
+#: apt-pkg/acquire.cc:821
#, c-format
-msgid "Retrieving file %li of %li (%s remaining)"
+msgid "Downloading file %li of %li (%s remaining)"
msgstr ""
-#: apt-pkg/acquire.cc:825
-#, c-format
-msgid "Retrieving file %li of %li"
-msgstr ""
-
-#: apt-pkg/acquire-worker.cc:113
+#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:112
#, c-format
msgid "The method driver %s could not be found."
msgstr ""
-#: apt-pkg/acquire-worker.cc:162
+#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:161
#, c-format
msgid "Method %s did not start correctly"
msgstr ""
@@ -2238,12 +1821,12 @@ msgstr ""
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:119
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr ""
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:135
msgid "Unable to determine a suitable packaging system type"
msgstr ""
@@ -2356,40 +1939,37 @@ msgstr ""
msgid "IO Error saving source cache"
msgstr ""
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:945
+#: apt-pkg/acquire-item.cc:618 apt-pkg/acquire-item.cc:1290
+#: apt-pkg/acquire-item.cc:553 apt-pkg/acquire-item.cc:1218
msgid "MD5Sum mismatch"
msgstr ""
-#: apt-pkg/acquire-item.cc:640
-msgid "There is no public key available for the following key IDs:\n"
-msgstr ""
-
-#: apt-pkg/acquire-item.cc:753
+#: apt-pkg/acquire-item.cc:1104 apt-pkg/acquire-item.cc:1032
#, 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:812
+#: apt-pkg/acquire-item.cc:1157 apt-pkg/acquire-item.cc:1085
#, 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:848
+#: apt-pkg/acquire-item.cc:1193 apt-pkg/acquire-item.cc:1121
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
-#: apt-pkg/acquire-item.cc:935
+#: apt-pkg/acquire-item.cc:1280 apt-pkg/acquire-item.cc:1208
msgid "Size mismatch"
msgstr ""
@@ -2398,73 +1978,74 @@ msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:507 apt-pkg/cdrom.cc:504
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Mounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598 apt-pkg/cdrom.cc:513
+#: apt-pkg/cdrom.cc:595
msgid "Identifying.. "
msgstr ""
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:538
#, c-format
msgid "Stored label: %s \n"
msgstr ""
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:561 apt-pkg/cdrom.cc:558
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:579 apt-pkg/cdrom.cc:576
msgid "Unmounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:583 apt-pkg/cdrom.cc:580
msgid "Waiting for disc...\n"
msgstr ""
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:591 apt-pkg/cdrom.cc:588
msgid "Mounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:609 apt-pkg/cdrom.cc:606
msgid "Scanning disc for index files..\n"
msgstr ""
-#: apt-pkg/cdrom.cc:647
+#: apt-pkg/cdrom.cc:647 apt-pkg/cdrom.cc:644
#, c-format
msgid "Found %i package indexes, %i source indexes and %i signatures\n"
msgstr ""
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:704 apt-pkg/cdrom.cc:701
msgid "That is not a valid name, try again.\n"
msgstr ""
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:720 apt-pkg/cdrom.cc:717
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:724 apt-pkg/cdrom.cc:721
msgid "Copying package lists..."
msgstr ""
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:748 apt-pkg/cdrom.cc:745
msgid "Writing new source list\n"
msgstr ""
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:757 apt-pkg/cdrom.cc:754
msgid "Source list entries for this disc are:\n"
msgstr ""
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:791 apt-pkg/cdrom.cc:788
msgid "Unmounting CD-ROM..."
msgstr ""
@@ -2530,12 +2111,362 @@ msgstr ""
#: apt-pkg/deb/dpkgpm.cc:378
#, c-format
-msgid "Preparing to completely remove %s"
+msgid "Preparing for remove with config %s"
msgstr ""
#: apt-pkg/deb/dpkgpm.cc:379
#, c-format
-msgid "Completely removed %s"
+msgid "Removed with config %s"
+msgstr ""
+
+#: methods/cdrom.cc:113
+#, c-format
+msgid "Unable to read the cdrom database %s"
+msgstr ""
+
+#: methods/cdrom.cc:122
+msgid ""
+"Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update "
+"cannot be used to add new CD-ROMs"
+msgstr ""
+
+#: methods/cdrom.cc:130 methods/cdrom.cc:168
+msgid "Wrong CD-ROM"
+msgstr ""
+
+#: methods/cdrom.cc:163
+#, c-format
+msgid "Unable to unmount the CD-ROM in %s, it may still be in use."
+msgstr ""
+
+#: methods/cdrom.cc:177 methods/file.cc:77 methods/rsh.cc:264
+msgid "File not found"
+msgstr ""
+
+#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
+#: methods/gzip.cc:142
+msgid "Failed to stat"
+msgstr ""
+
+#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+msgid "Failed to set modification time"
+msgstr ""
+
+#: methods/file.cc:42
+msgid "Invalid URI, local URIS must not start with //"
+msgstr ""
+
+#. Login must be before getpeername otherwise dante won't work.
+#: methods/ftp.cc:162
+msgid "Logging in"
+msgstr ""
+
+#: methods/ftp.cc:168
+msgid "Unable to determine the peer name"
+msgstr ""
+
+#: methods/ftp.cc:173
+msgid "Unable to determine the local name"
+msgstr ""
+
+#: methods/ftp.cc:204 methods/ftp.cc:232
+#, c-format
+msgid "The server refused the connection and said: %s"
+msgstr ""
+
+#: methods/ftp.cc:210
+#, c-format
+msgid "USER failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:217
+#, c-format
+msgid "PASS failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:237
+msgid ""
+"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin "
+"is empty."
+msgstr ""
+
+#: methods/ftp.cc:265
+#, c-format
+msgid "Login script command '%s' failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:291
+#, c-format
+msgid "TYPE failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:329 methods/ftp.cc:440 methods/rsh.cc:183 methods/rsh.cc:226
+msgid "Connection timeout"
+msgstr ""
+
+#: methods/ftp.cc:335
+msgid "Server closed the connection"
+msgstr ""
+
+#: methods/ftp.cc:345 methods/rsh.cc:197
+msgid "A response overflowed the buffer."
+msgstr ""
+
+#: methods/ftp.cc:362 methods/ftp.cc:374
+msgid "Protocol corruption"
+msgstr ""
+
+#: methods/ftp.cc:687 methods/ftp.cc:693 methods/ftp.cc:729
+msgid "Could not create a socket"
+msgstr ""
+
+#: methods/ftp.cc:698
+msgid "Could not connect data socket, connection timed out"
+msgstr ""
+
+#: methods/ftp.cc:704
+msgid "Could not connect passive socket."
+msgstr ""
+
+#: methods/ftp.cc:722
+msgid "getaddrinfo was unable to get a listening socket"
+msgstr ""
+
+#: methods/ftp.cc:736
+msgid "Could not bind a socket"
+msgstr ""
+
+#: methods/ftp.cc:740
+msgid "Could not listen on the socket"
+msgstr ""
+
+#: methods/ftp.cc:747
+msgid "Could not determine the socket's name"
+msgstr ""
+
+#: methods/ftp.cc:779
+msgid "Unable to send PORT command"
+msgstr ""
+
+#: methods/ftp.cc:789
+#, c-format
+msgid "Unknown address family %u (AF_*)"
+msgstr ""
+
+#: methods/ftp.cc:798
+#, c-format
+msgid "EPRT failed, server said: %s"
+msgstr ""
+
+#: methods/ftp.cc:818
+msgid "Data socket connect timed out"
+msgstr ""
+
+#: methods/ftp.cc:825
+msgid "Unable to accept connection"
+msgstr ""
+
+#: methods/ftp.cc:864 methods/http.cc:957 methods/rsh.cc:303
+msgid "Problem hashing file"
+msgstr ""
+
+#: methods/ftp.cc:877
+#, c-format
+msgid "Unable to fetch file, server said '%s'"
+msgstr ""
+
+#: methods/ftp.cc:892 methods/rsh.cc:322
+msgid "Data socket timed out"
+msgstr ""
+
+#: methods/ftp.cc:922
+#, c-format
+msgid "Data transfer failed, server said '%s'"
+msgstr ""
+
+#. Get the files information
+#: methods/ftp.cc:997
+msgid "Query"
+msgstr ""
+
+#: methods/ftp.cc:1106
+msgid "Unable to invoke "
+msgstr ""
+
+#: methods/connect.cc:64
+#, c-format
+msgid "Connecting to %s (%s)"
+msgstr ""
+
+#: methods/connect.cc:71
+#, c-format
+msgid "[IP: %s %s]"
+msgstr ""
+
+#: methods/connect.cc:80
+#, c-format
+msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
+msgstr ""
+
+#: methods/connect.cc:86
+#, c-format
+msgid "Cannot initiate the connection to %s:%s (%s)."
+msgstr ""
+
+#: methods/connect.cc:92
+#, c-format
+msgid "Could not connect to %s:%s (%s), connection timed out"
+msgstr ""
+
+#: methods/connect.cc:104
+#, 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:132 methods/rsh.cc:425
+#, c-format
+msgid "Connecting to %s"
+msgstr ""
+
+#: methods/connect.cc:163
+#, c-format
+msgid "Could not resolve '%s'"
+msgstr ""
+
+#: methods/connect.cc:167
+#, c-format
+msgid "Temporary failure resolving '%s'"
+msgstr ""
+
+#: methods/connect.cc:169
+#, c-format
+msgid "Something wicked happened resolving '%s:%s' (%i)"
+msgstr ""
+
+#: methods/connect.cc:216
+#, c-format
+msgid "Unable to connect to %s %s:"
+msgstr ""
+
+#: methods/gpgv.cc:92
+msgid "E: Argument list from Acquire::gpgv::Options too long. Exiting."
+msgstr ""
+
+#: methods/gpgv.cc:191
+msgid ""
+"Internal error: Good signature, but could not determine key fingerprint?!"
+msgstr ""
+
+#: methods/gpgv.cc:196
+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?)"
+msgstr ""
+
+#: methods/gpgv.cc:206
+msgid "Unknown error executing gpgv"
+msgstr ""
+
+#: methods/gpgv.cc:237
+msgid "The following signatures were invalid:\n"
+msgstr ""
+
+#: methods/gpgv.cc:244
+msgid ""
+"The following signatures couldn't be verified because the public key is not "
+"available:\n"
+msgstr ""
+
+#: methods/gzip.cc:57
+#, c-format
+msgid "Couldn't open pipe for %s"
+msgstr ""
+
+#: methods/gzip.cc:102
+#, c-format
+msgid "Read error from %s process"
+msgstr ""
+
+#: methods/http.cc:381
+msgid "Waiting for headers"
+msgstr ""
+
+#: methods/http.cc:527
+#, c-format
+msgid "Got a single header line over %u chars"
+msgstr ""
+
+#: methods/http.cc:535
+msgid "Bad header line"
+msgstr ""
+
+#: methods/http.cc:554 methods/http.cc:561
+msgid "The HTTP server sent an invalid reply header"
+msgstr ""
+
+#: methods/http.cc:590
+msgid "The HTTP server sent an invalid Content-Length header"
+msgstr ""
+
+#: methods/http.cc:605
+msgid "The HTTP server sent an invalid Content-Range header"
+msgstr ""
+
+#: methods/http.cc:607
+msgid "This HTTP server has broken range support"
+msgstr ""
+
+#: methods/http.cc:631
+msgid "Unknown date format"
+msgstr ""
+
+#: methods/http.cc:778
+msgid "Select failed"
+msgstr ""
+
+#: methods/http.cc:783
+msgid "Connection timed out"
+msgstr ""
+
+#: methods/http.cc:806
+msgid "Error writing to output file"
+msgstr ""
+
+#: methods/http.cc:834
+msgid "Error writing to file"
+msgstr ""
+
+#: methods/http.cc:859
+msgid "Error writing to the file"
+msgstr ""
+
+#: methods/http.cc:873
+msgid "Error reading from server. Remote end closed connection"
+msgstr ""
+
+#: methods/http.cc:875
+msgid "Error reading from server"
+msgstr ""
+
+#: methods/http.cc:1106
+msgid "Bad header data"
+msgstr ""
+
+#: methods/http.cc:1123
+msgid "Connection failed"
+msgstr ""
+
+#: methods/http.cc:1214
+msgid "Internal error"
msgstr ""
#: methods/rsh.cc:330