diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2005-08-05 11:59:11 +0000 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2005-08-05 11:59:11 +0000 |
commit | f77bf408f3f7ae650bac2a967f28610737acf1ab (patch) | |
tree | 5accceacc75700babd93772e813f3a6ef9fa9144 /apt-pkg/contrib/configuration.cc | |
parent | 93abae08dbdac43c8ddb4f83c966b16ea7d0107c (diff) |
* merged with apt@packages.debian.org/apt--main--0
Patches applied:
* apt@packages.debian.org/apt--main--0--patch-100
Use debian.org address in mainline
* apt@packages.debian.org/apt--main--0--patch-101
Update pot file
* apt@packages.debian.org/apt--main--0--patch-102
Open 0.6.40
* apt@packages.debian.org/apt--main--0--patch-103
Patch from Jordi Mallach to mark some additional strings for translation
* apt@packages.debian.org/apt--main--0--patch-104
Updated Catalan translation from Jordi Mallach
* apt@packages.debian.org/apt--main--0--patch-105
Merge from bubulle@debian.org--2005/apt--main--0
* 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
* bubulle@debian.org--2005/apt--main--0--patch-90
Merge with Matt
* bubulle@debian.org--2005/apt--main--0--patch-91
Updated Slovak translation
* bubulle@debian.org--2005/apt--main--0--patch-92
Add apt-key French man page
* bubulle@debian.org--2005/apt--main--0--patch-93
Update Greek translations
* bubulle@debian.org--2005/apt--main--0--patch-94
Merge with Matt
* bubulle@debian.org--2005/apt--main--0--patch-95
Sync PO files with the POT file/French translation update
* 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
Diffstat (limited to 'apt-pkg/contrib/configuration.cc')
-rw-r--r-- | apt-pkg/contrib/configuration.cc | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index 69f8d1dca..4b2c0fbb5 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -327,15 +327,57 @@ 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) { + cout << "config item: " << Name << " not found" << endl; return; - + } Top->Value = string(); Item *Stop = Top; Top = Top->Child; |