]> git.saurik.com Git - apt.git/blame_incremental - apt-private/private-output.h
support "install ./foo.changes"
[apt.git] / apt-private / private-output.h
... / ...
CommitLineData
1#ifndef APT_PRIVATE_OUTPUT_H
2#define APT_PRIVATE_OUTPUT_H
3
4#include <apt-pkg/configuration.h>
5#include <apt-pkg/pkgcache.h>
6#include <apt-pkg/macros.h>
7
8#include <functional>
9#include <fstream>
10#include <string>
11#include <iostream>
12
13// forward declaration
14class pkgCacheFile;
15class CacheFile;
16class pkgDepCache;
17class pkgRecords;
18
19
20APT_PUBLIC extern std::ostream c0out;
21APT_PUBLIC extern std::ostream c1out;
22APT_PUBLIC extern std::ostream c2out;
23APT_PUBLIC extern std::ofstream devnull;
24APT_PUBLIC extern unsigned int ScreenWidth;
25
26APT_PUBLIC bool InitOutput(std::basic_streambuf<char> * const out = std::cout.rdbuf());
27
28void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records,
29 pkgCache::VerIterator const &V, std::ostream &out,
30 std::string const &format);
31
32
33// helper to describe global state
34APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now);
35APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now);
36
37template<class Container, class PredicateC, class DisplayP, class DisplayV> bool ShowList(std::ostream &out, std::string const &Title,
38 Container const &cont,
39 PredicateC Predicate,
40 DisplayP PkgDisplay,
41 DisplayV VerboseDisplay)
42{
43 size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0;
44 int ScreenUsed = 0;
45 bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false);
46 bool printedTitle = false;
47
48 for (auto const &Pkg: cont)
49 {
50 if (Predicate(Pkg) == false)
51 continue;
52
53 if (printedTitle == false)
54 {
55 out << Title;
56 printedTitle = true;
57 }
58
59 if (ShowVersions == true)
60 {
61 out << std::endl << " " << PkgDisplay(Pkg);
62 std::string const verbose = VerboseDisplay(Pkg);
63 if (verbose.empty() == false)
64 out << " (" << verbose << ")";
65 }
66 else
67 {
68 std::string const PkgName = PkgDisplay(Pkg);
69 if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth)
70 {
71 out << std::endl << " ";
72 ScreenUsed = 0;
73 }
74 else if (ScreenUsed != 0)
75 {
76 out << " ";
77 ++ScreenUsed;
78 }
79 out << PkgName;
80 ScreenUsed += PkgName.length();
81 }
82 }
83
84 if (printedTitle == true)
85 {
86 out << std::endl;
87 return false;
88 }
89 return true;
90}
91
92void ShowNew(std::ostream &out,CacheFile &Cache);
93void ShowDel(std::ostream &out,CacheFile &Cache);
94void ShowKept(std::ostream &out,CacheFile &Cache);
95void ShowUpgraded(std::ostream &out,CacheFile &Cache);
96bool ShowDowngraded(std::ostream &out,CacheFile &Cache);
97bool ShowHold(std::ostream &out,CacheFile &Cache);
98
99bool ShowEssential(std::ostream &out,CacheFile &Cache);
100
101void Stats(std::ostream &out, pkgDepCache &Dep);
102
103// prompting
104bool YnPrompt(char const * const Question, bool Default=true);
105bool AnalPrompt(std::string const &Question, const char *Text);
106
107std::string PrettyFullName(pkgCache::PkgIterator const &Pkg);
108std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
109std::function<std::string(pkgCache::PkgIterator const &)> CandidateVersion(pkgCacheFile * const Cache);
110std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg);
111std::function<std::string(pkgCache::PkgIterator const &)> CurrentToCandidateVersion(pkgCacheFile * const Cache);
112std::string EmptyString(pkgCache::PkgIterator const &);
113bool AlwaysTrue(pkgCache::PkgIterator const &);
114
115#endif