/usr/include/apt-pkg/install-progress.h is in libapt-pkg-dev 1.0.1ubuntu2.19.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | #ifndef PKGLIB_IPROGRESS_H
#define PKGLIB_IPROGRESS_H
#include <string>
#include <unistd.h>
#include <signal.h>
#include <vector>
namespace APT {
namespace Progress {
class PackageManager;
PackageManager* PackageManagerProgressFactory();
class PackageManager
{
private:
/** \brief dpointer placeholder */
void *d;
protected:
std::string progress_str;
float percentage;
int last_reported_progress;
public:
PackageManager()
: percentage(0.0), last_reported_progress(-1) {};
virtual ~PackageManager() {};
/* Global Start/Stop */
virtual void Start(int /*child_pty*/=-1) {};
virtual void Stop() {};
/* When dpkg is invoked (may happen multiple times for each
* install/remove block
*/
virtual void StartDpkg() {};
virtual pid_t fork() {return fork(); };
virtual void Pulse() {};
virtual long GetPulseInterval() {
return 500000;
};
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string HumanReadableAction);
virtual void Error(std::string /*PackageName*/,
unsigned int /*StepsDone*/,
unsigned int /*TotalSteps*/,
std::string /*ErrorMessage*/) {}
virtual void ConffilePrompt(std::string /*PackageName*/,
unsigned int /*StepsDone*/,
unsigned int /*TotalSteps*/,
std::string /*ConfMessage*/) {}
};
class PackageManagerProgressFd : public PackageManager
{
protected:
int OutStatusFd;
int StepsDone;
int StepsTotal;
void WriteToStatusFd(std::string msg);
public:
PackageManagerProgressFd(int progress_fd);
virtual void StartDpkg();
virtual void Stop();
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string HumanReadableAction);
virtual void Error(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string ErrorMessage);
virtual void ConffilePrompt(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string ConfMessage);
};
class PackageManagerProgressDeb822Fd : public PackageManager
{
protected:
int OutStatusFd;
int StepsDone;
int StepsTotal;
void WriteToStatusFd(std::string msg);
public:
PackageManagerProgressDeb822Fd(int progress_fd);
virtual void StartDpkg();
virtual void Stop();
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string HumanReadableAction);
virtual void Error(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string ErrorMessage);
virtual void ConffilePrompt(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string ConfMessage);
};
class PackageManagerFancy : public PackageManager
{
private:
static void staticSIGWINCH(int);
static std::vector<PackageManagerFancy*> instances;
protected:
void SetupTerminalScrollArea(int nr_rows);
void HandleSIGWINCH(int);
typedef struct {
int rows;
int columns;
} TermSize;
TermSize GetTerminalSize();
sighandler_t old_SIGWINCH;
int child_pty;
public:
PackageManagerFancy();
~PackageManagerFancy();
virtual void Start(int child_pty=-1);
virtual void Stop();
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string HumanReadableAction);
// return a progress bar of the given size for the given progress
// percent between 0.0 and 1.0 in the form "[####...]"
static std::string GetTextProgressStr(float percent, int OutputSize);
};
class PackageManagerText : public PackageManager
{
public:
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,
std::string HumanReadableAction);
};
} // namespace Progress
} // namespace APT
#endif
|