]>
Commit | Line | Data |
---|---|---|
b2e465d6 AL |
1 | // -*- mode: cpp; mode: fold -*- |
2 | // Description /*{{{*/ | |
3 | // $Id: dirstream.h,v 1.2 2001/02/20 07:03:16 jgg Exp $ | |
4 | /* ###################################################################### | |
5 | ||
6 | Directory Stream | |
7 | ||
8 | When unpacking the contents of the archive are passed into a directory | |
9 | stream class for analysis and processing. The class controls all aspects | |
10 | of actually writing the directory stream from disk. The low level | |
11 | archive handlers are only responsible for decoding the archive format | |
12 | and sending events (via method calls) to the specified directory | |
13 | stream. | |
14 | ||
15 | When unpacking a real file the archive handler is passed back a file | |
16 | handle to write the data to, this is to support strange | |
17 | archives+unpacking methods. If that fd is -1 then the file data is | |
18 | simply ignored. | |
19 | ||
20 | The provided defaults do the 'Right Thing' for a normal unpacking | |
21 | process (ie 'tar') | |
22 | ||
23 | ##################################################################### */ | |
24 | /*}}}*/ | |
25 | #ifndef PKGLIB_DIRSTREAM_H | |
26 | #define PKGLIB_DIRSTREAM_H | |
27 | ||
60b64ffc | 28 | #include <apt-pkg/macros.h> |
b2e465d6 AL |
29 | |
30 | class pkgDirStream | |
31 | { | |
32 | public: | |
33 | ||
34 | // All possible information about a component | |
35 | struct Item | |
36 | { | |
37 | enum Type_t {File, HardLink, SymbolicLink, CharDevice, BlockDevice, | |
38 | Directory, FIFO} Type; | |
39 | char *Name; | |
40 | char *LinkTarget; | |
41 | unsigned long Mode; | |
42 | unsigned long UID; | |
43 | unsigned long GID; | |
4dc77823 | 44 | unsigned long long Size; |
b2e465d6 AL |
45 | unsigned long MTime; |
46 | unsigned long Major; | |
47 | unsigned long Minor; | |
48 | }; | |
49 | ||
50 | virtual bool DoItem(Item &Itm,int &Fd); | |
51 | virtual bool Fail(Item &Itm,int Fd); | |
52 | virtual bool FinishedFile(Item &Itm,int Fd); | |
65512241 | 53 | virtual bool Process(Item &/*Itm*/,const unsigned char * /*Data*/, |
3621b1c7 | 54 | unsigned long long /*Size*/,unsigned long long /*Pos*/) {return true;}; |
b2e465d6 AL |
55 | virtual ~pkgDirStream() {}; |
56 | }; | |
57 | ||
58 | #endif |