if (snap == snapshots.end())
throw IllegalSnapshotException();
- snap->setDescription(description);
- snap->setCleanup(cleanup);
- snap->setUserdata(userdata);
- snap->flushInfo();
+ snapper->modifySnapshot(snap, description, cleanup, userdata);
DBus::MessageMethodReturn reply(msg);
Snapper* snapper = it->getSnapper();
- Snapshots::iterator snap1 = snapper->createSingleSnapshot(description);
- snap1->setUid(conn.get_unix_userid(msg));
- snap1->setCleanup(cleanup);
- snap1->setUserdata(userdata);
- snap1->flushInfo();
+ Snapshots::iterator snap1 = snapper->createSingleSnapshot(conn.get_unix_userid(msg),
+ description, cleanup, userdata);
DBus::MessageMethodReturn reply(msg);
Snapper* snapper = it->getSnapper();
- Snapshots::iterator snap1 = snapper->createPreSnapshot(description);
- snap1->setUid(conn.get_unix_userid(msg));
- snap1->setCleanup(cleanup);
- snap1->setUserdata(userdata);
- snap1->flushInfo();
+ Snapshots::iterator snap1 = snapper->createPreSnapshot(conn.get_unix_userid(msg), description,
+ cleanup, userdata);
DBus::MessageMethodReturn reply(msg);
Snapshots::iterator snap1 = snapshots.find(pre_num);
- Snapshots::iterator snap2 = snapper->createPostSnapshot(description, snap1);
- snap2->setUid(conn.get_unix_userid(msg));
- snap2->setCleanup(cleanup);
- snap2->setUserdata(userdata);
- snap2->flushInfo();
+ Snapshots::iterator snap2 = snapper->createPostSnapshot(snap1, conn.get_unix_userid(msg),
+ description, cleanup, userdata);
bool tmp;
if (it->getConfigInfo().getValue("BACKGROUND_COMPARISON", tmp) && tmp)
Snapshots::iterator
Snapper::createSingleSnapshot(string description)
{
- return snapshots.createSingleSnapshot(description);
+ return snapshots.createSingleSnapshot(0, description, "", map<string, string>());
}
Snapshots::iterator
Snapper::createPreSnapshot(string description)
{
- return snapshots.createPreSnapshot(description);
+ return snapshots.createPreSnapshot(0, description, "", map<string, string>());
}
Snapshots::iterator
Snapper::createPostSnapshot(string description, Snapshots::const_iterator pre)
{
- return snapshots.createPostSnapshot(description, pre);
+ return snapshots.createPostSnapshot(pre, 0, description, "", map<string, string>());
+ }
+
+
+ Snapshots::iterator
+ Snapper::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata)
+ {
+ return snapshots.createSingleSnapshot(uid, description, cleanup, userdata);
+ }
+
+
+
+ Snapshots::iterator
+ Snapper::createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata)
+ {
+ return snapshots.createPreSnapshot(uid, description, cleanup, userdata);
+ }
+
+
+ Snapshots::iterator
+ Snapper::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description,
+ const string& cleanup, const map<string, string>& userdata)
+ {
+ return snapshots.createPostSnapshot(pre, uid, description, cleanup, userdata);
+ }
+
+
+ void
+ Snapper::modifySnapshot(Snapshots::iterator snapshot, const string& description,
+ const string& cleanup, const map<string, string>& userdata)
+ {
+ snapshots.modifySnapshot(snapshot, description, cleanup, userdata);
}
Snapshots::const_iterator getSnapshotCurrent() const;
- Snapshots::iterator createSingleSnapshot(string description);
- Snapshots::iterator createPreSnapshot(string description);
- Snapshots::iterator createPostSnapshot(string description, Snapshots::const_iterator pre);
+ Snapshots::iterator createSingleSnapshot(string description) __attribute__ ((deprecated));
+ Snapshots::iterator createPreSnapshot(string description) __attribute__ ((deprecated));
+ Snapshots::iterator createPostSnapshot(string description, Snapshots::const_iterator pre) __attribute__ ((deprecated));
+
+ Snapshots::iterator createSingleSnapshot(uid_t uid, const string& description,
+ const string& cleanup,
+ const map<string, string>& userdata);
+ Snapshots::iterator createPreSnapshot(uid_t uid, const string& description,
+ const string& cleanup,
+ const map<string, string>& userdata);
+ Snapshots::iterator createPostSnapshot(Snapshots::const_iterator pre, uid_t uid,
+ const string& description, const string& cleanup,
+ const map<string, string>& userdata);
+
+ void modifySnapshot(Snapshots::iterator snapshot, const string& description,
+ const string& cleanup, const map<string, string>& userdata);
void deleteSnapshot(Snapshots::iterator snapshot);
}
+ void
+ Snapshots::checkUserdata(const map<string, string>& userdata) const
+ {
+ for (map<string, string>::const_iterator it = userdata.begin(); it != userdata.end(); ++it)
+ {
+ if (it->first.empty() || it->first.find_first_of(",=") != string::npos)
+ throw InvalidUserdataException();
+
+ if (it->second.find_first_of(",=") != string::npos)
+ throw InvalidUserdataException();
+ }
+ }
+
+
void
Snapshots::initialize()
{
Snapshots::iterator
Snapshots::createSingleSnapshot(string description)
{
+ return createSingleSnapshot(0, description, "", map<string, string>());
+ }
+
+
+ Snapshots::iterator
+ Snapshots::createPreSnapshot(string description)
+ {
+ return createPreSnapshot(0, description, "", map<string, string>());
+ }
+
+
+ Snapshots::iterator
+ Snapshots::createPostSnapshot(string description, Snapshots::const_iterator pre)
+ {
+ return createPostSnapshot(pre, 0, description, "", map<string, string>());
+ }
+
+
+ Snapshots::iterator
+ Snapshots::createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata)
+ {
+ checkUserdata(userdata);
+
Snapshot snapshot(snapper, SINGLE, nextNumber(), time(NULL));
+ snapshot.uid = uid;
snapshot.description = description;
- snapshot.info_modified = true;
+ snapshot.cleanup = cleanup;
+ snapshot.userdata = userdata;
return createHelper(snapshot);
}
Snapshots::iterator
- Snapshots::createPreSnapshot(string description)
+ Snapshots::createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata)
{
+ checkUserdata(userdata);
+
Snapshot snapshot(snapper, PRE, nextNumber(), time(NULL));
+ snapshot.uid = uid;
snapshot.description = description;
- snapshot.info_modified = true;
+ snapshot.cleanup = cleanup;
+ snapshot.userdata = userdata;
return createHelper(snapshot);
}
Snapshots::iterator
- Snapshots::createPostSnapshot(string description, Snapshots::const_iterator pre)
+ Snapshots::createPostSnapshot(Snapshots::const_iterator pre, uid_t uid, const string& description,
+ const string& cleanup, const map<string, string>& userdata)
{
if (pre == entries.end() || pre->isCurrent() || pre->getType() != PRE ||
findPost(pre) != entries.end())
throw IllegalSnapshotException();
+ checkUserdata(userdata);
+
Snapshot snapshot(snapper, POST, nextNumber(), time(NULL));
- snapshot.description = description;
snapshot.pre_num = pre->getNum();
- snapshot.info_modified = true;
+ snapshot.uid = uid;
+ snapshot.description = description;
+ snapshot.cleanup = cleanup;
+ snapshot.userdata = userdata;
return createHelper(snapshot);
}
try
{
- snapshot.flushInfo();
+ snapshot.writeInfo();
}
catch (const IOErrorException& e)
{
}
+ void
+ Snapshots::modifySnapshot(iterator snapshot, const string& description, const string& cleanup,
+ const map<string, string>& userdata)
+ {
+ if (snapshot == entries.end() || snapshot->isCurrent())
+ throw IllegalSnapshotException();
+
+ checkUserdata(userdata);
+
+ snapshot->description = description;
+ snapshot->cleanup = cleanup;
+ snapshot->userdata = userdata;
+
+ snapshot->writeInfo();
+ }
+
+
void
Snapshots::deleteSnapshot(iterator snapshot)
{
/*
- * Copyright (c) 2011 Novell, Inc.
+ * Copyright (c) [2011-2013] Novell, Inc.
*
* All Rights Reserved.
*
time_t getDate() const { return date; }
- void setUid(uid_t uid);
+ void setUid(uid_t uid) __attribute__ ((deprecated));
uid_t getUid() const { return uid; }
unsigned int getPreNum() const { return pre_num; }
- void setDescription(const string& description);
+ void setDescription(const string& description) __attribute__ ((deprecated));
string getDescription() const { return description; }
- void setCleanup(const string& cleanup);
+ void setCleanup(const string& cleanup) __attribute__ ((deprecated));
string getCleanup() const { return cleanup; }
- void setUserdata(const map<string, string>& userdata);
+ void setUserdata(const map<string, string>& userdata) __attribute__ ((deprecated));
map<string, string> getUserdata() const { return userdata; }
- void flushInfo();
+ void flushInfo() __attribute__ ((deprecated));
string snapshotDir() const;
void check() const;
- iterator createSingleSnapshot(string description);
- iterator createPreSnapshot(string description);
- iterator createPostSnapshot(string description, const_iterator pre);
+ void checkUserdata(const map<string, string>& userdata) const;
+
+ iterator createSingleSnapshot(string description) __attribute__ ((deprecated));
+ iterator createPreSnapshot(string description) __attribute__ ((deprecated));
+ iterator createPostSnapshot(string description, const_iterator pre) __attribute__ ((deprecated));
+
+ iterator createSingleSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata);
+ iterator createPreSnapshot(uid_t uid, const string& description, const string& cleanup,
+ const map<string, string>& userdata);
+ iterator createPostSnapshot(const_iterator pre, uid_t uid, const string& description,
+ const string& cleanup, const map<string, string>& userdata);
iterator createHelper(Snapshot& snapshot);
+ void modifySnapshot(iterator snapshot, const string& description, const string& cleanup,
+ const map<string, string>& userdata);
+
void deleteSnapshot(iterator snapshot);
unsigned int nextNumber();