From: Michael Vogt Date: Fri, 11 Aug 2006 17:14:51 +0000 (+0200) Subject: * merged ddtp support X-Git-Tag: 0.7.24ubuntu1~245 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/79f24b42cfa60fa79a427c5e37a01de303543a4b?hp=-c * merged ddtp support --- 79f24b42cfa60fa79a427c5e37a01de303543a4b diff --combined apt-pkg/acquire-item.cc index 18ce1076f,e0e0611f0..2ecb77814 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@@ -75,7 -75,7 +75,7 @@@ void pkgAcquire::Item::Failed(string Me Dequeue(); return; } - + Status = StatError; Dequeue(); } @@@ -149,7 -149,7 +149,7 @@@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Ow if(comprExt.empty()) { // autoselect the compression method - if(FileExists("/usr/bin/bzip2")) + if(FileExists("/bin/bzip2")) CompressionExtension = ".bz2"; else CompressionExtension = ".gz"; @@@ -184,7 -184,7 +184,7 @@@ string pkgAcqIndex::Custom600Headers( void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { // no .bz2 found, retry with .gz - if(Desc.URI.substr(Desc.URI.size()-3,Desc.URI.size()-1) == "bz2") { + if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") { Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; // retry with a gzip one @@@ -290,7 -290,7 +290,7 @@@ void pkgAcqIndex::Done(string Message,u else Local = true; - string compExt = Desc.URI.substr(Desc.URI.size()-3,Desc.URI.size()-1); + string compExt = Desc.URI.substr(Desc.URI.size()-3); char *decompProg; if(compExt == "bz2") decompProg = "bzip2"; @@@ -308,6 -308,35 +308,35 @@@ Mode = decompProg; } + // AcqIndexTrans::pkgAcqIndexTrans - Constructor /*{{{*/ + // --------------------------------------------------------------------- + /* The Translation file is added to the queue */ + pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner, + string URI,string URIDesc,string ShortDesc) : + pkgAcqIndex(Owner, URI, URIDesc, ShortDesc, "", "") + { + } + + /*}}}*/ + // AcqIndexTrans::Failed - Silence failure messages for missing files /*{{{*/ + // --------------------------------------------------------------------- + /* */ + void pkgAcqIndexTrans::Failed(string Message,pkgAcquire::MethodConfig *Cnf) + { + if (Cnf->LocalOnly == true || + StringToBool(LookupTag(Message,"Transient-Failure"),false) == false) + { + // Ignore this + Status = StatDone; + Complete = false; + Dequeue(); + return; + } + + Item::Failed(Message,Cnf); + } + /*}}}*/ + pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, string URI,string URIDesc,string ShortDesc, string MetaIndexURI, string MetaIndexURIDesc, @@@ -315,15 -344,15 +344,15 @@@ const vector* IndexTargets, indexRecords* MetaIndexParser) : Item(Owner), RealURI(URI), MetaIndexURI(MetaIndexURI), - MetaIndexURIDesc(MetaIndexURIDesc), MetaIndexShortDesc(MetaIndexShortDesc) + MetaIndexURIDesc(MetaIndexURIDesc), MetaIndexShortDesc(MetaIndexShortDesc), + MetaIndexParser(MetaIndexParser), IndexTargets(IndexTargets) { - this->MetaIndexParser = MetaIndexParser; - this->IndexTargets = IndexTargets; DestFile = _config->FindDir("Dir::State::lists") + "partial/"; DestFile += URItoFileName(URI); - // remove any partial downloaded sig-file. it may confuse proxies - // and is too small to warrant a partial download anyway + // remove any partial downloaded sig-file in partial/. + // it may confuse proxies and is too small to warrant a + // partial download anyway unlink(DestFile.c_str()); // Create the item @@@ -341,6 -370,12 +370,6 @@@ // File was already in place. It needs to be re-verified // because Release might have changed, so Move it into partial Rename(Final,DestFile); - // unlink the file and do not try to use I-M-S and Last-Modified - // if the users proxy is broken - if(_config->FindB("Acquire::BrokenProxy", false) == true) { - std::cerr << "forcing re-get of the signature file as requested" << std::endl; - unlink(DestFile.c_str()); - } } QueueURI(Desc); @@@ -390,24 -425,18 +419,24 @@@ void pkgAcqMetaSig::Done(string Message /*}}}*/ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { - // Delete any existing sigfile, so that this source isn't - // mistakenly trusted string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI); - unlink(Final.c_str()); - // if we get a timeout if fail - if(LookupTag(Message,"FailReason") == "Timeout" || - LookupTag(Message,"FailReason") == "TmpResolveFailure") { + // if we get a network error we fail gracefully + if(Status == StatTransientNetworkError) + { Item::Failed(Message,Cnf); + // move the sigfile back on network failures (and re-authenticated?) + if(FileExists(DestFile)) + Rename(DestFile,Final); + + // set the status back to , Item::Failed likes to reset it + Status = pkgAcquire::Item::StatTransientNetworkError; return; } + // Delete any existing sigfile when the acquire failed + unlink(Final.c_str()); + // queue a pkgAcqMetaIndex with no sigfile new pkgAcqMetaIndex(Owner, MetaIndexURI, MetaIndexURIDesc, MetaIndexShortDesc, "", IndexTargets, MetaIndexParser); @@@ -430,9 -459,11 +459,9 @@@ pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcq string SigFile, const vector* IndexTargets, indexRecords* MetaIndexParser) : - Item(Owner), RealURI(URI), SigFile(SigFile) + Item(Owner), RealURI(URI), SigFile(SigFile), AuthPass(false), + MetaIndexParser(MetaIndexParser), IndexTargets(IndexTargets), IMSHit(false) { - this->AuthPass = false; - this->MetaIndexParser = MetaIndexParser; - this->IndexTargets = IndexTargets; DestFile = _config->FindDir("Dir::State::lists") + "partial/"; DestFile += URItoFileName(URI); @@@ -524,9 -555,6 +553,9 @@@ void pkgAcqMetaIndex::RetrievalDone(str return; } + // see if the download was a IMSHit + IMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false); + Complete = true; string FinalFile = _config->FindDir("Dir::State::lists"); @@@ -555,7 -583,7 +584,7 @@@ void pkgAcqMetaIndex::AuthDone(string M return; } - if (!VerifyVendor()) + if (!VerifyVendor(Message)) { return; } @@@ -613,7 -641,7 +642,7 @@@ void pkgAcqMetaIndex::QueueIndexes(boo } } -bool pkgAcqMetaIndex::VerifyVendor() +bool pkgAcqMetaIndex::VerifyVendor(string Message) { // // Maybe this should be made available from above so we don't have // // to read and parse it every time? @@@ -638,22 -666,6 +667,22 @@@ // break; // } // } + string::size_type pos; + + // check for missing sigs (that where not fatal because otherwise we had + // bombed earlier) + string missingkeys; + string msg = _("There are no public key available for the " + "following key IDs:\n"); + pos = Message.find("NO_PUBKEY "); + if (pos != std::string::npos) + { + string::size_type start = pos+strlen("NO_PUBKEY "); + string Fingerprint = Message.substr(start, Message.find("\n")-start); + missingkeys += (Fingerprint); + } + if(!missingkeys.empty()) + _error->Warning("%s", string(msg+missingkeys).c_str()); string Transformed = MetaIndexParser->GetExpectedDist(); @@@ -662,7 -674,7 +691,7 @@@ Transformed = "experimental"; } - string::size_type pos = Transformed.rfind('/'); + pos = Transformed.rfind('/'); if (pos != string::npos) { Transformed = Transformed.substr(0, pos); @@@ -708,30 -720,10 +737,30 @@@ void pkgAcqMetaIndex::Failed(string Mes { if (AuthPass == true) { - // gpgv method failed + // if we fail the authentication but got the file via a IMS-Hit + // this means that the file wasn't downloaded and that it might be + // just stale (server problem, proxy etc). we delete what we have + // queue it again without i-m-s + // alternatively we could just unlink the file and let the user try again + if (IMSHit) + { + Complete = false; + Local = false; + AuthPass = false; + unlink(DestFile.c_str()); + + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; + DestFile += URItoFileName(RealURI); + Desc.URI = RealURI; + QueueURI(Desc); + return; + } + + // gpgv method failed _error->Warning("GPG error: %s: %s", Desc.Description.c_str(), LookupTag(Message,"Message").c_str()); + } // No Release file was present, or verification failed, so fall @@@ -807,12 -799,6 +836,12 @@@ pkgAcqArchive::pkgAcqArchive(pkgAcquir } } + // "allow-unauthenticated" restores apts old fetching behaviour + // that means that e.g. unauthenticated file:// uris are higher + // priority than authenticated http:// uris + if (_config->FindB("APT::Get::AllowUnauthenticated",false) == true) + Trusted = false; + // Select a source if (QueueNext() == false && _error->PendingError() == false) _error->Error(_("I wasn't able to locate file for the %s package. " @@@ -1045,19 -1031,13 +1074,19 @@@ void pkgAcqArchive::Finished( // --------------------------------------------------------------------- /* The file is added to the queue */ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string MD5, - unsigned long Size,string Dsc,string ShortDesc) : + unsigned long Size,string Dsc,string ShortDesc, + const string &DestDir, const string &DestFilename) : Item(Owner), Md5Hash(MD5) { Retries = _config->FindI("Acquire::Retries",0); - DestFile = flNotDir(URI); - + if(!DestFilename.empty()) + DestFile = DestFilename; + else if(!DestDir.empty()) + DestFile = DestDir + "/" + flNotDir(URI); + else + DestFile = flNotDir(URI); + // Create the item Desc.URI = URI; Desc.Description = Dsc; @@@ -1077,7 -1057,7 +1106,7 @@@ else PartialSize = Buf.st_size; } - + QueueURI(Desc); } /*}}}*/ diff --combined apt-pkg/acquire-item.h index 1c83f8d2e,ae2fba4d5..3a0a690e1 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@@ -9,8 -9,8 +9,8 @@@ the Owner Acquire class. Derived classes will then call QueueURI to register all the URI's they wish to fetch at the initial moment. - Two item classes are provided to provide functionality for downloading - of Index files and downloading of Packages. + Three item classes are provided to provide functionality for + downloading of Index, Translation and Packages files. A Archive class is provided for downloading .deb files. It does Md5 checking and source location as well as a retry algorithm. @@@ -48,8 -48,7 +48,8 @@@ class pkgAcquire::Ite public: // State of the item - enum {StatIdle, StatFetching, StatDone, StatError, StatAuthError} Status; + enum {StatIdle, StatFetching, StatDone, StatError, + StatAuthError, StatTransientNetworkError} Status; string ErrorText; unsigned long FileSize; unsigned long PartialSize; @@@ -108,6 -107,16 +108,16 @@@ class pkgAcqIndex : public pkgAcquire:: string ShortDesct, string ExpectedMD5, string compressExt=""); }; + // Item class for translated package index files + class pkgAcqIndexTrans : public pkgAcqIndex + { + public: + + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesct); + }; + struct IndexTarget { string URI; @@@ -152,10 -161,8 +162,10 @@@ class pkgAcqMetaIndex : public pkgAcqui const vector* IndexTargets; indexRecords* MetaIndexParser; bool AuthPass; + // required to deal gracefully with problems caused by incorrect ims hits + bool IMSHit; - bool VerifyVendor(); + bool VerifyVendor(string Message); void RetrievalDone(string Message); void AuthDone(string Message); void QueueIndexes(bool verify); @@@ -227,14 -234,9 +237,14 @@@ class pkgAcqFile : public pkgAcquire::I pkgAcquire::MethodConfig *Cnf); virtual string MD5Sum() {return Md5Hash;}; virtual string DescURI() {return Desc.URI;}; - - pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, - string Desc,string ShortDesc); + + // If DestFilename is empty, download to DestDir/ if + // DestDir is non-empty, $CWD/ otherwise. If + // DestFilename is NOT empty, DestDir is ignored and DestFilename + // is the absolute name to which the file should be downloaded. + pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size, + string Desc, string ShortDesc, + const string &DestDir="", const string &DestFilename=""); }; #endif diff --combined apt-pkg/cacheiterators.h index 2b326bd65,64fa4636e..d5a9c7b0d --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@@ -99,7 -99,7 +99,7 @@@ class pkgCache::VerIterato { Version *Ver; pkgCache *Owner; - + void _dummy(); public: @@@ -107,7 -107,7 +107,7 @@@ // Iteration void operator ++(int) {if (Ver != Owner->VerP) Ver = Owner->VerP + Ver->NextVer;}; inline void operator ++() {operator ++(0);}; - inline bool end() const {return Ver == Owner->VerP?true:false;}; + inline bool end() const {return Owner == NULL || (Ver == Owner->VerP?true:false);}; inline void operator =(const VerIterator &B) {Ver = B.Ver; Owner = B.Owner;}; // Comparison @@@ -128,6 -128,8 +128,8 @@@ inline const char *Section() const {return Ver->Section == 0?0:Owner->StrP + Ver->Section;}; inline const char *Arch() const {return Ver->Arch == 0?0:Owner->StrP + Ver->Arch;}; inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + Ver->ParentPkg);}; + inline DescIterator DescriptionList() const; + DescIterator TranslatedDescription() const; inline DepIterator DependsList() const; inline PrvIterator ProvidesList() const; inline VerFileIterator FileList() const; @@@ -148,6 -150,50 +150,50 @@@ }; }; + // Description Iterator + class pkgCache::DescIterator + { + Description *Desc; + pkgCache *Owner; + + void _dummy(); + + public: + + // Iteration + void operator ++(int) {if (Desc != Owner->DescP) Desc = Owner->DescP + Desc->NextDesc;}; + inline void operator ++() {operator ++(0);}; + inline bool end() const {return Desc == Owner->DescP?true:false;}; + inline void operator =(const DescIterator &B) {Desc = B.Desc; Owner = B.Owner;}; + + // Comparison + inline bool operator ==(const DescIterator &B) const {return Desc == B.Desc;}; + inline bool operator !=(const DescIterator &B) const {return Desc != B.Desc;}; + int CompareDesc(const DescIterator &B) const; + + // Accessors + inline Description *operator ->() {return Desc;}; + inline Description const *operator ->() const {return Desc;}; + inline Description &operator *() {return *Desc;}; + inline Description const &operator *() const {return *Desc;}; + inline operator Description *() {return Desc == Owner->DescP?0:Desc;}; + inline operator Description const *() const {return Desc == Owner->DescP?0:Desc;}; + inline pkgCache *Cache() {return Owner;}; + + inline const char *LanguageCode() const {return Owner->StrP + Desc->language_code;}; + inline const char *md5() const {return Owner->StrP + Desc->md5sum;}; + inline DescFileIterator FileList() const; + inline unsigned long Index() const {return Desc - Owner->DescP;}; + + inline DescIterator() : Desc(0), Owner(0) {}; + inline DescIterator(pkgCache &Owner,Description *Trg = 0) : Desc(Trg), + Owner(&Owner) + { + if (Desc == 0) + Desc = Owner.DescP; + }; + }; + // Dependency iterator class pkgCache::DepIterator { @@@ -338,6 -384,38 +384,38 @@@ class pkgCache::VerFileIterato inline VerFileIterator(pkgCache &Owner,VerFile *Trg) : Owner(&Owner), FileP(Trg) {}; }; + // Description File + class pkgCache::DescFileIterator + { + pkgCache *Owner; + DescFile *FileP; + + public: + + // Iteration + void operator ++(int) {if (FileP != Owner->DescFileP) FileP = Owner->DescFileP + FileP->NextFile;}; + inline void operator ++() {operator ++(0);}; + inline bool end() const {return FileP == Owner->DescFileP?true:false;}; + + // Comparison + inline bool operator ==(const DescFileIterator &B) const {return FileP == B.FileP;}; + inline bool operator !=(const DescFileIterator &B) const {return FileP != B.FileP;}; + + // Accessors + inline DescFile *operator ->() {return FileP;}; + inline DescFile const *operator ->() const {return FileP;}; + inline DescFile const &operator *() const {return *FileP;}; + inline operator DescFile *() {return FileP == Owner->DescFileP?0:FileP;}; + inline operator DescFile const *() const {return FileP == Owner->DescFileP?0:FileP;}; + inline pkgCache *Cache() {return Owner;}; + + inline PkgFileIterator File() const {return PkgFileIterator(*Owner,FileP->File + Owner->PkgFileP);}; + inline unsigned long Index() const {return FileP - Owner->DescFileP;}; + + inline DescFileIterator() : Owner(0), FileP(0) {}; + inline DescFileIterator(pkgCache &Owner,DescFile *Trg) : Owner(&Owner), FileP(Trg) {}; + }; + // Inlined Begin functions cant be in the class because of order problems inline pkgCache::VerIterator pkgCache::PkgIterator::VersionList() const {return VerIterator(*Owner,Owner->VerP + Pkg->VersionList);}; @@@ -347,11 -425,15 +425,15 @@@ inline pkgCache::DepIterator pkgCache:: {return DepIterator(*Owner,Owner->DepP + Pkg->RevDepends,Pkg);}; inline pkgCache::PrvIterator pkgCache::PkgIterator::ProvidesList() const {return PrvIterator(*Owner,Owner->ProvideP + Pkg->ProvidesList,Pkg);}; + inline pkgCache::DescIterator pkgCache::VerIterator::DescriptionList() const + {return DescIterator(*Owner,Owner->DescP + Ver->DescriptionList);}; inline pkgCache::PrvIterator pkgCache::VerIterator::ProvidesList() const {return PrvIterator(*Owner,Owner->ProvideP + Ver->ProvidesList,Ver);}; inline pkgCache::DepIterator pkgCache::VerIterator::DependsList() const {return DepIterator(*Owner,Owner->DepP + Ver->DependsList,Ver);}; inline pkgCache::VerFileIterator pkgCache::VerIterator::FileList() const {return VerFileIterator(*Owner,Owner->VerFileP + Ver->FileList);}; + inline pkgCache::DescFileIterator pkgCache::DescIterator::FileList() const + {return DescFileIterator(*Owner,Owner->DescFileP + Desc->FileList);}; #endif diff --combined apt-pkg/contrib/strutl.cc index d96155917,303cb27db..37d263794 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@@ -32,12 -32,55 +32,55 @@@ #include #include #include + #include #include "config.h" using namespace std; /*}}}*/ + // UTF8ToCodeset - Convert some UTF-8 string for some codeset /*{{{*/ + // --------------------------------------------------------------------- + /* This is handy to use before display some information for enduser */ + bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest) + { + iconv_t cd; + const char *inbuf; + char *inptr, *outbuf, *outptr; + size_t insize, outsize; + + cd = iconv_open(codeset, "UTF-8"); + if (cd == (iconv_t)(-1)) { + // Something went wrong + if (errno == EINVAL) + _error->Error("conversion from 'UTF-8' to '%s' not available", + codeset); + else + perror("iconv_open"); + + // Clean the destination string + *dest = ""; + + return false; + } + + insize = outsize = orig.size(); + inbuf = orig.data(); + inptr = (char *)inbuf; + outbuf = new char[insize+1]; + outptr = outbuf; + + iconv(cd, &inptr, &insize, &outptr, &outsize); + *outptr = '\0'; + + *dest = outbuf; + delete[] outbuf; + + iconv_close(cd); + + return true; + } + /*}}}*/ // strstrip - Remove white space from the front and back of a string /*{{{*/ // --------------------------------------------------------------------- /* This is handy to use when parsing a file. It also removes \n's left @@@ -199,10 -242,10 +242,10 @@@ bool ParseCWord(const char *&String,str // QuoteString - Convert a string into quoted from /*{{{*/ // --------------------------------------------------------------------- /* */ -string QuoteString(string Str,const char *Bad) +string QuoteString(const string &Str, const char *Bad) { string Res; - for (string::iterator I = Str.begin(); I != Str.end(); I++) + for (string::const_iterator I = Str.begin(); I != Str.end(); I++) { if (strchr(Bad,*I) != 0 || isprint(*I) == 0 || *I <= 0x20 || *I >= 0x7F) @@@ -220,7 -263,7 +263,7 @@@ // DeQuoteString - Convert a string from quoted from /*{{{*/ // --------------------------------------------------------------------- /* This undoes QuoteString */ -string DeQuoteString(string Str) +string DeQuoteString(const string &Str) { string Res; for (string::const_iterator I = Str.begin(); I != Str.end(); I++) @@@ -317,7 -360,7 +360,7 @@@ string TimeToStr(unsigned long Sec // SubstVar - Substitute a string for another string /*{{{*/ // --------------------------------------------------------------------- /* This replaces all occurances of Subst with Contents in Str. */ -string SubstVar(string Str,string Subst,string Contents) +string SubstVar(const string &Str,const string &Subst,const string &Contents) { string::size_type Pos = 0; string::size_type OldPos = 0; @@@ -348,18 -391,21 +391,18 @@@ string SubstVar(string Str,const struc /* This converts a URI into a safe filename. It quotes all unsafe characters and converts / to _ and removes the scheme identifier. The resulting file name should be unique and never occur again for a different file */ -string URItoFileName(string URI) +string URItoFileName(const string &URI) { // Nuke 'sensitive' items ::URI U(URI); - U.User = string(); - U.Password = string(); - U.Access = ""; + U.User.clear(); + U.Password.clear(); + U.Access.clear(); // "\x00-\x20{}|\\\\^\\[\\]<>\"\x7F-\xFF"; - URI = QuoteString(U,"\\|{}[]<>\"^~=!@#$%^&*"); - string::iterator J = URI.begin(); - for (; J != URI.end(); J++) - if (*J == '/') - *J = '_'; - return URI; + string NewURI = QuoteString(U,"\\|{}[]<>\"^~_=!@#$%^&*"); + replace(NewURI.begin(),NewURI.end(),'/','_'); + return NewURI; } /*}}}*/ // Base64Encode - Base64 Encoding routine for short strings /*{{{*/ @@@ -368,7 -414,7 +411,7 @@@ from wget and then patched and bug fixed. This spec can be found in rfc2045 */ -string Base64Encode(string S) +string Base64Encode(const string &S) { // Conversion table. static char tbl[64] = {'A','B','C','D','E','F','G','H', @@@ -537,17 -583,17 +580,17 @@@ int stringcasecmp(string::const_iterato // --------------------------------------------------------------------- /* The format is like those used in package files and the method communication system */ -string LookupTag(string Message,const char *Tag,const char *Default) +string LookupTag(const string &Message,const char *Tag,const char *Default) { // Look for a matching tag. int Length = strlen(Tag); - for (string::iterator I = Message.begin(); I + Length < Message.end(); I++) + for (string::const_iterator I = Message.begin(); I + Length < Message.end(); I++) { // Found the tag if (I[Length] == ':' && stringcasecmp(I,I+Length,Tag) == 0) { // Find the end of line and strip the leading/trailing spaces - string::iterator J; + string::const_iterator J; I += Length + 1; for (; isspace(*I) != 0 && I < Message.end(); I++); for (J = I; *J != '\n' && J < Message.end(); J++); @@@ -569,7 -615,7 +612,7 @@@ // --------------------------------------------------------------------- /* This inspects the string to see if it is true or if it is false and then returns the result. Several varients on true/false are checked. */ -int StringToBool(string Text,int Default) +int StringToBool(const string &Text,int Default) { char *End; int Res = strtol(Text.c_str(),&End,0); @@@ -735,7 -781,7 +778,7 @@@ static time_t timegm(struct tm *t 'timegm' to convert a struct tm in UTC to a time_t. For some bizzar reason the C library does not provide any such function :< This also handles the weird, but unambiguous FTP time format*/ -bool StrToTime(string Val,time_t &Result) +bool StrToTime(const string &Val,time_t &Result) { struct tm Tm; char Month[10]; @@@ -822,7 -868,7 +865,7 @@@ static int HexDigit(int c // Hex2Num - Convert a long hex number into a buffer /*{{{*/ // --------------------------------------------------------------------- /* The length of the buffer must be exactly 1/2 the length of the string. */ -bool Hex2Num(string Str,unsigned char *Num,unsigned int Length) +bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length) { if (Str.length() != Length*2) return false; @@@ -983,7 -1029,7 +1026,7 @@@ char *safe_snprintf(char *Buffer,char * // --------------------------------------------------------------------- /* The domain list is a comma seperate list of domains that are suffix matched against the argument */ -bool CheckDomainList(string Host,string List) +bool CheckDomainList(const string &Host,const string &List) { string::const_iterator Start = List.begin(); for (string::const_iterator Cur = List.begin(); Cur <= List.end(); Cur++) @@@ -1006,7 -1052,7 +1049,7 @@@ // URI::CopyFrom - Copy from an object /*{{{*/ // --------------------------------------------------------------------- /* This parses the URI into all of its components */ -void URI::CopyFrom(string U) +void URI::CopyFrom(const string &U) { string::const_iterator I = U.begin(); @@@ -1035,9 -1081,9 +1078,9 @@@ SingleSlash = U.end(); // We can now write the access and path specifiers - Access = string(U,0,FirstColon - U.begin()); + Access.assign(U.begin(),FirstColon); if (SingleSlash != U.end()) - Path = string(U,SingleSlash - U.begin()); + Path.assign(SingleSlash,U.end()); if (Path.empty() == true) Path = "/"; @@@ -1067,14 -1113,14 +1110,14 @@@ if (At == SingleSlash) { if (FirstColon < SingleSlash) - Host = string(U,FirstColon - U.begin(),SingleSlash - FirstColon); + Host.assign(FirstColon,SingleSlash); } else { - Host = string(U,At - U.begin() + 1,SingleSlash - At - 1); - User = string(U,FirstColon - U.begin(),SecondColon - FirstColon); + Host.assign(At+1,SingleSlash); + User.assign(FirstColon,SecondColon); if (SecondColon < At) - Password = string(U,SecondColon - U.begin() + 1,At - SecondColon - 1); + Password.assign(SecondColon+1,At); } // Now we parse the RFC 2732 [] hostnames. @@@ -1102,7 -1148,7 +1145,7 @@@ // Tsk, weird. if (InBracket == true) { - Host = string(); + Host.clear(); return; } @@@ -1113,7 -1159,7 +1156,7 @@@ return; Port = atoi(string(Host,Pos+1).c_str()); - Host = string(Host,0,Pos); + Host.assign(Host,0,Pos); } /*}}}*/ // URI::operator string - Convert the URI to a string /*{{{*/ @@@ -1168,12 -1214,12 +1211,12 @@@ URI::operator string( // URI::SiteOnly - Return the schema and site for the URI /*{{{*/ // --------------------------------------------------------------------- /* */ -string URI::SiteOnly(string URI) +string URI::SiteOnly(const string &URI) { ::URI U(URI); - U.User = string(); - U.Password = string(); - U.Path = string(); + U.User.clear(); + U.Password.clear(); + U.Path.clear(); U.Port = 0; return U; } diff --combined apt-pkg/contrib/strutl.h index 6ec2b7811,72fc34d6d..254087267 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@@ -38,29 -38,30 +38,30 @@@ using std::ostream #define APT_FORMAT2 #define APT_FORMAT3 #endif - + + bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest); char *_strstrip(char *String); char *_strtabexpand(char *String,size_t Len); bool ParseQuoteWord(const char *&String,string &Res); bool ParseCWord(const char *&String,string &Res); -string QuoteString(string Str,const char *Bad); -string DeQuoteString(string Str); +string QuoteString(const string &Str,const char *Bad); +string DeQuoteString(const string &Str); string SizeToStr(double Bytes); string TimeToStr(unsigned long Sec); -string Base64Encode(string Str); -string URItoFileName(string URI); +string Base64Encode(const string &Str); +string URItoFileName(const string &URI); string TimeRFC1123(time_t Date); -bool StrToTime(string Val,time_t &Result); -string LookupTag(string Message,const char *Tag,const char *Default = 0); -int StringToBool(string Text,int Default = -1); +bool StrToTime(const string &Val,time_t &Result); +string LookupTag(const string &Message,const char *Tag,const char *Default = 0); +int StringToBool(const string &Text,int Default = -1); bool ReadMessages(int Fd, vector &List); bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base = 0); -bool Hex2Num(string Str,unsigned char *Num,unsigned int Length); +bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length); bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); void ioprintf(ostream &out,const char *format,...) APT_FORMAT2; char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_FORMAT3; -bool CheckDomainList(string Host,string List); +bool CheckDomainList(const string &Host, const string &List); #define APT_MKSTRCMP(name,func) \ inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \ @@@ -101,7 -102,7 +102,7 @@@ inline const char *DeNull(const char *s class URI { - void CopyFrom(string From); + void CopyFrom(const string &From); public: @@@ -113,9 -114,9 +114,9 @@@ unsigned int Port; operator string(); - inline void operator =(string From) {CopyFrom(From);}; + inline void operator =(const string &From) {CopyFrom(From);}; inline bool empty() {return Access.empty();}; - static string SiteOnly(string URI); + static string SiteOnly(const string &URI); URI(string Path) {CopyFrom(Path);}; URI() : Port(0) {}; @@@ -127,7 -128,7 +128,7 @@@ struct SubstVa const string *Contents; }; string SubstVar(string Str,const struct SubstVar *Vars); -string SubstVar(string Str,string Subst,string Contents); +string SubstVar(const string &Str,const string &Subst,const string &Contents); struct RxChoiceList { diff --combined apt-pkg/deb/deblistparser.cc index d0dc7a260,97553ab82..c2b26b5eb --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@@ -15,6 -15,7 +15,7 @@@ #include #include #include + #include #include @@@ -117,6 -118,48 +118,48 @@@ bool debListParser::NewVersion(pkgCache return true; } /*}}}*/ + // ListParser::Description - Return the description string /*{{{*/ + // --------------------------------------------------------------------- + /* This is to return the string describing the package in debian + form. If this returns the blank string then the entry is assumed to + only describe package properties */ + string debListParser::Description() + { + if (DescriptionLanguage().empty()) + return Section.FindS("Description"); + else + return Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str()); + } + /*}}}*/ + // ListParser::DescriptionLanguage - Return the description lang string /*{{{*/ + // --------------------------------------------------------------------- + /* This is to return the string describing the language of + description. If this returns the blank string then the entry is + assumed to describe original description. */ + string debListParser::DescriptionLanguage() + { + return Section.FindS("Description").empty() ? pkgIndexFile::LanguageCode() : ""; + } + /*}}}*/ + // ListParser::Description - Return the description_md5 MD5SumValue /*{{{*/ + // --------------------------------------------------------------------- + /* This is to return the md5 string to allow the check if it is the right + description. If no Description-md5 is found in the section it will be + calculated. + */ + MD5SumValue debListParser::Description_md5() + { + string value = Section.FindS("Description-md5"); + + if (value.empty()) + { + MD5Summation md5; + md5.Add((Description() + "\n").c_str()); + return md5.Result(); + } else + return MD5SumValue(value); + } + /*}}}*/ // ListParser::UsePackage - Update a package structure /*{{{*/ // --------------------------------------------------------------------- /* This is called to update the package with any new information @@@ -377,12 -420,12 +420,12 @@@ const char *debListParser::ParseDepends const char *End = I; for (; End > Start && isspace(End[-1]); End--); - Ver = string(Start,End-Start); + Ver.assign(Start,End-Start); I++; } else { - Ver = string(); + Ver.clear(); Op = pkgCache::Dep::NoOp; } @@@ -504,12 -547,11 +547,12 @@@ bool debListParser::ParseProvides(pkgCa Start = ParseDepends(Start,Stop,Package,Version,Op); if (Start == 0) return _error->Error("Problem parsing Provides line"); - if (Op != pkgCache::Dep::NoOp) - return _error->Error("Malformed provides line"); - - if (NewProvides(Ver,Package,Version) == false) - return false; + if (Op != pkgCache::Dep::NoOp) { + _error->Warning("Ignoring Provides line with DepCompareOp for package %s", Package.c_str()); + } else { + if (NewProvides(Ver,Package,Version) == false) + return false; + } if (Start == Stop) break; diff --combined apt-pkg/deb/debmetaindex.cc index 85e5b16b3,a3fc39302..8cf31b326 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@@ -157,6 -157,16 +157,16 @@@ bool debReleaseIndex::GetIndexes(pkgAcq ComputeIndexTargets(), new indexRecords (Dist)); + // Queue the translations + for (vector::const_iterator I = SectionEntries.begin(); + I != SectionEntries.end(); I++) { + + if((*I)->IsSrc) + continue; + debTranslationsIndex i = debTranslationsIndex(URI,Dist,(*I)->Section); + i.GetIndexes(Owner); + } + return true; } @@@ -165,7 -175,7 +175,7 @@@ bool debReleaseIndex::IsTrusted() cons string VerifiedSigFile = _config->FindDir("Dir::State::lists") + URItoFileName(MetaIndexURI("Release")) + ".gpg"; - if(_config->FindB("APT::Authentication::Trust-CDROM", false)) + if(_config->FindB("APT::Authentication::TrustCDROM", false)) if(URI.substr(0,strlen("cdrom:")) == "cdrom:") return true; @@@ -181,11 -191,16 +191,16 @@@ vector *debReleaseInde Indexes = new vector ; for (vector::const_iterator I = SectionEntries.begin(); - I != SectionEntries.end(); I++) + I != SectionEntries.end(); I++) { if ((*I)->IsSrc) Indexes->push_back(new debSourcesIndex (URI, Dist, (*I)->Section, IsTrusted())); else + { Indexes->push_back(new debPackagesIndex (URI, Dist, (*I)->Section, IsTrusted())); + Indexes->push_back(new debTranslationsIndex(URI, Dist, (*I)->Section)); + } + } + return Indexes; } diff --combined apt-pkg/init.cc index a26f1d01c,6118845e8..579a19ab9 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@@ -1,6 -1,6 +1,6 @@@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: init.cc,v 1.21 2004/02/27 00:46:44 mdz Exp $ +// $Id: init.cc,v 1.20 2003/02/09 20:31:05 doogie Exp $ /* ###################################################################### Init - Initialize the package library @@@ -40,8 -40,6 +40,8 @@@ bool pkgInitConfig(Configuration &Cnf else Cnf.Set("APT::Architecture",COMMON_OS "-" COMMON_CPU); Cnf.Set("APT::Build-Essential::", "build-essential"); + Cnf.Set("APT::Install-Recommends", false); + Cnf.Set("APT::Install-Suggests", false); Cnf.Set("Dir","/"); // State @@@ -66,14 -64,13 +66,14 @@@ // Configuration Cnf.Set("Dir::Etc","etc/apt/"); Cnf.Set("Dir::Etc::sourcelist","sources.list"); + Cnf.Set("Dir::Etc::sourceparts","sources.list.d"); Cnf.Set("Dir::Etc::vendorlist","vendors.list"); Cnf.Set("Dir::Etc::vendorparts","vendors.list.d"); Cnf.Set("Dir::Etc::main","apt.conf"); Cnf.Set("Dir::Etc::parts","apt.conf.d"); Cnf.Set("Dir::Etc::preferences","preferences"); Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods"); - + bool Res = true; // Read an alternate config file @@@ -104,6 -101,9 +104,9 @@@ bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str()); } #endif + + // Translation + Cnf.Set("APT::Acquire::Translation", "environment"); return true; } diff --combined apt-pkg/pkgcache.cc index 9926befe9,4452079a2..162ab4f27 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@@ -26,6 -26,7 +26,7 @@@ #endif #include + #include #include #include #include @@@ -43,6 -44,7 +44,7 @@@ using std::string; + // Cache::Header::Header - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Simply initialize the header */ @@@ -52,7 -54,7 +54,7 @@@ pkgCache::Header::Header( /* Whenever the structures change the major version should be bumped, whenever the generator changes the minor version should be bumped. */ - MajorVersion = 4; + MajorVersion = 5; MinorVersion = 0; Dirty = false; @@@ -60,17 -62,22 +62,22 @@@ PackageSz = sizeof(pkgCache::Package); PackageFileSz = sizeof(pkgCache::PackageFile); VersionSz = sizeof(pkgCache::Version); + DescriptionSz = sizeof(pkgCache::Description); DependencySz = sizeof(pkgCache::Dependency); ProvidesSz = sizeof(pkgCache::Provides); VerFileSz = sizeof(pkgCache::VerFile); + DescFileSz = sizeof(pkgCache::DescFile); PackageCount = 0; VersionCount = 0; + DescriptionCount = 0; DependsCount = 0; PackageFileCount = 0; VerFileCount = 0; + DescFileCount = 0; ProvidesCount = 0; MaxVerFileSize = 0; + MaxDescFileSize = 0; FileList = 0; StringList = 0; @@@ -89,8 -96,10 +96,10 @@@ bool pkgCache::Header::CheckSizes(Heade PackageSz == Against.PackageSz && PackageFileSz == Against.PackageFileSz && VersionSz == Against.VersionSz && + DescriptionSz == Against.DescriptionSz && DependencySz == Against.DependencySz && VerFileSz == Against.VerFileSz && + DescFileSz == Against.DescFileSz && ProvidesSz == Against.ProvidesSz) return true; return false; @@@ -115,8 -124,10 +124,10 @@@ bool pkgCache::ReMap( HeaderP = (Header *)Map.Data(); PkgP = (Package *)Map.Data(); VerFileP = (VerFile *)Map.Data(); + DescFileP = (DescFile *)Map.Data(); PkgFileP = (PackageFile *)Map.Data(); VerP = (Version *)Map.Data(); + DescP = (Description *)Map.Data(); ProvideP = (Provides *)Map.Data(); DepP = (Dependency *)Map.Data(); StringItemP = (StringItem *)Map.Data(); @@@ -153,7 -164,7 +164,7 @@@ /* This is used to generate the hash entries for the HashTable. With my package list from bo this function gets 94% table usage on a 512 item table (480 used items) */ -unsigned long pkgCache::sHash(string Str) const +unsigned long pkgCache::sHash(const string &Str) const { unsigned long Hash = 0; for (string::const_iterator I = Str.begin(); I != Str.end(); I++) @@@ -173,7 -184,7 +184,7 @@@ unsigned long pkgCache::sHash(const cha // Cache::FindPkg - Locate a package by name /*{{{*/ // --------------------------------------------------------------------- /* Returns 0 on error, pointer to the package otherwise */ -pkgCache::PkgIterator pkgCache::FindPkg(string Name) +pkgCache::PkgIterator pkgCache::FindPkg(const string &Name) { // Look at the hash bucket Package *Pkg = PkgP + HeaderP->HashTable[Hash(Name)]; @@@ -235,11 -246,11 +246,11 @@@ const char *pkgCache::Priority(unsigne return 0; } /*}}}*/ - // Bases for iterator classes /*{{{*/ void pkgCache::VerIterator::_dummy() {} void pkgCache::DepIterator::_dummy() {} void pkgCache::PrvIterator::_dummy() {} + void pkgCache::DescIterator::_dummy() {} /*}}}*/ // PkgIterator::operator ++ - Postfix incr /*{{{*/ // --------------------------------------------------------------------- @@@ -599,3 -610,20 +610,20 @@@ string pkgCache::PkgFileIterator::RelSt return Res; } /*}}}*/ + // VerIterator::TranslatedDescription - Return the a DescIter for locale/*{{{*/ + // --------------------------------------------------------------------- + /* return a DescIter for the current locale or the default if none is + * found + */ + pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const + { + pkgCache::DescIterator DescDefault = DescriptionList(); + pkgCache::DescIterator Desc = DescDefault; + for (; Desc.end() == false; Desc++) + if (pkgIndexFile::LanguageCode() == Desc.LanguageCode()) + break; + if (Desc.end() == true) Desc = DescDefault; + return Desc; + }; + + /*}}}*/ diff --combined apt-pkg/pkgcache.h index 587d97534,6a54ad5ba..c7a3172cc --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@@ -38,24 -38,30 +38,30 @@@ class pkgCach struct Package; struct PackageFile; struct Version; + struct Description; struct Provides; struct Dependency; struct StringItem; struct VerFile; + struct DescFile; // Iterators class PkgIterator; class VerIterator; + class DescIterator; class DepIterator; class PrvIterator; class PkgFileIterator; class VerFileIterator; + class DescFileIterator; friend class PkgIterator; friend class VerIterator; + friend class DescInterator; friend class DepIterator; friend class PrvIterator; friend class PkgFileIterator; friend class VerFileIterator; + friend class DescFileIterator; class Namespace; @@@ -89,7 -95,7 +95,7 @@@ string CacheFile; MMap ⤅ - unsigned long sHash(string S) const; + unsigned long sHash(const string &S) const; unsigned long sHash(const char *S) const; public: @@@ -98,8 -104,10 +104,10 @@@ Header *HeaderP; Package *PkgP; VerFile *VerFileP; + DescFile *DescFileP; PackageFile *PkgFileP; Version *VerP; + Description *DescP; Provides *ProvideP; Dependency *DepP; StringItem *StringItemP; @@@ -111,14 -119,14 +119,14 @@@ inline void *DataEnd() {return ((unsigned char *)Map.Data()) + Map.Size();}; // String hashing function (512 range) - inline unsigned long Hash(string S) const {return sHash(S);}; + inline unsigned long Hash(const string &S) const {return sHash(S);}; inline unsigned long Hash(const char *S) const {return sHash(S);}; // Usefull transformation things const char *Priority(unsigned char Priority); // Accessors - PkgIterator FindPkg(string Name); + PkgIterator FindPkg(const string &Name); Header &Head() {return *HeaderP;}; inline PkgIterator PkgBegin(); inline PkgIterator PkgEnd(); @@@ -151,16 -159,20 +159,20 @@@ struct pkgCache::Heade unsigned short PackageSz; unsigned short PackageFileSz; unsigned short VersionSz; + unsigned short DescriptionSz; unsigned short DependencySz; unsigned short ProvidesSz; unsigned short VerFileSz; + unsigned short DescFileSz; // Structure counts unsigned long PackageCount; unsigned long VersionCount; + unsigned long DescriptionCount; unsigned long DependsCount; unsigned long PackageFileCount; unsigned long VerFileCount; + unsigned long DescFileCount; unsigned long ProvidesCount; // Offsets @@@ -169,10 -181,11 +181,11 @@@ map_ptrloc VerSysName; // StringTable map_ptrloc Architecture; // StringTable unsigned long MaxVerFileSize; + unsigned long MaxDescFileSize; /* Allocation pools, there should be one of these for each structure excluding the header */ - DynamicMMap::Pool Pools[7]; + DynamicMMap::Pool Pools[8]; // Rapid package name lookup map_ptrloc HashTable[2*1048]; @@@ -193,7 -206,7 +206,7 @@@ struct pkgCache::Packag map_ptrloc NextPackage; // Package map_ptrloc RevDepends; // Dependency map_ptrloc ProvidesList; // Provides - + // Install/Remove/Purge etc unsigned char SelectedState; // What unsigned char InstState; // Flags @@@ -232,6 -245,14 +245,14 @@@ struct pkgCache::VerFil unsigned short Size; }; + struct pkgCache::DescFile + { + map_ptrloc File; // PackageFile + map_ptrloc NextFile; // PkgVerFile + map_ptrloc Offset; // File offset + unsigned short Size; + }; + struct pkgCache::Version { map_ptrloc VerStr; // Stringtable @@@ -241,6 -262,7 +262,7 @@@ // Lists map_ptrloc FileList; // VerFile map_ptrloc NextVer; // Version + map_ptrloc DescriptionList; // Description map_ptrloc DependsList; // Dependency map_ptrloc ParentPkg; // Package map_ptrloc ProvidesList; // Provides @@@ -252,6 -274,22 +274,22 @@@ unsigned char Priority; }; + struct pkgCache::Description + { + // Language Code store the description translation language code. If + // the value has a 0 lenght then this is readed using the Package + // file else the Translation-CODE are used. + map_ptrloc language_code; // StringTable + map_ptrloc md5sum; // StringTable + + // Linked list + map_ptrloc FileList; // DescFile + map_ptrloc NextDesc; // Description + map_ptrloc ParentPkg; // Package + + unsigned short ID; + }; + struct pkgCache::Dependency { map_ptrloc Version; // Stringtable @@@ -299,11 -337,13 +337,13 @@@ class pkgCache::Namespac typedef pkgCache::PkgIterator PkgIterator; typedef pkgCache::VerIterator VerIterator; + typedef pkgCache::DescIterator DescIterator; typedef pkgCache::DepIterator DepIterator; typedef pkgCache::PrvIterator PrvIterator; typedef pkgCache::PkgFileIterator PkgFileIterator; typedef pkgCache::VerFileIterator VerFileIterator; typedef pkgCache::Version Version; + typedef pkgCache::Description Description; typedef pkgCache::Package Package; typedef pkgCache::Header Header; typedef pkgCache::Dep Dep; diff --combined apt-pkg/pkgcachegen.cc index 4ac4d1d1c,1ba791b45..b2725a99d --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@@ -26,8 -26,6 +26,8 @@@ #include #include +#include + #include #include @@@ -127,16 -125,46 +127,46 @@@ bool pkgCacheGenerator::MergeList(ListP string Version = List.Version(); if (Version.empty() == true) { + // we first process the package, then the descriptions + // (this has the bonus that we get MMap error when we run out + // of MMap space) if (List.UsePackage(Pkg,pkgCache::VerIterator(Cache)) == false) return _error->Error(_("Error occurred while processing %s (UsePackage1)"), PackageName.c_str()); + + // Find the right version to write the description + MD5SumValue CurMd5 = List.Description_md5(); + pkgCache::VerIterator Ver = Pkg.VersionList(); + map_ptrloc *LastVer = &Pkg->VersionList; + + for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++) + { + pkgCache::DescIterator Desc = Ver.DescriptionList(); + map_ptrloc *LastDesc = &Ver->DescriptionList; + + for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++) + { + + if (MD5SumValue(Desc.md5()) == CurMd5) + { + // Add new description + *LastDesc = NewDescription(Desc, List.DescriptionLanguage(), CurMd5, *LastDesc); + Desc->ParentPkg = Pkg.Index(); + + if (NewFileDesc(Desc,List) == false) + return _error->Error(_("Error occured while processing %s (NewFileDesc1)"),PackageName.c_str()); + break; + } + } + } + continue; } pkgCache::VerIterator Ver = Pkg.VersionList(); - map_ptrloc *Last = &Pkg->VersionList; + map_ptrloc *LastVer = &Pkg->VersionList; int Res = 1; - for (; Ver.end() == false; Last = &Ver->NextVer, Ver++) + for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++) { Res = Cache.VS->CmpVersion(Version,Ver.VerStr()); if (Res >= 0) @@@ -170,7 -198,7 +200,7 @@@ // Skip to the end of the same version set. if (Res == 0) { - for (; Ver.end() == false; Last = &Ver->NextVer, Ver++) + for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++) { Res = Cache.VS->CmpVersion(Version,Ver.VerStr()); if (Res != 0) @@@ -179,9 -207,10 +209,10 @@@ } // Add a new version - *Last = NewVersion(Ver,Version,*Last); + *LastVer = NewVersion(Ver,Version,*LastVer); Ver->ParentPkg = Pkg.Index(); Ver->Hash = Hash; + if (List.NewVersion(Ver) == false) return _error->Error(_("Error occurred while processing %s (NewVersion1)"), PackageName.c_str()); @@@ -201,6 -230,21 +232,21 @@@ FoundFileDeps |= List.HasFileDeps(); return true; } + + /* Record the Description data. Description data always exist in + Packages and Translation-* files. */ + pkgCache::DescIterator Desc = Ver.DescriptionList(); + map_ptrloc *LastDesc = &Ver->DescriptionList; + + // Skip to the end of description set + for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++); + + // Add new description + *LastDesc = NewDescription(Desc, List.DescriptionLanguage(), List.Description_md5(), *LastDesc); + Desc->ParentPkg = Pkg.Index(); + + if (NewFileDesc(Desc,List) == false) + return _error->Error(_("Error occured while processing %s (NewFileDesc2)"),PackageName.c_str()); } FoundFileDeps |= List.HasFileDeps(); @@@ -211,6 -255,9 +257,9 @@@ if (Cache.HeaderP->VersionCount >= (1ULL<<(sizeof(Cache.VerP->ID)*8))-1) return _error->Error(_("Wow, you exceeded the number of versions " "this APT is capable of.")); + if (Cache.HeaderP->DescriptionCount >= (1ULL<<(sizeof(Cache.DescP->ID)*8))-1) + return _error->Error(_("Wow, you exceeded the number of descriptions " + "this APT is capable of.")); if (Cache.HeaderP->DependsCount >= (1ULL<<(sizeof(Cache.DepP->ID)*8))-1ULL) return _error->Error(_("Wow, you exceeded the number of dependencies " "this APT is capable of.")); @@@ -268,12 -315,12 +317,12 @@@ bool pkgCacheGenerator::MergeFileProvid // CacheGenerator::NewPackage - Add a new package /*{{{*/ // --------------------------------------------------------------------- /* This creates a new package structure and adds it to the hash table */ -bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg,string Name) +bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg,const string &Name) { Pkg = Cache.FindPkg(Name); if (Pkg.end() == false) return true; - + // Get a structure unsigned long Package = Map.Allocate(sizeof(pkgCache::Package)); if (Package == 0) @@@ -332,7 -379,7 +381,7 @@@ bool pkgCacheGenerator::NewFileVer(pkgC // --------------------------------------------------------------------- /* This puts a version structure in the linked list */ unsigned long pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver, - string VerStr, + const string &VerStr, unsigned long Next) { // Get a structure @@@ -351,13 -398,69 +400,69 @@@ return Version; } /*}}}*/ + // CacheGenerator::NewFileDesc - Create a new File<->Desc association /*{{{*/ + // --------------------------------------------------------------------- + /* */ + bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc, + ListParser &List) + { + if (CurrentFile == 0) + return true; + + // Get a structure + unsigned long DescFile = Map.Allocate(sizeof(pkgCache::DescFile)); + if (DescFile == 0) + return 0; + + pkgCache::DescFileIterator DF(Cache,Cache.DescFileP + DescFile); + DF->File = CurrentFile - Cache.PkgFileP; + + // Link it to the end of the list + map_ptrloc *Last = &Desc->FileList; + for (pkgCache::DescFileIterator D = Desc.FileList(); D.end() == false; D++) + Last = &D->NextFile; + + DF->NextFile = *Last; + *Last = DF.Index(); + + DF->Offset = List.Offset(); + DF->Size = List.Size(); + if (Cache.HeaderP->MaxDescFileSize < DF->Size) + Cache.HeaderP->MaxDescFileSize = DF->Size; + Cache.HeaderP->DescFileCount++; + + return true; + } + /*}}}*/ + // CacheGenerator::NewDescription - Create a new Description /*{{{*/ + // --------------------------------------------------------------------- + /* This puts a description structure in the linked list */ + map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc, + const string &Lang, const MD5SumValue &md5sum, + map_ptrloc Next) + { + // Get a structure + map_ptrloc Description = Map.Allocate(sizeof(pkgCache::Description)); + if (Description == 0) + return 0; + + // Fill it in + Desc = pkgCache::DescIterator(Cache,Cache.DescP + Description); + Desc->NextDesc = Next; + Desc->ID = Cache.HeaderP->DescriptionCount++; + Desc->language_code = Map.WriteString(Lang); + Desc->md5sum = Map.WriteString(md5sum.Value()); + + return Description; + } + /*}}}*/ // ListParser::NewDepends - Create a dependency element /*{{{*/ // --------------------------------------------------------------------- /* This creates a dependency element in the tree. It is linked to the version and to the package that it is pointing to. */ bool pkgCacheGenerator::ListParser::NewDepends(pkgCache::VerIterator Ver, - string PackageName, - string Version, + const string &PackageName, + const string &Version, unsigned int Op, unsigned int Type) { @@@ -421,8 -524,8 +526,8 @@@ // --------------------------------------------------------------------- /* */ bool pkgCacheGenerator::ListParser::NewProvides(pkgCache::VerIterator Ver, - string PackageName, - string Version) + const string &PackageName, + const string &Version) { pkgCache &Cache = Owner->Cache; @@@ -461,7 -564,7 +566,7 @@@ // --------------------------------------------------------------------- /* This is used to select which file is to be associated with all newly added versions. The caller is responsible for setting the IMS fields. */ -bool pkgCacheGenerator::SelectFile(string File,string Site, +bool pkgCacheGenerator::SelectFile(const string &File,const string &Site, const pkgIndexFile &Index, unsigned long Flags) { @@@ -545,7 -648,7 +650,7 @@@ unsigned long pkgCacheGenerator::WriteU /* This just verifies that each file in the list of index files exists, has matching attributes with the cache and the cache does not have any extra files. */ -static bool CheckValidity(string CacheFile, FileIterator Start, +static bool CheckValidity(const string &CacheFile, FileIterator Start, FileIterator End,MMap **OutMap = 0) { // No file, certainly invalid @@@ -573,10 -676,8 +678,10 @@@ if ((*Start)->Exists() == false) { +#if 0 // mvo: we no longer give a message here (Default Sources spec) _error->WarningE("stat",_("Couldn't stat source package list %s"), (*Start)->Describe().c_str()); +#endif continue; } @@@ -584,7 -685,7 +689,7 @@@ pkgCache::PkgFileIterator File = (*Start)->FindInCache(Cache); if (File.end() == true) return false; - + Visited[File->ID] = true; } diff --combined apt-pkg/pkgcachegen.h index 9a729eea4,6ab8594d9..fae1a60a6 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@@ -24,6 -24,7 +24,7 @@@ #endif #include + #include class pkgSourceList; class OpProgress; @@@ -53,17 -54,19 +54,19 @@@ class pkgCacheGenerato // Flag file dependencies bool FoundFileDeps; - bool NewPackage(pkgCache::PkgIterator &Pkg,string Pkg); + bool NewPackage(pkgCache::PkgIterator &Pkg,const string &Pkg); bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List); + bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List); - unsigned long NewVersion(pkgCache::VerIterator &Ver,string VerStr,unsigned long Next); + unsigned long NewVersion(pkgCache::VerIterator &Ver,const string &VerStr,unsigned long Next); + map_ptrloc NewDescription(pkgCache::DescIterator &Desc,const string &Lang,const MD5SumValue &md5sum,map_ptrloc Next); public: unsigned long WriteUniqString(const char *S,unsigned int Size); - inline unsigned long WriteUniqString(string S) {return WriteUniqString(S.c_str(),S.length());}; + inline unsigned long WriteUniqString(const string &S) {return WriteUniqString(S.c_str(),S.length());}; void DropProgress() {Progress = 0;}; - bool SelectFile(string File,string Site,pkgIndexFile const &Index, + bool SelectFile(const string &File,const string &Site,pkgIndexFile const &Index, unsigned long Flags = 0); bool MergeList(ListParser &List,pkgCache::VerIterator *Ver = 0); inline pkgCache &GetCache() {return Cache;}; @@@ -94,13 -97,12 +97,13 @@@ class pkgCacheGenerator::ListParse inline unsigned long WriteUniqString(string S) {return Owner->WriteUniqString(S);}; inline unsigned long WriteUniqString(const char *S,unsigned int Size) {return Owner->WriteUniqString(S,Size);}; - inline unsigned long WriteString(string S) {return Owner->Map.WriteString(S);}; + inline unsigned long WriteString(const string &S) {return Owner->Map.WriteString(S);}; inline unsigned long WriteString(const char *S,unsigned int Size) {return Owner->Map.WriteString(S,Size);}; - bool NewDepends(pkgCache::VerIterator Ver,string Package, - string Version,unsigned int Op, + bool NewDepends(pkgCache::VerIterator Ver,const string &Package, + const string &Version,unsigned int Op, unsigned int Type); - bool NewProvides(pkgCache::VerIterator Ver,string Package,string Version); + bool NewProvides(pkgCache::VerIterator Ver,const string &Package, + const string &Version); public: @@@ -108,6 -110,9 +111,9 @@@ virtual string Package() = 0; virtual string Version() = 0; virtual bool NewVersion(pkgCache::VerIterator Ver) = 0; + virtual string Description() = 0; + virtual string DescriptionLanguage() = 0; + virtual MD5SumValue Description_md5() = 0; virtual unsigned short VersionHash() = 0; virtual bool UsePackage(pkgCache::PkgIterator Pkg, pkgCache::VerIterator Ver) = 0; diff --combined apt-pkg/pkgrecords.cc index 9c2655d6a,f62f945b5..b22f3e73f --- a/apt-pkg/pkgrecords.cc +++ b/apt-pkg/pkgrecords.cc @@@ -42,6 -42,9 +42,6 @@@ pkgRecords::pkgRecords(pkgCache &Cache if (Files[I->ID] == 0) return; } - // We store that to make sure that the destructor won't segfault, - // even if the Cache object was destructed before this instance. - PackageFileCount = Cache.HeaderP->PackageFileCount; } /*}}}*/ // Records::~pkgRecords - Destructor /*{{{*/ @@@ -49,7 -52,7 +49,7 @@@ /* */ pkgRecords::~pkgRecords() { - for (unsigned I = 0; I != PackageFileCount; I++) + for (unsigned I = 0; I != Cache.HeaderP->PackageFileCount; I++) delete Files[I]; delete [] Files; } @@@ -63,3 -66,12 +63,12 @@@ pkgRecords::Parser &pkgRecords::Lookup( return *Files[Ver.File()->ID]; } /*}}}*/ + // Records::Lookup - Get a parser for the package description file /*{{{*/ + // --------------------------------------------------------------------- + /* */ + pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc) + { + Files[Desc.File()->ID]->Jump(Desc); + return *Files[Desc.File()->ID]; + } + /*}}}*/ diff --combined apt-pkg/pkgrecords.h index 08f004414,ece91680e..31c444dbf --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@@ -33,11 -33,13 +33,12 @@@ class pkgRecord pkgCache &Cache; Parser **Files; - int PackageFileCount; public: // Lookup function Parser &Lookup(pkgCache::VerFileIterator const &Ver); + Parser &Lookup(pkgCache::DescFileIterator const &Desc); // Construct destruct pkgRecords(pkgCache &Cache); @@@ -49,6 -51,7 +50,7 @@@ class pkgRecords::Parse protected: virtual bool Jump(pkgCache::VerFileIterator const &Ver) = 0; + virtual bool Jump(pkgCache::DescFileIterator const &Desc) = 0; public: friend class pkgRecords; diff --combined cmdline/apt-cache.cc index aea9ebeba,cb1aeb514..74fa71cba --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@@ -71,6 -71,12 +71,12 @@@ void LocalitySort(pkgCache::VerFile **b { qsort(begin,Count,Size,LocalityCompare); } + + void LocalitySort(pkgCache::DescFile **begin, + unsigned long Count,size_t Size) + { + qsort(begin,Count,Size,LocalityCompare); + } /*}}}*/ // UnMet - Show unmet dependencies /*{{{*/ // --------------------------------------------------------------------- @@@ -182,7 -188,14 +188,14 @@@ bool DumpPackage(CommandLine &CmdL { cout << Cur.VerStr(); for (pkgCache::VerFileIterator Vf = Cur.FileList(); Vf.end() == false; Vf++) - cout << "(" << Vf.File().FileName() << ")"; + cout << " (" << Vf.File().FileName() << ")"; + cout << endl; + for (pkgCache::DescIterator D = Cur.DescriptionList(); D.end() == false; D++) + { + cout << " Description Language: " << D.LanguageCode() << endl + << " File: " << D.FileList().File().FileName() << endl + << " MD5: " << D.md5() << endl; + } cout << endl; } @@@ -277,11 -290,15 +290,15 @@@ bool Stats(CommandLine &Cmd cout << _("Total distinct versions: ") << Cache.Head().VersionCount << " (" << SizeToStr(Cache.Head().VersionCount*Cache.Head().VersionSz) << ')' << endl; + cout << _("Total Distinct Descriptions: ") << Cache.Head().DescriptionCount << " (" << + SizeToStr(Cache.Head().DescriptionCount*Cache.Head().DescriptionSz) << ')' << endl; cout << _("Total dependencies: ") << Cache.Head().DependsCount << " (" << SizeToStr(Cache.Head().DependsCount*Cache.Head().DependencySz) << ')' << endl; cout << _("Total ver/file relations: ") << Cache.Head().VerFileCount << " (" << SizeToStr(Cache.Head().VerFileCount*Cache.Head().VerFileSz) << ')' << endl; + cout << _("Total Desc/File relations: ") << Cache.Head().DescFileCount << " (" << + SizeToStr(Cache.Head().DescFileCount*Cache.Head().DescFileSz) << ')' << endl; cout << _("Total Provides mappings: ") << Cache.Head().ProvidesCount << " (" << SizeToStr(Cache.Head().ProvidesCount*Cache.Head().ProvidesSz) << ')' << endl; @@@ -344,6 -361,12 +361,12 @@@ bool Dump(CommandLine &Cmd for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++) cout << " Depends: " << D.TargetPkg().Name() << ' ' << DeNull(D.TargetVer()) << endl; + for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; D++) + { + cout << " Description Language: " << D.LanguageCode() << endl + << " File: " << D.FileList().File().FileName() << endl + << " MD5: " << D.md5() << endl; + } } } @@@ -1192,17 -1215,50 +1215,50 @@@ bool DisplayRecord(pkgCache::VerIterato if (_error->PendingError() == true) return false; - // Read the record and then write it out again. + // Read the record unsigned char *Buffer = new unsigned char[GCache->HeaderP->MaxVerFileSize+1]; Buffer[V.FileList()->Size] = '\n'; if (PkgF.Seek(V.FileList()->Offset) == false || - PkgF.Read(Buffer,V.FileList()->Size) == false || - fwrite(Buffer,1,V.FileList()->Size+1,stdout) < (size_t)(V.FileList()->Size+1)) + PkgF.Read(Buffer,V.FileList()->Size) == false) { delete [] Buffer; return false; } - + + // Get a pointer to start of Description field + const unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:"); + + // Write all but Description + if (fwrite(Buffer,1,DescP - Buffer,stdout) < (size_t)(DescP - Buffer)) + { + delete [] Buffer; + return false; + } + + // Show the right description + pkgRecords Recs(*GCache); + pkgCache::DescIterator Desc = V.TranslatedDescription(); + pkgRecords::Parser &P = Recs.Lookup(Desc.FileList()); + cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc(); + + // Find the first field after the description (if there is any) + for(DescP++;DescP != &Buffer[V.FileList()->Size];DescP++) + { + if(*DescP == '\n' && *(DescP+1) != ' ') + { + // write the rest of the buffer + const unsigned char *end=&Buffer[V.FileList()->Size]; + if (fwrite(DescP,1,end-DescP,stdout) < (size_t)(end-DescP)) + { + delete [] Buffer; + return false; + } + + break; + } + } + // write a final newline (after the description) + cout<PackageCount+1]; - memset(VFList,0,sizeof(*VFList)*Cache.HeaderP->PackageCount+1); + ExDescFile *DFList = new ExDescFile[Cache.HeaderP->PackageCount+1]; + memset(DFList,0,sizeof(*DFList)*Cache.HeaderP->PackageCount+1); // Map versions that we want to write out onto the VerList array. for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++) { - VFList[P->ID].NameMatch = NumPatterns != 0; + DFList[P->ID].NameMatch = NumPatterns != 0; for (unsigned I = 0; I != NumPatterns; I++) { if (regexec(&Patterns[I],P.Name(),0,0,0) == 0) - VFList[P->ID].NameMatch &= true; + DFList[P->ID].NameMatch &= true; else - VFList[P->ID].NameMatch = false; + DFList[P->ID].NameMatch = false; } // Doing names only, drop any that dont match.. - if (NamesOnly == true && VFList[P->ID].NameMatch == false) + if (NamesOnly == true && DFList[P->ID].NameMatch == false) continue; // Find the proper version to use. pkgCache::VerIterator V = Plcy.GetCandidateVer(P); if (V.end() == false) - VFList[P->ID].Vf = V.FileList(); + DFList[P->ID].Df = V.DescriptionList().FileList(); } // Include all the packages that provide matching names too for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++) { - if (VFList[P->ID].NameMatch == false) + if (DFList[P->ID].NameMatch == false) continue; for (pkgCache::PrvIterator Prv = P.ProvidesList() ; Prv.end() == false; Prv++) @@@ -1289,18 -1345,18 +1345,18 @@@ pkgCache::VerIterator V = Plcy.GetCandidateVer(Prv.OwnerPkg()); if (V.end() == false) { - VFList[Prv.OwnerPkg()->ID].Vf = V.FileList(); - VFList[Prv.OwnerPkg()->ID].NameMatch = true; + DFList[Prv.OwnerPkg()->ID].Df = V.DescriptionList().FileList(); + DFList[Prv.OwnerPkg()->ID].NameMatch = true; } } } - - LocalitySort(&VFList->Vf,Cache.HeaderP->PackageCount,sizeof(*VFList)); + + LocalitySort(&DFList->Df,Cache.HeaderP->PackageCount,sizeof(*DFList)); // Iterate over all the version records and check them - for (ExVerFile *J = VFList; J->Vf != 0; J++) + for (ExDescFile *J = DFList; J->Df != 0; J++) { - pkgRecords::Parser &P = Recs.Lookup(pkgCache::VerFileIterator(Cache,J->Vf)); + pkgRecords::Parser &P = Recs.Lookup(pkgCache::DescFileIterator(Cache,J->Df)); bool Match = true; if (J->NameMatch == false) @@@ -1331,7 -1387,7 +1387,7 @@@ } } - delete [] VFList; + delete [] DFList; for (unsigned I = 0; I != NumPatterns; I++) regfree(&Patterns[I]); if (ferror(stdout)) @@@ -1574,11 -1630,10 +1630,11 @@@ bool Madison(CommandLine &CmdL pkgCache &Cache = *GCache; - // Create the text record parsers + // Create the src text record parsers and ignore errors about missing + // deb-src lines that are generated from pkgSrcRecords::pkgSrcRecords pkgSrcRecords SrcRecs(*SrcList); if (_error->PendingError() == true) - return false; + _error->Discard(); for (const char **I = CmdL.FileList + 1; *I != 0; I++) { diff --combined configure.in index aa9abc1e6,87dac8e47..d9134f4b1 --- a/configure.in +++ b/configure.in @@@ -18,7 -18,7 +18,7 @@@ AC_CONFIG_AUX_DIR(buildlib AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) dnl -- SET THIS TO THE RELEASE VERSION -- - AC_DEFINE_UNQUOTED(VERSION,"0.6.45ubuntu2") -AC_DEFINE_UNQUOTED(VERSION,"0.6.41.1") ++AC_DEFINE_UNQUOTED(VERSION,"0.6.45ubuntu3") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) @@@ -192,7 -192,7 +192,7 @@@ ah_GCC3DE dnl It used to be that the user could select translations and that could get dnl passed to the makefiles, but now that can only work if you use special dnl gettext approved makefiles, so this feature is unsupported by this. -ALL_LINGUAS="da de en_GB es fr hu it nl no_NO pl pt_BR ru sv zh_TW" +ALL_LINGUAS="bg bs ca cs cy da de dz el en_GB es eu fi fr gl hu it ja ko nb nl nn pl pt_BR pt ro ru sk sl sv tl vi zn_CN zh_TW" AM_GNU_GETTEXT(external) if test x"$USE_NLS" = "xyes"; then AC_DEFINE(USE_NLS) diff --combined debian/changelog index 946971906,0e85b5117..16678d805 --- a/debian/changelog +++ b/debian/changelog @@@ -1,443 -1,35 +1,444 @@@ +apt (0.6.45ubuntu3) edgy; urgency=low + + * ABI break + * merged latest apt--install-recommends + * added "--fix-policy" option to can be used as "--fix-broken" and + will install missing weak depends (recommends, and/or suggests + depending on the settings) ++ * merged the apt--ddtp branch + - -- ++ -- Michael Vogt Fri, 11 Aug 2006 12:53:23 +0200 + +apt (0.6.45ubuntu2) edgy; urgency=low + + * debian/control: + - switched to libdb4.4 for building (closes: #381019) + * cmdline/apt-get.cc: + - show only the recommends/suggests for the candidate-version, not for all + versions of the package (closes: #257054) + - properly handle recommends/suggests or-groups when printing the list of + suggested/recommends packages (closes: #311619) + * merged "apt--install-recommends" branch: + - added "{no-}install-recommends" commandline option + - added APT::Install-{Recommends,Suggests} option + - currently Install-Recommends defaults to "False" + + -- Michael Vogt Wed, 9 Aug 2006 23:38:46 +0200 + +apt (0.6.45ubuntu1) edgy; urgency=low + + * merged with debian/unstable + + -- Michael Vogt Tue, 1 Aug 2006 15:43:22 +0200 + +apt (0.6.45) unstable; urgency=low + + * apt-pkg/contrib/sha256.cc: + - fixed the sha256 generation (closes: #378183) + * ftparchive/cachedb.cc: + - applied patch from Anthony Towns to fix Clean() function + (closes: #379576) + * doc/apt-get.8.xml: + - fix path to the apt user build (Closes: #375640) + * doc/apt-cache.8.xml: + - typo (Closes: #376408) + * apt-pkg/deb/dpkgpm.cc: + - make progress reporting more robust against multiline error + messages (first half of a fix for #374195) + * doc/examples/configure-index: + - document Debug::pkgAcquire::Auth + * methods/gpgv.cc: + - deal with gpg error "NODATA". Closes: #296103, Thanks to + Luis Rodrigo Gallardo Cruz for the patch + * apt-inst/contrib/extracttar.cc: + - fix for string mangling, closes: #373864 + * apt-pkg/acquire-item.cc: + - check for bzip2 in /bin (closes: #377391) + * apt-pkg/tagfile.cc: + - make it work on non-mapable files again, thanks + to James Troup for confirming the fix (closes: #376777) + * Merged from Christian Perrier bzr branch: + * ko.po: Updated to 512t. Closes: #378901 + * hu.po: Updated to 512t. Closes: #376330 + * km.po: New Khmer translation: 506t6f. Closes: #375068 + * ne.po: New Nepali translation: 512t. Closes: #373729 + * vi.po: Updated to 512t. Closes: #368038 + * zh_TW.po: Remove an extra %s in one string. Closes: #370551 + * dz.po: New Dzongkha translation: 512t + * ro.po: Updated to 512t + * eu.po: Updated + + -- Michael Vogt Thu, 27 Jul 2006 00:52:05 +0200 + +apt (0.6.44.2ubuntu4) edgy; urgency=low + + * Make apt-get dselect-upgrade happy again + + -- Michael Vogt Fri, 21 Jul 2006 11:03:02 +0200 + +apt (0.6.44.2ubuntu3) edgy; urgency=low + + * Close extended_states file after writing it. + + -- Colin Watson Tue, 18 Jul 2006 00:12:13 +0100 + +apt (0.6.44.2ubuntu2) edgy; urgency=low + + * create a empty extended_states file if none exists already + + -- Michael Vogt Tue, 4 Jul 2006 09:23:03 +0200 + +apt (0.6.44.2ubuntu1) edgy; urgency=low + + * merged with debian/unstable + * merged the "auto-mark" branch to support aptitude like + marking of automatically installed dependencies and added + "apt-get remove --auto-remove" to remove unused auto-installed + packages again + * changed library version from 3.11 to 3.50 to make it clearly + different from the debian version (we are ABI incompatible because + of the auto-mark patch) + + -- Michael Vogt Mon, 3 Jul 2006 18:30:46 +0200 + +apt (0.6.44.2) unstable; urgency=low + + * apt-pkg/depcache.cc: + - added Debug::pkgDepCache::AutoInstall (thanks to infinity) + * apt-pkg/acquire-item.cc: + - fix missing chmod() in the new aquire code + (thanks to Bastian Blank, Closes: #367425) + * merged from + http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: + * sk.po: Completed to 512t + * eu.po: Completed to 512t + * fr.po: Completed to 512t + * sv.po: Completed to 512t + * Update all PO and the POT. Gives 506t6f for formerly + complete translations + + -- Michael Vogt Wed, 14 Jun 2006 12:00:57 +0200 + +apt (0.6.44.1-0.1) unstable; urgency=low + + * Non-maintainer upload. + * Don't give an error when parsing empty Packages/Sources files. + (Closes: #366931, #367086, #370160) + + -- Steinar H. Gunderson Fri, 9 Jun 2006 00:52:21 +0200 + +apt (0.6.44.1) unstable; urgency=low + + * merged from + http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: + - po/LINGUAS: added "bg" Closes: #360262 + - po/gl.po: Galician translation update. Closes: #366849 + - po/hu.po: Hungarian translation update. Closes: #365448 + - po/cs.po: Czech translation updated. Closes: #367244 + + -- Michael Vogt Tue, 16 May 2006 21:51:16 +0200 + +apt (0.6.44) unstable; urgency=low + + * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large + * apt-pkg/deb/dpkgpm.cc: + - wording fixes (thanks to Matt Zimmerman) + - fix error in dpkg interaction (closes: #364513, + thanks to Martin Dickopp) + * apt-pkg/tagfile.{cc,h}: + - use MMap to read the entries (thanks to Zephaniah E. Hull for the + patch) Closes: #350025 + * Merge from http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main: + * bg.po: Added, complete to 512t. Closes: #360262 + * doc/apt-ftparchive.1.xml: + - fix documentation for "SrcPackages" -> "Sources" + (thanks to Bart Martens for the patch, closes: #307756) + * debian/libapt-pkg-doc.doc-base.cache: + - remove broken charackter from description (closes: #361129) + * apt-inst/deb/dpkgdb.cc, methods/gpgv.cc: + - i18n fixes (closes: #349298) + * debian/postinst: dont fail on not available + /usr/share/doc/apt/examples/sources.list (closes: #361130) + * methods/ftp.cc: + - unlink empty file in partial if the download failed because + the file is missing on the server (closes: #316337) + * apt-pkg/deb/debversion.cc: + - treats a version string with explicit zero epoch equal + than the same without epoch (Policy 5.6.12, closes: #363358) + Thanks to Lionel Elie Mamane for the patch + + -- Michael Vogt Mon, 8 May 2006 22:28:53 +0200 + +apt (0.6.43.3ubuntu3) dapper; urgency=low + + * methods/http.cc: + - fix the user-agent string + + -- Michael Vogt Fri, 26 May 2006 18:09:32 +0200 + +apt (0.6.43.3ubuntu2) dapper; urgency=low + + * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman) + + -- Michael Vogt Tue, 18 Apr 2006 13:24:40 +0200 + +apt (0.6.43.3ubuntu1) dapper; urgency=low + + * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in + the status-fd (ubuntu #28954) + + -- Michael Vogt Tue, 28 Mar 2006 20:34:46 +0200 + +apt (0.6.43.3) unstable; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-186: + * ca.po: Completed to 512t. Closes: #351592 + * eu.po: Completed to 512t. Closes: #350483 + * ja.po: Completed to 512t. Closes: #349806 + * pl.po: Completed to 512t. Closes: #349514 + * sk.po: Completed to 512t. Closes: #349474 + * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings + * sv.po: Completed to 512 strings Closes: #349210 + * ru.po: Completed to 512 strings Closes: #349154 + * da.po: Completed to 512 strings Closes: #349084 + * fr.po: Completed to 512 strings + * LINGUAS: Add Welsh + * *.po: Updated from sources (512 strings) + * vi.po: Completed to 511 strings Closes: #348968 + * apt-pkg/deb/deblistparser.cc: + - don't explode on a DepCompareOp in a Provides line, but warn about + it and ignore it otherwise (thanks to James Troup for reporting it) + * cmdline/apt-get.cc: + - don't lock the lists directory in DoInstall, breaks --print-uri + (thanks to James Troup for reporting it) + * debian/apt.dirs: create /etc/apt/sources.list.d + * make apt-cache madison work without deb-src entries (#352583) + * cmdline/apt-get.cc: only run the list-cleaner if a update was + successfull + * apt-get update errors are only warnings nowdays + * be more careful with the signature file on network failures + + -- Michael Vogt Wed, 22 Feb 2006 10:13:04 +0100 + +apt (0.6.43.2ubuntu1) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182: + * ca.po: Completed to 512t. Closes: #351592 + * eu.po: Completed to 512t. Closes: #350483 + * ja.po: Completed to 512t. Closes: #349806 + * pl.po: Completed to 512t. Closes: #349514 + * sk.po: Completed to 512t. Closes: #349474 + * gl.po: Completed to 512 strings Closes: #349407 + * vi.po: Completed to 512 strings + * sv.po: Completed to 512 strings Closes: #349210 + * ru.po: Completed to 512 strings Closes: #349154 + * da.po: Completed to 512 strings Closes: #349084 + * fr.po: Completed to 512 strings + * LINGUAS: Add Welsh + * *.po: Updated from sources (512 strings) + * vi.po: Completed to 511 strings Closes: #348968 + * apt-pkg/deb/deblistparser.cc: + - don't explode on a DepCompareOp in a Provides line, but warn about + it and ignore it otherwise (thanks to James Troup for reporting it) + * cmdline/apt-get.cc: + - don't lock the lists directory in DoInstall, breaks --print-uri + (thanks to James Troup for reporting it) + * debian/apt.dirs: create /etc/apt/sources.list.d + * make apt-cache madison work without deb-src entries (#352583) + * cmdline/apt-get.cc: only run the list-cleaner if a update was + successfull + * apt-get update errors are only warnings nowdays + * be more careful with the signature file on network failures + + -- Michael Vogt Mon, 20 Feb 2006 22:27:48 +0100 + +apt (0.6.43.2) unstable; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-166: + - en_GB.po, de.po: fix spaces errors in "Ign " translations Closes: #347258 + - makefile: make update-po a pre-requisite of clean target so + that POT and PO files are always up-to-date + - sv.po: Completed to 511t. Closes: #346450 + - sk.po: Completed to 511t. Closes: #346369 + - fr.po: Completed to 511t + - *.po: Updated from sources (511 strings) + - el.po: Completed to 511 strings Closes: #344642 + - da.po: Completed to 511 strings Closes: #348574 + - es.po: Updated to 510t1f Closes: #348158 + - gl.po: Completed to 511 strings Closes: #347729 + - it.po: Yet another update Closes: #347435 + * added debian-archive-keyring to the Recommends (closes: #347970) + * fixed message in apt-key to install debian-archive-keyring + * typos fixed in apt-cache.8 (closes: #348348, #347349) + * add patch to fix http download corruption problem (thanks to + Petr Vandrovec, closes: #280844, #290694) + + -- Michael Vogt Thu, 19 Jan 2006 00:06:33 +0100 + +apt (0.6.43.1ubuntu1) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159: + - en_GB.po, de.po: fix spaces errors in "Ign " translations + Closes: #347258 + - makefile: make update-po a pre-requisite of clean target so + that POT and PO files are always up-to-date + - sv.po: Completed to 511t. Closes: #346450 + - sk.po: Completed to 511t. Closes: #346369 + - fr.po: Completed to 511t + - *.po: Updated from sources (511 strings) + * add patch to fix http download corruption problem (thanks to + Petr Vandrovec, closes: #280844, #290694) + * added APT::Periodic::Unattended-Upgrade (requires the package + "unattended-upgrade") + + -- Michael Vogt Tue, 10 Jan 2006 17:09:31 +0100 + +apt (0.6.43.1) unstable; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-148: + * fr.po: Completed to 510 strings + * it.po: Completed to 510t + * en_GB.po: Completed to 510t + * cs.po: Completed to 510t + * zh_CN.po: Completed to 510t + * el.po: Updated to 510t + * vi.po: Updated to 383t93f34u + * tl.po: Completed to 510 strings (Closes: #344306) + * sv.po: Completed to 510 strings (Closes: #344056) + * LINGUAS: disabled Hebrew translation. (Closes: #313283) + * eu.po: Completed to 510 strings (Closes: #342091) + * apt-get source won't download already downloaded files again + (closes: #79277) + * share/debian-archive.gpg: new 2006 ftp-archive signing key added + (#345891) + * redownload the Release file if IMS-Hit and gpg failure + * deal with multiple signatures on a Release file + + -- Michael Vogt Fri, 6 Jan 2006 01:17:08 +0100 + +apt (0.6.43ubuntu2) dapper; urgency=low + + * merged some missing bits that wheren't merged by baz in the previous + upload (*grumble*) + + -- Michael Vogt Thu, 8 Dec 2005 18:35:58 +0100 + +apt (0.6.43ubuntu1) dapper; urgency=low + + * merged with debian + + -- Michael Vogt Fri, 25 Nov 2005 11:36:29 +0100 + +apt (0.6.43) unstable; urgency=medium + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-132: + * zh_CN.po: Completed to 510 strings(Closes: #338267) + * gl.po: Completed to 510 strings (Closes: #338356) + * added support for "/etc/apt/sources.list.d" directory + (closes: #66325) + * make pkgDirStream (a bit) more complete + * fix bug in pkgCache::VerIterator::end() (thanks to Daniel Burrows) + (closes: #339533) + * pkgAcqFile is more flexible now (closes: #57091) + * support a download rate limit for http (closes: #146877) + * included lots of the speedup changes from #319377 + * add stdint.h to contrib/md5.h (closes: #340448) + * ABI change, library name changed (closes: #339147) + * Fix GNU/kFreeBSD crash on non-existing server file (closes: #317718) + * switch to libdb4.3 in build-depends + + -- Michael Vogt Tue, 29 Nov 2005 00:17:07 +0100 + +apt (0.6.42.3ubuntu2) dapper; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131: + * zh_CN.po: Completed to 507 strings(Closes: #338267) + * gl.po: Completed to 510 strings (Closes: #338356) + * added support for "/etc/apt/sources.list.d" directory + (closes: #66325) + + -- Michael Vogt Mon, 14 Nov 2005 15:30:12 +0100 + +apt (0.6.42.3ubuntu1) dapper; urgency=low + + * synced with debian + + -- Michael Vogt Thu, 10 Nov 2005 05:05:56 +0100 + +apt (0.6.42.3) unstable; urgency=low + + * Merge bubulle@debian.org--2005/apt--main--0 up to patch-129: + - patch-118: Russian translation update by Yuri Kozlov (closes: #335164) + - patch-119: add update-po as a pre-req for binary (closes: #329910) + - patch-121: Complete French translation + - patch-125: Fixed localization of y/n questions in German translation + (closes: #337078) + - patch-126: Swedish translation update (closes: #337163) + - patch-127: Complete Tagalog translation (closes: #337306) + - patch-128: Danish translation update (closes: #337949) + - patch-129: Basque translation update (closes: #338101) + * cmdline/apt-get.cc: + - bufix in FindSrc (closes: #335213, #337910) + * added armeb to archtable (closes: #333599) + * with --allow-unauthenticated use the old fallback behaviour for + sources (closes: #335112) + + -- Michael Vogt Wed, 9 Nov 2005 07:22:31 +0100 + +apt (0.6.42.2) unstable; urgency=high + + * NMU (approved by maintainer) + * Add AMD64 archive signing key to debian-archive.gpg (closes: #336500). + * Add big-endian arm (armeb) support (closes: #333599). + * Priority high to get the AMD key into testing ASAP. + + -- Frans Pop Sun, 30 Oct 2005 21:29:11 +0100 + +apt (0.6.42.1) unstable; urgency=low + + * fix a incorrect example in the apt_prefrences man page + (thanks to Filipus Klutiero, closes: #282918) + * apt-pkg/pkgrecords.cc: + - revert patch from last version, it causes trouble on alpha + and ia64 (closes: #335102, #335103) + * cmdline/apt-get.cc: + - be extra carefull in FindSrc (closes: #335213) + + -- Michael Vogt Sat, 22 Oct 2005 23:44:35 +0200 + apt (0.6.42) unstable; urgency=low * apt-pkg/cdrom.cc: - unmount the cdrom when apt failed to locate any package files * allow cdrom failures and fallback to other sources in that case (closes: #44135) - * better error text when dpkg-source fails + * better error text when dpkg-source fails * Merge bubulle@debian.org--2005/apt--main--0 up to patch-115: - patch-99: Added Galician translation - patch-100: Completed Danish translation (Closes: #325686) - patch-104: French translation completed - patch-109: Italian translation completed - - patch-112: Swedish translation update + - patch-112: Swedish translation update - patch-115: Basque translation completed (Closes: #333299) * applied french man-page update (thanks to Philippe Batailler) (closes: #316638, #327456) * fix leak in the mmap code, thanks to Daniel Burrows for the patch (closes: #250583) * support for apt-get [build-dep|source] -t (closes: #152129) - * added "APT::Authentication::Trust-CDROM" option to make the life + * added "APT::Authentication::TrustCDROM" option to make the life for the installer people easier (closes: #334656) * fix crash in apt-ftparchive (thanks to Bastian Blank for the patch) (closes: #334671) * apt-pkg/contrib/md5.cc: - fix a alignment problem on sparc64 that gives random bus errors (thanks to Fabbione for providing a test-case) - * init the default ScreenWidth to 79 columns by default + * init the default ScreenWidth to 79 columns by default (Closes: #324921) - * cmdline/apt-cdrom.cc: + * cmdline/apt-cdrom.cc: - fix some missing gettext() calls (closes: #334539) * doc/apt-cache.8.xml: fix typo (closes: #334714) - + -- Michael Vogt Wed, 19 Oct 2005 22:02:09 +0200 apt (0.6.41) unstable; urgency=low @@@ -445,8 -37,8 +446,8 @@@ * improved the support for "error" and "conffile" reporting from dpkg, added the format to README.progress-reporting * added README.progress-reporting to the apt-doc package - * improved the network timeout handling, if a index file from a - sources.list times out or EAI_AGAIN is returned from getaddrinfo, + * improved the network timeout handling, if a index file from a + sources.list times out or EAI_AGAIN is returned from getaddrinfo, don't try to get the other files from that entry * Support architecture-specific extra overrides (closes: #225947). Thanks to Anthony Towns for idea and @@@ -454,10 -46,10 +455,10 @@@ * Javier Fernandez-Sanguino Pen~a: - Added a first version of an apt-secure.8 manpage, and modified apt-key and apt.end accordingly. Also added the 'update' - argument to apt-key which was previously not documented + argument to apt-key which was previously not documented (Closes: #322120) * Andreas Pakulat: - - added example apt-ftparchive.conf file to doc/examples + - added example apt-ftparchive.conf file to doc/examples (closes: #322483) * Fix a incorrect example in the man-page (closes: #282918) * Fix a bug for very long lines in the apt-cdrom code (closes: #280356) @@@ -466,84 -58,10 +467,84 @@@ * Change pkgPolicy::Pin from private to protected to let subclasses access it too (closes: #321799) * add default constructor for PrvIterator (closes: #322267) - * Reread status configuration on debSystem::Initialize() + * Reread status configuration on debSystem::Initialize() (needed for apt-proxy, thanks to Otavio for this patch) - + -- Michael Vogt Mon, 5 Sep 2005 22:59:03 +0200 + +apt (0.6.40.1ubuntu8) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62: + - fix for a bad memory/file leak in the mmap code (ubuntu #15603) + * po/de.po, po/fr.po: + - updated the translations + * po/makefile: + - create a single pot file in each domain dir to make rosetta happy + + -- Michael Vogt Wed, 28 Sep 2005 10:16:06 +0200 + +apt (0.6.40.1ubuntu7) breezy; urgency=low + + * updated the pot/po files , no code changes + + -- Michael Vogt Tue, 27 Sep 2005 18:38:16 +0200 + +apt (0.6.40.1ubuntu6) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56: + - make it possible for apt to handle a failed MediaChange event and + fall back to other sources (ubuntu #13713) + + -- Michael Vogt Tue, 13 Sep 2005 22:09:50 +0200 + +apt (0.6.40.1ubuntu5) breezy; urgency=low + + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}. + This adds media-change reporting to the apt status-fd (ubuntu #15213) + * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55: + apt-pkg/cdrom.cc: + - unmount the cdrom when apt failed to locate any package files + + -- Michael Vogt Mon, 12 Sep 2005 15:44:26 +0200 + +apt (0.6.40.1ubuntu4) breezy; urgency=low + + * debian/apt.cron.daily: + - fix a embarrassing typo + + -- Michael Vogt Wed, 7 Sep 2005 10:10:37 +0200 + +apt (0.6.40.1ubuntu3) breezy; urgency=low + + * debian/apt.cron.daily: + - use the ctime as well when figuring what packages need to + be removed. This fixes the problem that packages copied with + "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504) + + -- Michael Vogt Tue, 6 Sep 2005 18:30:46 +0200 + +apt (0.6.40.1ubuntu2) breezy; urgency=low + + * improved the support for "error" and "conffile" reporting from + dpkg, added the format to README.progress-reporting + * added README.progress-reporting to the apt-doc package + * Do md5sum checking for file and cdrom method (closes: #319142) + * Change pkgPolicy::Pin from private to protected to let subclasses + access it too (closes: #321799) + * methods/connect.cc: + - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item + * apt-pkg/acquire-item.cc: + - fail early if a FailReason is TmpResolveFailure (avoids hangs during + the install when no network is available) + * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0 + + -- Michael Vogt Tue, 23 Aug 2005 19:44:55 +0200 + +apt (0.6.40.1ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Michael Vogt Fri, 5 Aug 2005 14:20:56 +0200 apt (0.6.40.1) unstable; urgency=low @@@ -554,12 -72,6 +555,12 @@@ -- Michael Vogt Fri, 5 Aug 2005 13:24:58 +0200 +apt (0.6.40ubuntu1) breezy; urgency=low + + * Synchronize with Debian + + -- Matt Zimmerman Thu, 4 Aug 2005 15:53:22 -0700 + apt (0.6.40) unstable; urgency=low * Patch from Jordi Mallach to mark some additional strings for translation @@@ -575,39 -87,6 +576,39 @@@ -- Matt Zimmerman Thu, 28 Jul 2005 11:57:32 -0700 +apt (0.6.39ubuntu4) breezy; urgency=low + + * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this + before...) + + -- Matt Zimmerman Wed, 29 Jun 2005 08:39:17 -0700 + +apt (0.6.39ubuntu3) breezy; urgency=low + + * Fix keyring locations for Ubuntu in apt-key too. + + -- Colin Watson Wed, 29 Jun 2005 14:45:36 +0100 + +apt (0.6.39ubuntu2) breezy; urgency=low + + * Install ubuntu-archive.gpg rather than debian-archive.gpg as + /etc/apt/trusted.gpg. + + -- Colin Watson Wed, 29 Jun 2005 11:53:34 +0100 + +apt (0.6.39ubuntu1) breezy; urgency=low + + * Michael Vogt + - Change debian/bugscript to use #!/bin/bash (Closes: #313402) + - Fix a incorrect example in the man-page (closes: #282918) + - Support architecture-specific extra overrides + (closes: #225947). Thanks to Anthony Towns for idea and + the patch, thanks to Colin Watson for testing it. + - better report network timeouts from the methods to the acuire code, + only timeout once per sources.list line + + -- Matt Zimmerman Tue, 28 Jun 2005 11:52:24 -0700 + apt (0.6.39) unstable; urgency=low * Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6 @@@ -618,14 -97,7 +619,14 @@@ * Update priority of apt-utils to important, to match the override file * Install only one keyring on each branch (Closes: #316119) - -- Matt Zimmerman Tue, 28 Jun 2005 11:51:09 -0700 + -- Matt Zimmerman Tue, 28 Jun 2005 11:35:21 -0700 + +apt (0.6.38ubuntu1) breezy; urgency=low + + * First release from Ubuntu branch + * Merge with --main--0, switch back to Ubuntu keyring + + -- Matt Zimmerman Sat, 25 Jun 2005 16:52:41 -0700 apt (0.6.38) unstable; urgency=low @@@ -642,6 -114,7 +643,6 @@@ -- Matt Zimmerman Sat, 25 Jun 2005 09:51:00 -0700 ->>>>>>> MERGE-SOURCE apt (0.6.37) breezy; urgency=low * Merge bubulle@debian.org--2005/apt--main--0 up to patch-81 @@@ -657,7 -130,6 +658,7 @@@ * Add Welsh translation from Dafydd Harries (daf@muse.19inch.net--2005/apt--main--0--patch-1) * Change debian/bugscript to use #!/bin/bash (Closes: #313402) + * Fix a incorrect example in the man-page (closes: #282918) -- Matt Zimmerman Tue, 24 May 2005 14:38:25 -0700 diff --combined po/apt-all.pot index 8567df7ca,1caf832f0..586f9e545 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@@ -7,7 -7,7 +7,7 @@@ msgid " msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-09-22 23:07+0200\n" +"POT-Creation-Date: 2006-08-09 23:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@@ -146,14 -146,14 +146,14 @@@ msgstr " msgid " %4i %s\n" msgstr "" -#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 +#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550 -#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144 +#: cmdline/apt-get.cc:2462 cmdline/apt-sortpkgs.cc:144 #, c-format msgid "%s %s for %s %s compiled on %s %s\n" msgstr "" -#: cmdline/apt-cache.cc:1658 +#: cmdline/apt-cache.cc:1659 msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] add file1 [file2 ...]\n" @@@ -192,18 -192,6 +192,18 @@@ "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 "" @@@ -243,7 -231,7 +243,8 @@@ msgid " " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710 +#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:714 ++#: apt-pkg/pkgcachegen.cc:819 #, c-format msgid "Unable to write to %s" msgstr "" @@@ -327,126 -315,115 +328,126 @@@ msgstr " msgid "Some files are missing in the package file group `%s'" msgstr "" -#: ftparchive/cachedb.cc:45 +#: ftparchive/cachedb.cc:47 #, c-format msgid "DB was corrupted, file renamed to %s.old" msgstr "" -#: ftparchive/cachedb.cc:63 +#: ftparchive/cachedb.cc:65 #, c-format msgid "DB is old, attempting to upgrade %s" msgstr "" -#: ftparchive/cachedb.cc:73 +#: 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 #, c-format msgid "Unable to open DB file %s: %s" msgstr "" -#: ftparchive/cachedb.cc:114 +#: 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 #, c-format -msgid "File date has changed %s" +msgid "Failed to stat %s" msgstr "" -#: ftparchive/cachedb.cc:155 +#: ftparchive/cachedb.cc:242 msgid "Archive has no control record" msgstr "" -#: ftparchive/cachedb.cc:267 +#: ftparchive/cachedb.cc:448 msgid "Unable to get a cursor" msgstr "" -#: ftparchive/writer.cc:78 +#: ftparchive/writer.cc:79 #, c-format msgid "W: Unable to read directory %s\n" msgstr "" -#: ftparchive/writer.cc:83 +#: ftparchive/writer.cc:84 #, c-format msgid "W: Unable to stat %s\n" msgstr "" -#: ftparchive/writer.cc:125 +#: ftparchive/writer.cc:135 msgid "E: " msgstr "" -#: ftparchive/writer.cc:127 +#: ftparchive/writer.cc:137 msgid "W: " msgstr "" -#: ftparchive/writer.cc:134 +#: ftparchive/writer.cc:144 msgid "E: Errors apply to file " msgstr "" -#: ftparchive/writer.cc:151 ftparchive/writer.cc:181 +#: ftparchive/writer.cc:161 ftparchive/writer.cc:191 #, c-format msgid "Failed to resolve %s" msgstr "" -#: ftparchive/writer.cc:163 +#: ftparchive/writer.cc:173 msgid "Tree walking failed" msgstr "" -#: ftparchive/writer.cc:188 +#: ftparchive/writer.cc:198 #, c-format msgid "Failed to open %s" msgstr "" -#: ftparchive/writer.cc:245 +#: ftparchive/writer.cc:257 #, c-format msgid " DeLink %s [%s]\n" msgstr "" -#: ftparchive/writer.cc:253 +#: ftparchive/writer.cc:265 #, c-format msgid "Failed to readlink %s" msgstr "" -#: ftparchive/writer.cc:257 +#: ftparchive/writer.cc:269 #, c-format msgid "Failed to unlink %s" msgstr "" -#: ftparchive/writer.cc:264 +#: ftparchive/writer.cc:276 #, c-format msgid "*** Failed to link %s to %s" msgstr "" -#: ftparchive/writer.cc:274 +#: ftparchive/writer.cc:286 #, c-format msgid " DeLink limit of %sB hit.\n" msgstr "" -#: ftparchive/writer.cc:358 apt-inst/extract.cc:181 apt-inst/extract.cc:193 -#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 methods/gpgv.cc:256 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: ftparchive/writer.cc:386 +#: ftparchive/writer.cc:390 msgid "Archive had no package field" msgstr "" -#: ftparchive/writer.cc:394 ftparchive/writer.cc:602 +#: ftparchive/writer.cc:398 ftparchive/writer.cc:613 #, c-format msgid " %s has no override entry\n" msgstr "" -#: ftparchive/writer.cc:437 ftparchive/writer.cc:688 +#: ftparchive/writer.cc:443 ftparchive/writer.cc:701 #, c-format msgid " %s maintainer is %s not %s\n" msgstr "" +#: ftparchive/writer.cc:623 +#, c-format +msgid " %s has no source override entry\n" +msgstr "" + +#: ftparchive/writer.cc:627 +#, c-format +msgid " %s has no binary override entry either\n" +msgstr "" + #: ftparchive/contents.cc:317 #, c-format msgid "Internal error, could not locate member %s" @@@ -542,221 -519,221 +543,221 @@@ msgstr " msgid "Failed to rename %s to %s" msgstr "" -#: cmdline/apt-get.cc:118 +#: cmdline/apt-get.cc:121 msgid "Y" msgstr "" -#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486 +#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1574 #, c-format msgid "Regex compilation error - %s" msgstr "" -#: cmdline/apt-get.cc:235 +#: cmdline/apt-get.cc:238 msgid "The following packages have unmet dependencies:" msgstr "" -#: cmdline/apt-get.cc:325 +#: cmdline/apt-get.cc:328 #, c-format msgid "but %s is installed" msgstr "" -#: cmdline/apt-get.cc:327 +#: cmdline/apt-get.cc:330 #, c-format msgid "but %s is to be installed" msgstr "" -#: cmdline/apt-get.cc:334 +#: cmdline/apt-get.cc:337 msgid "but it is not installable" msgstr "" -#: cmdline/apt-get.cc:336 +#: cmdline/apt-get.cc:339 msgid "but it is a virtual package" msgstr "" -#: cmdline/apt-get.cc:339 +#: cmdline/apt-get.cc:342 msgid "but it is not installed" msgstr "" -#: cmdline/apt-get.cc:339 +#: cmdline/apt-get.cc:342 msgid "but it is not going to be installed" msgstr "" -#: cmdline/apt-get.cc:344 +#: cmdline/apt-get.cc:347 msgid " or" msgstr "" -#: cmdline/apt-get.cc:373 +#: cmdline/apt-get.cc:376 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:399 +#: cmdline/apt-get.cc:402 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:421 +#: cmdline/apt-get.cc:424 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:442 +#: cmdline/apt-get.cc:445 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:463 +#: cmdline/apt-get.cc:466 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:483 +#: cmdline/apt-get.cc:486 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:536 +#: cmdline/apt-get.cc:539 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:544 +#: cmdline/apt-get.cc:547 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:575 +#: cmdline/apt-get.cc:578 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:579 +#: cmdline/apt-get.cc:582 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:581 +#: cmdline/apt-get.cc:584 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:583 +#: cmdline/apt-get.cc:586 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:587 +#: cmdline/apt-get.cc:590 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:647 +#: cmdline/apt-get.cc:650 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:650 +#: cmdline/apt-get.cc:653 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:653 +#: cmdline/apt-get.cc:656 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:656 +#: cmdline/apt-get.cc:659 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:658 +#: cmdline/apt-get.cc:661 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:662 +#: cmdline/apt-get.cc:665 msgid "You might want to run `apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:665 +#: cmdline/apt-get.cc:668 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:687 +#: cmdline/apt-get.cc:690 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:691 +#: cmdline/apt-get.cc:694 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:698 +#: cmdline/apt-get.cc:701 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:700 +#: cmdline/apt-get.cc:703 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856 +#: cmdline/apt-get.cc:712 cmdline/apt-get.cc:859 msgid "There are problems and -y was used without --force-yes" msgstr "" -#: cmdline/apt-get.cc:753 +#: cmdline/apt-get.cc:756 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:762 +#: cmdline/apt-get.cc:765 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:773 +#: cmdline/apt-get.cc:776 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813 +#: cmdline/apt-get.cc:792 cmdline/apt-get.cc:1893 cmdline/apt-get.cc:1926 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073 +#: cmdline/apt-get.cc:802 cmdline/apt-get.cc:1974 cmdline/apt-get.cc:2210 #: apt-pkg/cachefile.cc:67 msgid "The list of sources could not be read." msgstr "" -#: cmdline/apt-get.cc:814 +#: cmdline/apt-get.cc:817 msgid "How odd.. The sizes didn't match, email apt@packages.debian.org" msgstr "" -#: cmdline/apt-get.cc:819 +#: cmdline/apt-get.cc:822 #, c-format msgid "Need to get %sB/%sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:822 +#: cmdline/apt-get.cc:825 #, c-format msgid "Need to get %sB of archives.\n" msgstr "" -#: cmdline/apt-get.cc:827 +#: cmdline/apt-get.cc:830 #, c-format msgid "After unpacking %sB of additional disk space will be used.\n" msgstr "" -#: cmdline/apt-get.cc:830 +#: cmdline/apt-get.cc:833 #, c-format msgid "After unpacking %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927 +#: cmdline/apt-get.cc:847 cmdline/apt-get.cc:2064 #, c-format msgid "Couldn't determine free space in %s" msgstr "" -#: cmdline/apt-get.cc:847 +#: cmdline/apt-get.cc:850 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882 +#: cmdline/apt-get.cc:865 cmdline/apt-get.cc:885 msgid "Trivial Only specified but this is not a trivial operation." msgstr "" -#: cmdline/apt-get.cc:864 +#: cmdline/apt-get.cc:867 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:866 +#: cmdline/apt-get.cc:869 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@@ -764,74 -741,74 +765,74 @@@ " ?] " msgstr "" -#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891 +#: cmdline/apt-get.cc:875 cmdline/apt-get.cc:894 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:887 +#: cmdline/apt-get.cc:890 msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970 +#: cmdline/apt-get.cc:962 cmdline/apt-get.cc:1369 cmdline/apt-get.cc:2107 #, c-format msgid "Failed to fetch %s %s\n" msgstr "" -#: cmdline/apt-get.cc:977 +#: cmdline/apt-get.cc:980 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979 +#: cmdline/apt-get.cc:981 cmdline/apt-get.cc:2116 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:984 +#: cmdline/apt-get.cc:987 msgid "" "Unable to fetch some archives, maybe run apt-get update or try with --fix-" "missing?" msgstr "" -#: cmdline/apt-get.cc:988 +#: cmdline/apt-get.cc:991 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:993 +#: cmdline/apt-get.cc:996 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:994 +#: cmdline/apt-get.cc:997 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1028 +#: cmdline/apt-get.cc:1031 #, c-format msgid "Note, selecting %s instead of %s\n" msgstr "" -#: cmdline/apt-get.cc:1038 +#: cmdline/apt-get.cc:1041 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" msgstr "" -#: cmdline/apt-get.cc:1056 +#: cmdline/apt-get.cc:1059 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:1067 +#: cmdline/apt-get.cc:1070 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:1079 +#: cmdline/apt-get.cc:1082 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:1084 +#: cmdline/apt-get.cc:1087 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:1089 +#: cmdline/apt-get.cc:1092 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@@ -839,97 -816,79 +840,97 @@@ "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:1108 +#: cmdline/apt-get.cc:1111 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:1111 +#: cmdline/apt-get.cc:1114 #, c-format msgid "Package %s has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:1131 +#: cmdline/apt-get.cc:1134 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:1139 +#: cmdline/apt-get.cc:1142 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:1166 +#: cmdline/apt-get.cc:1171 #, c-format msgid "Release '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1168 +#: cmdline/apt-get.cc:1173 #, c-format msgid "Version '%s' for '%s' was not found" msgstr "" -#: cmdline/apt-get.cc:1174 +#: cmdline/apt-get.cc:1179 #, c-format msgid "Selected version %s (%s) for %s\n" msgstr "" -#: cmdline/apt-get.cc:1284 +#: cmdline/apt-get.cc:1316 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391 +#: cmdline/apt-get.cc:1329 msgid "Unable to lock the list directory" msgstr "" -#: cmdline/apt-get.cc:1355 +#: cmdline/apt-get.cc:1396 cmdline/apt-get.cc:1398 msgid "" "Some index files failed to download, they have been ignored, or old ones " "used instead." msgstr "" -#: cmdline/apt-get.cc:1374 +#: cmdline/apt-get.cc:1412 +msgid "We are not supposed to delete stuff, can't start AutoRemover" +msgstr "" + +#: cmdline/apt-get.cc:1437 +msgid "" +"Hmm, seems like the AutoRemover destroyed something which really\n" +"shouldn't happen. Please file a bug report against apt." +msgstr "" + +#: cmdline/apt-get.cc:1440 cmdline/apt-get.cc:1642 +msgid "The following information may help to resolve the situation:" +msgstr "" + +#: cmdline/apt-get.cc:1444 +msgid "Internal Error, AutoRemover broke stuff" +msgstr "" + +#: cmdline/apt-get.cc:1463 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509 +#: cmdline/apt-get.cc:1561 cmdline/apt-get.cc:1597 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:1496 +#: cmdline/apt-get.cc:1584 #, c-format msgid "Note, selecting %s for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:1526 +#: cmdline/apt-get.cc:1614 msgid "You might want to run `apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1529 +#: cmdline/apt-get.cc:1617 msgid "" "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a " "solution)." msgstr "" -#: cmdline/apt-get.cc:1541 +#: cmdline/apt-get.cc:1629 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" @@@ -937,159 -896,158 +938,159 @@@ "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1549 +#: cmdline/apt-get.cc:1637 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:1554 -msgid "The following information may help to resolve the situation:" -msgstr "" - -#: cmdline/apt-get.cc:1557 +#: cmdline/apt-get.cc:1645 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1583 +#: cmdline/apt-get.cc:1676 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:1654 +#: cmdline/apt-get.cc:1765 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:1655 +#: cmdline/apt-get.cc:1766 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:1675 +#: cmdline/apt-get.cc:1786 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101 +#: cmdline/apt-get.cc:1789 methods/ftp.cc:702 methods/connect.cc:101 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:1683 +#: cmdline/apt-get.cc:1794 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756 +#: cmdline/apt-get.cc:1861 cmdline/apt-get.cc:1869 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:1856 +#: cmdline/apt-get.cc:1969 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091 +#: cmdline/apt-get.cc:1999 cmdline/apt-get.cc:2228 #, c-format msgid "Unable to find a source package for %s" msgstr "" -#: cmdline/apt-get.cc:1930 +#: cmdline/apt-get.cc:2043 +#, c-format +msgid "Skipping already downloaded file '%s'\n" +msgstr "" + +#: cmdline/apt-get.cc:2067 #, c-format msgid "You don't have enough free space in %s" msgstr "" -#: cmdline/apt-get.cc:1935 +#: cmdline/apt-get.cc:2072 #, c-format msgid "Need to get %sB/%sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:1938 +#: cmdline/apt-get.cc:2075 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:1944 +#: cmdline/apt-get.cc:2081 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:1975 +#: cmdline/apt-get.cc:2112 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2003 +#: cmdline/apt-get.cc:2140 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2015 +#: cmdline/apt-get.cc:2152 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2016 +#: cmdline/apt-get.cc:2153 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2033 +#: cmdline/apt-get.cc:2170 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2052 +#: cmdline/apt-get.cc:2189 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2068 +#: cmdline/apt-get.cc:2205 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2096 +#: cmdline/apt-get.cc:2233 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2116 +#: cmdline/apt-get.cc:2253 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2168 +#: cmdline/apt-get.cc:2305 #, c-format msgid "" "%s dependency for %s cannot be satisfied because the package %s cannot be " "found" msgstr "" -#: cmdline/apt-get.cc:2220 +#: cmdline/apt-get.cc:2357 #, 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:2255 +#: cmdline/apt-get.cc:2392 #, c-format msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new" msgstr "" -#: cmdline/apt-get.cc:2280 +#: cmdline/apt-get.cc:2417 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:2294 +#: cmdline/apt-get.cc:2431 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:2298 +#: cmdline/apt-get.cc:2435 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:2330 +#: cmdline/apt-get.cc:2467 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:2371 +#: cmdline/apt-get.cc:2508 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@@ -1217,19 -1175,19 +1218,19 @@@ msgstr " msgid "Failed to create pipes" msgstr "" -#: apt-inst/contrib/extracttar.cc:143 +#: apt-inst/contrib/extracttar.cc:144 msgid "Failed to exec gzip " msgstr "" -#: apt-inst/contrib/extracttar.cc:180 apt-inst/contrib/extracttar.cc:206 +#: apt-inst/contrib/extracttar.cc:181 apt-inst/contrib/extracttar.cc:207 msgid "Corrupted archive" msgstr "" -#: apt-inst/contrib/extracttar.cc:195 +#: apt-inst/contrib/extracttar.cc:196 msgid "Tar checksum failed, archive corrupted" msgstr "" -#: apt-inst/contrib/extracttar.cc:298 +#: apt-inst/contrib/extracttar.cc:299 #, c-format msgid "Unknown TAR header type %u, member %s" msgstr "" @@@ -1290,7 -1248,7 +1291,7 @@@ msgstr " msgid "Failed to write file %s" msgstr "" -#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88 +#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104 #, c-format msgid "Failed to close file %s" msgstr "" @@@ -1343,8 -1301,7 +1344,8 @@@ msgid "File %s/%s overwrites the one i msgstr "" #: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750 -#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38 +#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324 +#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 #, c-format msgid "Unable to read %s" msgstr "" @@@ -1374,9 -1331,9 +1375,11 @@@ msgid "The info and temp directories ne msgstr "" #. Build the status cache -#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643 -#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717 -#: apt-pkg/pkgcachegen.cc:840 +#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:647 +#: apt-pkg/pkgcachegen.cc:716 apt-pkg/pkgcachegen.cc:721 - #: apt-pkg/pkgcachegen.cc:844 ++#: apt-pkg/pkgcachegen.cc:844 apt-pkg/pkgcachegen.cc:752 ++#: apt-pkg/pkgcachegen.cc:821 apt-pkg/pkgcachegen.cc:826 ++#: apt-pkg/pkgcachegen.cc:949 msgid "Reading package lists" msgstr "" @@@ -1390,7 -1347,7 +1393,7 @@@ msgstr " msgid "Internal error getting a package name" msgstr "" -#: apt-inst/deb/dpkgdb.cc:205 +#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386 msgid "Reading file listing" msgstr "" @@@ -1434,6 -1391,10 +1437,6 @@@ msgstr " msgid "The pkg cache must be initialized first" msgstr "" -#: apt-inst/deb/dpkgdb.cc:386 -msgid "Reading file list" -msgstr "" - #: apt-inst/deb/dpkgdb.cc:443 #, c-format msgid "Failed to find a Package: header, offset %lu" @@@ -1504,12 -1465,12 +1507,12 @@@ msgstr " msgid "File not found" msgstr "" -#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133 +#: methods/copy.cc:42 methods/gpgv.cc:281 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 +#: methods/copy.cc:79 methods/gpgv.cc:278 methods/gzip.cc:139 msgid "Failed to set modification time" msgstr "" @@@ -1635,7 -1596,7 +1638,7 @@@ msgstr " msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:864 methods/http.cc:920 methods/rsh.cc:303 +#: methods/ftp.cc:864 methods/http.cc:958 methods/rsh.cc:303 msgid "Problem hashing file" msgstr "" @@@ -1658,7 -1619,7 +1661,7 @@@ msgstr " msgid "Query" msgstr "" -#: methods/ftp.cc:1106 +#: methods/ftp.cc:1109 msgid "Unable to invoke " msgstr "" @@@ -1687,70 -1648,69 +1690,70 @@@ msgstr " msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#: methods/connect.cc:106 +#: methods/connect.cc:108 #, c-format msgid "Could not connect to %s:%s (%s)." msgstr "" #. We say this mainly because the pause here is for the #. ssh connection that is still going -#: methods/connect.cc:134 methods/rsh.cc:425 +#: methods/connect.cc:136 methods/rsh.cc:425 #, c-format msgid "Connecting to %s" msgstr "" -#: methods/connect.cc:165 +#: methods/connect.cc:167 #, c-format msgid "Could not resolve '%s'" msgstr "" -#: methods/connect.cc:171 +#: methods/connect.cc:173 #, c-format msgid "Temporary failure resolving '%s'" msgstr "" -#: methods/connect.cc:174 +#: methods/connect.cc:176 #, c-format msgid "Something wicked happened resolving '%s:%s' (%i)" msgstr "" -#: methods/connect.cc:221 +#: methods/connect.cc:223 #, c-format msgid "Unable to connect to %s %s:" msgstr "" -#: methods/gpgv.cc:92 +#: methods/gpgv.cc: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:191 +#: methods/gpgv.cc:204 msgid "" "Internal error: Good signature, but could not determine key fingerprint?!" msgstr "" -#: methods/gpgv.cc:196 +#: methods/gpgv.cc:209 msgid "At least one invalid signature was encountered." msgstr "" -#. FIXME String concatenation considered harmful. -#: methods/gpgv.cc:201 -msgid "Could not execute " -msgstr "" - -#: methods/gpgv.cc:202 -msgid " to verify signature (is gnupg installed?)" +#: methods/gpgv.cc:213 +#, c-format +msgid "Could not execute '%s' to verify signature (is gnupg installed?)" msgstr "" -#: methods/gpgv.cc:206 +#: methods/gpgv.cc:218 msgid "Unknown error executing gpgv" msgstr "" -#: methods/gpgv.cc:237 +#: methods/gpgv.cc:249 msgid "The following signatures were invalid:\n" msgstr "" -#: methods/gpgv.cc:244 +#: methods/gpgv.cc:256 msgid "" "The following signatures couldn't be verified because the public key is not " "available:\n" @@@ -1766,76 -1726,76 +1769,76 @@@ msgstr " msgid "Read error from %s process" msgstr "" -#: methods/http.cc:344 +#: methods/http.cc:376 msgid "Waiting for headers" msgstr "" -#: methods/http.cc:490 +#: methods/http.cc:522 #, c-format msgid "Got a single header line over %u chars" msgstr "" -#: methods/http.cc:498 +#: methods/http.cc:530 msgid "Bad header line" msgstr "" -#: methods/http.cc:517 methods/http.cc:524 +#: methods/http.cc:549 methods/http.cc:556 msgid "The HTTP server sent an invalid reply header" msgstr "" -#: methods/http.cc:553 +#: methods/http.cc:585 msgid "The HTTP server sent an invalid Content-Length header" msgstr "" -#: methods/http.cc:568 +#: methods/http.cc:600 msgid "The HTTP server sent an invalid Content-Range header" msgstr "" -#: methods/http.cc:570 +#: methods/http.cc:602 msgid "This HTTP server has broken range support" msgstr "" -#: methods/http.cc:594 +#: methods/http.cc:626 msgid "Unknown date format" msgstr "" -#: methods/http.cc:741 +#: methods/http.cc:773 msgid "Select failed" msgstr "" -#: methods/http.cc:746 +#: methods/http.cc:778 msgid "Connection timed out" msgstr "" -#: methods/http.cc:769 +#: methods/http.cc:801 msgid "Error writing to output file" msgstr "" -#: methods/http.cc:797 +#: methods/http.cc:832 msgid "Error writing to file" msgstr "" -#: methods/http.cc:822 +#: methods/http.cc:860 msgid "Error writing to the file" msgstr "" -#: methods/http.cc:836 +#: methods/http.cc:874 msgid "Error reading from server. Remote end closed connection" msgstr "" -#: methods/http.cc:838 +#: methods/http.cc:876 msgid "Error reading from server" msgstr "" -#: methods/http.cc:1069 +#: methods/http.cc:1107 msgid "Bad header data" msgstr "" -#: methods/http.cc:1086 +#: methods/http.cc:1124 msgid "Connection failed" msgstr "" -#: methods/http.cc:1177 +#: methods/http.cc:1215 msgid "Internal error" msgstr "" @@@ -1848,7 -1808,7 +1851,7 @@@ msgstr " msgid "Couldn't make mmap of %lu bytes" msgstr "" - #: apt-pkg/contrib/strutl.cc:938 -#: apt-pkg/contrib/strutl.cc:941 ++#: apt-pkg/contrib/strutl.cc:938 apt-pkg/contrib/strutl.cc:981 #, c-format msgid "Selection %s not found" msgstr "" @@@ -1969,7 -1929,7 +1972,7 @@@ msgstr " msgid "Unable to stat the mount point %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44 +#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44 #, c-format msgid "Unable to change to %s" msgstr "" @@@ -2045,157 -2005,143 +2048,157 @@@ msgstr " msgid "Problem syncing the file" msgstr "" --#: apt-pkg/pkgcache.cc:126 ++#: apt-pkg/pkgcache.cc:126 apt-pkg/pkgcache.cc:137 msgid "Empty package cache" msgstr "" --#: apt-pkg/pkgcache.cc:132 ++#: apt-pkg/pkgcache.cc:132 apt-pkg/pkgcache.cc:143 msgid "The package cache file is corrupted" msgstr "" --#: apt-pkg/pkgcache.cc:137 ++#: apt-pkg/pkgcache.cc:137 apt-pkg/pkgcache.cc:148 msgid "The package cache file is an incompatible version" msgstr "" --#: apt-pkg/pkgcache.cc:142 ++#: apt-pkg/pkgcache.cc:142 apt-pkg/pkgcache.cc:153 #, c-format msgid "This APT does not support the versioning system '%s'" msgstr "" --#: apt-pkg/pkgcache.cc:147 ++#: apt-pkg/pkgcache.cc:147 apt-pkg/pkgcache.cc:158 msgid "The package cache was built for a different architecture" msgstr "" --#: apt-pkg/pkgcache.cc:218 ++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229 msgid "Depends" msgstr "" --#: apt-pkg/pkgcache.cc:218 ++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229 msgid "PreDepends" msgstr "" --#: apt-pkg/pkgcache.cc:218 ++#: apt-pkg/pkgcache.cc:218 apt-pkg/pkgcache.cc:229 msgid "Suggests" msgstr "" --#: apt-pkg/pkgcache.cc:219 ++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230 msgid "Recommends" msgstr "" --#: apt-pkg/pkgcache.cc:219 ++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230 msgid "Conflicts" msgstr "" --#: apt-pkg/pkgcache.cc:219 ++#: apt-pkg/pkgcache.cc:219 apt-pkg/pkgcache.cc:230 msgid "Replaces" msgstr "" --#: apt-pkg/pkgcache.cc:220 ++#: apt-pkg/pkgcache.cc:220 apt-pkg/pkgcache.cc:231 msgid "Obsoletes" msgstr "" --#: apt-pkg/pkgcache.cc:231 ++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242 msgid "important" msgstr "" --#: apt-pkg/pkgcache.cc:231 ++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242 msgid "required" msgstr "" --#: apt-pkg/pkgcache.cc:231 ++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:242 msgid "standard" msgstr "" --#: apt-pkg/pkgcache.cc:232 ++#: apt-pkg/pkgcache.cc:232 apt-pkg/pkgcache.cc:243 msgid "optional" msgstr "" --#: apt-pkg/pkgcache.cc:232 ++#: apt-pkg/pkgcache.cc:232 apt-pkg/pkgcache.cc:243 msgid "extra" msgstr "" -#: apt-pkg/depcache.cc:60 apt-pkg/depcache.cc:89 +#: apt-pkg/depcache.cc:101 apt-pkg/depcache.cc:130 msgid "Building dependency tree" msgstr "" -#: apt-pkg/depcache.cc:61 +#: apt-pkg/depcache.cc:102 msgid "Candidate versions" msgstr "" -#: apt-pkg/depcache.cc:90 +#: apt-pkg/depcache.cc:131 msgid "Dependency generation" msgstr "" -#: apt-pkg/tagfile.cc:73 +#: apt-pkg/depcache.cc:152 apt-pkg/depcache.cc:171 apt-pkg/depcache.cc:175 +msgid "Reading state information" +msgstr "" + +#: apt-pkg/depcache.cc:199 +#, c-format +msgid "Failed to open StateFile %s" +msgstr "" + +#: apt-pkg/depcache.cc:205 +#, c-format +msgid "Failed to write temporary StateFile %s" +msgstr "" + +#: apt-pkg/tagfile.cc:85 apt-pkg/tagfile.cc:92 #, c-format msgid "Unable to parse package file %s (1)" msgstr "" -#: apt-pkg/tagfile.cc:160 +#: apt-pkg/tagfile.cc:186 #, c-format msgid "Unable to parse package file %s (2)" msgstr "" -#: apt-pkg/sourcelist.cc:87 +#: apt-pkg/sourcelist.cc:94 #, c-format msgid "Malformed line %lu in source list %s (URI)" msgstr "" -#: apt-pkg/sourcelist.cc:89 +#: apt-pkg/sourcelist.cc:96 #, c-format msgid "Malformed line %lu in source list %s (dist)" msgstr "" -#: apt-pkg/sourcelist.cc:92 +#: apt-pkg/sourcelist.cc:99 #, c-format msgid "Malformed line %lu in source list %s (URI parse)" msgstr "" -#: apt-pkg/sourcelist.cc:98 +#: apt-pkg/sourcelist.cc:105 #, c-format msgid "Malformed line %lu in source list %s (absolute dist)" msgstr "" -#: apt-pkg/sourcelist.cc:105 +#: apt-pkg/sourcelist.cc:112 #, c-format msgid "Malformed line %lu in source list %s (dist parse)" msgstr "" -#: apt-pkg/sourcelist.cc:156 +#: apt-pkg/sourcelist.cc:203 #, 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 ++#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426 apt-pkg/cdrom.cc:450 #, c-format msgid "Line %u too long in source list %s." msgstr "" -#: apt-pkg/sourcelist.cc:187 +#: apt-pkg/sourcelist.cc:240 #, c-format msgid "Malformed line %u in source list %s (type)" msgstr "" -#: apt-pkg/sourcelist.cc:191 +#: apt-pkg/sourcelist.cc:244 #, c-format msgid "Type '%s' is not known on line %u in source list %s" msgstr "" -#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202 +#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255 #, c-format msgid "Malformed line %u in source list %s (vendor id)" msgstr "" @@@ -2213,19 -2159,19 +2216,19 @@@ msgstr " msgid "Index file type '%s' is not supported" msgstr "" -#: apt-pkg/algorithms.cc:241 +#: apt-pkg/algorithms.cc:245 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" -#: apt-pkg/algorithms.cc:1059 +#: apt-pkg/algorithms.cc:1075 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -#: apt-pkg/algorithms.cc:1061 +#: apt-pkg/algorithms.cc:1077 msgid "Unable to correct problems, you have held broken packages." msgstr "" @@@ -2239,16 -2185,9 +2242,16 @@@ msgstr " msgid "Archive directory %spartial is missing." msgstr "" -#: apt-pkg/acquire.cc:817 +#. only show the ETA if it makes sense +#. two days +#: apt-pkg/acquire.cc:823 #, c-format -msgid "Downloading file %li of %li (%s remaining)" +msgid "Retrieving 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 @@@ -2261,17 -2200,17 +2264,17 @@@ msgstr " msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:377 +#: apt-pkg/acquire-worker.cc:384 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" - #: apt-pkg/init.cc:122 -#: apt-pkg/init.cc:119 ++#: apt-pkg/init.cc:122 apt-pkg/init.cc:125 #, c-format msgid "Packaging system '%s' is not supported" msgstr "" - #: apt-pkg/init.cc:138 -#: apt-pkg/init.cc:135 ++#: apt-pkg/init.cc:138 apt-pkg/init.cc:141 msgid "Unable to determine a suitable packaging system type" msgstr "" @@@ -2305,82 -2244,82 +2308,83 @@@ msgstr " msgid "No priority (or zero) specified for pin" msgstr "" -#: apt-pkg/pkgcachegen.cc:74 +#: apt-pkg/pkgcachegen.cc:76 msgid "Cache has an incompatible versioning system" msgstr "" -#: apt-pkg/pkgcachegen.cc:117 +#: apt-pkg/pkgcachegen.cc:119 #, c-format msgid "Error occurred while processing %s (NewPackage)" msgstr "" - #: apt-pkg/pkgcachegen.cc:131 -#: apt-pkg/pkgcachegen.cc:129 ++#: apt-pkg/pkgcachegen.cc:131 apt-pkg/pkgcachegen.cc:134 #, c-format msgid "Error occurred while processing %s (UsePackage1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:152 -#: apt-pkg/pkgcachegen.cc:150 ++#: apt-pkg/pkgcachegen.cc:152 apt-pkg/pkgcachegen.cc:182 #, c-format msgid "Error occurred while processing %s (UsePackage2)" msgstr "" - #: apt-pkg/pkgcachegen.cc:156 -#: apt-pkg/pkgcachegen.cc:154 ++#: apt-pkg/pkgcachegen.cc:156 apt-pkg/pkgcachegen.cc:186 #, c-format msgid "Error occurred while processing %s (NewFileVer1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:186 -#: apt-pkg/pkgcachegen.cc:184 ++#: apt-pkg/pkgcachegen.cc:186 apt-pkg/pkgcachegen.cc:217 #, c-format msgid "Error occurred while processing %s (NewVersion1)" msgstr "" - #: apt-pkg/pkgcachegen.cc:190 -#: apt-pkg/pkgcachegen.cc:188 ++#: apt-pkg/pkgcachegen.cc:190 apt-pkg/pkgcachegen.cc:221 #, c-format msgid "Error occurred while processing %s (UsePackage3)" msgstr "" - #: apt-pkg/pkgcachegen.cc:194 -#: apt-pkg/pkgcachegen.cc:192 ++#: apt-pkg/pkgcachegen.cc:194 apt-pkg/pkgcachegen.cc:225 #, c-format msgid "Error occurred while processing %s (NewVersion2)" msgstr "" - #: apt-pkg/pkgcachegen.cc:209 -#: apt-pkg/pkgcachegen.cc:207 ++#: apt-pkg/pkgcachegen.cc:209 apt-pkg/pkgcachegen.cc:255 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:212 -#: apt-pkg/pkgcachegen.cc:210 ++#: apt-pkg/pkgcachegen.cc:212 apt-pkg/pkgcachegen.cc:258 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:215 -#: apt-pkg/pkgcachegen.cc:213 ++#: apt-pkg/pkgcachegen.cc:215 apt-pkg/pkgcachegen.cc:264 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" - #: apt-pkg/pkgcachegen.cc:243 -#: apt-pkg/pkgcachegen.cc:241 ++#: apt-pkg/pkgcachegen.cc:243 apt-pkg/pkgcachegen.cc:292 #, c-format msgid "Error occurred while processing %s (FindPkg)" msgstr "" - #: apt-pkg/pkgcachegen.cc:256 -#: apt-pkg/pkgcachegen.cc:254 ++#: apt-pkg/pkgcachegen.cc:256 apt-pkg/pkgcachegen.cc:305 #, c-format msgid "Error occurred while processing %s (CollectFileProvides)" msgstr "" - #: apt-pkg/pkgcachegen.cc:262 -#: apt-pkg/pkgcachegen.cc:260 ++#: apt-pkg/pkgcachegen.cc:262 apt-pkg/pkgcachegen.cc:311 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" - #: apt-pkg/pkgcachegen.cc:577 -#: apt-pkg/pkgcachegen.cc:574 ++#: apt-pkg/pkgcachegen.cc:577 apt-pkg/pkgcachegen.cc:682 #, c-format msgid "Couldn't stat source package list %s" msgstr "" - #: apt-pkg/pkgcachegen.cc:662 -#: apt-pkg/pkgcachegen.cc:658 ++#: apt-pkg/pkgcachegen.cc:662 apt-pkg/pkgcachegen.cc:767 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792 +#: apt-pkg/pkgcachegen.cc:789 apt-pkg/pkgcachegen.cc:796 ++#: apt-pkg/pkgcachegen.cc:894 apt-pkg/pkgcachegen.cc:901 msgid "IO Error saving source cache" msgstr "" @@@ -2389,35 -2328,31 +2393,36 @@@ msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:908 +#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:951 ++#: apt-pkg/acquire-item.cc:980 msgid "MD5Sum mismatch" msgstr "" - #: apt-pkg/acquire-item.cc:646 -#: apt-pkg/acquire-item.cc:722 ++#: apt-pkg/acquire-item.cc:646 apt-pkg/acquire-item.cc:675 +msgid "There are no public key available for the following key IDs:\n" +msgstr "" + - #: apt-pkg/acquire-item.cc:759 ++#: apt-pkg/acquire-item.cc:759 apt-pkg/acquire-item.cc:788 #, 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:818 -#: apt-pkg/acquire-item.cc:775 ++#: apt-pkg/acquire-item.cc:818 apt-pkg/acquire-item.cc:847 #, 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:854 -#: apt-pkg/acquire-item.cc:811 ++#: apt-pkg/acquire-item.cc:854 apt-pkg/acquire-item.cc:883 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" - #: apt-pkg/acquire-item.cc:941 -#: apt-pkg/acquire-item.cc:898 ++#: apt-pkg/acquire-item.cc:941 apt-pkg/acquire-item.cc:970 msgid "Size mismatch" msgstr "" @@@ -2426,41 -2361,41 +2431,42 @@@ msgid "Vendor block %s contains no fingerprint" msgstr "" --#: apt-pkg/cdrom.cc:507 ++#: apt-pkg/cdrom.cc:507 apt-pkg/cdrom.cc:531 #, 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:540 ++#: apt-pkg/cdrom.cc:622 msgid "Identifying.. " msgstr "" --#: apt-pkg/cdrom.cc:541 ++#: apt-pkg/cdrom.cc:541 apt-pkg/cdrom.cc:565 #, c-format msgid "Stored label: %s \n" msgstr "" --#: apt-pkg/cdrom.cc:561 ++#: apt-pkg/cdrom.cc:561 apt-pkg/cdrom.cc:585 #, 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:603 msgid "Unmounting CD-ROM\n" msgstr "" --#: apt-pkg/cdrom.cc:583 ++#: apt-pkg/cdrom.cc:583 apt-pkg/cdrom.cc:607 msgid "Waiting for disc...\n" msgstr "" #. Mount the new CDROM --#: apt-pkg/cdrom.cc:591 ++#: apt-pkg/cdrom.cc:591 apt-pkg/cdrom.cc:615 msgid "Mounting CD-ROM...\n" msgstr "" --#: apt-pkg/cdrom.cc:609 ++#: apt-pkg/cdrom.cc:609 apt-pkg/cdrom.cc:633 msgid "Scanning disc for index files..\n" msgstr "" @@@ -2469,49 -2404,49 +2475,49 @@@ msgid "Found %i package indexes, %i source indexes and %i signatures\n" msgstr "" --#: apt-pkg/cdrom.cc:710 ++#: apt-pkg/cdrom.cc:710 apt-pkg/cdrom.cc:737 msgid "That is not a valid name, try again.\n" msgstr "" --#: apt-pkg/cdrom.cc:726 ++#: apt-pkg/cdrom.cc:726 apt-pkg/cdrom.cc:753 #, c-format msgid "" "This disc is called: \n" "'%s'\n" msgstr "" --#: apt-pkg/cdrom.cc:730 ++#: apt-pkg/cdrom.cc:730 apt-pkg/cdrom.cc:757 msgid "Copying package lists..." msgstr "" --#: apt-pkg/cdrom.cc:754 ++#: apt-pkg/cdrom.cc:754 apt-pkg/cdrom.cc:783 msgid "Writing new source list\n" msgstr "" --#: apt-pkg/cdrom.cc:763 ++#: apt-pkg/cdrom.cc:763 apt-pkg/cdrom.cc:792 msgid "Source list entries for this disc are:\n" msgstr "" --#: apt-pkg/cdrom.cc:803 ++#: apt-pkg/cdrom.cc:803 apt-pkg/cdrom.cc:832 msgid "Unmounting CD-ROM..." msgstr "" --#: apt-pkg/indexcopy.cc:261 ++#: apt-pkg/indexcopy.cc:261 apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830 #, c-format msgid "Wrote %i records.\n" msgstr "" --#: apt-pkg/indexcopy.cc:263 ++#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832 #, c-format msgid "Wrote %i records with %i missing files.\n" msgstr "" --#: apt-pkg/indexcopy.cc:266 ++#: apt-pkg/indexcopy.cc:266 apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835 #, c-format msgid "Wrote %i records with %i mismatched files\n" msgstr "" --#: apt-pkg/indexcopy.cc:269 ++#: apt-pkg/indexcopy.cc:269 apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838 #, c-format msgid "Wrote %i records with %i missing files and %i mismatched files\n" msgstr "" @@@ -2558,14 -2493,14 +2564,35 @@@ msgstr " #: apt-pkg/deb/dpkgpm.cc:378 #, c-format -msgid "Preparing for remove with config %s" +msgid "Preparing to completely remove %s" msgstr "" #: apt-pkg/deb/dpkgpm.cc:379 #, c-format -msgid "Removed with config %s" +msgid "Completely removed %s" msgstr "" #: methods/rsh.cc:330 msgid "Connection closed prematurely" msgstr "" ++ ++#: apt-pkg/pkgcachegen.cc:157 ++#, c-format ++msgid "Error occured while processing %s (NewFileDesc1)" ++msgstr "" ++ ++#: apt-pkg/pkgcachegen.cc:249 ++#, c-format ++msgid "Error occured while processing %s (NewFileDesc2)" ++msgstr "" ++ ++#: apt-pkg/pkgcachegen.cc:261 ++msgid "Wow, you exceeded the number of descriptions this APT is capable of." ++msgstr "" ++ ++#: apt-pkg/cdrom.cc:673 ++#, c-format ++msgid "" ++"Found %i package indexes, %i source indexes, %i translation indexes and %i " ++"signatures\n" ++msgstr ""