#ifndef FILES_H
#define FILES_H

#include <map>
#include <string>
#include <vector>
#include <sys/types.h>

using namespace std;

struct FileRecord
{
    string listFile;
    int listLine;

    string sourceBase;
    string sourceName;
    string sourcePath;
    bool sourceIsDir;
    time_t sourceMod;

    string outName;
    string outPath;
    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
