diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2005-08-09 08:38:26 +0000 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2005-08-09 08:38:26 +0000 |
commit | 75ef8f14174f83a5f876a0d7414f4e6064a7d3e0 (patch) | |
tree | 9be3141205921e40fcdb8b6d8c7d441f40d5d47e /apt-pkg/contrib/configuration.cc | |
parent | dc2cd7d5c4889a6cc09b5a5a9eb35c74f86c2712 (diff) |
* merged from main
Patches applied:
* apt@packages.debian.org/apt--main--0--patch-106
Restore lost changelog entries
* apt@packages.debian.org/apt--main--0--patch-107
Merge michael.vogt@ubuntu.com--2005/apt--progress-reporting--0
* apt@packages.debian.org/apt--main--0--patch-108
Merge michael.vogt@ubuntu.com--2005/apt--progress-reporting--0
* apt@packages.debian.org/apt--main--0--patch-109
Merge michael.vogt@ubuntu.com--2005/apt--progress-reporting--0
* apt@packages.debian.org/apt--main--0--patch-110
Merge michael.vogt@ubuntu.com--2005/apt--progress-reporting--0
* michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-5
* merged with apt--main--0
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--base-0
tag of apt@packages.debian.org/apt--main--0--patch-85
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-1
* inital proof of concept code, understands what dpkg tells it already
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-2
* progress reporting works now
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-3
* added "APT::Status-Fd" variable
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-4
* do i18n now too
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-5
* define N_(x) if it is not defined already
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-6
* PackageManager::DoInstall(int status_fd) added (does not break the ABI)
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-7
* merged with apt--fixes--0 to make it build again
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-8
* added support for "error" and "conffile-prompt" messages from dpkg
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-9
merge with main
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-10
* use sizeof() for all snprintf() uses; fix a potential line break problem in the status reading code; changed the N_() to _() calls
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-11
* added APT::KeepFDs configuration list for file descriptors that apt should leave open (needed for various frontends like debconf, synaptic)
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-12
* fixed a API breakage
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-13
* doc added, should be releasable now
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-14
* merged with apt--main--0
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-15
* more source comments, added Debug::DpkgPM debug code to inspect the dpkg<->apt communication, broke the abi (ok with matt)
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-16
* the progress reporting has it's own "Debug::pkgDPkgProgressReporting" debug variable now
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-17
* merged PackageOps and TranslatedPackageOps into a single Map with the new DpkgState struct
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-18
* clear the APT::Keep-Fds configuration when it's no longer needed
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-19
* rewrote the reading from dpkg so that it never blocks
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-20
* merged the two status arrays into one
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-21
* added support for download progress reporting too (for Kamion and base-config)
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-22
* ABI break; added Configuration::Clear(string List, {int,string} value) added (to remove a single Value from a list); test/conf_clear.cc added
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-23
* remvoed a debug string
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-24
* soname changed, fixed a bug in the parsing code when dpkg send the same state more than once (at the end)
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-25
* merged with apt@packages.debian.org/apt--main--0, added changelog entry for the 0.6.40.1 upload
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-26
* fix a bug when out-of-order states are send from dpkg
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-27
* changelog update
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-28
* a real changelog entry now
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-29
* changelog finalized
* michael.vogt@ubuntu.com--2005/apt--progress-reporting--0--patch-30
* propper (and sane) support for pmerror and pmconffile added
Diffstat (limited to 'apt-pkg/contrib/configuration.cc')
-rw-r--r-- | apt-pkg/contrib/configuration.cc | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index 69f8d1dca..09e454be9 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -327,15 +327,56 @@ void Configuration::Set(const char *Name,int Value) Itm->Value = S; } /*}}}*/ +// Configuration::Clear - Clear an single value from a list /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void Configuration::Clear(string Name, int Value) +{ + char S[300]; + snprintf(S,sizeof(S),"%i",Value); + Clear(Name, S); +} + /*}}}*/ +// Configuration::Clear - Clear an single value from a list /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void Configuration::Clear(string Name, string Value) +{ + Item *Top = Lookup(Name.c_str(),false); + if (Top == 0 || Top->Child == 0) + return; + + Item *Tmp, *Prev, *I; + Prev = I = Top->Child; + + while(I != NULL) + { + if(I->Value == Value) + { + Tmp = I; + // was first element, point parent to new first element + if(Top->Child == Tmp) + Top->Child = I->Next; + I = I->Next; + Prev->Next = I; + delete Tmp; + } else { + Prev = I; + I = I->Next; + } + } + +} + /*}}}*/ // Configuration::Clear - Clear an entire tree /*{{{*/ // --------------------------------------------------------------------- /* */ void Configuration::Clear(string Name) { Item *Top = Lookup(Name.c_str(),false); - if (Top == 0) + if (Top == 0) return; - + Top->Value = string(); Item *Stop = Top; Top = Top->Child; |