From: Arvin Schnell Date: Mon, 14 Feb 2011 11:46:32 +0000 (+0100) Subject: - internal restructuring X-Git-Tag: v0.1.3~489 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=796977baaf5d0e80765d8ae07a2b3fb03333321e;p=thirdparty%2Fsnapper.git - internal restructuring --- diff --git a/snapper/Factory.cc b/snapper/Factory.cc index e310164b..1b24d8a5 100644 --- a/snapper/Factory.cc +++ b/snapper/Factory.cc @@ -41,14 +41,6 @@ namespace snapper } - Snapper* - getSnapper() - { - assert(haha.get()); - return haha.get(); - } - - void deleteSnapper(Snapper* s) { diff --git a/snapper/Factory.h b/snapper/Factory.h index 97666f3f..3eb3bdb1 100644 --- a/snapper/Factory.h +++ b/snapper/Factory.h @@ -20,12 +20,16 @@ */ -#include "snapper/Snapper.h" +#ifndef FACTORY_H +#define FACTORY_H namespace snapper { + class Snapper; + + // Only one Snapper can be created at a time. Snapper* createSnapper(); @@ -33,3 +37,6 @@ namespace snapper void deleteSnapper(Snapper*); } + + +#endif diff --git a/snapper/File.cc b/snapper/File.cc index a5a3335f..0d4bf4ef 100644 --- a/snapper/File.cc +++ b/snapper/File.cc @@ -39,13 +39,6 @@ namespace snapper { - // TODO - Snapper* getSnapper(); - - - inline Snapshots::const_iterator getSnapshot1() { return getSnapper()->getSnapshot1(); } - inline Snapshots::const_iterator getSnapshot2() { return getSnapper()->getSnapshot2(); } - std::ostream& operator<<(std::ostream& s, const File& file) { @@ -65,9 +58,11 @@ namespace snapper struct AppendHelper { - AppendHelper(vector& entries) : entries(entries) {} + AppendHelper(const Snapper* snapper, vector& entries) + : snapper(snapper), entries(entries) {} void operator()(const string& name, unsigned int status) - { entries.push_back(File(name, status)); } + { entries.push_back(File(snapper, name, status)); } + const Snapper* snapper; vector& entries; }; @@ -75,24 +70,25 @@ namespace snapper void Files::create() { - y2mil("num1:" << getSnapshot1()->getNum() << " num2:" << getSnapshot2()->getNum()); + y2mil("num1:" << snapper->getSnapshot1()->getNum() << " num2:" << + snapper->getSnapshot2()->getNum()); - if (getSnapper()->getCompareCallback()) - getSnapper()->getCompareCallback()->start(); + if (snapper->getCompareCallback()) + snapper->getCompareCallback()->start(); #if 1 - cmpdirs_cb_t cb = AppendHelper(entries); + cmpdirs_cb_t cb = AppendHelper(snapper, entries); #else - cmpdirs_cb_t cb = [&entries](const string& name, unsigned int status) { - entries.push_back(File(name, status)); + cmpdirs_cb_t cb = [&snapper, &entries](const string& name, unsigned int status) { + entries.push_back(File(snapper, name, status)); }; #endif - cmpDirs(getSnapshot1()->snapshotDir(), getSnapshot2()->snapshotDir(), cb); + cmpDirs(snapper->getSnapshot1()->snapshotDir(), snapper->getSnapshot2()->snapshotDir(), cb); sort(entries.begin(), entries.end()); - if (getSnapper()->getCompareCallback()) - getSnapper()->getCompareCallback()->stop(); + if (snapper->getCompareCallback()) + snapper->getCompareCallback()->stop(); y2mil("found " << entries.size() << " lines"); } @@ -101,12 +97,13 @@ namespace snapper bool Files::load() { - y2mil("num1:" << getSnapshot1()->getNum() << " num2:" << getSnapshot2()->getNum()); + y2mil("num1:" << snapper->getSnapshot1()->getNum() << " num2:" << + snapper->getSnapshot2()->getNum()); - assert(!getSnapshot1()->isCurrent() && !getSnapshot2()->isCurrent()); + assert(!snapper->getSnapshot1()->isCurrent() && !snapper->getSnapshot2()->isCurrent()); - string input = getSnapshot2()->baseDir() + "/filelist-" + - decString(getSnapshot1()->getNum()) + ".txt"; + string input = snapper->getSnapshot2()->baseDir() + "/filelist-" + + decString(snapper->getSnapshot1()->getNum()) + ".txt"; FILE* file = fopen(input.c_str(), "r"); if (file == NULL) @@ -124,7 +121,7 @@ namespace snapper string name = string(line, 5, strlen(line) - 6); - File file(name, stringToStatus(string(line, 0, 4))); + File file(snapper, name, stringToStatus(string(line, 0, 4))); entries.push_back(file); } @@ -143,12 +140,12 @@ namespace snapper bool Files::save() { - y2mil("num1:" << getSnapshot1()->getNum() << " num2:" << getSnapshot2()->getNum()); + y2mil("num1:" << snapper->getSnapshot1()->getNum() << " num2:" << snapper->getSnapshot2()->getNum()); - assert(!getSnapshot1()->isCurrent() && !getSnapshot2()->isCurrent()); + assert(!snapper->getSnapshot1()->isCurrent() && !snapper->getSnapshot2()->isCurrent()); - string output = getSnapshot2()->baseDir() + "/filelist-" + - decString(getSnapshot1()->getNum()) + ".txt"; + string output = snapper->getSnapshot2()->baseDir() + "/filelist-" + + decString(snapper->getSnapshot1()->getNum()) + ".txt"; char* tmp_name = (char*) malloc(output.length() + 12); strcpy(tmp_name, output.c_str()); @@ -177,7 +174,7 @@ namespace snapper { entries.clear(); - if (getSnapshot1()->isCurrent() || getSnapshot2()->isCurrent()) + if (snapper->getSnapshot1()->isCurrent() || snapper->getSnapshot2()->isCurrent()) { create(); } @@ -260,16 +257,16 @@ namespace snapper switch (loc) { case LOC_PRE: - return getSnapshot1()->snapshotDir() + name; + return snapper->getSnapshot1()->snapshotDir() + name; case LOC_POST: - return getSnapshot2()->snapshotDir() + name; + return snapper->getSnapshot2()->snapshotDir() + name; case LOC_SYSTEM: - if (getSnapper()->rootDir() == "/") + if (snapper->rootDir() == "/") return name; else - return getSnapper()->rootDir() + name; + return snapper->rootDir() + name; } return "error"; diff --git a/snapper/File.h b/snapper/File.h index 2d5faae9..b65ac65c 100644 --- a/snapper/File.h +++ b/snapper/File.h @@ -34,6 +34,9 @@ namespace snapper using std::vector; + class Snapper; + + enum StatusFlags { CREATED = 1, DELETED = 2, TYPE = 4, CONTENT = 8, PERMISSIONS = 16, USER = 32, @@ -55,9 +58,9 @@ namespace snapper { public: - File(const string& name, unsigned int pre_to_post_status) - : name(name), pre_to_post_status(pre_to_post_status), pre_to_system_status(-1), - post_to_system_status(-1), rollback(false) + File(const Snapper* snapper, const string& name, unsigned int pre_to_post_status) + : snapper(snapper), name(name), pre_to_post_status(pre_to_post_status), + pre_to_system_status(-1), post_to_system_status(-1), rollback(false) {} const string& getName() const { return name; } @@ -79,6 +82,8 @@ namespace snapper private: + const Snapper* snapper; + string name; unsigned int pre_to_post_status; @@ -102,7 +107,7 @@ namespace snapper friend class Snapper; - Files() {} + Files(const Snapper* snapper) : snapper(snapper) {} typedef vector::iterator iterator; typedef vector::const_iterator const_iterator; @@ -126,6 +131,8 @@ namespace snapper bool doRollback(); + const Snapper* snapper; + vector entries; }; diff --git a/snapper/Snapper.cc b/snapper/Snapper.cc index 7c3908db..ea5c6a7c 100644 --- a/snapper/Snapper.cc +++ b/snapper/Snapper.cc @@ -41,7 +41,7 @@ namespace snapper Snapper::Snapper() - : snapshots(this), compare_callback(NULL) + : snapshots(this), files(this), compare_callback(NULL) { y2mil("Snapper constructor"); diff --git a/snapper/Snapshot.h b/snapper/Snapshot.h index 418a1957..87aed299 100644 --- a/snapper/Snapshot.h +++ b/snapper/Snapshot.h @@ -48,7 +48,7 @@ namespace snapper friend class Snapshots; - Snapshot(const Snapper* s) : snapper(s), type(SINGLE), num(0), pre_num(0) {} + Snapshot(const Snapper* snapper) : snapper(snapper), type(SINGLE), num(0), pre_num(0) {} SnapshotType getType() const { return type; } @@ -100,7 +100,7 @@ namespace snapper friend class Snapper; - Snapshots(const Snapper* s) : snapper(s) {} + Snapshots(const Snapper* snapper) : snapper(snapper) {} typedef list::iterator iterator; typedef list::const_iterator const_iterator;