// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: writer.h,v 1.5 2003/12/26 20:08:56 mdz 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::cout;
using std::endl;
using std::vector;
+using std::map;
class FTWScanner
{
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)
{
virtual bool DoPackage(string FileName) = 0;
bool RecursiveScan(string Dir);
bool LoadFileList(string BaseDir,string File);
- bool ClearPatterns() { Patterns.clear(); };
- bool AddPattern(string Pattern) { Patterns.push_back(Pattern); };
+ void ClearPatterns() { Patterns.clear(); };
+ void AddPattern(string Pattern) { Patterns.push_back(Pattern); };
bool SetExts(string Vals);
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,string ExtOverrides=string());
+ PackagesWriter(string DB,string Overrides,string ExtOverrides=string(),
+ string Arch=string());
virtual ~PackagesWriter() {};
};
public:
ReleaseWriter(string DB);
virtual bool DoPackage(string FileName);
-protected:
+ void Finish();
+
+ FILE *Output;
// General options
string PathPrefix;
string DirStrip;
- FILE *Output;
+
+protected:
+ struct CheckSum
+ {
+ string MD5;
+ string SHA1;
+ string SHA256;
+ // Limited by FileFd::Size()
+ unsigned long size;
+ ~CheckSum() {};
+ };
+ map<string,struct CheckSum> CheckSums;
};
#endif