DEADSOFTWARE

chmod call corrected
authorAlexander Shiryaev <aixp@mail.ru>
Wed, 17 Jan 2018 06:51:33 +0000 (09:51 +0300)
committerAlexander Shiryaev <aixp@mail.ru>
Wed, 17 Jan 2018 06:51:33 +0000 (09:51 +0300)
BlackBox/_FreeBSDLinuxOpenBSD_/Dev2/Mod/LnkChmod.odc
BlackBox/_Linux_/Lin/Mod/Libc.odc
BlackBox/_Linux_/Lin/Mod/Libc.txt

index 25753c2e1551bc965b333149dedb75237bd7ec17..97ee6995d86ec88d8c404cc783a744e96e13e464 100644 (file)
Binary files a/BlackBox/_FreeBSDLinuxOpenBSD_/Dev2/Mod/LnkChmod.odc and b/BlackBox/_FreeBSDLinuxOpenBSD_/Dev2/Mod/LnkChmod.odc differ
index 44884c962ff4acc1773406cf3517819c7ac37d9c..4ce115e97e4c7e21bb0cabaa47476606bc0cc378 100644 (file)
Binary files a/BlackBox/_Linux_/Lin/Mod/Libc.odc and b/BlackBox/_Linux_/Lin/Mod/Libc.odc differ
index b5b57675ccdf352ffaffd55b0814f01dc4336ab6..51748f91d6d45faf74b0b1a3d613117305c31594 100644 (file)
-MODULE LinLibc ["libc.so.6"];
-
-       (* THIS IS TEXT COPY OF Libc.odc *)
-       (* DO NOT EDIT *)
-
-       IMPORT SYSTEM;
-       
-       CONST
-               NULL* = 0H;
-               TRUE* = 1;
-               FALSE* = 0;
-               
-               (* file constants *)
-               SEEK_SET* = 0;
-               SEEK_CUR* = 1;
-               SEEK_END* = 2;
-               NAME_MAX* = 256;
-               
-               (* The value of CLOCKS_PER_SEC is required to be 1 million on all   XSI-conformant systems.*)
-               CLOCKS_PER_SECOND* = 1000000; 
-               
-               (* temp directory defined in stdio.h *)
-               P_tmpdir* = "/tmp";
-               
-               (* signal constants *)  (* Fake signal functions.  *)
-               SIG_ERR* = -1;  (* Error return.  *)
-               SIG_DFL* = 0;           (* Default action.  *)
-               SIG_IGN* = 1;           (* Ignore signal.  *)
-               SIG_HOLD* = 2;  (* Add signal to hold mask.  *)
-               
-               (* Signals.  *)
-               SIGHUP* = 1;    (* Hangup (POSIX).  *)
-               SIGINT* = 2;    (* Interrupt (ANSI).  *)
-               SIGQUIT* = 3;   (* Quit (POSIX).  *)
-               SIGILL* = 4;    (* Illegal instruction (ANSI).  *)
-               SIGTRAP* = 5;   (* Trace trap (POSIX).  *)
-               SIGABRT* = 6;   (* Abort (ANSI).  *)
-               SIGIOT* = 6;    (* IOT trap (4.2 BSD).  *)
-               SIGBUS* = 7;    (* BUS error (4.2 BSD).  *)
-               SIGFPE* = 8;    (* Floating-point exception (ANSI).  *)
-               SIGKILL* = 9;   (* Kill, unblockable (POSIX).  *)
-               SIGUSR1* = 10;  (* User-defined signal 1 (POSIX).  *)
-               SIGSEGV* = 11;  (* Segmentation violation (ANSI).  *)
-               SIGUSR2* = 12;  (* User-defined signal 2 (POSIX).  *)
-               SIGPIPE* = 13;  (* Broken pipe (POSIX).  *)
-               SIGALRM* = 14;  (* Alarm clock (POSIX).  *)
-               SIGTERM* = 15;  (* Termination (ANSI).  *)
-               SIGSTKFLT* = 16;        (* Stack fault.  *)
-               SIGCHLD* = 17;  (* Child status has changed (POSIX).  *)
-               SIGCLD* = SIGCHLD;      (* Same as SIGCHLD (System V).  *)
-               SIGCONT* = 18;  (* Continue (POSIX).  *)
-               SIGSTOP* = 19;  (* Stop, unblockable (POSIX).  *)
-               SIGTSTP* = 20;  (* Keyboard stop (POSIX).  *)
-               SIGTTIN* = 21;  (* Background read from tty (POSIX).  *)
-               SIGTTOU* = 22;  (* Background write to tty (POSIX).  *)
-               SIGURG* = 23;   (* Urgent condition on socket (4.2 BSD).  *)
-               SIGXCPU* = 24;  (* CPU limit exceeded (4.2 BSD).  *)
-               SIGXFSZ* = 25;  (* File size limit exceeded (4.2 BSD).  *)
-               SIGVTALRM* =26; (* Virtual alarm clock (4.2 BSD).  *)
-               SIGPROF* = 27;  (* Profiling alarm clock (4.2 BSD).  *)
-               SIGWINCH* = 28; (* Window size change (4.3 BSD, Sun).  *)
-               SIGIO* = 29;    (* I/O now possible (4.2 BSD).  *)
-               SIGPOLL* = SIGIO;       (* Pollable event occurred (System V).  *)
-               SIGPWR* = 30;   (* Power failure restart (System V).  *)
-               SIGSYS* = 31;   (* Bad system call.  *)
-               SIGUNUSED* =31;
-               _NSIG* = 64;    (* Biggest signal number + 1 (including real-time signals).  *)
-               __SIGRTMIN*= 32;
-               __SIGRTMAX*=_NSIG - 1;
-
-               (* Bits in `sa_flags'.  *)
-               SA_NOCLDSTOP* = {0};    (* = 1 Don't send SIGCHLD when children stop.  *)
-               SA_NOCLDWAIT* = {1};    (* = 2 Don't create zombie on child death.  *)
-               SA_SIGINFO* = {2};      (* = 4 Invoke signal-catching function wth three arguments instead of one.  *)
-               SA_ONSTACK* = {27};     (* = 0x08000000 Use signal stack by using `sa_restorer'. *)
-               SA_RESTART* = {28};     (* = 0x10000000 Restart syscall on signal return.  *)
-               SA_NODEFER* = {30};     (* = 0x40000000 Don't automatically block the signal when its handler is being executed. *)
-               SA_RESETHAND* = {31};   (* = 0x80000000 Reset to SIG_DFL on entry to handler.  *)
-               SA_INTERRUPT* = {29};   (* = 0x20000000  Historical no-op.  *)
-               (* Some aliases for the SA_ constants.  *)
-               SA_NOMASK* = SA_NODEFER;
-               SA_ONESHOT* = SA_RESETHAND;
-               SA_STACK* = SA_ONSTACK;
-
-               (* code values for siginfo_t.si_code when sig = SIGFPE *)
-               FPE_INTDIV* = 1;        (* Integer divide by zero.  *)
-               FPE_INTOVF* = 2;        (* Integer overflow.  *)
-               FPE_FLTDIV* = 3;        (* Floating point divide by zero.  *)
-               FPE_FLTOVF* = 4;        (* Floating point overflow.  *)
-               FPE_FLTUND* = 5;        (* Floating point underflow.  *)
-               FPE_FLTRES* =6; (* Floating point inexact result.  *)
-               FPE_FLTINV* = 7;        (* Floating point invalid operation.  *)
-               FPE_FLTSUB* = 8;        (* Subscript out of range.  *)
-
-               (* possible error constants for errno *)
-               EPERM* = 1;     (* Operation not permitted *)
-               ENOENT* = 2;    (* No such file or directory *)
-               ESRCH* = 3;     (* No such process *)
-               EINTR* = 4;     (* Interrupted system call *)
-               EIO* = 5;       (* I/O error *)
-               ENXIO* = 6;     (* No such device or address *)
-               E2BIG* = 7;     (* Arg list too long *)
-               ENOEXEC* = 8;   (* Exec format error *)
-               EBADF* = 9;     (* Bad file number *)
-               ECHILD* = 10;   (* No child processes *)
-               EAGAIN* = 11;   (* Try again *)
-               ENOMEM* = 12;   (* Out of memory *)
-               EACCES* = 13;   (* Permission denied *)
-               EFAULT* = 14;   (* Bad address *)
-               ENOTBLK* = 15;  (* Block device required *)
-               EBUSY* = 16;    (* Device or resource busy *)
-               EEXIST* = 17;   (* File exists *)
-               EXDEV* = 18;    (* Cross-device link *)
-               ENODEV* = 19;   (* No such device *)
-               ENOTDIR* = 20;  (* Not a directory *)
-               EISDIR* = 21;   (* Is a directory *)
-               EINVAL* = 22;   (* Invalid argument *)
-               ENFILE* = 23;   (* File table overflow *)
-               EMFILE* = 24;   (* Too many open files *)
-               ENOTTY* = 25;   (* Not a typewriter *)
-               ETXTBSY* = 26;  (* Text file busy *)
-               EFBIG* = 27;    (* File too large *)
-               ENOSPC* = 28;   (* No space left on device *)
-               ESPIPE* = 29;   (* Illegal seek *)
-               EROFS* = 30;    (* Read-only file system *)
-               EMLINK* = 31;   (* Too many links *)
-               EPIPE* = 32;    (* Broken pipe *)
-               EDOM* = 33;     (* Math argument out of domain of func *)
-               ERANGE* = 34;   (* Math result not representable *)
-               EDEADLK* = 35;  (* Resource deadlock would occur *)
-               ENAMETOOLONG* = 36;     (* File name too long *)
-               ENOLCK* = 37;   (* No record locks available *)
-               ENOSYS* = 38;   (* Function not implemented *)
-               ENOTEMPTY* = 39;        (* Directory not empty *)
-               ELOOP* = 40;    (* Too many symbolic links encountered *)
-               EWOULDBLOCK* = EAGAIN;  (* Operation would block *)
-               ENOMSG* = 42;   (* No message of desired type *)
-               EIDRM* = 43;    (* Identifier removed *)
-               ECHRNG* = 44;   (* Channel number out of range *)
-               EL2NSYNC* = 45; (* Level 2 not synchronized *)
-               EL3HLT* = 46;   (* Level 3 halted *)
-               EL3RST* = 47;   (* Level 3 reset *)
-               ELNRNG* = 48;   (* Link number out of range *)
-               EUNATCH* = 49;  (* Protocol driver not attached *)
-               ENOCSI* = 50;   (* No CSI structure available *)
-               EL2HLT* = 51;   (* Level 2 halted *)
-               EBADE* = 52;    (* Invalid exchange *)
-               EBADR* = 53;    (* Invalid request descriptor *)
-               EXFULL* = 54;   (* Exchange full *)
-               ENOANO* = 55;   (* No anode *)
-               EBADRQC* = 56;  (* Invalid request code *)
-               EBADSLT* = 57;  (* Invalid slot *)
-               EDEADLOCK* = EDEADLK;
-               EBFONT* = 59;   (* Bad font file format *)
-               ENOSTR* = 60;   (* Device not a stream *)
-               ENODATA* = 61;  (* No data available *)
-               ETIME* = 62;    (* Timer expired *)
-               ENOSR* = 63;    (* Out of streams resources *)
-               ENONET* = 64;   (* Machine is not on the network *)
-               ENOPKG* = 65;   (* Package not installed *)
-               EREMOTE* = 66;  (* Object is remote *)
-               ENOLINK* = 67;  (* Link has been severed *)
-               EADV* = 68;     (* Advertise error *)
-               ESRMNT* = 69;   (* Srmount error *)
-               ECOMM* = 70;    (* Communication error on send *)
-               EPROTO* = 71;   (* Protocol error *)
-               EMULTIHOP* = 72;        (* Multihop attempted *)
-               EDOTDOT* = 73;  (* RFS specific error *)
-               EBADMSG* = 74;  (* Not a data message *)
-               EOVERFLOW* = 75;        (* Value too large for defined data type *)
-               ENOTUNIQ* = 76; (* Name not unique on network *)
-               EBADFD* = 77;   (* File descriptor in bad state *)
-               EREMCHG* = 78;  (* Remote address changed *)
-               ELIBACC* = 79;  (* Can not access a needed shared library *)
-               ELIBBAD* = 80;  (* Accessing a corrupted shared library *)
-               ELIBSCN* = 81;  (* .lib section in a.out corrupted *)
-               ELIBMAX* = 82;  (* Attempting to link in too many shared libraries *)
-               ELIBEXEC* = 83; (* Cannot exec a shared library directly *)
-               EILSEQ* = 84;   (* Illegal byte sequence *)
-               ERESTART* = 85; (* Interrupted system call should be restarted *)
-               ESTRPIPE* = 86; (* Streams pipe error *)
-               EUSERS* = 87;   (* Too many users *)
-               ENOTSOCK* = 88; (* Socket operation on non-socket *)
-               EDESTADDRREQ* = 89;     (* Destination address required *)
-               EMSGSIZE* = 90; (* Message too long *)
-               EPROTOTYPE* = 91;       (* Protocol wrong type for socket *)
-               ENOPROTOOPT* = 92;      (* Protocol not available *)
-               EPROTONOSUPPORT* = 93;  (* Protocol not supported *)
-               ESOCKTNOSUPPORT* = 94;  (* Socket type not supported *)
-               EOPNOTSUPP* = 95;       (* Operation not supported on transport endpoint *)
-               EPFNOSUPPORT* = 96;     (* Protocol family not supported *)
-               EAFNOSUPPORT* = 97;     (* Address family not supported by protocol *)
-               EADDRINUSE* = 98;       (* Address already in use *)
-               EADDRNOTAVAIL* = 99;    (* Cannot assign requested address *)
-               ENETDOWN* = 100;        (* Network is down *)
-               ENETUNREACH* = 101;     (* Network is unreachable *)
-               ENETRESET* = 102;       (* Network dropped connection because of reset *)
-               ECONNABORTED* = 103;    (* Software caused connection abort *)
-               ECONNRESET* = 104;      (* Connection reset by peer *)
-               ENOBUFS* = 105; (* No buffer space available *)
-               EISCONN* = 106; (* Transport endpoint is already connected *)
-               ENOTCONN* = 107;        (* Transport endpoint is not connected *)
-               ESHUTDOWN* = 108;       (* Cannot send after transport endpoint shutdown *)
-               ETOOMANYREFS* = 109;    (* Too many references: cannot splice *)
-               ETIMEDOUT* = 110;       (* Connection timed out *)
-               ECONNREFUSED* = 111;    (* Connection refused *)
-               EHOSTDOWN* = 112;       (* Host is down *)
-               EHOSTUNREACH* = 113;    (* No route to host *)
-               EALREADY* = 114;        (* Operation already in progress *)
-               EINPROGRESS* = 115;     (* Operation now in progress *)
-               ESTALE* = 116;  (* Stale NFS file handle *)
-               EUCLEAN* = 117; (* Structure needs cleaning *)
-               ENOTNAM* = 118; (* Not a XENIX named type file *)
-               ENAVAIL* = 119; (* No XENIX semaphores available *)
-               EISNAM* = 120;  (* Is a named type file *)
-               EREMOTEIO* = 121;       (* Remote I/O error *)
-               EDQUOT* = 122;  (* Quota exceeded *)
-               ENOMEDIUM* = 123;       (* No medium found *)
-               EMEDIUMTYPE* = 124;     (* Wrong medium type *)
-
-               PROT_NONE* = {};        (* No access *)
-               PROT_READ* = {2};       (* Pages can be read *)
-               PROT_WRITE* = {1};      (* Pages can be written *)
-               PROT_EXEC* = {0};       (* Pages can be executed *)
-               MAP_FILE* = {0};        (* Mapped from a file or device *)
-               MAP_ANON* = {1};        (* Allocated from anonymous virtual memory *)
-               MAP_COPY* = {5};        (* Virtual copy of region at mapping time *)
-               MAP_SHARED* = {4};      (* Share changes *)
-               MAP_PRIVATE* = {};      (* Changes private; copy pages on write *)
-               MAP_FIXED* = {8};       (* Map address must be exactly as requested *)
-               MAP_NOEXTEND* = {9} ;   (* For MAP_FILE, don't change file size *)
-               MAP_HASSEMPHORE*= {10}; (* Region may contain semaphores *)
-               MAP_INHERIT* = {11} ;   (* Region is retained after exec *)
-               MAP_FAILED* = -1;
-
-               O_RDONLY* = {} ;        (* Open read-only *)
-               O_WRONLY* = {0} ;       (* Open write-only *)
-               O_RDWR* = {1} ; (* Open read/write *)
-               O_NONBLOCK* = {11};
-
-               SIG_BLOCK* = 0; (* Block signals *)
-               SIG_UNBLOCK* = 1;       (* Unblock signals *)
-               SIG_SETMASK* = 2;       (* Set the set of blocked signals *)
-
-               _SC_PAGESIZE* = 30;
-
-               SIGSTKSZ* = 8192;
-
-               STDIN_FILENO* = 0;
-               STDOUT_FILENO* = 1;
-               STDERR_FILENO* = 2;
-
-       TYPE 
-               __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER;
-               PtrVoid* = INTEGER;
-               PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
-               wchar_t* = INTEGER;
-               PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;
-               PtrInt* = INTEGER;
-               StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
-               PtrFILE* = INTEGER;
-               PtrDIR* = INTEGER;
-               PtrProc* = INTEGER;
-               clock_t* = INTEGER;
-               jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *)
-               mode_t* = SET;
-               off_t* = INTEGER;
-               SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER;
-               CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER;
-               size_t* = INTEGER; (* should be unsigned int *)
-               ssize_t* = INTEGER;
-               sigjmp_buf* = RECORD [untagged] 
-                       buf*: jmp_buf;
-                       mask_was_saved*: INTEGER;
-                       saved_mask*: sigset_t;
-               END; 
-               
-               PtrDirent* = POINTER TO Dirent;
-               PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
-               Dirent* = RECORD  [untagged]
-                       d_ino*: INTEGER;        (* inode number *)
-                       d_off*: off_t;  (* offset to this dirent *)
-                       d_reclen*: SHORTINT;    (* length of this d_name *)
-                       d_type*: BYTE;
-                       d_name*: ARRAY[untagged]  NAME_MAX+1 OF SHORTCHAR;              (* file name (null-terminated) *)
-               END;
-               
-               pid_t* = INTEGER;
-               uid_t* = INTEGER;
-               sigval_t* = INTEGER;
-
-               siginfo_t* = RECORD [untagged]
-                       si_signo*: INTEGER;     (* Signal number *)
-                       si_errno*: INTEGER;     (* An errno value *)
-                       si_code*: INTEGER;      (* Signal code *)
-                       si_pid*: pid_t;         (* Sending process ID *)
-                       si_uid*: uid_t;         (* Real user ID of sending process *)
-                       si_status*: INTEGER;    (* Exit value or signal *)
-                       si_utime*: clock_t;     (* User time consumed *)
-                       si_stime*: clock_t;     (* System time consumed *)
-                       si_value*: sigval_t;    (* Signal value *)
-                       si_int*: INTEGER;       (* POSIX.1b signal *)
-                       si_ptr*: PtrVoid;       (* POSIX.1b signal *)
-                       si_addr*: PtrVoid;      (* Memory location which caused fault *)
-                       si_band*: INTEGER;      (* Band event *)
-                       si_fd*: INTEGER;        (* File descriptor *)
-               END;
-               Ptrsiginfo_t* = POINTER TO siginfo_t;
-               
-               sigset_t* = ARRAY [untagged] 128 OF BYTE;
-               Ptrsigset_t* = INTEGER;
-               sigaction_t* = RECORD [untagged]
-                       sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
-                       sa_mask*: sigset_t;
-                       sa_flags*: SET;
-                       sa_restorer*: LONGINT;
-               END;
-               
-               stack_t* = RECORD [untagged]
-                       ss_sp*: PtrVoid;    
-                       ss_flags*: INTEGER;    
-                       ss_size*: size_t;
-               END;
-               
-               stat_t* = RECORD [untagged]
-                       st_dev*: LONGINT;       (* device *)
-                       __pad1: SHORTINT;
-                       st_ino*: INTEGER;       (* 64? inode *)
-                       st_mode*: mode_t;       (* protection *)
-                       st_nlink*: INTEGER;     (* number of hard links *)
-                       st_uid*: uid_t; (* user ID of owner *)
-                       st_gid*: INTEGER;       (* group ID of owner *)
-                       st_rdev*: LONGINT;      (* device type (if inode device) *)
-                       __pad2: SHORTINT;
-                       st_size*: off_t;        (* 64? total size, in bytes *)
-                       st_blksize*: INTEGER;   (* blocksize for filesystem I/O *)
-                       st_blocks*: INTEGER;    (* 64? number of blocks allocated *)
-                       st_atime*: INTEGER;     (* time of last access *)
-                       __unused1:  INTEGER;
-                       st_mtime*: INTEGER;     (* time of last modification *) 
-                       __unused2:  INTEGER;
-                       st_ctime*: INTEGER;     (* time of last change *)
-                       __unused3:  INTEGER;
-                       __unused4:  INTEGER;
-                       __unused5:  INTEGER;
-               END;
-               
-               fpreg* = RECORD [untagged]
-                       significand*: ARRAY [untagged] 4 OF CHAR;
-                       exponent*: CHAR;
-               END;
-
-               fpstate* = RECORD [untagged]
-                       cw*: INTEGER;   (* unsigned long int *)
-                       sw*: INTEGER;   (* unsigned long int *)
-                       tag*: INTEGER;  (* unsigned long int *)
-                       ipoff*: INTEGER;        (* unsigned long int *)
-                       cssel*: INTEGER;        (* unsigned long int *)
-                       dataoff*: INTEGER;      (* unsigned long int *)
-                       datasel*: INTEGER;      (* unsigned long int *)
-                       _st: ARRAY [untagged] 8 OF fpreg;
-                       status*: INTEGER;       (* unsigned long int *)
-               END;
-
-               gregset_t* = ARRAY [untagged] 19 OF INTEGER;
-               fpregset_t* = POINTER TO fpstate;
-               
-               mcontext_t*  = RECORD [untagged]
-                       gregs*: gregset_t;
-                       fpregs*: fpregset_t;
-                       oldmask*: INTEGER;      (* unsigned long int *)
-                       cr2*: INTEGER;  (* unsigned long int *)
-               END;
-               
-               Ptrucontext_t* = POINTER TO ucontext_t;
-               ucontext_t* = RECORD [untagged]
-                       uc_flags*: INTEGER;     (* unsigned long int *)
-                       uc_link*: Ptrucontext_t;
-                       uc_stack*: stack_t;
-                       uc_mcontext*: mcontext_t;
-                       uc_sigmask: sigset_t;
-                       __fpregs_mem*: fpstate;
-               END;
-               
-               (* Times and Dates *)
-               
-               tm* = POINTER TO tmDesc;
-               tmDesc* = RECORD [untagged]
-                       tm_sec*: INTEGER;       (* seconds *)
-                       tm_min*: INTEGER;       (* minutes *)
-                       tm_hour*: INTEGER;      (* hours *)
-                       tm_mday*: INTEGER;      (* day of the month *)
-                       tm_mon*: INTEGER;       (* month *)
-                       tm_year*: INTEGER;      (* year *)
-                       tm_wday*: INTEGER;      (* day of the week *)
-                       tm_yday*: INTEGER;      (* day in the year *)
-                       tm_isdst*: INTEGER;     (* daylight saving time *)
-               END;
-               time_t* = INTEGER;
-
-       VAR
-               timezone*: INTEGER; (* seconds from GMT *)              
-(*
-               stdin*, stdout*, stderr* : PtrFILE;
-*)
-
-       PROCEDURE [ccall] calloc* (num, size: size_t): PtrVoid;
-       PROCEDURE [ccall] clock* (): clock_t;
-       PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
-       PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
-       PROCEDURE [ccall] exit* (status: INTEGER);
-       PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
-       PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
-       PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
-       PROCEDURE [ccall] fdopen* (fildes: INTEGER; mode: PtrSTR): PtrFILE;
-       PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
-       PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;
-       PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
-       PROCEDURE [ccall] free* (p: PtrVoid);
-       PROCEDURE [ccall] ftell* (stream: PtrFILE): LONGINT;
-       PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; descriptors: INTEGER): INTEGER;
-       PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;
-       PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
-       PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER;
-       PROCEDURE [ccall] gets* (s: PtrSTR);
-       PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
-       PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
-       PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
-       PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
-       PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
-       PROCEDURE [ccall] mkdir* (pathname: PtrSTR; mode: mode_t): INTEGER;
-       PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
-       PROCEDURE [ccall] opendir* (name: PtrSTR): PtrDIR;
-       PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER; 
-       PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
-       PROCEDURE [ccall] remove* (filename: PtrSTR): INTEGER;
-       PROCEDURE [ccall] rename* (oldname, newname: PtrSTR): INTEGER;
-       PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
-       PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER;
-       PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
-       PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
-       PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
-       PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
-       PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
-       PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
-       PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
-       PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
-       PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
-       PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; 
-(*
-       PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER;   stat is a macro and expands to __xstat(3, filename, buf)
-*)
-       PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
-       PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
-       PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
-
-       PROCEDURE [ccall] __errno_location*(): INTEGER;
-
-       PROCEDURE [ccall] open* (name: PtrSTR; flags: SET; mode: mode_t): INTEGER;
-       PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
-       PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;
-       PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;
-
-       PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd, offset: off_t): PtrVoid;
-       PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
-       PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
-
-       PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
-
-       PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
-       
-       PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): INTEGER;
-
-       PROCEDURE [ccall] sigprocmask* (how: INTEGER; set: Ptrsigset_t; oldset: Ptrsigset_t): INTEGER;
-       
-       PROCEDURE [ccall] system* (cmd: PtrSTR): INTEGER;
-       PROCEDURE [ccall] popen* (cmd, mode: PtrSTR): INTEGER;
-
-END LinLibc.
+MODULE LinLibc ["libc.so.6"];\r
+\r
+       (* THIS IS TEXT COPY OF Libc.odc *)\r
+       (* DO NOT EDIT *)\r
+\r
+       IMPORT SYSTEM;\r
+       \r
+       CONST\r
+               NULL* = 0H;\r
+               TRUE* = 1;\r
+               FALSE* = 0;\r
+               \r
+               (* file constants *)\r
+               SEEK_SET* = 0;\r
+               SEEK_CUR* = 1;\r
+               SEEK_END* = 2;\r
+               NAME_MAX* = 256;\r
+               \r
+               (* The value of CLOCKS_PER_SEC is required to be 1 million on all   XSI-conformant systems.*)\r
+               CLOCKS_PER_SECOND* = 1000000; \r
+               \r
+               (* temp directory defined in stdio.h *)\r
+               P_tmpdir* = "/tmp";\r
+               \r
+               (* signal constants *)  (* Fake signal functions.  *)\r
+               SIG_ERR* = -1;  (* Error return.  *)\r
+               SIG_DFL* = 0;           (* Default action.  *)\r
+               SIG_IGN* = 1;           (* Ignore signal.  *)\r
+               SIG_HOLD* = 2;  (* Add signal to hold mask.  *)\r
+               \r
+               (* Signals.  *)\r
+               SIGHUP* = 1;    (* Hangup (POSIX).  *)\r
+               SIGINT* = 2;    (* Interrupt (ANSI).  *)\r
+               SIGQUIT* = 3;   (* Quit (POSIX).  *)\r
+               SIGILL* = 4;    (* Illegal instruction (ANSI).  *)\r
+               SIGTRAP* = 5;   (* Trace trap (POSIX).  *)\r
+               SIGABRT* = 6;   (* Abort (ANSI).  *)\r
+               SIGIOT* = 6;    (* IOT trap (4.2 BSD).  *)\r
+               SIGBUS* = 7;    (* BUS error (4.2 BSD).  *)\r
+               SIGFPE* = 8;    (* Floating-point exception (ANSI).  *)\r
+               SIGKILL* = 9;   (* Kill, unblockable (POSIX).  *)\r
+               SIGUSR1* = 10;  (* User-defined signal 1 (POSIX).  *)\r
+               SIGSEGV* = 11;  (* Segmentation violation (ANSI).  *)\r
+               SIGUSR2* = 12;  (* User-defined signal 2 (POSIX).  *)\r
+               SIGPIPE* = 13;  (* Broken pipe (POSIX).  *)\r
+               SIGALRM* = 14;  (* Alarm clock (POSIX).  *)\r
+               SIGTERM* = 15;  (* Termination (ANSI).  *)\r
+               SIGSTKFLT* = 16;        (* Stack fault.  *)\r
+               SIGCHLD* = 17;  (* Child status has changed (POSIX).  *)\r
+               SIGCLD* = SIGCHLD;      (* Same as SIGCHLD (System V).  *)\r
+               SIGCONT* = 18;  (* Continue (POSIX).  *)\r
+               SIGSTOP* = 19;  (* Stop, unblockable (POSIX).  *)\r
+               SIGTSTP* = 20;  (* Keyboard stop (POSIX).  *)\r
+               SIGTTIN* = 21;  (* Background read from tty (POSIX).  *)\r
+               SIGTTOU* = 22;  (* Background write to tty (POSIX).  *)\r
+               SIGURG* = 23;   (* Urgent condition on socket (4.2 BSD).  *)\r
+               SIGXCPU* = 24;  (* CPU limit exceeded (4.2 BSD).  *)\r
+               SIGXFSZ* = 25;  (* File size limit exceeded (4.2 BSD).  *)\r
+               SIGVTALRM* =26; (* Virtual alarm clock (4.2 BSD).  *)\r
+               SIGPROF* = 27;  (* Profiling alarm clock (4.2 BSD).  *)\r
+               SIGWINCH* = 28; (* Window size change (4.3 BSD, Sun).  *)\r
+               SIGIO* = 29;    (* I/O now possible (4.2 BSD).  *)\r
+               SIGPOLL* = SIGIO;       (* Pollable event occurred (System V).  *)\r
+               SIGPWR* = 30;   (* Power failure restart (System V).  *)\r
+               SIGSYS* = 31;   (* Bad system call.  *)\r
+               SIGUNUSED* =31;\r
+               _NSIG* = 64;    (* Biggest signal number + 1 (including real-time signals).  *)\r
+               __SIGRTMIN*= 32;\r
+               __SIGRTMAX*=_NSIG - 1;\r
+\r
+               (* Bits in `sa_flags'.  *)\r
+               SA_NOCLDSTOP* = {0};    (* = 1 Don't send SIGCHLD when children stop.  *)\r
+               SA_NOCLDWAIT* = {1};    (* = 2 Don't create zombie on child death.  *)\r
+               SA_SIGINFO* = {2};      (* = 4 Invoke signal-catching function wth three arguments instead of one.  *)\r
+               SA_ONSTACK* = {27};     (* = 0x08000000 Use signal stack by using `sa_restorer'. *)\r
+               SA_RESTART* = {28};     (* = 0x10000000 Restart syscall on signal return.  *)\r
+               SA_NODEFER* = {30};     (* = 0x40000000 Don't automatically block the signal when its handler is being executed. *)\r
+               SA_RESETHAND* = {31};   (* = 0x80000000 Reset to SIG_DFL on entry to handler.  *)\r
+               SA_INTERRUPT* = {29};   (* = 0x20000000  Historical no-op.  *)\r
+               (* Some aliases for the SA_ constants.  *)\r
+               SA_NOMASK* = SA_NODEFER;\r
+               SA_ONESHOT* = SA_RESETHAND;\r
+               SA_STACK* = SA_ONSTACK;\r
+\r
+               (* code values for siginfo_t.si_code when sig = SIGFPE *)\r
+               FPE_INTDIV* = 1;        (* Integer divide by zero.  *)\r
+               FPE_INTOVF* = 2;        (* Integer overflow.  *)\r
+               FPE_FLTDIV* = 3;        (* Floating point divide by zero.  *)\r
+               FPE_FLTOVF* = 4;        (* Floating point overflow.  *)\r
+               FPE_FLTUND* = 5;        (* Floating point underflow.  *)\r
+               FPE_FLTRES* =6; (* Floating point inexact result.  *)\r
+               FPE_FLTINV* = 7;        (* Floating point invalid operation.  *)\r
+               FPE_FLTSUB* = 8;        (* Subscript out of range.  *)\r
+\r
+               (* possible error constants for errno *)\r
+               EPERM* = 1;     (* Operation not permitted *)\r
+               ENOENT* = 2;    (* No such file or directory *)\r
+               ESRCH* = 3;     (* No such process *)\r
+               EINTR* = 4;     (* Interrupted system call *)\r
+               EIO* = 5;       (* I/O error *)\r
+               ENXIO* = 6;     (* No such device or address *)\r
+               E2BIG* = 7;     (* Arg list too long *)\r
+               ENOEXEC* = 8;   (* Exec format error *)\r
+               EBADF* = 9;     (* Bad file number *)\r
+               ECHILD* = 10;   (* No child processes *)\r
+               EAGAIN* = 11;   (* Try again *)\r
+               ENOMEM* = 12;   (* Out of memory *)\r
+               EACCES* = 13;   (* Permission denied *)\r
+               EFAULT* = 14;   (* Bad address *)\r
+               ENOTBLK* = 15;  (* Block device required *)\r
+               EBUSY* = 16;    (* Device or resource busy *)\r
+               EEXIST* = 17;   (* File exists *)\r
+               EXDEV* = 18;    (* Cross-device link *)\r
+               ENODEV* = 19;   (* No such device *)\r
+               ENOTDIR* = 20;  (* Not a directory *)\r
+               EISDIR* = 21;   (* Is a directory *)\r
+               EINVAL* = 22;   (* Invalid argument *)\r
+               ENFILE* = 23;   (* File table overflow *)\r
+               EMFILE* = 24;   (* Too many open files *)\r
+               ENOTTY* = 25;   (* Not a typewriter *)\r
+               ETXTBSY* = 26;  (* Text file busy *)\r
+               EFBIG* = 27;    (* File too large *)\r
+               ENOSPC* = 28;   (* No space left on device *)\r
+               ESPIPE* = 29;   (* Illegal seek *)\r
+               EROFS* = 30;    (* Read-only file system *)\r
+               EMLINK* = 31;   (* Too many links *)\r
+               EPIPE* = 32;    (* Broken pipe *)\r
+               EDOM* = 33;     (* Math argument out of domain of func *)\r
+               ERANGE* = 34;   (* Math result not representable *)\r
+               EDEADLK* = 35;  (* Resource deadlock would occur *)\r
+               ENAMETOOLONG* = 36;     (* File name too long *)\r
+               ENOLCK* = 37;   (* No record locks available *)\r
+               ENOSYS* = 38;   (* Function not implemented *)\r
+               ENOTEMPTY* = 39;        (* Directory not empty *)\r
+               ELOOP* = 40;    (* Too many symbolic links encountered *)\r
+               EWOULDBLOCK* = EAGAIN;  (* Operation would block *)\r
+               ENOMSG* = 42;   (* No message of desired type *)\r
+               EIDRM* = 43;    (* Identifier removed *)\r
+               ECHRNG* = 44;   (* Channel number out of range *)\r
+               EL2NSYNC* = 45; (* Level 2 not synchronized *)\r
+               EL3HLT* = 46;   (* Level 3 halted *)\r
+               EL3RST* = 47;   (* Level 3 reset *)\r
+               ELNRNG* = 48;   (* Link number out of range *)\r
+               EUNATCH* = 49;  (* Protocol driver not attached *)\r
+               ENOCSI* = 50;   (* No CSI structure available *)\r
+               EL2HLT* = 51;   (* Level 2 halted *)\r
+               EBADE* = 52;    (* Invalid exchange *)\r
+               EBADR* = 53;    (* Invalid request descriptor *)\r
+               EXFULL* = 54;   (* Exchange full *)\r
+               ENOANO* = 55;   (* No anode *)\r
+               EBADRQC* = 56;  (* Invalid request code *)\r
+               EBADSLT* = 57;  (* Invalid slot *)\r
+               EDEADLOCK* = EDEADLK;\r
+               EBFONT* = 59;   (* Bad font file format *)\r
+               ENOSTR* = 60;   (* Device not a stream *)\r
+               ENODATA* = 61;  (* No data available *)\r
+               ETIME* = 62;    (* Timer expired *)\r
+               ENOSR* = 63;    (* Out of streams resources *)\r
+               ENONET* = 64;   (* Machine is not on the network *)\r
+               ENOPKG* = 65;   (* Package not installed *)\r
+               EREMOTE* = 66;  (* Object is remote *)\r
+               ENOLINK* = 67;  (* Link has been severed *)\r
+               EADV* = 68;     (* Advertise error *)\r
+               ESRMNT* = 69;   (* Srmount error *)\r
+               ECOMM* = 70;    (* Communication error on send *)\r
+               EPROTO* = 71;   (* Protocol error *)\r
+               EMULTIHOP* = 72;        (* Multihop attempted *)\r
+               EDOTDOT* = 73;  (* RFS specific error *)\r
+               EBADMSG* = 74;  (* Not a data message *)\r
+               EOVERFLOW* = 75;        (* Value too large for defined data type *)\r
+               ENOTUNIQ* = 76; (* Name not unique on network *)\r
+               EBADFD* = 77;   (* File descriptor in bad state *)\r
+               EREMCHG* = 78;  (* Remote address changed *)\r
+               ELIBACC* = 79;  (* Can not access a needed shared library *)\r
+               ELIBBAD* = 80;  (* Accessing a corrupted shared library *)\r
+               ELIBSCN* = 81;  (* .lib section in a.out corrupted *)\r
+               ELIBMAX* = 82;  (* Attempting to link in too many shared libraries *)\r
+               ELIBEXEC* = 83; (* Cannot exec a shared library directly *)\r
+               EILSEQ* = 84;   (* Illegal byte sequence *)\r
+               ERESTART* = 85; (* Interrupted system call should be restarted *)\r
+               ESTRPIPE* = 86; (* Streams pipe error *)\r
+               EUSERS* = 87;   (* Too many users *)\r
+               ENOTSOCK* = 88; (* Socket operation on non-socket *)\r
+               EDESTADDRREQ* = 89;     (* Destination address required *)\r
+               EMSGSIZE* = 90; (* Message too long *)\r
+               EPROTOTYPE* = 91;       (* Protocol wrong type for socket *)\r
+               ENOPROTOOPT* = 92;      (* Protocol not available *)\r
+               EPROTONOSUPPORT* = 93;  (* Protocol not supported *)\r
+               ESOCKTNOSUPPORT* = 94;  (* Socket type not supported *)\r
+               EOPNOTSUPP* = 95;       (* Operation not supported on transport endpoint *)\r
+               EPFNOSUPPORT* = 96;     (* Protocol family not supported *)\r
+               EAFNOSUPPORT* = 97;     (* Address family not supported by protocol *)\r
+               EADDRINUSE* = 98;       (* Address already in use *)\r
+               EADDRNOTAVAIL* = 99;    (* Cannot assign requested address *)\r
+               ENETDOWN* = 100;        (* Network is down *)\r
+               ENETUNREACH* = 101;     (* Network is unreachable *)\r
+               ENETRESET* = 102;       (* Network dropped connection because of reset *)\r
+               ECONNABORTED* = 103;    (* Software caused connection abort *)\r
+               ECONNRESET* = 104;      (* Connection reset by peer *)\r
+               ENOBUFS* = 105; (* No buffer space available *)\r
+               EISCONN* = 106; (* Transport endpoint is already connected *)\r
+               ENOTCONN* = 107;        (* Transport endpoint is not connected *)\r
+               ESHUTDOWN* = 108;       (* Cannot send after transport endpoint shutdown *)\r
+               ETOOMANYREFS* = 109;    (* Too many references: cannot splice *)\r
+               ETIMEDOUT* = 110;       (* Connection timed out *)\r
+               ECONNREFUSED* = 111;    (* Connection refused *)\r
+               EHOSTDOWN* = 112;       (* Host is down *)\r
+               EHOSTUNREACH* = 113;    (* No route to host *)\r
+               EALREADY* = 114;        (* Operation already in progress *)\r
+               EINPROGRESS* = 115;     (* Operation now in progress *)\r
+               ESTALE* = 116;  (* Stale NFS file handle *)\r
+               EUCLEAN* = 117; (* Structure needs cleaning *)\r
+               ENOTNAM* = 118; (* Not a XENIX named type file *)\r
+               ENAVAIL* = 119; (* No XENIX semaphores available *)\r
+               EISNAM* = 120;  (* Is a named type file *)\r
+               EREMOTEIO* = 121;       (* Remote I/O error *)\r
+               EDQUOT* = 122;  (* Quota exceeded *)\r
+               ENOMEDIUM* = 123;       (* No medium found *)\r
+               EMEDIUMTYPE* = 124;     (* Wrong medium type *)\r
+\r
+               PROT_NONE* = {};        (* No access *)\r
+               PROT_READ* = {2};       (* Pages can be read *)\r
+               PROT_WRITE* = {1};      (* Pages can be written *)\r
+               PROT_EXEC* = {0};       (* Pages can be executed *)\r
+               MAP_FILE* = {0};        (* Mapped from a file or device *)\r
+               MAP_ANON* = {1};        (* Allocated from anonymous virtual memory *)\r
+               MAP_COPY* = {5};        (* Virtual copy of region at mapping time *)\r
+               MAP_SHARED* = {4};      (* Share changes *)\r
+               MAP_PRIVATE* = {};      (* Changes private; copy pages on write *)\r
+               MAP_FIXED* = {8};       (* Map address must be exactly as requested *)\r
+               MAP_NOEXTEND* = {9} ;   (* For MAP_FILE, don't change file size *)\r
+               MAP_HASSEMPHORE*= {10}; (* Region may contain semaphores *)\r
+               MAP_INHERIT* = {11} ;   (* Region is retained after exec *)\r
+               MAP_FAILED* = -1;\r
+\r
+               O_RDONLY* = {} ;        (* Open read-only *)\r
+               O_WRONLY* = {0} ;       (* Open write-only *)\r
+               O_RDWR* = {1} ; (* Open read/write *)\r
+               O_NONBLOCK* = {11};\r
+\r
+               SIG_BLOCK* = 0; (* Block signals *)\r
+               SIG_UNBLOCK* = 1;       (* Unblock signals *)\r
+               SIG_SETMASK* = 2;       (* Set the set of blocked signals *)\r
+\r
+               _SC_PAGESIZE* = 30;\r
+\r
+               SIGSTKSZ* = 8192;\r
+\r
+               STDIN_FILENO* = 0;\r
+               STDOUT_FILENO* = 1;\r
+               STDERR_FILENO* = 2;\r
+\r
+       TYPE \r
+               __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER;\r
+               PtrVoid* = INTEGER;\r
+               PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;\r
+               wchar_t* = INTEGER;\r
+               PtrWSTR* = POINTER TO ARRAY [untagged] OF wchar_t;\r
+               PtrInt* = INTEGER;\r
+               StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;\r
+               PtrFILE* = INTEGER;\r
+               PtrDIR* = INTEGER;\r
+               PtrProc* = INTEGER;\r
+               clock_t* = INTEGER;\r
+               jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *)\r
+               mode_t* = SET;\r
+               off_t* = INTEGER;\r
+               SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER;\r
+               CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER;\r
+               size_t* = INTEGER; (* should be unsigned int *)\r
+               ssize_t* = INTEGER;\r
+               sigjmp_buf* = RECORD [untagged] \r
+                       buf*: jmp_buf;\r
+                       mask_was_saved*: INTEGER;\r
+                       saved_mask*: sigset_t;\r
+               END; \r
+               \r
+               PtrDirent* = POINTER TO Dirent;\r
+               PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;\r
+               Dirent* = RECORD  [untagged]\r
+                       d_ino*: INTEGER;        (* inode number *)\r
+                       d_off*: off_t;  (* offset to this dirent *)\r
+                       d_reclen*: SHORTINT;    (* length of this d_name *)\r
+                       d_type*: BYTE;\r
+                       d_name*: ARRAY[untagged]  NAME_MAX+1 OF SHORTCHAR;              (* file name (null-terminated) *)\r
+               END;\r
+               \r
+               pid_t* = INTEGER;\r
+               uid_t* = INTEGER;\r
+               sigval_t* = INTEGER;\r
+\r
+               siginfo_t* = RECORD [untagged]\r
+                       si_signo*: INTEGER;     (* Signal number *)\r
+                       si_errno*: INTEGER;     (* An errno value *)\r
+                       si_code*: INTEGER;      (* Signal code *)\r
+                       si_pid*: pid_t;         (* Sending process ID *)\r
+                       si_uid*: uid_t;         (* Real user ID of sending process *)\r
+                       si_status*: INTEGER;    (* Exit value or signal *)\r
+                       si_utime*: clock_t;     (* User time consumed *)\r
+                       si_stime*: clock_t;     (* System time consumed *)\r
+                       si_value*: sigval_t;    (* Signal value *)\r
+                       si_int*: INTEGER;       (* POSIX.1b signal *)\r
+                       si_ptr*: PtrVoid;       (* POSIX.1b signal *)\r
+                       si_addr*: PtrVoid;      (* Memory location which caused fault *)\r
+                       si_band*: INTEGER;      (* Band event *)\r
+                       si_fd*: INTEGER;        (* File descriptor *)\r
+               END;\r
+               Ptrsiginfo_t* = POINTER TO siginfo_t;\r
+               \r
+               sigset_t* = ARRAY [untagged] 128 OF BYTE;\r
+               Ptrsigset_t* = INTEGER;\r
+               sigaction_t* = RECORD [untagged]\r
+                       sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)\r
+                       sa_mask*: sigset_t;\r
+                       sa_flags*: SET;\r
+                       sa_restorer*: LONGINT;\r
+               END;\r
+               \r
+               stack_t* = RECORD [untagged]\r
+                       ss_sp*: PtrVoid;    \r
+                       ss_flags*: INTEGER;    \r
+                       ss_size*: size_t;\r
+               END;\r
+               \r
+               stat_t* = RECORD [untagged]\r
+                       st_dev*: LONGINT;       (* device *)\r
+                       __pad1: SHORTINT;\r
+                       st_ino*: INTEGER;       (* 64? inode *)\r
+                       st_mode*: mode_t;       (* protection *)\r
+                       st_nlink*: INTEGER;     (* number of hard links *)\r
+                       st_uid*: uid_t; (* user ID of owner *)\r
+                       st_gid*: INTEGER;       (* group ID of owner *)\r
+                       st_rdev*: LONGINT;      (* device type (if inode device) *)\r
+                       __pad2: SHORTINT;\r
+                       st_size*: off_t;        (* 64? total size, in bytes *)\r
+                       st_blksize*: INTEGER;   (* blocksize for filesystem I/O *)\r
+                       st_blocks*: INTEGER;    (* 64? number of blocks allocated *)\r
+                       st_atime*: INTEGER;     (* time of last access *)\r
+                       __unused1:  INTEGER;\r
+                       st_mtime*: INTEGER;     (* time of last modification *) \r
+                       __unused2:  INTEGER;\r
+                       st_ctime*: INTEGER;     (* time of last change *)\r
+                       __unused3:  INTEGER;\r
+                       __unused4:  INTEGER;\r
+                       __unused5:  INTEGER;\r
+               END;\r
+               \r
+               fpreg* = RECORD [untagged]\r
+                       significand*: ARRAY [untagged] 4 OF CHAR;\r
+                       exponent*: CHAR;\r
+               END;\r
+\r
+               fpstate* = RECORD [untagged]\r
+                       cw*: INTEGER;   (* unsigned long int *)\r
+                       sw*: INTEGER;   (* unsigned long int *)\r
+                       tag*: INTEGER;  (* unsigned long int *)\r
+                       ipoff*: INTEGER;        (* unsigned long int *)\r
+                       cssel*: INTEGER;        (* unsigned long int *)\r
+                       dataoff*: INTEGER;      (* unsigned long int *)\r
+                       datasel*: INTEGER;      (* unsigned long int *)\r
+                       _st: ARRAY [untagged] 8 OF fpreg;\r
+                       status*: INTEGER;       (* unsigned long int *)\r
+               END;\r
+\r
+               gregset_t* = ARRAY [untagged] 19 OF INTEGER;\r
+               fpregset_t* = POINTER TO fpstate;\r
+               \r
+               mcontext_t*  = RECORD [untagged]\r
+                       gregs*: gregset_t;\r
+                       fpregs*: fpregset_t;\r
+                       oldmask*: INTEGER;      (* unsigned long int *)\r
+                       cr2*: INTEGER;  (* unsigned long int *)\r
+               END;\r
+               \r
+               Ptrucontext_t* = POINTER TO ucontext_t;\r
+               ucontext_t* = RECORD [untagged]\r
+                       uc_flags*: INTEGER;     (* unsigned long int *)\r
+                       uc_link*: Ptrucontext_t;\r
+                       uc_stack*: stack_t;\r
+                       uc_mcontext*: mcontext_t;\r
+                       uc_sigmask: sigset_t;\r
+                       __fpregs_mem*: fpstate;\r
+               END;\r
+               \r
+               (* Times and Dates *)\r
+               \r
+               tm* = POINTER TO tmDesc;\r
+               tmDesc* = RECORD [untagged]\r
+                       tm_sec*: INTEGER;       (* seconds *)\r
+                       tm_min*: INTEGER;       (* minutes *)\r
+                       tm_hour*: INTEGER;      (* hours *)\r
+                       tm_mday*: INTEGER;      (* day of the month *)\r
+                       tm_mon*: INTEGER;       (* month *)\r
+                       tm_year*: INTEGER;      (* year *)\r
+                       tm_wday*: INTEGER;      (* day of the week *)\r
+                       tm_yday*: INTEGER;      (* day in the year *)\r
+                       tm_isdst*: INTEGER;     (* daylight saving time *)\r
+               END;\r
+               time_t* = INTEGER;\r
+\r
+       VAR\r
+               timezone*: INTEGER; (* seconds from GMT *)              \r
+(*\r
+               stdin*, stdout*, stderr* : PtrFILE;\r
+*)\r
+\r
+       PROCEDURE [ccall] calloc* (num, size: size_t): PtrVoid;\r
+       PROCEDURE [ccall] clock* (): clock_t;\r
+       PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;\r
+       PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t): INTEGER;\r
+       PROCEDURE [ccall] exit* (status: INTEGER);\r
+       PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;\r
+       PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;\r
+       PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;\r
+       PROCEDURE [ccall] fdopen* (fildes: INTEGER; mode: PtrSTR): PtrFILE;\r
+       PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;\r
+       PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;\r
+       PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] free* (p: PtrVoid);\r
+       PROCEDURE [ccall] ftell* (stream: PtrFILE): LONGINT;\r
+       PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; descriptors: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;\r
+       PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;\r
+       PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER;\r
+       PROCEDURE [ccall] gets* (s: PtrSTR);\r
+       PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;\r
+       PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;\r
+       PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;\r
+       PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;\r
+       PROCEDURE [ccall] mkdir* (pathname: PtrSTR; mode: mode_t): INTEGER;\r
+       PROCEDURE [ccall] mktime* (timeptr: tm): time_t;\r
+       PROCEDURE [ccall] opendir* (name: PtrSTR): PtrDIR;\r
+       PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER; \r
+       PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;\r
+       PROCEDURE [ccall] remove* (filename: PtrSTR): INTEGER;\r
+       PROCEDURE [ccall] rename* (oldname, newname: PtrSTR): INTEGER;\r
+       PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;\r
+       PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER;\r
+       PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;\r
+       PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;\r
+       PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;\r
+       PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;\r
+       PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);\r
+       PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;\r
+       PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER; \r
+(*\r
+       PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER;   stat is a macro and expands to __xstat(3, filename, buf)\r
+*)\r
+       PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;\r
+       PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;\r
+       PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;\r
+\r
+       PROCEDURE [ccall] __errno_location*(): INTEGER;\r
+\r
+       PROCEDURE [ccall] open* (name: PtrSTR; flags: SET; mode: mode_t): INTEGER;\r
+       PROCEDURE [ccall] close* (d: INTEGER): INTEGER;\r
+       PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): ssize_t;\r
+       PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): ssize_t;\r
+\r
+       PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd, offset: off_t): PtrVoid;\r
+       PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;\r
+       PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;\r
+\r
+       PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;\r
+\r
+       PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;\r
+       \r
+       PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): INTEGER;\r
+\r
+       PROCEDURE [ccall] sigprocmask* (how: INTEGER; set: Ptrsigset_t; oldset: Ptrsigset_t): INTEGER;\r
+       \r
+       PROCEDURE [ccall] system* (cmd: PtrSTR): INTEGER;\r
+       PROCEDURE [ccall] popen* (cmd, mode: PtrSTR): INTEGER;\r
+\r
+END LinLibc.\r