Bläddra i källkod

* some simple restructures

marco 22 år sedan
förälder
incheckning
e0c4a566cd
3 ändrade filer med 71 tillägg och 130 borttagningar
  1. 5 2
      rtl/unix/serial.pp
  2. 6 2
      rtl/unix/systhrds.pp
  3. 60 126
      rtl/unix/unix.pp

+ 5 - 2
rtl/unix/serial.pp

@@ -80,7 +80,7 @@ end;
 
 procedure SerFlush(Handle: TSerialHandle);
 begin
-  fdFlush(Handle);
+  fsync(Handle);
 end;
 
 function SerRead(Handle: TSerialHandle; var Buffer; Count: LongInt): LongInt;
@@ -215,7 +215,10 @@ end.
 
 {
   $Log$
-  Revision 1.8  2003-09-14 20:15:01  marco
+  Revision 1.9  2003-11-19 10:54:32  marco
+   * some simple restructures
+
+  Revision 1.8  2003/09/14 20:15:01  marco
    * Unix reform stage two. Remove all calls from Unix that exist in Baseunix.
 
   Revision 1.7  2002/09/07 16:01:27  peter

+ 6 - 2
rtl/unix/systhrds.pp

@@ -60,6 +60,7 @@ Uses BaseUnix,unix;
                        System dependent memory allocation
 *****************************************************************************}
 
+{
 {$ifndef BSD}
 
 Const
@@ -79,7 +80,7 @@ CONST
  {$ENTER ME}
 {$ENDIF}
 {$ENDIF}
-
+}
 {*****************************************************************************
                              Threadvar support
 *****************************************************************************}
@@ -380,7 +381,10 @@ initialization
 end.
 {
   $Log$
-  Revision 1.19  2003-11-18 22:36:12  marco
+  Revision 1.20  2003-11-19 10:54:32  marco
+   * some simple restructures
+
+  Revision 1.19  2003/11/18 22:36:12  marco
    * Last patch was ok, problem was somewhere else. Moved *BSD part of pthreads to freebsd/pthreads.inc
 
   Revision 1.18  2003/11/18 22:35:09  marco

+ 60 - 126
rtl/unix/unix.pp

@@ -18,45 +18,26 @@ Interface
 
 Uses UnixUtil,BaseUnix;
 
-{// i ostypes.inc}
 { Get Types and Constants }
 {$i sysconst.inc}
 {$i systypes.inc}
 
-{ Get System call numbers and error-numbers}
-{$i sysnr.inc}
+{Get error numbers, some more signal definitions and other OS dependant
+ types (that are not POSIX) }
 {$i errno.inc}
 {$I signal.inc}
 {$i ostypes.inc}
 
-{********************
-      Process
-********************}
-const
-  { For getting/setting priority }
-  Prio_Process = 0;
-  Prio_PGrp    = 1;
-  Prio_User    = 2;
-
-{$ifdef Solaris}
-  WNOHANG   = $100;
-  WUNTRACED = $4;
-{$ELSE}
-  WNOHANG   = $1;
-  WUNTRACED = $2;
-  __WCLONE  = $80000000;
-{$ENDIF}
-
 {********************
       File
 ********************}
 
 Const
-  P_IN  = 1;
+  P_IN  = 1;			// pipes (?)
   P_OUT = 2;
 
 Const
-  LOCK_SH = 1;
+  LOCK_SH = 1;			// flock constants ?
   LOCK_EX = 2;
   LOCK_UN = 8;
   LOCK_NB = 4;
@@ -70,30 +51,6 @@ Type
     next : pglob;
   end;
 
-const
-
-  { For File control mechanism }
-  F_GetFd  = 1;
-  F_SetFd  = 2;
-  F_GetFl  = 3;
-  F_SetFl  = 4;
-{$ifdef Solaris}
-  F_DupFd  = 0;
-  F_Dup2Fd = 9;
-  F_GetOwn = 23;
-  F_SetOwn = 24;
-  F_GetLk  = 14;
-  F_SetLk  = 6;
-  F_SetLkW = 7;
-  F_FreeSp = 11;
-{$else}
-  F_GetLk  = 5;
-  F_SetLk  = 6;
-  F_SetLkW = 7;
-  F_SetOwn = 8;
-  F_GetOwn = 9;
-{$endif}
-
 {********************
    IOCtl(TermIOS)
 ********************}
@@ -121,58 +78,57 @@ procedure ReadTimezoneFile(fn:string);
 function  GetTimezoneFile:string;
 
 Function  GetEpochTime: cint;
-procedure GetTime(var hour,min,sec,msec,usec:word);
-procedure GetTime(var hour,min,sec,sec100:word);
-procedure GetTime(var hour,min,sec:word);
-Procedure GetDate(Var Year,Month,Day:Word);
-Procedure GetDateTime(Var Year,Month,Day,hour,minute,second:Word);
-function  SetTime(Hour,Min,Sec:word) : Boolean;
-function  SetDate(Year,Month,Day:Word) : Boolean;
-function  SetDateTime(Year,Month,Day,hour,minute,second:Word) : Boolean;
+procedure GetTime     (var hour,min,sec,msec,usec:word);
+procedure GetTime     (var hour,min,sec,sec100:word);
+procedure GetTime     (var hour,min,sec:word);
+Procedure GetDate     (Var Year,Month,Day:Word);
+Procedure GetDateTime (Var Year,Month,Day,hour,minute,second:Word);
+function  SetTime     (Hour,Min,Sec:word) : Boolean;
+function  SetDate     (Year,Month,Day:Word) : Boolean;
+function  SetDateTime (Year,Month,Day,hour,minute,second:Word) : Boolean;
 
 {**************************
      Process Handling
 ***************************}
 
-function  CreateShellArgV(const prog:string):ppchar;
-function  CreateShellArgV(const prog:Ansistring):ppchar;
-Function Execv(const path:pathstr;args:ppchar):cint;
-Function Execv(const path: AnsiString;args:ppchar):cint;
-Function Execvp(Path: Pathstr;Args:ppchar;Ep:ppchar):cint;
-Function Execvp(Path: AnsiString; Args:ppchar;Ep:ppchar):cint;
-Function Execl (const Todo: String):cint;
-Function Execl (const Todo: Ansistring):cint;
-Function Execle(Todo: String;Ep:ppchar):cint;
-Function Execle(Todo: AnsiString;Ep:ppchar):cint;
-Function Execlp(Todo: string;Ep:ppchar):cint;
-Function Execlp(Todo: Ansistring;Ep:ppchar):cint;
+function CreateShellArgV (const prog:string):ppchar;
+function CreateShellArgV (const prog:Ansistring):ppchar;
 
-Function Shell (const Command:String):cint;
-Function Shell (const Command:AnsiString):cint;
+Function Execv   (const path:pathstr;args:ppchar):cint;
+Function Execv   (const path: AnsiString;args:ppchar):cint;
+Function Execvp  (Path: Pathstr;Args:ppchar;Ep:ppchar):cint;
+Function Execvp  (Path: AnsiString; Args:ppchar;Ep:ppchar):cint;
+Function Execl   (const Todo: String):cint;
+Function Execl   (const Todo: Ansistring):cint;
+Function Execle  (Todo: String;Ep:ppchar):cint;
+Function Execle  (Todo: AnsiString;Ep:ppchar):cint;
+Function Execlp  (Todo: string;Ep:ppchar):cint;
+Function Execlp  (Todo: Ansistring;Ep:ppchar):cint;
 
-{Clone for FreeBSD is copied from the LinuxThread port, and rfork based}
-//function  Clone(func:TCloneFunc;sp:pointer;flags:cint;args:pointer):cint;
-Function  WaitProcess(Pid:cint):cint; { like WaitPid(PID,@result,0) Handling of Signal interrupts (errno=EINTR), returning the Exitcode of Process (>=0) or -Status if terminated}
+Function Shell   (const Command:String):cint;
+Function Shell   (const Command:AnsiString):cint;
 
-Function WIFSTOPPED(Status: Integer): Boolean;
-Function W_EXITCODE(ReturnCode, Signal: Integer): Integer;
-Function W_STOPCODE(Signal: Integer): Integer;
+Function WaitProcess (Pid:cint):cint; { like WaitPid(PID,@result,0) Handling of Signal interrupts (errno=EINTR), returning the Exitcode of Process (>=0) or -Status if terminated}
+
+Function WIFSTOPPED (Status: Integer): Boolean;
+Function W_EXITCODE (ReturnCode, Signal: Integer): Integer;
+Function W_STOPCODE (Signal: Integer): Integer;
 
 {**************************
      File Handling
 ***************************}
 
-Function  fdFlush (fd : cint) : cint;
+Function  fsync (fd : cint) : cint;
 
-Function  Flock (fd,mode : cint)   : cint ;
-Function  Flock (var T : text;mode : cint) : cint;
-Function  Flock (var F : File;mode : cint) : cint;
+Function  Flock   (fd,mode : cint)   : cint ;
+Function  Flock   (var T : text;mode : cint) : cint;
+Function  Flock   (var F : File;mode : cint) : cint;
 
-Function  StatFS(Path:Pathstr;Var Info:tstatfs):cint;
-Function  fStatFS(Fd: cint;Var Info:tstatfs):cint;
+Function  StatFS  (Path:Pathstr;Var Info:tstatfs):cint;
+Function  fStatFS (Fd: cint;Var Info:tstatfs):cint;
 
-Function  SelectText(var T:Text;TimeOut :PTimeVal):cint;
-Function  SelectText(var T:Text;TimeOut :cint):cint;
+Function  SelectText (var T:Text;TimeOut :PTimeVal):cint;
+Function  SelectText (var T:Text;TimeOut :cint):cint;
 
 {**************************
    Directory Handling
@@ -185,14 +141,13 @@ function  TellDir(p:pdir):clong;
     Pipe/Fifo/Stream
 ***************************}
 
-Function  AssignPipe(var pipe_in,pipe_out:cint):cint;
-Function  AssignPipe(var pipe_in,pipe_out:text):cint;
-Function  AssignPipe(var pipe_in,pipe_out:file):cint;
-Function  PClose(Var F:text) : cint;
-Function  PClose(Var F:file) : cint;
-Function  POpen(var F:text;const Prog:String;rw:char):cint;
-Function  POpen(var F:file;const Prog:String;rw:char):cint;
-
+Function AssignPipe  (var pipe_in,pipe_out:cint):cint;
+Function AssignPipe  (var pipe_in,pipe_out:text):cint;
+Function AssignPipe  (var pipe_in,pipe_out:file):cint;
+Function PClose      (Var F:text) : cint;
+Function PClose      (Var F:file) : cint;
+Function POpen       (var F:text;const Prog:String;rw:char):cint;
+Function POpen	     (var F:file;const Prog:String;rw:char):cint;
 function AssignStream(Var StreamIn,Streamout:text;Const Prog:String) : cint;
 function AssignStream(var StreamIn, StreamOut, StreamErr: Text; const prog: String): cint;
 
@@ -247,22 +202,22 @@ const
     Utility functions
 ***************************}
 
-Function  FExpand(Const Path: PathStr):PathStr;
-Function  FSearch(const path:pathstr;dirlist:string):pathstr;
-Function  Glob(Const path:pathstr):pglob;
-Procedure Globfree(var p:pglob);
-{Filedescriptorsets}
-{Stat.Mode Types}
-procedure SigRaise(sig:integer);
+Function  FExpand  (Const Path: PathStr):PathStr;
+Function  FSearch  (const path:pathstr;dirlist:string):pathstr;
+Function  Glob	   (Const path:pathstr):pglob;
+Procedure Globfree (var p:pglob);
+
+procedure SigRaise (sig:integer);
+
+{$i unxsysch.inc} //  calls used in system and not reexported from baseunix
+
 {******************************************************************************
                             Implementation
 ******************************************************************************}
 
-{$i unxsysch.inc}
-
 Implementation
 
-Uses Strings;
+Uses Strings,Syscall;
 
 {$i syscallh.inc}
 {$i ossysch.inc}
@@ -284,7 +239,6 @@ Uses Strings;
 
 Function getenv(name:string):Pchar; external name 'FPC_SYSC_FPGETENV';
 
-
 {******************************************************************************
                           Process related calls
 ******************************************************************************}
@@ -1673,29 +1627,6 @@ begin
   glob:=root;
 end;
 
-Function GetFS (var T:Text):cint;
-{
-  Get File Descriptor of a text file.
-}
-begin
-  if textrec(t).mode=fmclosed then
-   exit(-1)
-  else
-   GETFS:=textrec(t).Handle
-end;
-
-
-Function GetFS(Var F:File):cint;
-{
-  Get File Descriptor of an unTyped file.
-}
-begin
-  { Handle and mode are on the same place in textrec and filerec. }
-  if filerec(f).mode=fmclosed then
-   exit(-1)
-  else
-   GETFS:=filerec(f).Handle
-end;
 
 {--------------------------------
       Stat.Mode Macro's
@@ -1710,7 +1641,10 @@ End.
 
 {
   $Log$
-  Revision 1.49  2003-11-17 11:28:08  marco
+  Revision 1.50  2003-11-19 10:54:32  marco
+   * some simple restructures
+
+  Revision 1.49  2003/11/17 11:28:08  marco
    * Clone moved to linux, + few small unit unix changes
 
   Revision 1.48  2003/11/17 10:05:51  marco