20 #include "tdefilelock.h" 29 KFileLock::KFileLock(
int fd)
30 : _fd(fd), _locked(false)
35 kdDebug(11002) <<
"lock fd=" << _fd << endl;
40 struct flock lock_data;
41 lock_data.l_type = F_WRLCK;
42 lock_data.l_whence = SEEK_SET;
43 lock_data.l_start = lock_data.l_len = 0;
44 if ( fcntl(_fd, F_SETLK, &lock_data)==-1 ) {
45 if ( errno==EAGAIN )
return -2;
50 if ( flock (_fd, LOCK_EX|LOCK_NB)==-1 ) {
51 if ( errno==EWOULDBLOCK )
return -2;
55 if ( lockf(_fd, F_TLOCK, 0)==-1 ) {
56 if ( errno==EACCES )
return -2;
65 KFileLock::~KFileLock()
70 void KFileLock::unlock()
72 if ( !_locked )
return;
73 kdDebug(11002) <<
"unlock" << endl;
75 struct flock lock_data;
76 lock_data.l_type = F_UNLCK;
77 lock_data.l_whence = SEEK_SET;
78 lock_data.l_start = lock_data.l_len = 0;
79 (void)fcntl(_fd, F_SETLK, &lock_data);
82 lockf(_fd, F_ULOCK, 0);