diff options
-rw-r--r-- | apt-pkg/acquire-item.cc | 438 | ||||
-rw-r--r-- | apt-pkg/acquire-item.h | 64 | ||||
-rw-r--r-- | doc/examples/configure-index | 2 | ||||
-rw-r--r-- | methods/makefile | 7 | ||||
-rw-r--r-- | methods/rred.cc | 262 | ||||
-rw-r--r-- | po/apt-all.pot | 1201 |
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 |