summaryrefslogtreecommitdiffstats
path: root/src/vsession.cpp
diff options
context:
space:
mode:
authorNils Schwabe2014-03-06 17:18:26 +0100
committerNils Schwabe2014-03-06 17:18:26 +0100
commit821b8abe4d40227ada5bf2a3852dcff440bb53e3 (patch)
tree00dd62dbc3af40f85d0dd9e4d984441802b3fb8d /src/vsession.cpp
parentvmchooser is now able to get vsessions from a given url (diff)
downloadvmchooser2-821b8abe4d40227ada5bf2a3852dcff440bb53e3.tar.gz
vmchooser2-821b8abe4d40227ada5bf2a3852dcff440bb53e3.tar.xz
vmchooser2-821b8abe4d40227ada5bf2a3852dcff440bb53e3.zip
added backup file functionallity
Diffstat (limited to 'src/vsession.cpp')
-rw-r--r--src/vsession.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/vsession.cpp b/src/vsession.cpp
index 8134bc6..9d3cadb 100644
--- a/src/vsession.cpp
+++ b/src/vsession.cpp
@@ -305,6 +305,10 @@ QList<Session*> VSession::readXmlFile(const QString& filepath) {
QDomDocument doc;
QFile file(filepath);
+ QString backup_filename = "/tmp/vmchooser2_backup.xml";
+ QFile backup_file(backup_filename);
+
+
if (!file.open(QIODevice::ReadOnly)) {
if (debugMode) {
qDebug() << "Cannot read file: " << file.fileName();
@@ -315,9 +319,36 @@ QList<Session*> VSession::readXmlFile(const QString& filepath) {
if (debugMode) {
qDebug() << "XML file not valid: " << file.fileName();
}
- file.close();
- return retval;
+
+ file.close();
+
+ // try to use backup file
+ if (!backup_file.open(QIODevice::ReadOnly)) {
+ if (debugMode) {
+ qDebug() << "Cannot read backup file " << backup_filename << " either";
+ }
+ return retval;
+ }
+
+ if (!doc.setContent(&backup_file)) {
+ if (debugMode) {
+ qDebug() << "XML file not valid: " << backup_file.fileName();
+ }
+ backup_file.close();
+ return retval;
+ }
+
+ if (debugMode) {
+ qDebug() << "Used backup file " << backup_filename;
+ }
+
+ backup_file.close();
+ } else {
+ // file is valid --> create backup file
+ QFile::remove(backup_filename);
+ QFile::copy(filepath, backup_filename);
}
+
file.close();
QString dirName(QFileInfo(filepath).dir().absolutePath());