mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 11:09:13 +02:00
* removed
This commit is contained in:
parent
40179afc2d
commit
3d7a4df1f9
@ -1,104 +0,0 @@
|
||||
{
|
||||
$Id$
|
||||
Copyright (c) 2002 by Marco van de Voort.
|
||||
|
||||
Implementation of the POSIX unit for *BSD^H^H^Hlinux. In practice only
|
||||
includes other files, or specifies libc bindings.
|
||||
|
||||
The conditional uselibc can be used to switch from libc to syscall
|
||||
usage for basic primitives, but it is best to use unit POSIX if
|
||||
possible. Note that the system unit must also be compiled using uselibc.
|
||||
|
||||
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.
|
||||
|
||||
****************************************************************************
|
||||
}
|
||||
|
||||
//Uses Sysctl;
|
||||
|
||||
{ $I ostypes.inc}
|
||||
{ $I posmacro.inc}
|
||||
|
||||
{$ifdef uselibc}
|
||||
{$Linklib c}
|
||||
|
||||
{ var
|
||||
Errno : cint; external name 'errno';}
|
||||
|
||||
function sys_time(var tloc:time_t): time_t; cdecl; external name 'time';
|
||||
function sys_open(const path: pchar; flags : cint; mode: mode_t):cint; cdecl; external name 'open';
|
||||
function sys_close(fd : cint): cint; cdecl; external name 'close';
|
||||
function sys_lseek(fd : cint; offset : off_t; whence : cint): off_t; cdecl; external name 'lseek';
|
||||
function sys_read(fd: cint; buf: pchar; nbytes : size_t): ssize_t; cdecl; external name 'read';
|
||||
function sys_write(fd: cint;const buf:pchar; nbytes : size_t): ssize_t; cdecl; external name 'write';
|
||||
function sys_unlink(const path: pchar): cint; cdecl; external name 'unlink';
|
||||
function sys_rename(const old : pchar; const newpath: pchar): cint; cdecl;external name 'rename';
|
||||
function sys_stat(const path: pchar; var buf : stat): cint; cdecl; external name 'stat';
|
||||
function sys_chdir(const path : pchar): cint; cdecl; external name 'chdir';
|
||||
function sys_mkdir(const path : pchar; mode: mode_t):cint; cdecl; external name 'mkdir';
|
||||
function sys_rmdir(const path : pchar): cint; cdecl; external name 'rmdir';
|
||||
function sys_opendir(const dirname : pchar): pdir; cdecl; external name 'opendir';
|
||||
function sys_readdir(var dirp : dir) : pdirent;cdecl; external name 'readdir';
|
||||
function sys_closedir(var dirp : dir): cint; cdecl; external name 'closedir';
|
||||
procedure sys_exit(status : cint); cdecl; external name '_exit';
|
||||
function sys_sigaction(sig: cint; var act : sigactionrec; var oact : sigactionrec): cint; cdecl; external name 'sigaction';
|
||||
function sys_ftruncate(fd : cint; flength : off_t): cint; cdecl; external name 'ftruncate';
|
||||
function sys_rename(const old : pchar; const newpath: pchar): cint; cdecl;external name 'rename';
|
||||
function sys_fstat(fd : cint; var sb : stat): cint; cdecl; external name 'fstat';
|
||||
function sys_fork : pid_t; cdecl; external name 'fork';
|
||||
function sys_execve(path : pchar; argv : ppchar; envp: ppchar): cint; cdecl; external name 'execve';
|
||||
function sys_waitpid(pid : pid_t; var stat_loc : cint; options: cint): pid_t; cdecl; external name 'waitpid';
|
||||
function sys_access(const pathname : pchar; amode : cint): cint; cdecl; external name 'access';
|
||||
function sys_uname(var name: utsname): cint; cdecl; external name 'uname';
|
||||
function sys_Dup(fildes:cint):cint; cdecl; external name 'dup';
|
||||
function sys_Dup2(fildes:cint;fildes2:cint):cint; cdecl; external name 'dup2';
|
||||
|
||||
{$else}
|
||||
|
||||
// uses syscalls.
|
||||
|
||||
function sys_time(var tloc:time_t): time_t; external name 'FPC_SYSC_TIME';
|
||||
function sys_open(const path: pchar; flags : cint; mode: mode_t):cint; external name 'FPC_SYSC_OPEN';
|
||||
function sys_close(fd : cint): cint; external name 'FPC_SYSC_CLOSE';
|
||||
function sys_lseek(fd : cint; offset : off_t; whence : cint): off_t; external name 'FPC_SYSC_LSEEK';
|
||||
function sys_read(fd: cint; buf: pchar; nbytes : size_t): ssize_t; external name 'FPC_SYSC_READ';
|
||||
function sys_write(fd: cint;const buf:pchar; nbytes : size_t): ssize_t; external name 'FPC_SYSC_WRITE';
|
||||
function sys_unlink(const path: pchar): cint; external name 'FPC_SYSC_UNLINK';
|
||||
function sys_rename(const old : pchar; const newpath: pchar): cint; external name 'FPC_SYSC_RENAME';
|
||||
function sys_stat(const path: pchar; var buf : stat):cint; external name 'FPC_SYSC_STAT';
|
||||
function sys_chdir(const path : pchar): cint; external name 'FPC_SYSC_CHDIR';
|
||||
function sys_mkdir(const path : pchar; mode: mode_t):cint; external name 'FPC_SYSC_MKDIR';
|
||||
function sys_rmdir(const path : pchar): cint; external name 'FPC_SYSC_RMDIR';
|
||||
function sys_opendir(const dirname : pchar): pdir; external name 'FPC_SYSC_OPENDIR';
|
||||
function sys_closedir(var dirp : dir): cint; external name 'FPC_SYSC_CLOSEDIR';
|
||||
function sys_readdir(var dirp : dir) : pdirent; external name 'FPC_SYSC_READDIR';
|
||||
procedure sys_exit(status : cint); external name 'FPC_SYSC_EXIT';
|
||||
function sys_sigaction(sig: cint; var act : sigactionrec; var oact : sigactionrec): cint; external name 'FPC_SYSC_SIGACTION';
|
||||
function sys_ftruncate(fd : cint; flength : off_t): cint; external name 'FPC_SYSC_FTRUNCATE';
|
||||
function sys_fstat(fd : cint; var sb : stat): cint; external name 'FPC_SYSC_FSTAT';
|
||||
function sys_fork : pid_t; external name 'FPC_SYSC_FORK';
|
||||
// function sys_execve(path : pchar; argv : ppchar;envp: ppchar): cint; external name 'FPC_SYSC_EXECVE';
|
||||
function sys_waitpid(pid : pid_t; var stat_loc : cint; options: cint): pid_t; external name 'FPC_SYSC_WAITPID';
|
||||
function sys_access(const pathname : pchar; amode : cint): cint;external name 'FPC_SYSC_ACCESS';
|
||||
function sys_Dup(fildes:cint):cint; external name 'FPC_SYSC_DUP';
|
||||
function sys_Dup2(fildes:cint;fildes2:cint):cint; external name 'FPC_SYSC_DUP2';
|
||||
function geterrno:cint; external name 'FPC_SYS_GETERRNO';
|
||||
procedure seterrno (i:cint); external name 'FPC_SYS_SETERRNO';
|
||||
|
||||
{$endif}
|
||||
|
||||
{$I basefuncs.inc}
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 2002-11-12 14:37:59 marco
|
||||
* Parts of new unix rtl
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,257 +0,0 @@
|
||||
{
|
||||
$Id$
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2001 by Free Pascal development team
|
||||
|
||||
Implements roughly POSIX 1003.1 conforming interface for Linux
|
||||
header part.
|
||||
|
||||
This file implements all the types/constants which must
|
||||
be defined to port FPC to a new POSIX compliant 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.
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
{***********************************************************************}
|
||||
{ POSIX STRUCTURES }
|
||||
{***********************************************************************}
|
||||
|
||||
{$define oldstat}
|
||||
{$define oldreaddir}
|
||||
|
||||
{$i ptypes.inc}
|
||||
{$define oldreaddir}
|
||||
|
||||
// Can't find these two in Posix and in FreeBSD
|
||||
CONST
|
||||
_UTSNAME_LENGTH = 65 ;
|
||||
_UTSNAME_NODENAME_LENGTH = _UTSNAME_LENGTH;
|
||||
{$ifdef usedomain}
|
||||
_UTSNAME_DOMAIN_LENGTH = _UTSNAME_LENGTH;
|
||||
{$endif}
|
||||
|
||||
TYPE
|
||||
blksize_t = cuint;
|
||||
blkcnt_t = cuint;
|
||||
ino64_t = cint64;
|
||||
off64_t = cint64;
|
||||
|
||||
{ system information services }
|
||||
utsname = record
|
||||
sysname : Array[0.._UTSNAME_LENGTH -1] OF Char; // Name of this OS
|
||||
nodename: Array[0.._UTSNAME_NODENAME_LENGTH-1] OF Char; // Name of this network node.
|
||||
release : Array[0.._UTSNAME_LENGTH -1] OF Char; // Release level.
|
||||
version : Array[0.._UTSNAME_LENGTH -1] OF Char; // Version level.
|
||||
machine : Array[0.._UTSNAME_LENGTH -1] OF Char; // Hardware type.
|
||||
{$ifdef usedomain}
|
||||
domain : array[0.._UTSNAME_DOMAIN_LENGTH-1] of char; // Linux addition "Domain"
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
{$ifdef oldstat}
|
||||
Stat = packed record
|
||||
st_dev : word;
|
||||
pad1 : word;
|
||||
st_ino : longint;
|
||||
st_mode,
|
||||
nlink,
|
||||
uid,
|
||||
gid : word;
|
||||
rdev : word;
|
||||
pad2 : word;
|
||||
st_size,
|
||||
blksze,
|
||||
blocks,
|
||||
atime,
|
||||
unused1,
|
||||
mtime,
|
||||
unused2,
|
||||
ctime,
|
||||
unused3,
|
||||
unused4,
|
||||
unused5 : longint;
|
||||
end;
|
||||
PStat=^Stat;
|
||||
TStat=Stat;
|
||||
|
||||
{$else}
|
||||
|
||||
{ file characteristics services }
|
||||
stat = record
|
||||
st_dev : dev_t; // inode's device
|
||||
pad1 : cushort;
|
||||
{$ifdef 64bitfs} // ??
|
||||
__st_ino : ino_t;
|
||||
{$else}
|
||||
st_ino : ino_t; // inode's number
|
||||
{$endif}
|
||||
st_mode : mode_t; // inode protection mode
|
||||
st_nlink : nlink_t; // number of hard links
|
||||
st_uid : uid_t; // user ID of the file's owner
|
||||
st_gid : gid_t; // group ID of the file's group
|
||||
st_rdev : dev_t; // device type
|
||||
pad2 : cushort;
|
||||
{$ifdef 64bitfs}
|
||||
st_size : off64_t; // file size, in bytes
|
||||
{$else}
|
||||
st_size : off_t; // file size, in bytes
|
||||
{$endif}
|
||||
st_blksize : blksize_t; // optimal blocksize for I/O
|
||||
{$ifdef 64bitfs}
|
||||
st_blocks : blkcnt64_t; // blocks allocated for file
|
||||
{$else}
|
||||
st_blocks : blkcnt_t; // blocks allocated for file
|
||||
{$endif}
|
||||
st_atime : time_t; // time of last access
|
||||
unused1 : culong;
|
||||
st_mtime : time_t; // time of last data modification
|
||||
unused2 : culong;
|
||||
st_ctime : time_t; // time of last file status change
|
||||
unused3 : culong;
|
||||
{$ifdef 64bitfs}
|
||||
st_ino : ino64_t
|
||||
{$else}
|
||||
unused4 : culong;
|
||||
unused5 : culong;
|
||||
{$endif}
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
{ directory services }
|
||||
pdirent = ^dirent;
|
||||
dirent = packed record
|
||||
{$ifndef 64bitfs}
|
||||
d_fileno : ino_t; // file number of entry
|
||||
d_off : off_t;
|
||||
{$else}
|
||||
d_fileno : ino64_t; // file number of entry
|
||||
d_off : off64_t;
|
||||
{$endif}
|
||||
d_reclen : cushort; // length of string in d_name
|
||||
{$ifdef Uselibc} // Libc different from kernel record!
|
||||
d_type : cuchar; // file type, see below
|
||||
{$endif}
|
||||
d_name : array[0..(255 + 1)-1] of char; // name must be no longer than this
|
||||
end;
|
||||
|
||||
|
||||
pdir = ^dir;
|
||||
{$ifdef oldreaddir}
|
||||
// still old one, because we use the old READDIR
|
||||
// defined somewhere in the old libc source.
|
||||
dir = packed record
|
||||
fd : integer;
|
||||
loc : longint;
|
||||
size : integer;
|
||||
buf : pdirent;
|
||||
{The following are used in libc, but NOT in the linux kernel sources ??}
|
||||
nextoff: longint;
|
||||
dd_max : integer; {size of buf. Irrelevant, as buf is of type dirent}
|
||||
lock : pointer;
|
||||
end;
|
||||
{$else}
|
||||
// new libc one. NOTE that off_t must be real, so 64-bit ifdef
|
||||
// 64bitsfs
|
||||
dir = record // packing doesn't matter. This is a userland struct.
|
||||
fd : cint;
|
||||
data : pchar;
|
||||
allocation: size_t;
|
||||
_size : size_t;
|
||||
offset : size_t;
|
||||
filepos : off_t;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
putimbuf = ^utimbuf;
|
||||
utimbuf = record
|
||||
actime : time_t;
|
||||
modtime : time_t;
|
||||
end;
|
||||
|
||||
flock = record
|
||||
l_type : cshort; { lock type: read/write, etc. }
|
||||
l_whence: cshort; { type of l_start }
|
||||
{$ifdef 64bitfs}
|
||||
l_start : off64_t; { starting offset }
|
||||
l_len : off64_t; { len = 0 means until end of file }
|
||||
{$else}
|
||||
l_start : off_t; { starting offset }
|
||||
l_len : off_t; { len = 0 means until end of file }
|
||||
{$endif}
|
||||
l_pid : pid_t; { lock owner }
|
||||
end;
|
||||
|
||||
tms = packed record
|
||||
tms_utime : clock_t; { User CPU time }
|
||||
tms_stime : clock_t; { System CPU time }
|
||||
tms_cutime : clock_t; { User CPU time of terminated child procs }
|
||||
tms_cstime : clock_t; { System CPU time of terminated child procs }
|
||||
end;
|
||||
|
||||
|
||||
{***********************************************************************}
|
||||
{ POSIX CONSTANT ROUTINE DEFINITIONS }
|
||||
{***********************************************************************}
|
||||
CONST
|
||||
{ access routine - these maybe OR'ed together }
|
||||
F_OK = 0; { test for existence of file }
|
||||
R_OK = 4; { test for read permission on file }
|
||||
W_OK = 2; { test for write permission on file }
|
||||
X_OK = 1; { test for execute or search permission }
|
||||
{ seek routine }
|
||||
SEEK_SET = 0; { seek from beginning of file }
|
||||
SEEK_CUR = 1; { seek from current position }
|
||||
SEEK_END = 2; { seek from end of file }
|
||||
{ open routine }
|
||||
{ File access modes for `open' and `fcntl'. }
|
||||
O_RDONLY = 0; { Open read-only. }
|
||||
O_WRONLY = 1; { Open write-only. }
|
||||
O_RDWR = 2; { Open read/write. }
|
||||
{ Bits OR'd into the second argument to open. }
|
||||
O_CREAT = $40; { Create file if it doesn't exist. }
|
||||
O_EXCL = $80; { Fail if file already exists. }
|
||||
O_TRUNC = $200; { Truncate file to zero length. }
|
||||
O_NOCTTY = $100; { Don't assign a controlling terminal. }
|
||||
{ File status flags for `open' and `fcntl'. }
|
||||
O_APPEND = $400; { Writes append to the file. }
|
||||
O_NONBLOCK = $800; { Non-blocking I/O. }
|
||||
|
||||
{ mode_t possible values }
|
||||
S_IRUSR = %0100000000; { Read permission for owner }
|
||||
S_IWUSR = %0010000000; { Write permission for owner }
|
||||
S_IXUSR = %0001000000; { Exec permission for owner }
|
||||
S_IRGRP = %0000100000; { Read permission for group }
|
||||
S_IWGRP = %0000010000; { Write permission for group }
|
||||
S_IXGRP = %0000001000; { Exec permission for group }
|
||||
S_IROTH = %0000000100; { Read permission for world }
|
||||
S_IWOTH = %0000000010; { Write permission for world }
|
||||
S_IXOTH = %0000000001; { Exec permission for world }
|
||||
|
||||
{ Used for waitpid }
|
||||
WNOHANG = 1; { don't block waiting }
|
||||
WUNTRACED = 2; { report status of stopped children }
|
||||
|
||||
|
||||
{*************************************************************************}
|
||||
{ SIGNALS }
|
||||
{*************************************************************************}
|
||||
|
||||
{$define posixworkaround}
|
||||
{$i signal.inc}
|
||||
|
||||
// function geterrno:longint;
|
||||
// procedure seterrno(i:longint);
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 2002-11-12 14:37:59 marco
|
||||
* Parts of new unix rtl
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user