Browse Source

+ Added flock for file locking

michael 27 years ago
parent
commit
0fb05fec2a
1 changed files with 43 additions and 2 deletions
  1. 43 2
      rtl/linux/linux.pp

+ 43 - 2
rtl/linux/linux.pp

@@ -1,5 +1,4 @@
 {
 {
-    $Id$
     This file is part of the Free Pascal run time library.
     This file is part of the Free Pascal run time library.
     Copyright (c) 1993,97 by Michael Van Canneyt,
     Copyright (c) 1993,97 by Michael Van Canneyt,
     member of the Free Pascal development team.
     member of the Free Pascal development team.
@@ -45,6 +44,13 @@ Const
 Const
 Const
   P_IN  = 1;
   P_IN  = 1;
   P_OUT = 2;
   P_OUT = 2;
+
+Const
+  LOCK_SH = 1;
+  LOCK_EX = 2;
+  LOCK_UN = 8;
+  LOCK_NB = 4;
+  
 Type
 Type
   Tpipe = array[1..2] of longint;
   Tpipe = array[1..2] of longint;
 
 
@@ -503,6 +509,9 @@ Function  Chmod(path:pathstr;Newmode:longint):boolean;
 Function  Utime(path:pathstr;utim:utimbuf):boolean;
 Function  Utime(path:pathstr;utim:utimbuf):boolean;
 Function  Access(Path:Pathstr ;mode:integer):boolean;
 Function  Access(Path:Pathstr ;mode:integer):boolean;
 Function  Umask(Mask:Integer):integer;
 Function  Umask(Mask:Integer):integer;
+Function  Flock (fd,mode : longint) : boolean;
+Function  Flock (var T : text;mode : longint) : boolean;
+Function  Flock (var F : File;mode : longint) : boolean;
 Function  FStat(Path:Pathstr;Var Info:stat):Boolean;
 Function  FStat(Path:Pathstr;Var Info:stat):Boolean;
 Function  FStat(Fd:longint;Var Info:stat):Boolean;
 Function  FStat(Fd:longint;Var Info:stat):Boolean;
 Function  FStat(var F:Text;Var Info:stat):Boolean;
 Function  FStat(var F:Text;Var Info:stat):Boolean;
@@ -1352,6 +1361,34 @@ end;
 
 
 
 
 
 
+Function  Flock (fd,mode : longint) : boolean;
+
+var sr : Syscallregs;
+begin
+  sr.reg2:=fd;
+  sr.reg3:=mode;
+  flock:=Syscall(Syscall_nr_flock,sr)=0;
+  LinuxError:=errno;
+end;
+
+
+
+Function Flock (var T : text;mode : longint) : boolean;
+
+begin
+  Flock:=Flock( TextRec(T).Handle,mode );
+end;
+
+
+
+Function  Flock (var F : File;mode : longint) : boolean;
+
+begin
+  Flock:=Flock(FileRec(F).Handle,mode);
+end;
+
+
+
 Function FStat(Path:Pathstr;Var Info:stat):Boolean;
 Function FStat(Path:Pathstr;Var Info:stat):Boolean;
 {
 {
   Get all information on a file, and return it in Info.
   Get all information on a file, and return it in Info.
@@ -3121,7 +3158,11 @@ End.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.3  1998-04-07 12:27:41  peter
+  Revision 1.4  1998-04-07 13:08:29  michael
+  + Added flock for file locking
+
+
+  Revision 1.3  1998/04/07 12:27:41  peter
     * fixed fexpand('..')
     * fixed fexpand('..')
 
 
   Revision 1.2  1998/04/04 17:07:17  michael
   Revision 1.2  1998/04/04 17:07:17  michael