summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-sources.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/apt-private/private-sources.cc b/apt-private/private-sources.cc
index eb9c5b971..37b0534bd 100644
--- a/apt-private/private-sources.cc
+++ b/apt-private/private-sources.cc
@@ -6,6 +6,11 @@
#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)
@@ -14,17 +19,22 @@ bool EditSources(CommandLine &CmdL)
pkgSourceList sl;
std::string outs;
- // FIXME: suport CmdL.FileList to specify sources.list.d files
- std::string sourceslist = _config->FindFile("Dir::Etc::sourcelist");
+ std::string sourceslist;
+ if (CmdL.FileList[1] != NULL)
+ sourceslist = _config->FindDir("Dir::Etc::sourceparts") + CmdL.FileList[1] + ".list";
+ else
+ sourceslist = _config->FindFile("Dir::Etc::sourcelist");
HashString before;
- before.FromFile(sourceslist);
+ 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;
@@ -33,7 +43,7 @@ bool EditSources(CommandLine &CmdL)
_error->RevertToStack();
} while (res == false);
- if (!before.VerifyFile(sourceslist)) {
+ if (FileExists(sourceslist) && !before.VerifyFile(sourceslist)) {
strprintf(
outs, _("Your '%s' file changed, please run 'apt-get update'."),
sourceslist.c_str());