1
// -*- mode: cpp; mode: fold -*-
3
// $Id: debfile.h,v 1.2 2001/02/20 07:03:17 jgg Exp $
4
/* ######################################################################
6
Debian Archive File (.deb)
8
This Class handles all the operations performed directly on .deb
9
files. It makes use of the AR and TAR classes to give the necessary
12
There are only two things that can be done with a raw package,
13
extract it's control information and extract the contents itself.
15
This should probably subclass an as-yet unwritten super class to
16
produce a generic archive mechanism.
18
The memory control file extractor is useful to extract a single file
19
into memory from the control.tar.gz
21
##################################################################### */
23
#ifndef PKGLIB_DEBFILE_H
24
#define PKGLIB_DEBFILE_H
27
#pragma interface "apt-pkg/debfile.h"
30
#include <apt-pkg/arfile.h>
31
#include <apt-pkg/database.h>
32
#include <apt-pkg/dirstream.h>
33
#include <apt-pkg/tagfile.h>
42
bool CheckMember(const char *Name);
47
class MemControlExtract;
49
bool ExtractControl(pkgDataBase &DB);
50
bool ExtractArchive(pkgDirStream &Stream);
51
pkgCache::VerIterator MergeControl(pkgDataBase &DB);
52
const ARArchive::Member *GotoMember(const char *Name);
53
inline FileFd &GetFile() {return File;};
55
debDebFile(FileFd &File);
58
class debDebFile::ControlExtract : public pkgDirStream
62
virtual bool DoItem(Item &Itm,int &Fd);
65
class debDebFile::MemControlExtract : public pkgDirStream
72
pkgTagSection Section;
76
// Members from DirStream
77
virtual bool DoItem(Item &Itm,int &Fd);
78
virtual bool Process(Item &Itm,const unsigned char *Data,
79
unsigned long Size,unsigned long Pos);
83
bool Read(debDebFile &Deb);
84
bool TakeControl(const void *Data,unsigned long Size);
86
MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {};
87
MemControlExtract(string Member) : IsControl(false), Control(0), Length(0), Member(Member) {};
88
~MemControlExtract() {delete [] Control;};