]> git.saurik.com Git - apt.git/blame - apt-pkg/deb/dpkgpm.h
* Applied patch from Andrei Popescu <andreimpopescu@gmail.com> to add a
[apt.git] / apt-pkg / deb / dpkgpm.h
CommitLineData
03e39e59
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
233b185f 3// $Id: dpkgpm.h,v 1.8 2001/05/07 05:05:13 jgg Exp $
03e39e59
AL
4/* ######################################################################
5
6 DPKG Package Manager - Provide an interface to dpkg
7
8 ##################################################################### */
9 /*}}}*/
03e39e59
AL
10#ifndef PKGLIB_DPKGPM_H
11#define PKGLIB_DPKGPM_H
12
03e39e59
AL
13#include <apt-pkg/packagemanager.h>
14#include <vector>
09fa2df2 15#include <map>
b2e465d6 16#include <stdio.h>
03e39e59 17
233b185f 18using std::vector;
09fa2df2
MV
19using std::map;
20
233b185f 21
03e39e59
AL
22class pkgDPkgPM : public pkgPackageManager
23{
6191b008 24 private:
6191b008 25
09fa2df2
MV
26 // the buffer we use for the dpkg status-fd reading
27 char dpkgbuf[1024];
28 int dpkgbuf_pos;
1ba38171
MV
29 FILE *term_out;
30
ff56e980
MV
31 protected:
32
09fa2df2 33 // progress reporting
2a7e07c7
MV
34 struct DpkgState
35 {
36 const char *state; // the dpkg state (e.g. "unpack")
37 const char *str; // the human readable translation of the state
38 };
09fa2df2
MV
39
40 // the dpkg states that the pkg will run through, the string is
41 // the package, the vector contains the dpkg states that the package
42 // will go through
43 map<string,vector<struct DpkgState> > PackageOps;
44 // the dpkg states that are already done; the string is the package
45 // the int is the state that is already done (e.g. a package that is
46 // going to be install is already in state "half-installed")
4b7c5a3f 47 map<string,unsigned int> PackageOpsDone;
09fa2df2 48 // progress reporting
4b7c5a3f
MV
49 unsigned int PackagesDone;
50 unsigned int PackagesTotal;
09fa2df2 51
03e39e59
AL
52 struct Item
53 {
fc4b5c9f 54 enum Ops {Install, Configure, Remove, Purge} Op;
03e39e59
AL
55 string File;
56 PkgIterator Pkg;
b2e465d6 57 Item(Ops Op,PkgIterator Pkg,string File = "") : Op(Op),
03e39e59
AL
58 File(File), Pkg(Pkg) {};
59 Item() {};
60
61 };
62 vector<Item> List;
6dd55be7
AL
63
64 // Helpers
65 bool RunScripts(const char *Cnf);
db0c350f 66 bool RunScriptsWithPkgs(const char *Cnf);
b2e465d6 67 bool SendV2Pkgs(FILE *F);
afb1e2e3 68
2e1715ea
MV
69 // dpkg log
70 bool OpenLog();
71 bool CloseLog();
72
ceabc520
MV
73 // input processing
74 void DoStdin(int master);
1ba38171 75 void DoTerminalPty(int master);
09fa2df2
MV
76 void DoDpkgStatusFd(int statusfd, int OutStatusFd);
77 void ProcessDpkgStatusLine(int OutStatusFd, char *line);
6191b008 78
03e39e59
AL
79 // The Actuall installation implementation
80 virtual bool Install(PkgIterator Pkg,string File);
81 virtual bool Configure(PkgIterator Pkg);
fc4b5c9f 82 virtual bool Remove(PkgIterator Pkg,bool Purge = false);
2a7e07c7 83 virtual bool Go(int StatusFd=-1);
281daf46 84 virtual void Reset();
03e39e59
AL
85
86 public:
87
b2e465d6 88 pkgDPkgPM(pkgDepCache *Cache);
03e39e59
AL
89 virtual ~pkgDPkgPM();
90};
91
92#endif