1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _WIN32
#include <fcntl.h>
#include <unistd.h>
#endif
#include "ScopedFileLock.h"
/**
* @brief lock fd
*
* Lock file descriptor fd for reading (write == false) or writing
* (write == true).
*/
ScopedFileLock::ScopedFileLock(int fd, bool write) : filedes(fd)
{
#ifndef _WIN32
struct flock lock;
lock.l_type = write ? F_WRLCK : F_RDLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(filedes, F_SETLKW, &lock)) {
// not a fatal error
//handleerror(0, "Could not lock config file", "DotfileHandler", 0);
}
#endif
}
/**
* @brief unlock fd
*/
ScopedFileLock::~ScopedFileLock()
{
#ifndef _WIN32
struct flock lock;
lock.l_type = F_UNLCK;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
if (fcntl(filedes, F_SETLKW, &lock)) {
// not a fatal error
//handleerror(0, "Could not unlock config file", "DotfileHandler", 0);
}
#endif
}
|