1 // -*- mode: cpp; mode: fold -*-
3 // $Id: writer.h,v 1.5 2003/12/26 20:08:56 mdz Exp $
4 /* ######################################################################
8 The file writer classes. These write various types of output, sources,
11 ##################################################################### */
17 #pragma interface "writer.h"
27 #include "apt-ftparchive.h"
37 vector
<string
> Patterns
;
38 const char *OriginalPath
;
42 // Stuff for the delinker
45 static FTWScanner
*Owner
;
46 static int Scanner(const char *File
,const struct stat
*sb
,int Flag
);
48 bool Delink(string
&FileName
,const char *OriginalPath
,
49 unsigned long &Bytes
,struct stat
&St
);
51 inline void NewLine(unsigned 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 Dir
);
67 bool LoadFileList(string BaseDir
,string File
);
68 bool ClearPatterns() { Patterns
.clear(); };
69 bool AddPattern(string Pattern
) { Patterns
.push_back(Pattern
); };
70 bool SetExts(string Vals
);
73 virtual ~FTWScanner() {delete [] RealPath
;};
76 class PackagesWriter
: public FTWScanner
92 struct CacheDB::Stats
&Stats
;
94 inline bool ReadOverride(string File
) {return Over
.ReadOverride(File
);};
95 inline bool ReadExtraOverride(string File
)
96 {return Over
.ReadExtraOverride(File
);};
97 virtual bool DoPackage(string FileName
);
99 PackagesWriter(string DB
,string Overrides
,string ExtOverrides
=string());
100 virtual ~PackagesWriter() {};
103 class ContentsWriter
: public FTWScanner
113 struct CacheDB::Stats
&Stats
;
116 bool DoPackage(string FileName
,string Package
);
117 virtual bool DoPackage(string FileName
)
118 {return DoPackage(FileName
,string());};
119 bool ReadFromPkgs(string PkgFile
,string PkgCompress
);
121 void Finish() {Gen
.Print(Output
);};
122 inline bool ReadyDB(string DB
) {return Db
.ReadyDB(DB
);};
124 ContentsWriter(string DB
);
125 virtual ~ContentsWriter() {};
128 class SourcesWriter
: public FTWScanner
133 unsigned long BufSize
;
143 struct CacheDB::Stats Stats
;
145 virtual bool DoPackage(string FileName
);
147 SourcesWriter(string BOverrides
,string SOverrides
,
148 string ExtOverrides
=string());
149 virtual ~SourcesWriter() {free(Buffer
);};
152 class ReleaseWriter
: public FTWScanner
155 ReleaseWriter(string DB
);
156 virtual bool DoPackage(string FileName
);