diff options
author | Michael Vogt <mvo@debian.org> | 2013-11-29 13:39:45 +0100 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2013-11-29 13:39:45 +0100 |
commit | e4a93f90b2e50f6833f7146496e574a5a9cedaca (patch) | |
tree | 836dd5e70b394f9996d4af0bdfcd52d2a388a007 /apt-private | |
parent | fdef7c5e3a19c5f35ee952598124d0fe8d03c7ec (diff) | |
parent | faeb435cab7b41a50c621ef9f96853d15c57d0d8 (diff) |
Merge remote-tracking branch 'mvo/debian/sid' into debian/sid
Conflicts:
apt-private/private-cmndline.cc
Diffstat (limited to 'apt-private')
-rw-r--r-- | apt-private/makefile | 2 | ||||
-rw-r--r-- | apt-private/private-cmndline.cc | 2 | ||||
-rw-r--r-- | apt-private/private-list.cc | 4 | ||||
-rw-r--r-- | apt-private/private-sources.cc | 59 | ||||
-rw-r--r-- | apt-private/private-sources.h | 3 | ||||
-rw-r--r-- | apt-private/private-utils.cc | 50 | ||||
-rw-r--r-- | apt-private/private-utils.h | 11 |
7 files changed, 127 insertions, 4 deletions
diff --git a/apt-private/makefile b/apt-private/makefile index 1d179f0b2..728890b9b 100644 --- a/apt-private/makefile +++ b/apt-private/makefile @@ -17,7 +17,7 @@ MAJOR=0.0 MINOR=0 SLIBS=$(PTHREADLIB) -lapt-pkg -PRIVATES=list install download output cachefile cacheset update upgrade cmndline moo search show main +PRIVATES=list install download output cachefile cacheset update upgrade cmndline moo search show main utils sources SOURCE += $(foreach private, $(PRIVATES), private-$(private).cc) HEADERS += $(foreach private, $(PRIVATES), private-$(private).h) diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index f4348c979..28309af07 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -226,8 +226,8 @@ bool addArgumentsAPT(std::vector<CommandLine::Args> &Args, char const * const Cm { addArg(0,"installed","APT::Cmd::Installed",0); addArg(0,"upgradable","APT::Cmd::Upgradable",0); - addArg('a', "all-versions", "APT::Cmd::AllVersions", 0); addArg('v', "verbose", "APT::Cmd::List-Include-Summary", 0); + addArg('a', "all-versions", "APT::Cmd::All-Versions", 0); } else if (addArgumentsAPTGet(Args, Cmd) || addArgumentsAPTCache(Args, Cmd)) { diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc index 08851eb7e..a02ebf02d 100644 --- a/apt-private/private-list.cc +++ b/apt-private/private-list.cc @@ -69,7 +69,7 @@ class PackageNameMatcher : public Matcher /*{{{*/ cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern); #else APT::CacheFilter::PackageMatcher *cachefilter = NULL; - if(_config->FindB("APT::Cmd::UseRegexp", false) == true) + if(_config->FindB("APT::Cmd::Use-Regexp", false) == true) cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern); else cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern); @@ -145,7 +145,7 @@ bool List(CommandLine &Cmd) for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); V++) { std::stringstream outs; - if(_config->FindB("APT::Cmd::AllVersions", false) == true) + if(_config->FindB("APT::Cmd::All-Versions", false) == true) { ListAllVersions(CacheFile, records, V.ParentPkg(), outs); output_map.insert(std::make_pair<std::string, std::string>( diff --git a/apt-private/private-sources.cc b/apt-private/private-sources.cc new file mode 100644 index 000000000..65706e785 --- /dev/null +++ b/apt-private/private-sources.cc @@ -0,0 +1,59 @@ + +#include <apt-pkg/hashes.h> +#include <apti18n.h> + +#include "private-output.h" +#include "private-sources.h" +#include "private-utils.h" + +/* Interface discussion with donkult (for the future): + apt [add-{archive,release,component}|edit|change-release|disable]-sources + and be clever and work out stuff from the Release file +*/ + +// EditSource - EditSourcesList /*{{{*/ +// --------------------------------------------------------------------- +bool EditSources(CommandLine &CmdL) +{ + bool res; + pkgSourceList sl; + std::string outs; + + std::string sourceslist; + if (CmdL.FileList[1] != NULL) + { + sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1]; + if (!APT::String::Endswith(sourceslist, ".list")) + sourceslist += ".list"; + } else { + sourceslist = _config->FindFile("Dir::Etc::sourcelist"); + } + HashString before; + if (FileExists(sourceslist)) + before.FromFile(sourceslist); + + do { + EditFileInSensibleEditor(sourceslist); + _error->PushToStack(); + res = sl.Read(sourceslist); + if (!res) { + _error->DumpErrors(); + strprintf(outs, _("Failed to parse %s. Edit again? "), + sourceslist.c_str()); + std::cout << outs; + // FIXME: should we add a "restore previous" option here? + res = !YnPrompt(true); + } + _error->RevertToStack(); + } while (res == false); + + if (FileExists(sourceslist) && !before.VerifyFile(sourceslist)) { + strprintf( + outs, _("Your '%s' file changed, please run 'apt-get update'."), + sourceslist.c_str()); + std::cout << outs << std::endl; + } + + return true; +} + /*}}}*/ diff --git a/apt-private/private-sources.h b/apt-private/private-sources.h new file mode 100644 index 000000000..b394622be --- /dev/null +++ b/apt-private/private-sources.h @@ -0,0 +1,3 @@ +#include <apt-pkg/cmndline.h> + +bool EditSources(CommandLine &CmdL); diff --git a/apt-private/private-utils.cc b/apt-private/private-utils.cc new file mode 100644 index 000000000..813f19329 --- /dev/null +++ b/apt-private/private-utils.cc @@ -0,0 +1,50 @@ +#include <cstdlib> + +#include <apt-pkg/configuration.h> +#include <apt-pkg/fileutl.h> +#include "private-utils.h" + + +// DisplayFileInPager - Display File with pager /*{{{*/ +void DisplayFileInPager(std::string filename) +{ + std::string pager = _config->Find("Dir::Bin::Pager", + "/usr/bin/sensible-pager"); + + pid_t Process = ExecFork(); + if (Process == 0) + { + const char *Args[3]; + Args[0] = pager.c_str(); + Args[1] = filename.c_str(); + Args[2] = 0; + execvp(Args[0],(char **)Args); + exit(100); + } + + // Wait for the subprocess + ExecWait(Process, "sensible-pager", false); +} + /*}}}*/ + +// EditFileInSensibleEditor - Edit File with editor /*{{{*/ +void EditFileInSensibleEditor(std::string filename) +{ + std::string editor = _config->Find("Dir::Bin::Editor", + "/usr/bin/sensible-editor"); + + pid_t Process = ExecFork(); + if (Process == 0) + { + const char *Args[3]; + Args[0] = editor.c_str(); + Args[1] = filename.c_str(); + Args[2] = 0; + execvp(Args[0],(char **)Args); + exit(100); + } + + // Wait for the subprocess + ExecWait(Process, "sensible-editor", false); +} + /*}}}*/ diff --git a/apt-private/private-utils.h b/apt-private/private-utils.h new file mode 100644 index 000000000..258dd06a8 --- /dev/null +++ b/apt-private/private-utils.h @@ -0,0 +1,11 @@ +#ifndef APT_PRIVATE_UTILS_H +#define APT_PRIVATE_UTILS_H + +#include<string> + +void DisplayFileInPager(std::string filename); +void EditFileInSensibleEditor(std::string filename); + + + +#endif |