]>
git.saurik.com Git - apt.git/blob - apt-private/private-sources.cc
2 #include <apt-pkg/hashes.h>
5 #include "private-output.h"
6 #include "private-sources.h"
7 #include "private-utils.h"
9 /* Interface discussion with donkult (for the future):
10 apt [add-{archive,release,component}|edit|change-release|disable]-sources
11 and be clever and work out stuff from the Release file
14 // EditSource - EditSourcesList /*{{{*/
15 // ---------------------------------------------------------------------
16 bool EditSources(CommandLine
&CmdL
)
22 std::string sourceslist
;
23 if (CmdL
.FileList
[1] != NULL
)
25 sourceslist
= _config
->FindDir("Dir::Etc::sourceparts") + CmdL
.FileList
[1];
26 if (!APT::String::Endswith(sourceslist
, ".list"))
27 sourceslist
+= ".list";
29 sourceslist
= _config
->FindFile("Dir::Etc::sourcelist");
32 if (FileExists(sourceslist
))
33 before
.FromFile(sourceslist
);
36 EditFileInSensibleEditor(sourceslist
);
37 _error
->PushToStack();
38 res
= sl
.Read(sourceslist
);
41 strprintf(outs
, _("Failed to parse %s. Edit again? "),
44 // FIXME: should we add a "restore previous" option here?
45 res
= !YnPrompt(true);
47 _error
->RevertToStack();
48 } while (res
== false);
50 if (FileExists(sourceslist
) && !before
.VerifyFile(sourceslist
)) {
52 outs
, _("Your '%s' file changed, please run 'apt-get update'."),
54 std::cout
<< outs
<< std::endl
;