]>
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 ##################################################################### */
23 #include <sys/types.h>
28 #include "apt-ftparchive.h"
39 vector
<string
> Patterns
;
41 const char *OriginalPath
;
44 // Stuff for the delinker
47 static FTWScanner
*Owner
;
48 static int ScannerFTW(const char *File
,const struct stat
*sb
,int Flag
);
49 static int ScannerFile(const char *File
, bool const &ReadLink
);
51 bool Delink(string
&FileName
,const char *OriginalPath
,
52 unsigned long long &Bytes
,unsigned long long const &FileSize
);
54 inline void NewLine(unsigned const &Priority
)
56 if (ErrorPrinted
== false && Quiet
<= Priority
)
69 unsigned long DeLinkLimit
;
70 string InternalPrefix
;
72 virtual bool DoPackage(string FileName
) = 0;
73 bool RecursiveScan(string
const &Dir
);
74 bool LoadFileList(string
const &BaseDir
,string
const &File
);
75 void ClearPatterns() { Patterns
.clear(); };
76 void AddPattern(string
const &Pattern
) { Patterns
.push_back(Pattern
); };
77 void AddPattern(char const *Pattern
) { Patterns
.push_back(Pattern
); };
78 void AddPatterns(std::vector
<std::string
> const &patterns
) { Patterns
.insert(Patterns
.end(), patterns
.begin(), patterns
.end()); };
79 bool SetExts(string
const &Vals
);
81 FTWScanner(string
const &Arch
= string());
82 virtual ~FTWScanner() {};
87 class TranslationWriter
91 std::set
<string
> Included
;
92 unsigned short RefCounter
;
95 void IncreaseRefCounter() { ++RefCounter
; };
96 unsigned short DecreaseRefCounter() { return (RefCounter
== 0) ? 0 : --RefCounter
; };
97 unsigned short GetRefCounter() const { return RefCounter
; };
98 bool DoPackage(string
const &Pkg
, string
const &Desc
, string
const &MD5
);
100 TranslationWriter(string
const &File
, string
const &TransCompress
, mode_t
const &Permissions
);
101 TranslationWriter() : Comp(NULL
), Output(NULL
), RefCounter(0) {};
102 ~TranslationWriter();
105 class PackagesWriter
: public FTWScanner
116 bool LongDescription
;
122 struct CacheDB::Stats
&Stats
;
123 TranslationWriter
*TransWriter
;
125 inline bool ReadOverride(string
const &File
) {return Over
.ReadOverride(File
);};
126 inline bool ReadExtraOverride(string
const &File
)
127 {return Over
.ReadExtraOverride(File
);};
128 virtual bool DoPackage(string FileName
);
130 PackagesWriter(string
const &DB
,string
const &Overrides
,string
const &ExtOverrides
=string(),
131 string
const &Arch
=string());
132 virtual ~PackagesWriter() {};
135 class ContentsWriter
: public FTWScanner
145 struct CacheDB::Stats
&Stats
;
148 bool DoPackage(string FileName
,string Package
);
149 virtual bool DoPackage(string FileName
)
150 {return DoPackage(FileName
,string());};
151 bool ReadFromPkgs(string
const &PkgFile
,string
const &PkgCompress
);
153 void Finish() {Gen
.Print(Output
);};
154 inline bool ReadyDB(string
const &DB
) {return Db
.ReadyDB(DB
);};
156 ContentsWriter(string
const &DB
, string
const &Arch
= string());
157 virtual ~ContentsWriter() {};
160 class SourcesWriter
: public FTWScanner
166 unsigned long long BufSize
;
177 struct CacheDB::Stats Stats
;
179 virtual bool DoPackage(string FileName
);
181 SourcesWriter(string
const &DB
,string
const &BOverrides
,string
const &SOverrides
,
182 string
const &ExtOverrides
=string());
183 virtual ~SourcesWriter() {free(Buffer
);};
186 class ReleaseWriter
: public FTWScanner
189 ReleaseWriter(string
const &DB
);
190 virtual bool DoPackage(string FileName
);
205 // Limited by FileFd::Size()
206 unsigned long long size
;
209 map
<string
,struct CheckSum
> CheckSums
;