|
@@ -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
|
|
|
-
|
|
|
-
|
|
|
-}
|