mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-26 05:02:50 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|   This unit contains all access functions to libc (unix like OS like
 | |
|   Linux, Mac OS X, BSD), which are needed by the IDE, but are not provided
 | |
|   by FPC units SysUtils, Unix and BaseUnix.
 | |
| 
 | |
|   Before adding stuff here always check if fpc units Unix or BaseUnix already
 | |
|   contains corresponding functions.
 | |
|   Always use types from the ctypes unit.
 | |
| }
 | |
| unit IDEMiniLibC;
 | |
| {$IFDEF linux} {$DEFINE DBG_ENABLE_TERMINAL} {$ENDIF}
 | |
| 
 | |
| {$mode objfpc}{$H+}
 | |
| 
 | |
| {$packrecords c}
 | |
| 
 | |
| interface
 | |
| 
 | |
| uses
 | |
|   ctypes
 | |
| {$IFDEF DBG_ENABLE_TERMINAL}
 | |
|   , BaseUnix
 | |
| {$ENDIF}
 | |
|   //,libc
 | |
|   ;
 | |
| 
 | |
| const
 | |
|   clib = 'c';
 | |
|   InvalHandle = -1;
 | |
|   ICANON    = $0000002;
 | |
|   ECHO      = $0000008;
 | |
|   VMIN = 6;
 | |
|   VTIME = 5;
 | |
|   TCSANOW = 0;
 | |
|   F_DUPFD   = 0;
 | |
|   F_GETFD   = 1;
 | |
|   F_SETFD   = 2;
 | |
|   F_GETFL   = 3;
 | |
|   F_SETFL   = 4;
 | |
| {$IFDEF DBG_ENABLE_TERMINAL}
 | |
|   O_NONBLOCK = BaseUnix.O_NONBLOCK;
 | |
| {$ENDIF}
 | |
|   EINTR = 4;
 | |
|   NCCS = 32;
 | |
| 
 | |
| type
 | |
|   error_t = cint;
 | |
|   tcflag_t = cuint;
 | |
|   cc_t = cchar;
 | |
|   speed_t = cuint;
 | |
|   size_t = cuint;
 | |
|   ssize_t = cint;
 | |
| 
 | |
|   Ptermios = ^termios;
 | |
|   termios = record
 | |
|     c_iflag : tcflag_t;
 | |
|     c_oflag : tcflag_t;
 | |
|     c_cflag : tcflag_t;
 | |
|     c_lflag : tcflag_t;
 | |
|     c_line : cc_t;
 | |
|     c_cc : array[0..(NCCS)-1] of cc_t;
 | |
|     c_ispeed : speed_t;
 | |
|     c_ospeed : speed_t;
 | |
|   end;
 | |
| 
 | |
| function tcgetattr(__fd:cint; __termios_p: Ptermios):cint;cdecl;external clib name 'tcgetattr';
 | |
| function tcsetattr(__fd:cint; __optional_actions:cint; __termios_p: Ptermios):cint;cdecl;external clib name 'tcsetattr';
 | |
| function __read(Handle: cint; var Buffer; Count: size_t): ssize_t; cdecl;external clib name 'read';
 | |
| function __write(Handle: cint; const Buffer; Count: size_t): ssize_t; cdecl;external clib name 'write';
 | |
| function __close(Handle: cint): cint; cdecl;external clib name 'close';
 | |
| function getpt:cint;cdecl;external clib name 'getpt';
 | |
| function posix_openpt(oflag: cint):cint;cdecl;external clib name 'posix_openpt';
 | |
| function grantpt(__fd:cint):cint;cdecl;external clib name 'grantpt';
 | |
| function unlockpt(__fd:cint):cint;cdecl;external clib name 'unlockpt';
 | |
| function ptsname_r(__fd:cint; __buf:Pchar; __buflen:size_t):cint;cdecl;external clib name 'ptsname_r';
 | |
| function fcntl(Handle: cint; Command: cint; Arg: clong): cint; cdecl;external clib name 'fcntl';
 | |
| 
 | |
| implementation
 | |
| 
 | |
| end.
 | |
| 
 | 
