diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2019-05-06 11:40:08 +0200 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2019-05-06 12:14:04 +0200 |
commit | dfe2511e31f232a8a8880eba40af40d1deb0e49c (patch) | |
tree | c671a2bf5cdb255781548cf9c7a7686fb94d9bf5 /apt-pkg/dirstream.h | |
parent | d03105d9fd5af76067f033475d4d60d30063e96a (diff) |
Merge libapt-inst into libapt-pkg
Diffstat (limited to 'apt-pkg/dirstream.h')
-rw-r--r-- | apt-pkg/dirstream.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/apt-pkg/dirstream.h b/apt-pkg/dirstream.h new file mode 100644 index 000000000..0f0e348d0 --- /dev/null +++ b/apt-pkg/dirstream.h @@ -0,0 +1,57 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + Directory Stream + + When unpacking the contents of the archive are passed into a directory + stream class for analysis and processing. The class controls all aspects + of actually writing the directory stream from disk. The low level + archive handlers are only responsible for decoding the archive format + and sending events (via method calls) to the specified directory + stream. + + When unpacking a real file the archive handler is passed back a file + handle to write the data to, this is to support strange + archives+unpacking methods. If that fd is -1 then the file data is + simply ignored. + + The provided defaults do the 'Right Thing' for a normal unpacking + process (ie 'tar') + + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_DIRSTREAM_H +#define PKGLIB_DIRSTREAM_H + +#include <apt-pkg/macros.h> + +class pkgDirStream +{ + public: + + // All possible information about a component + struct Item + { + enum Type_t {File, HardLink, SymbolicLink, CharDevice, BlockDevice, + Directory, FIFO} Type; + char *Name; + char *LinkTarget; + unsigned long Mode; + unsigned long UID; + unsigned long GID; + unsigned long long Size; + unsigned long MTime; + unsigned long Major; + unsigned long Minor; + }; + + virtual bool DoItem(Item &Itm,int &Fd); + virtual bool Fail(Item &Itm,int Fd); + virtual bool FinishedFile(Item &Itm,int Fd); + virtual bool Process(Item &/*Itm*/,const unsigned char * /*Data*/, + unsigned long long /*Size*/,unsigned long long /*Pos*/) {return true;}; + virtual ~pkgDirStream() {}; +}; + +#endif |