Bundle-OS2_default
view release on metacpan or search on metacpan
patches/diff_DBD-SQLite-0.28 view on Meta::CPAN
+ rc = (errno==EINVAL) ? SQLITE_NOLFS : SQLITE_BUSY;
+ else
+ rc = SQLITE_OK;
+ return rc;
+}
+# endif
+#endif
+
/*
** Change the status of the lock on the file "id" to be a readlock.
** If the file was write locked, then this reduces the lock to a read.
@@ -1139,16 +1206,8 @@ int sqliteOsReadLock(OsFile *id){
}
rc = SQLITE_OK;
}else if( id->locked || id->pLock->cnt==0 ){
- struct flock lock;
- int s;
- lock.l_type = F_RDLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = lock.l_len = 0L;
- s = fcntl(id->fd, F_SETLK, &lock);
- if( s!=0 ){
- rc = (errno==EINVAL) ? SQLITE_NOLFS : SQLITE_BUSY;
- }else{
- rc = SQLITE_OK;
+ rc = sqlite_flock(id->fd, sqlite_flock_rlock);
+ if (rc == SQLITE_OK) {
id->pLock->cnt = 1;
id->locked = 1;
}
@@ -1243,16 +1302,8 @@ int sqliteOsWriteLock(OsFile *id){
int rc;
sqliteOsEnterMutex();
if( id->pLock->cnt==0 || (id->pLock->cnt==1 && id->locked==1) ){
- struct flock lock;
- int s;
- lock.l_type = F_WRLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = lock.l_len = 0L;
- s = fcntl(id->fd, F_SETLK, &lock);
- if( s!=0 ){
- rc = (errno==EINVAL) ? SQLITE_NOLFS : SQLITE_BUSY;
- }else{
- rc = SQLITE_OK;
+ rc = sqlite_flock(id->fd, sqlite_flock_wlock);
+ if (rc == SQLITE_OK) {
id->pLock->cnt = -1;
id->locked = 1;
}
@@ -1355,18 +1406,9 @@ int sqliteOsUnlock(OsFile *id){
id->pLock->cnt--;
rc = SQLITE_OK;
}else{
- struct flock lock;
- int s;
- lock.l_type = F_UNLCK;
- lock.l_whence = SEEK_SET;
- lock.l_start = lock.l_len = 0L;
patches/diff_DBD-SQLite-0.28 view on Meta::CPAN
- if( s!=0 ){
- rc = (errno==EINVAL) ? SQLITE_NOLFS : SQLITE_BUSY;
- }else{
- rc = SQLITE_OK;
+ rc = sqlite_flock(id->fd, sqlite_flock_wlock);
+ if (rc == SQLITE_OK)
id->pLock->cnt = 0;
- }
}
sqliteOsLeaveMutex();
id->locked = 0;
( run in 0.508 second using v1.01-cache-2.11-cpan-49f99fa48dc )