mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:09:42 +02:00
* only return an error if locking a file fails when the file is already
locked, but not when another error occurs (such as EsysNOLCK, because this error may always be returned if the kernel doesn't support locking, in which case programs such as fpcmake no longer work on such systems) git-svn-id: trunk@14350 -
This commit is contained in:
parent
4fd2aa297a
commit
722d48c8c2
@ -343,6 +343,7 @@ var
|
||||
lockop: cint;
|
||||
lockres: cint;
|
||||
closeres: cint;
|
||||
lockerr: cint;
|
||||
begin
|
||||
DoFileLocking:=Handle;
|
||||
{$ifdef beos}
|
||||
@ -392,7 +393,13 @@ begin
|
||||
lockres:=fpflock(Handle,lockop);
|
||||
until (lockres=0) or
|
||||
(fpgeterrno<>ESysEIntr);
|
||||
if (lockres<>0) then
|
||||
lockerr:=fpgeterrno;
|
||||
{ Only return an error if locks are working and the file was already
|
||||
locked. Not if locks are simply unsupported (e.g., on Angstrom Linux
|
||||
you always get ESysNOLCK in the default configuration) }
|
||||
if (lockres<>0) and
|
||||
((lockerr=ESysEAGAIN) or
|
||||
(lockerr=EsysEDEADLK)) then
|
||||
begin
|
||||
repeat
|
||||
closeres:=FpClose(Handle);
|
||||
|
Loading…
Reference in New Issue
Block a user