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