#ifndef FILES_H
#define FILES_H
#include <map>
#include <string>
#include <vector>
#include <sys/types.h>
using namespace std;
enum FileOpType {
FILE_OP_COPY = 0,
FILE_OP_REMOVE,
FILE_OP_STRIP
};
struct FileRecord
{
FileRecord();
string listFile;
int listLine;
string sourceBase;
string sourceName;
string sourcePath;
bool sourceIsDir;
time_t sourceMod;
off_t sourceSize;
FileOpType fileOp;
string outName;
string outPath;
off_t outSize;
time_t outMod;
bool outIsDir;
unsigned int mode;
};
int read_list_file(const string& filename,
const map<string, string>& variables,
vector<FileRecord>* files,
vector<string>* excludes);
int locate(FileRecord* rec, const vector<string>& search);
void stat_out(const string& base, FileRecord* rec);
string dir_part(const string& filename);
int list_dir(const FileRecord& rec, const vector<string>& excludes,
vector<FileRecord>* files);
#endif // FILES_H