+++ /dev/null
-#include <QDebug>
-#include <QFile>
-#include <QRegularExpression>
-
-#include "file.h"
-
-#include "vymlock.h"
-
-VymLock::VymLock()
-{
- init();
-}
-
-VymLock::VymLock( const QString &fn )
-{
- init();
- mapPath = fn;
-}
-
-VymLock::~VymLock()
-{
- if ( state == lockedByMyself && !releaseLock())
- qWarning() << "Destructor VymLock: Removing LockFile failed";
-}
-
-void VymLock::init()
-{
- state = undefined;
-}
-
-bool VymLock::tryLock()
-{
- QFile lockFile( mapPath + ".lock");
- if ( lockFile.exists() )
- {
- // File is already locked
- if (debug) qDebug() << "VymLock::tryLock failed: LockFile exists";
-
- QString s;
- if (!loadStringFromDisk( mapPath, s) )
- qWarning( "Failed to read from existing lockFile");
- else
- {
- QRegularExpression re("^author:\\s\\\"(.*)\\\"$");
- re.setPatternOptions( QRegularExpression::MultilineOption );
- QRegularExpressionMatch match = re.match( s );
- if ( match.hasMatch() ) author = match.captured(1);
-
- re.setPattern("^host:\\s\\\"(.*)\\\"$");
- match = re.match( s );
- if ( match.hasMatch() ) host = match.captured(1);
- }
- state = lockedByOther;
- return false;
- }
-
- if (!lockFile.open(QFile::WriteOnly | QFile::Text))
- {
- if (debug) qWarning() << QString("VymLock::tryLock failed: Cannot open lockFile %1\n%2")
- .arg( mapPath + ".lock")
- .arg( lockFile.errorString() );
- state = notWritable;
- return false;
- }
-
- QString s;
- if (!author.isEmpty() ) s = QString( "author: \"%1\"\n").arg( author );
- if (!host.isEmpty() ) s += QString( "host: \"%1\"\n").arg( host );
-
- if (!s.isEmpty() )
- {
- QTextStream out( &lockFile );
- out.setCodec( "UTF-8" );
- out << s;
- }
-
- lockFile.close();
- state = lockedByMyself;
-
- return true;
-}
-
-VymLock::LockState VymLock::getState()
-{
- return state;
-}
-
-bool VymLock::removeLock()
-{
- QFile LockFile( mapPath + ".lock" );
- if (LockFile.remove() )
- return true;
- else
- return false;
-}
-
-bool VymLock::releaseLock()
-{
- if (state == lockedByMyself)
- {
- QFile LockFile( mapPath + ".lock" );
- if (LockFile.remove() )
- return true;
- }
- return false;
-}
-
-bool VymLock::rename( const QString &newMapPath)
-{
- QFile lockFile( mapPath + ".lock" );
-
- if ( lockFile.rename( newMapPath + ".lock") )
- {
- mapPath = newMapPath;
- return true;
- }
- return false;
-}
-
-void VymLock::setAuthor(const QString &s)
-{
- author = s;
-}
-
-QString VymLock::getAuthor()
-{
- return author;
-}
-
-void VymLock::setHost(const QString &s)
-{
- host = s;
-}
-
-QString VymLock::getHost()
-{
- return host;
-}
-void VymLock::setMapPath(const QString &s)
-{
- mapPath = s;
-}
-
-QString VymLock::getMapPath()
-{
- return mapPath;
-}