diff options
author | Michael Vogt <egon@tas> | 2008-10-28 18:45:36 +0100 |
---|---|---|
committer | Michael Vogt <egon@tas> | 2008-10-28 18:45:36 +0100 |
commit | 742f980e2df763c76431026bd0e03f724797cc50 (patch) | |
tree | 9e8ae81c145f34e3e585de7cb5678dffbdfe1afe /apt-pkg | |
parent | cfb776e816dc21c27f422216a9aff8700b28f30b (diff) | |
parent | d210bd7f6a72a2b24a1402f51b39c61438482827 (diff) |
* apt-ftparchive might write corrupt Release files (LP: #46439)
* Apply --important option to apt-cache depends (LP: #16947)
* apt-pkg/acquire-item.cc:
- Added fallback to uncompressed 'Packages' if neither 'bz2' nor 'gz'
available. (Closes: #409284)
* apt-pkg/algorithm.cc:
- Strip username and password from source URL in error message.
(Closes: #425150)
* Fix typos:
- apt-pkg/depcache.cc
* Fix compilation warnings:
- apt-pkg/acquire.cc
- apt-pkg/versionmatch.cc
* Compilation fixes and portability improvement for compiling APT against non-GNU libc
(thanks to Martin Koeppe, closes: #392063):
- buildlib/apti18n.h.in:
+ textdomain() and bindtextdomain() must not be visible when --disable-nls
- buildlib/inttypes.h.in: undefine standard int*_t types
- Append INTLLIBS to SLIBS:
+ cmdline/makefile
+ ftparchive/makefile
+ methods/makefile
* doc/apt.conf.5.xml:
- clarify whether configuration items of apt.conf are case-sensitive
(thanks to Vincent McIntyre, closes: #345901)
* doc/apt-cache.8.xml:
- search command uses POSIX regex, and searches for virtual packages too
(closes: #277536)
* doc/offline.sgml: clarify remote and target hosts
(thanks to Nikolaus Schulz, closes: #175940)
* Fix several typos in docs, translations and debian/changelog
(thanks to timeless, Nicolas Bonifas and Josh Triplett,
closes: #368665, #298821, #411532, #431636, #461458)
* Document apt-key finger and adv commands
(thanks to Stefan Schmidt, closes: #350575)
* Better documentation for apt-get --option
(thanks to Tomas Pospisek, closes: #386579)
* Retitle the apt-mark.8 manpage (thanks to Justin Pryzby, closes: #471276)
* Better documentation on using both APT::Default-Release and
/etc/apt/preferences (thanks to Ingo Saitz, closes: #145575)
* doc/apt-cache.8.xml:
- add missing citerefentry
* Upload to unstable
* apt-pkg/deb/dpkgpm.cc:
- Store the trigger state descriptions in a way that does not break
the ABI. The approach taken makes the search for a string O(n) rather
than O(lg(n)), but since n == 4, I do not consider this a major
concern. If it becomes a concern, we can sort the static array and
use std::equal_range(). (Closes: #499322)
* apt-pkg/pkgcachegen.cc:
- do not add multiple identical descriptions for the same
language (closes: #400768)
* Catalan updated. Closes: #499462
* Fix typo in cron.daily script. Closes: #486179
* Traditional Chinese updated. Closes: #488526
* German corrected and completed. Closes: #490532, #480002, #498018
* French completed
* Bulgarian updated. Closes: #492473
* Slovak updated. Closes: #492475
* Galician updated. Closes: #492794
* Japanese updated. Closes: #492975
* Fix missing space in Greek translation. Closes: #493922
* Greek updated.
* Brazilian Portuguese updated.
* Basque updated. Closes: #496754
* Romanian updated. Closes: #492773, #488361
* Portuguese updated. Closes: #491790
* Simplified Chinese updated. Closes: #489344
* Norwegian Bokmål updated. Closes: #480022
* Czech updated. Closes: #479628, #497277
* Korean updated. Closes: #464515
* Spanish updated. Closes: #457706
* Lithuanian added. Closes: #493328
* Swedish updated. Closes: #497496
* Vietnamese updated. Closes: #497893
* Portuguese updated. Closes: #498411
* Greek updated. Closes: #498687
* Polish updated.
* merge patch that enforces stricter https server certificate
checking (thanks to Arnaud Ebalard, closes: #485960)
* allow per-mirror specific https settings
(thanks to Arnaud Ebalard, closes: #485965)
* add doc/examples/apt-https-method-example.cof
(thanks to Arnaud Ebalard, closes: #485964)
* apt-pkg/depcache.cc:
- when checking for new important deps, skip critical ones
(closes: #485943)
* improve apt progress reporting, display trigger actions
* add DPkg::NoTriggers option so that applications that call
apt/aptitude (like the installer) defer trigger processing
(thanks to Joey Hess)
* doc/makefile:
- add examples/apt-https-method-example.conf
* Russian updated. Closes: #479777, #499029
* fix FTBFS by changing build-depends to
* ABI library name change because it's built against
* Package that contains all the new features
* Branch that contains all the new features:
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/acquire-item.cc | 29 | ||||
-rw-r--r-- | apt-pkg/acquire.cc | 2 | ||||
-rw-r--r-- | apt-pkg/algorithms.cc | 8 | ||||
-rw-r--r-- | apt-pkg/contrib/cmndline.cc | 2 | ||||
-rw-r--r-- | apt-pkg/contrib/cmndline.h | 2 | ||||
-rw-r--r-- | apt-pkg/contrib/strutl.cc | 6 | ||||
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 51 | ||||
-rw-r--r-- | apt-pkg/deb/dpkgpm.h | 2 | ||||
-rw-r--r-- | apt-pkg/depcache.cc | 2 | ||||
-rw-r--r-- | apt-pkg/orderlist.cc | 2 | ||||
-rw-r--r-- | apt-pkg/versionmatch.cc | 2 |
11 files changed, 76 insertions, 32 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 7cae6c8b7..679f9cee7 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -568,9 +568,9 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, else CompressionExtension = ".gz"; } else { - CompressionExtension = comprExt; + CompressionExtension = (comprExt == "plain" ? "" : comprExt); } - Desc.URI = URI + CompressionExtension; + Desc.URI = URI + CompressionExtension; Desc.Description = URIDesc; Desc.Owner = this; @@ -597,19 +597,30 @@ string pkgAcqIndex::Custom600Headers() void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { + bool descChanged = false; // no .bz2 found, retry with .gz if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") { - Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; + Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; - // retry with a gzip one - new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, + new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, ExpectedHash, string(".gz")); + descChanged = true; + } + // no .gz found, retry with uncompressed + else if(Desc.URI.substr(Desc.URI.size()-2) == "gz") { + Desc.URI = Desc.URI.substr(0,Desc.URI.size()-2); + + new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, + ExpectedHash, string("plain")); + descChanged = true; + } + if (descChanged) { Status = StatDone; Complete = false; Dequeue(); return; - } - + } + // on decompression failure, remove bad versions in partial/ if(Decompression && Erase) { string s = _config->FindDir("Dir::State::lists") + "partial/"; @@ -700,12 +711,14 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, else Local = true; - string compExt = Desc.URI.substr(Desc.URI.size()-3); + string compExt = flExtension(URI(Desc.URI).Path); const char *decompProg; if(compExt == "bz2") decompProg = "bzip2"; else if(compExt == ".gz") decompProg = "gzip"; + else if(compExt == "") + decompProg = "copy"; else { _error->Error("Unsupported extension: %s", compExt.c_str()); return; diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 91f603889..38944bbac 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -797,7 +797,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) // Compute the CPS struct timeval NewTime; gettimeofday(&NewTime,0); - if (NewTime.tv_sec - Time.tv_sec == 6 && NewTime.tv_usec > Time.tv_usec || + if ((NewTime.tv_sec - Time.tv_sec == 6 && NewTime.tv_usec > Time.tv_usec) || NewTime.tv_sec - Time.tv_sec > 6) { double Delta = NewTime.tv_sec - Time.tv_sec + diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 59f994cd7..bd33d5ef1 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -497,7 +497,7 @@ void pkgProblemResolver::MakeScores() signed short &Score = Scores[I->ID]; - /* This is arbitary, it should be high enough to elevate an + /* This is arbitrary, it should be high enough to elevate an essantial package above most other packages but low enough to allow an obsolete essential packages to be removed by a conflicts on a powerfull normal package (ie libc6) */ @@ -1342,7 +1342,11 @@ bool ListUpdate(pkgAcquireStatus &Stat, (*I)->Finished(); - _error->Warning(_("Failed to fetch %s %s\n"),(*I)->DescURI().c_str(), + ::URI uri((*I)->DescURI()); + uri.User.clear(); + uri.Password.clear(); + string descUri = string(uri); + _error->Warning(_("Failed to fetch %s %s\n"), descUri.c_str(), (*I)->ErrorText.c_str()); if ((*I)->Status == pkgAcquire::Item::StatTransientNetworkError) diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc index 54c91d67d..bfd53695e 100644 --- a/apt-pkg/contrib/cmndline.cc +++ b/apt-pkg/contrib/cmndline.cc @@ -189,7 +189,7 @@ bool CommandLine::HandleOpt(int &I,int argc,const char *argv[], if ((A->Flags & ConfigFile) == ConfigFile) return ReadConfigFile(*Conf,Argument); - // Arbitary item specification + // Arbitrary item specification if ((A->Flags & ArbItem) == ArbItem) { const char *J; diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h index fad6d1da9..e28071e81 100644 --- a/apt-pkg/contrib/cmndline.h +++ b/apt-pkg/contrib/cmndline.h @@ -34,7 +34,7 @@ ConfigFile - Means this flag should be interprited as the name of a config file to read in at this point in option processing. Implies HasArg. - ArbItem - Means the item is an arbitary configuration string of + ArbItem - Means the item is an arbitrary configuration string of the form item=value, where item is passed directly to the configuration class. The default, if the flags are 0 is to use Boolean diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index eacc7077a..bd374fd1e 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -459,9 +459,9 @@ string Base64Encode(const string &S) return Final; } /*}}}*/ -// stringcmp - Arbitary string compare /*{{{*/ +// stringcmp - Arbitrary string compare /*{{{*/ // --------------------------------------------------------------------- -/* This safely compares two non-null terminated strings of arbitary +/* This safely compares two non-null terminated strings of arbitrary length */ int stringcmp(const char *A,const char *AEnd,const char *B,const char *BEnd) { @@ -517,7 +517,7 @@ int stringcmp(string::const_iterator A,string::const_iterator AEnd, } #endif /*}}}*/ -// stringcasecmp - Arbitary case insensitive string compare /*{{{*/ +// stringcasecmp - Arbitrary case insensitive string compare /*{{{*/ // --------------------------------------------------------------------- /* */ int stringcasecmp(const char *A,const char *AEnd,const char *B,const char *BEnd) diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index c9af2f401..85cf4e119 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -25,6 +25,8 @@ #include <signal.h> #include <errno.h> #include <stdio.h> +#include <string.h> +#include <algorithm> #include <sstream> #include <map> @@ -39,7 +41,38 @@ using namespace std; - +namespace +{ + // Maps the dpkg "processing" info to human readable names. Entry 0 + // of each array is the key, entry 1 is the value. + const std::pair<const char *, const char *> PackageProcessingOps[] = { + std::make_pair("install", N_("Installing %s")), + std::make_pair("configure", N_("Configuring %s")), + std::make_pair("remove", N_("Removing %s")), + std::make_pair("trigproc", N_("Running post-installation trigger %s")) + }; + + const std::pair<const char *, const char *> * const PackageProcessingOpsBegin = PackageProcessingOps; + const std::pair<const char *, const char *> * const PackageProcessingOpsEnd = PackageProcessingOps + sizeof(PackageProcessingOps) / sizeof(PackageProcessingOps[0]); + + // Predicate to test whether an entry in the PackageProcessingOps + // array matches a string. + class MatchProcessingOp + { + const char *target; + + public: + MatchProcessingOp(const char *the_target) + : target(the_target) + { + } + + bool operator()(const std::pair<const char *, const char *> &pair) const + { + return strcmp(pair.first, target) == 0; + } + }; +} // DPkgPM::pkgDPkgPM - Constructor /*{{{*/ // --------------------------------------------------------------------- @@ -362,17 +395,19 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) if(strncmp(list[0], "processing", strlen("processing")) == 0) { char s[200]; - map<string,string>::iterator iter; char *pkg_or_trigger = _strstrip(list[2]); action =_strstrip( list[1]); - iter = PackageProcessingOps.find(action); - if(iter == PackageProcessingOps.end()) + const std::pair<const char *, const char *> * const iter = + std::find_if(PackageProcessingOpsBegin, + PackageProcessingOpsEnd, + MatchProcessingOp(action)); + if(iter == PackageProcessingOpsEnd) { if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true) std::clog << "ignoring unknwon action: " << action << std::endl; return; } - snprintf(s, sizeof(s), _(iter->second.c_str()), pkg_or_trigger); + snprintf(s, sizeof(s), _(iter->second), pkg_or_trigger); status << "pmstatus:" << pkg_or_trigger << ":" << (PackagesDone/float(PackagesTotal)*100.0) @@ -601,12 +636,6 @@ bool pkgDPkgPM::Go(int OutStatusFd) }, }; - // populate the "processing" map - PackageProcessingOps.insert( make_pair("install",N_("Installing %s")) ); - PackageProcessingOps.insert( make_pair("configure",N_("Configuring %s")) ); - PackageProcessingOps.insert( make_pair("remove",N_("Removing %s")) ); - PackageProcessingOps.insert( make_pair("trigproc",N_("Running post-installation trigger %s")) ); - // init the PackageOps map, go over the list of packages that // that will be [installed|configured|removed|purged] and add // them to the PackageOps map (the dpkg states it goes through) diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h index 449469126..ebc7e32bf 100644 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@ -47,8 +47,6 @@ class pkgDPkgPM : public pkgPackageManager // the int is the state that is already done (e.g. a package that is // going to be install is already in state "half-installed") map<string,unsigned int> PackageOpsDone; - // map the dpkg "processing" info to human readable names - map<string,string> PackageProcessingOps; // progress reporting unsigned int PackagesDone; unsigned int PackagesTotal; diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 4ac77b3aa..2411bfe89 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1001,7 +1001,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, if(Pkg.Section() && ConfigValueInSubTree("APT::Never-MarkAuto-Sections", Pkg.Section())) { if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true) - std::clog << "Setting NOT as auto-installed (direct dep of pkg in APT::Never-MarkAuto-Section)" << std::endl; + std::clog << "Setting NOT as auto-installed (direct dep of pkg in APT::Never-MarkAuto-Sections)" << std::endl; MarkInstall(InstPkg,true,Depth + 1, true); } else diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc index 616714e29..ca18f1d75 100644 --- a/apt-pkg/orderlist.cc +++ b/apt-pkg/orderlist.cc @@ -39,7 +39,7 @@ ordering. Each of the features can be enabled in the sorting routine at an - arbitary priority to give quite abit of control over the final unpacking + arbitrary priority to give quite abit of control over the final unpacking order. The rules listed above may never be violated and are called Critical. diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc index 4a426809c..5c25c2f7b 100644 --- a/apt-pkg/versionmatch.cc +++ b/apt-pkg/versionmatch.cc @@ -124,7 +124,7 @@ bool pkgVersionMatch::MatchVer(const char *A,string B,bool Prefix) const char *Ae = Ab + strlen(A); // Strings are not a compatible size. - if ((unsigned)(Ae - Ab) != B.length() && Prefix == false || + if (((unsigned)(Ae - Ab) != B.length() && Prefix == false) || (unsigned)(Ae - Ab) < B.length()) return false; |