]> git.saurik.com Git - apt.git/blame - apt-private/private-update.cc
refactor key removal code to reuse it in next step
[apt.git] / apt-private / private-update.cc
CommitLineData
b9179170
MV
1// Include files /*{{{*/
2#include<config.h>
3
b9179170 4#include <apt-pkg/acquire-item.h>
b9179170 5#include <apt-pkg/cachefile.h>
453b82a3
DK
6#include <apt-pkg/cmndline.h>
7#include <apt-pkg/error.h>
8#include <apt-pkg/fileutl.h>
9#include <apt-pkg/sourcelist.h>
d428d131 10#include <apt-pkg/update.h>
453b82a3
DK
11#include <apt-pkg/acquire.h>
12#include <apt-pkg/configuration.h>
b9179170 13
453b82a3
DK
14#include <apt-private/acqprogress.h>
15#include <apt-private/private-cachefile.h>
16#include <apt-private/private-output.h>
17#include <apt-private/private-update.h>
b9179170 18
453b82a3
DK
19#include <ostream>
20#include <string>
b9179170
MV
21
22#include <apti18n.h>
23 /*}}}*/
24
25// DoUpdate - Update the package lists /*{{{*/
26// ---------------------------------------------------------------------
27/* */
28bool DoUpdate(CommandLine &CmdL)
29{
30 if (CmdL.FileSize() != 1)
31 return _error->Error(_("The update command takes no arguments"));
32
33 CacheFile Cache;
34
35 // Get the source list
36 if (Cache.BuildSourceList() == false)
37 return false;
38 pkgSourceList *List = Cache.GetSourceList();
39
40 // Create the progress
41 AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0));
42
43 // Just print out the uris an exit if the --print-uris flag was used
44 if (_config->FindB("APT::Get::Print-URIs") == true)
45 {
46 // force a hashsum for compatibility reasons
47 _config->CndSet("Acquire::ForceHash", "md5sum");
48
49 // get a fetcher
50 pkgAcquire Fetcher;
51 if (Fetcher.Setup(&Stat) == false)
52 return false;
53
54 // Populate it with the source selection and get all Indexes
55 // (GetAll=true)
56 if (List->GetIndexes(&Fetcher,true) == false)
57 return false;
58
59 pkgAcquire::UriIterator I = Fetcher.UriBegin();
60 for (; I != Fetcher.UriEnd(); ++I)
61 c1out << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' <<
62 I->Owner->FileSize << ' ' << I->Owner->HashSum() << std::endl;
63 return true;
64 }
65
66 // do the work
67 if (_config->FindB("APT::Get::Download",true) == true)
68 ListUpdate(Stat, *List);
69
70 // Rebuild the cache.
71 if (_config->FindB("pkgCacheFile::Generate", true) == true)
72 {
73 pkgCacheFile::RemoveCaches();
74 if (Cache.BuildCaches() == false)
75 return false;
76 }
77
8f418981
MV
78 // show basic stats (if the user whishes)
79 if (_config->FindB("APT::Cmd::Show-Update-Stats", false) == true)
80 {
81 int upgradable = 0;
82 Cache.Open();
83 for (pkgCache::PkgIterator I = Cache->PkgBegin(); I.end() != true; ++I)
84 {
85 pkgDepCache::StateCache &state = Cache[I];
7d1b93d9 86 if (I->CurrentVer != 0 && state.Upgradable() && state.CandidateVer != NULL)
8f418981
MV
87 upgradable++;
88 }
dab5f874 89 const char *msg = P_(
8f418981
MV
90 "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n",
91 "%i packages can be upgraded. Run 'apt list --upgradable' to see them.\n",
92 upgradable);
24d05892
MV
93 if (upgradable == 0)
94 c1out << _("All packages are up to date.") << std::endl;
95 else
96 ioprintf(c1out, msg, upgradable);
8f418981
MV
97 }
98
b9179170
MV
99 return true;
100}
101 /*}}}*/