summaryrefslogtreecommitdiff
path: root/apt-private/private-sources.cc
blob: eb9c5b971e9d9d72f765e101937104f7ecb70cd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

#include <apt-pkg/hashes.h>
#include <apti18n.h>

#include "private-output.h"
#include "private-sources.h"
#include "private-utils.h"

// EditSource - EditSourcesList         			        /*{{{*/
// ---------------------------------------------------------------------
bool EditSources(CommandLine &CmdL)
{
   bool res;
   pkgSourceList sl;
   std::string outs;

   // FIXME: suport CmdL.FileList to specify sources.list.d files
   std::string sourceslist = _config->FindFile("Dir::Etc::sourcelist");

   HashString before;
   before.FromFile(sourceslist);

   do {
      EditFileInSensibleEditor(sourceslist);
      _error->PushToStack();
      res = sl.Read(sourceslist);
      if (!res) {
         strprintf(outs, _("Failed to parse %s. Edit again? "),
                   sourceslist.c_str());
         std::cout << outs;
         res = !YnPrompt(true);
      }
      _error->RevertToStack();
   } while (res == false);

   if (!before.VerifyFile(sourceslist)) {
      strprintf(
         outs, _("Your '%s' file changed, please run 'apt-get update'."),
         sourceslist.c_str());
      std::cout << outs << std::endl;
   }

   return true;
}
									/*}}}*/