]>
git.saurik.com Git - apt.git/blob - ftparchive/writer.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: writer.h,v 1.4.2.2 2003/12/26 22:55:43 mdz Exp $
4 /* ######################################################################
8 The file writer classes. These write various types of output, sources,
11 ##################################################################### */
25 #include "apt-ftparchive.h"
36 vector
<string
> Patterns
;
37 const char *OriginalPath
;
41 // Stuff for the delinker
44 static FTWScanner
*Owner
;
45 static int ScannerFTW(const char *File
,const struct stat
*sb
,int Flag
);
46 static int ScannerFile(const char *File
, bool const &ReadLink
);
48 bool Delink(string
&FileName
,const char *OriginalPath
,
49 unsigned long &Bytes
,off_t
const &FileSize
);
51 inline void NewLine(unsigned const &Priority
)
53 if (ErrorPrinted
== false && Quiet
<= Priority
)
62 unsigned long DeLinkLimit
;
63 string InternalPrefix
;
65 virtual bool DoPackage(string FileName
) = 0;
66 bool RecursiveScan(string
const &Dir
);
67 bool LoadFileList(string
const &BaseDir
,string
const &File
);
68 void ClearPatterns() { Patterns
.clear(); };
69 void AddPattern(string
const &Pattern
) { Patterns
.push_back(Pattern
); };
70 bool SetExts(string
const &Vals
);
73 virtual ~FTWScanner() {delete [] RealPath
;};
76 class PackagesWriter
: public FTWScanner
96 struct CacheDB::Stats
&Stats
;
99 inline bool ReadOverride(string
const &File
) {return Over
.ReadOverride(File
);};
100 inline bool ReadExtraOverride(string
const &File
)
101 {return Over
.ReadExtraOverride(File
);};
102 virtual bool DoPackage(string FileName
);
104 PackagesWriter(string
const &DB
,string
const &Overrides
,string
const &ExtOverrides
=string(),
105 string
const &Arch
=string());
106 virtual ~PackagesWriter() {};
109 class ContentsWriter
: public FTWScanner
119 struct CacheDB::Stats
&Stats
;
122 bool DoPackage(string FileName
,string Package
);
123 virtual bool DoPackage(string FileName
)
124 {return DoPackage(FileName
,string());};
125 bool ReadFromPkgs(string
const &PkgFile
,string
const &PkgCompress
);
127 void Finish() {Gen
.Print(Output
);};
128 inline bool ReadyDB(string
const &DB
) {return Db
.ReadyDB(DB
);};
130 ContentsWriter(string
const &DB
);
131 virtual ~ContentsWriter() {};
134 class SourcesWriter
: public FTWScanner
139 unsigned long BufSize
;
149 struct CacheDB::Stats Stats
;
151 virtual bool DoPackage(string FileName
);
153 SourcesWriter(string
const &BOverrides
,string
const &SOverrides
,
154 string
const &ExtOverrides
=string());
155 virtual ~SourcesWriter() {free(Buffer
);};
158 class ReleaseWriter
: public FTWScanner
161 ReleaseWriter(string
const &DB
);
162 virtual bool DoPackage(string FileName
);
176 // Limited by FileFd::Size()
180 map
<string
,struct CheckSum
> CheckSums
;