mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 16:11:33 +01:00 
			
		
		
		
	 f60c72b773
			
		
	
	
		f60c72b773
		
	
	
	
	
		
			
			than a pointer. The interface still accepts a plain pointer for
    backwards compatibility.
git-svn-id: trunk@9176 -
		
	
			
		
			
				
	
	
		
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| {
 | |
|     This file is part of the Free Pascal run time library.
 | |
|     Copyright (c) 2001 by Free Pascal development team
 | |
| 
 | |
|     This file implements all the base types and limits required
 | |
|     for a minimal POSIX compliant subset required to port the compiler
 | |
|     to a new OS.
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| 
 | |
| const clib = 'c';
 | |
| 
 | |
| type libcint=longint;
 | |
|      plibcint=^libcint;
 | |
| 
 | |
| function geterrnolocation: Plibcint; cdecl;external clib name '___errno';
 | |
| 
 | |
| function geterrno:libcint; [public, alias: 'FPC_SYS_GETERRNO'];
 | |
| begin
 | |
|  geterrno:=geterrnolocation^;
 | |
| end;
 | |
| 
 | |
| procedure seterrno(err:libcint); [public, alias: 'FPC_SYS_SETERRNO'];
 | |
| begin
 | |
|   geterrnolocation^:=err;
 | |
| end;
 | |
| 
 | |
| { OS dependant parts  }
 | |
| 
 | |
| {$I errno.inc}                          // error numbers
 | |
| {$I ostypes.inc}                        // c-types, unix base types, unix base structures
 | |
| {$I osmacro.inc}
 | |
| 
 | |
| {$Linklib c}
 | |
| {$i oscdeclh.inc}
 | |
| {$i oscdecl.inc}
 | |
| 
 | |
| {*****************************************************************************
 | |
|                             Error conversion
 | |
| *****************************************************************************}
 | |
| 
 | |
| Function PosixToRunError  (PosixErrno : longint) : longint;
 | |
| {
 | |
|   Convert ErrNo error to the correct Inoutres value
 | |
| }
 | |
| 
 | |
| begin
 | |
|   if PosixErrNo=0 then { Else it will go through all the cases }
 | |
|    exit(0);
 | |
|   case PosixErrNo of
 | |
|    ESysENFILE,
 | |
|    ESysEMFILE : Inoutres:=4;
 | |
|    ESysENOENT : Inoutres:=2;
 | |
|     ESysEBADF : Inoutres:=6;
 | |
|    ESysENOMEM,
 | |
|    ESysEFAULT : Inoutres:=217;
 | |
|    ESysEINVAL : Inoutres:=218;
 | |
|     ESysEPIPE,
 | |
|     ESysEINTR,
 | |
|       ESysEIO,
 | |
|    ESysEAGAIN,
 | |
|    ESysENOSPC : Inoutres:=101;
 | |
|  ESysENAMETOOLONG : Inoutres := 3;
 | |
|     ESysEROFS,
 | |
|    ESysEEXIST,
 | |
|    ESysENOTEMPTY,
 | |
|    ESysEACCES : Inoutres:=5;
 | |
|    ESysEISDIR : InOutRes:=5;
 | |
|   else
 | |
|     begin
 | |
|        InOutRes := Integer(PosixErrno);
 | |
|     end;
 | |
|   end;
 | |
|  PosixToRunError:=InOutRes;
 | |
| end;
 | |
| 
 | |
| Function Errno2InoutRes : longint;
 | |
| 
 | |
| begin
 | |
|   Errno2InoutRes:=PosixToRunError(getErrno);
 | |
|   InoutRes:=Errno2InoutRes;
 | |
| end;
 | |
| 
 | |
| 
 | |
| 
 | |
| {*****************************************************************************
 | |
|                           Low Level File Routines
 | |
| *****************************************************************************}
 | |
| 
 | |
| function do_isdevice(handle:longint):boolean;
 | |
| begin
 | |
|   do_isdevice:= (handle=StdInputHandle) or
 | |
|                 (handle=StdOutputHandle) or
 | |
|                 (handle=StdErrorHandle);
 | |
| end;
 | |
| 
 | |
| 
 |