]>
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 | ||
28 | #ifdef __GNUG__ | |
29 | #pragma interface "apt-pkg/dirstream.h" | |
30 | #endif | |
31 | ||
32 | class pkgDirStream | |
33 | { | |
34 | public: | |
35 | ||
36 | // All possible information about a component | |
37 | struct Item | |
38 | { | |
39 | enum Type_t {File, HardLink, SymbolicLink, CharDevice, BlockDevice, | |
40 | Directory, FIFO} Type; | |
41 | char *Name; | |
42 | char *LinkTarget; | |
43 | unsigned long Mode; | |
44 | unsigned long UID; | |
45 | unsigned long GID; | |
46 | unsigned long Size; | |
47 | unsigned long MTime; | |
48 | unsigned long Major; | |
49 | unsigned long Minor; | |
50 | }; | |
51 | ||
52 | virtual bool DoItem(Item &Itm,int &Fd); | |
53 | virtual bool Fail(Item &Itm,int Fd); | |
54 | virtual bool FinishedFile(Item &Itm,int Fd); | |
55 | virtual bool Process(Item &Itm,const unsigned char *Data, | |
56 | unsigned long Size,unsigned long Pos) {return true;}; | |
57 | ||
58 | virtual ~pkgDirStream() {}; | |
59 | }; | |
60 | ||
61 | #endif |