|
|
|
@ -1398,20 +1398,20 @@ int sqliteOsReadLock(OsFile *id){
|
|
|
|
|
params.ioParam.ioRefNum = id->refNumRF;
|
|
|
|
|
params.ioParam.ioPosMode = fsFromStart;
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
while( cnt-->0 && (res = PBLockRangeSync(¶ms))!=noErr ){
|
|
|
|
|
UInt32 finalTicks;
|
|
|
|
|
Delay(1, &finalTicks); /* 1/60 sec */
|
|
|
|
|
}
|
|
|
|
|
if( res == noErr ){
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE+1;
|
|
|
|
|
params.ioParam.ioRetqCount = N_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioReqCount = N_LOCKBYTE;
|
|
|
|
|
PBUnlockRangeSync(¶ms);
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE+lk;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
res = PBLockRangeSync(¶ms);
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
PBUnlockRangeSync(¶ms);
|
|
|
|
|
}
|
|
|
|
|
if( res == noErr ){
|
|
|
|
@ -1504,24 +1504,24 @@ int sqliteOsWriteLock(OsFile *id){
|
|
|
|
|
params.ioParam.ioRefNum = id->refNumRF;
|
|
|
|
|
params.ioParam.ioPosMode = fsFromStart;
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
while( cnt-->0 && (res = PBLockRangeSync(¶ms))!=noErr ){
|
|
|
|
|
UInt32 finalTicks;
|
|
|
|
|
Delay(1, &finalTicks); /* 1/60 sec */
|
|
|
|
|
}
|
|
|
|
|
if( res == noErr ){
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE + id->locked;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
if( id->locked==0
|
|
|
|
|
|| PBUnlockRangeSync(¶ms)==noErr ){
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE+1;
|
|
|
|
|
params.ioParam.ioRetqCount = N_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioReqCount = N_LOCKBYTE;
|
|
|
|
|
res = PBLockRangeSync(¶ms);
|
|
|
|
|
}else{
|
|
|
|
|
res = afpRangeNotLocked;
|
|
|
|
|
}
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
PBUnlockRangeSync(¶ms);
|
|
|
|
|
}
|
|
|
|
|
if( res == noErr ){
|
|
|
|
@ -1611,13 +1611,13 @@ int sqliteOsUnlock(OsFile *id){
|
|
|
|
|
rc = SQLITE_OK;
|
|
|
|
|
}else if( id->locked<0 ){
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE+1;
|
|
|
|
|
params.ioParam.ioRetqCount = N_LOCKBYTE;
|
|
|
|
|
params.ioParam.ioReqCount = N_LOCKBYTE;
|
|
|
|
|
PBUnlockRangeSync(¶ms);
|
|
|
|
|
rc = SQLITE_OK;
|
|
|
|
|
id->locked = 0;
|
|
|
|
|
}else{
|
|
|
|
|
params.ioParam.ioPosOffset = FIRST_LOCKBYTE+id->locked;
|
|
|
|
|
params.ioParam.ioRetqCount = 1;
|
|
|
|
|
params.ioParam.ioReqCount = 1;
|
|
|
|
|
PBUnlockRangeSync(¶ms);
|
|
|
|
|
rc = SQLITE_OK;
|
|
|
|
|
id->locked = 0;
|
|
|
|
|