// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: writer.h,v 1.3 2001/05/29 04:08:09 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;
const char *OriginalPath;
char *RealPath;
bool ErrorPrinted;
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 ReadLink);
bool Delink(string &FileName,const char *OriginalPath,
- unsigned long &Bytes,struct stat &St);
+ unsigned long &Bytes,off_t FileSize);
inline void NewLine(unsigned Priority)
{
if (ErrorPrinted == false && Quiet <= Priority)
{
- cout << endl;
+ c1out << endl;
ErrorPrinted = true;
}
}
virtual bool DoPackage(string FileName) = 0;
bool RecursiveScan(string Dir);
bool LoadFileList(string BaseDir,string File);
+ void ClearPatterns() { Patterns.clear(); };
+ void AddPattern(string Pattern) { Patterns.push_back(Pattern); };
bool SetExts(string Vals);
FTWScanner();
- virtual ~FTWScanner() {delete [] RealPath; delete [] TmpExt;};
+ virtual ~FTWScanner() {delete [] RealPath;};
};
class PackagesWriter : public FTWScanner
// Some flags
bool DoMD5;
+ bool DoSHA1;
+ bool DoSHA256;
bool NoOverride;
bool DoContents;
string DirStrip;
FILE *Output;
struct CacheDB::Stats &Stats;
-
+ string Arch;
+
inline bool ReadOverride(string File) {return Over.ReadOverride(File);};
+ inline bool ReadExtraOverride(string File)
+ {return Over.ReadExtraOverride(File);};
virtual bool DoPackage(string FileName);
- PackagesWriter(string DB,string Overrides);
+ PackagesWriter(string DB,string Overrides,string ExtOverrides=string(),
+ string Arch=string());
virtual ~PackagesWriter() {};
};
FILE *Output;
struct CacheDB::Stats Stats;
-/* inline bool ReadBinOverride(string File) {return BOver.ReadOverride(File);};
- bool ReadSrcOverride(string File); // {return BOver.ReadOverride(File);};*/
virtual bool DoPackage(string FileName);
- SourcesWriter(string BOverrides,string SOverrides);
+ SourcesWriter(string BOverrides,string SOverrides,
+ string ExtOverrides=string());
virtual ~SourcesWriter() {free(Buffer);};
};
+class ReleaseWriter : public FTWScanner
+{
+public:
+ ReleaseWriter(string 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