// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: writer.h,v 1.4 2001/06/26 02:50:27 jgg Exp $
+// $Id: writer.h,v 1.4.2.2 2003/12/26 22:55:43 mdz Exp $
/* ######################################################################
Writer
#ifndef WRITER_H
#define WRITER_H
-#ifdef __GNUG__
-#pragma interface "writer.h"
-#endif
#include <string>
#include <stdio.h>
#include <iostream>
#include <vector>
+#include <map>
#include "cachedb.h"
#include "override.h"
using std::string;
using std::cout;
using std::endl;
+using std::vector;
+using std::map;
class FTWScanner
{
protected:
-
- char *TmpExt;
- const char *Ext[10];
+ vector<string> Patterns;
+ string Arch;
const char *OriginalPath;
- char *RealPath;
bool ErrorPrinted;
// Stuff for the delinker
bool NoLinkAct;
static FTWScanner *Owner;
- static int Scanner(const char *File,const struct stat *sb,int Flag);
+ static int ScannerFTW(const char *File,const struct stat *sb,int Flag);
+ static int ScannerFile(const char *File, bool const &ReadLink);
bool Delink(string &FileName,const char *OriginalPath,
- unsigned long &Bytes,struct stat &St);
+ unsigned long &Bytes,off_t const &FileSize);
- inline void NewLine(unsigned Priority)
+ inline void NewLine(unsigned const &Priority)
{
if (ErrorPrinted == false && Quiet <= Priority)
{
- cout << endl;
+ c1out << endl;
ErrorPrinted = true;
}
}
string InternalPrefix;
virtual bool DoPackage(string FileName) = 0;
- bool RecursiveScan(string Dir);
- bool LoadFileList(string BaseDir,string File);
- bool SetExts(string Vals);
+ bool RecursiveScan(string const &Dir);
+ bool LoadFileList(string const &BaseDir,string const &File);
+ void ClearPatterns() { Patterns.clear(); };
+ void AddPattern(string const &Pattern) { Patterns.push_back(Pattern); };
+ bool SetExts(string const &Vals);
- FTWScanner();
- virtual ~FTWScanner() {delete [] RealPath; delete [] TmpExt;};
+ FTWScanner(string const &Arch = string());
};
class PackagesWriter : public FTWScanner
// Some flags
bool DoMD5;
+ bool DoSHA1;
+ bool DoSHA256;
+ bool DoAlwaysStat;
bool NoOverride;
bool DoContents;
+ bool LongDescription;
// General options
string PathPrefix;
string DirStrip;
FILE *Output;
struct CacheDB::Stats &Stats;
-
- inline bool ReadOverride(string File) {return Over.ReadOverride(File);};
- inline bool ReadExtraOverride(string File)
+
+ inline bool ReadOverride(string const &File) {return Over.ReadOverride(File);};
+ inline bool ReadExtraOverride(string const &File)
{return Over.ReadExtraOverride(File);};
virtual bool DoPackage(string FileName);
- PackagesWriter(string DB,string Overrides,string ExtOverrides=string());
+ PackagesWriter(string const &DB,string const &Overrides,string const &ExtOverrides=string(),
+ string const &Arch=string());
virtual ~PackagesWriter() {};
};
bool DoPackage(string FileName,string Package);
virtual bool DoPackage(string FileName)
{return DoPackage(FileName,string());};
- bool ReadFromPkgs(string PkgFile,string PkgCompress);
+ bool ReadFromPkgs(string const &PkgFile,string const &PkgCompress);
void Finish() {Gen.Print(Output);};
- inline bool ReadyDB(string DB) {return Db.ReadyDB(DB);};
+ inline bool ReadyDB(string const &DB) {return Db.ReadyDB(DB);};
- ContentsWriter(string DB);
+ ContentsWriter(string const &DB, string const &Arch = string());
virtual ~ContentsWriter() {};
};
virtual bool DoPackage(string FileName);
- SourcesWriter(string BOverrides,string SOverrides,
- string ExtOverrides=string());
+ SourcesWriter(string const &BOverrides,string const &SOverrides,
+ string const &ExtOverrides=string());
virtual ~SourcesWriter() {free(Buffer);};
};
+class ReleaseWriter : public FTWScanner
+{
+public:
+ ReleaseWriter(string const &DB);
+ virtual bool DoPackage(string FileName);
+ void Finish();
+
+ FILE *Output;
+ // General options
+ string PathPrefix;
+ string DirStrip;
+
+protected:
+ struct CheckSum
+ {
+ string MD5;
+ string SHA1;
+ string SHA256;
+ // Limited by FileFd::Size()
+ unsigned long size;
+ ~CheckSum() {};
+ };
+ map<string,struct CheckSum> CheckSums;
+};
#endif