Libc.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. MODULE LinLibc ["libc.so.6"];
  2. (* THIS IS TEXT COPY OF Libc.odc *)
  3. (* DO NOT EDIT *)
  4. IMPORT SYSTEM;
  5. CONST
  6. NULL* = 0H;
  7. TRUE* = 1;
  8. FALSE* = 0;
  9. (* file constants *)
  10. SEEK_SET* = 0;
  11. SEEK_CUR* = 1;
  12. SEEK_END* = 2;
  13. NAME_MAX* = 256;
  14. (* The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems.*)
  15. CLOCKS_PER_SECOND* = 1000000;
  16. (* temp directory defined in stdio.h *)
  17. P_tmpdir* = "/tmp";
  18. (* signal constants *) (* Fake signal functions. *)
  19. SIG_ERR* = -1; (* Error return. *)
  20. SIG_DFL* = 0; (* Default action. *)
  21. SIG_IGN* = 1; (* Ignore signal. *)
  22. SIG_HOLD* = 2; (* Add signal to hold mask. *)
  23. (* Signals. *)
  24. SIGHUP* = 1; (* Hangup (POSIX). *)
  25. SIGINT* = 2; (* Interrupt (ANSI). *)
  26. SIGQUIT* = 3; (* Quit (POSIX). *)
  27. SIGILL* = 4; (* Illegal instruction (ANSI). *)
  28. SIGTRAP* = 5; (* Trace trap (POSIX). *)
  29. SIGABRT* = 6; (* Abort (ANSI). *)
  30. SIGIOT* = 6; (* IOT trap (4.2 BSD). *)
  31. SIGBUS* = 7; (* BUS error (4.2 BSD). *)
  32. SIGFPE* = 8; (* Floating-point exception (ANSI). *)
  33. SIGKILL* = 9; (* Kill, unblockable (POSIX). *)
  34. SIGUSR1* = 10; (* User-defined signal 1 (POSIX). *)
  35. SIGSEGV* = 11; (* Segmentation violation (ANSI). *)
  36. SIGUSR2* = 12; (* User-defined signal 2 (POSIX). *)
  37. SIGPIPE* = 13; (* Broken pipe (POSIX). *)
  38. SIGALRM* = 14; (* Alarm clock (POSIX). *)
  39. SIGTERM* = 15; (* Termination (ANSI). *)
  40. SIGSTKFLT* = 16; (* Stack fault. *)
  41. SIGCHLD* = 17; (* Child status has changed (POSIX). *)
  42. SIGCLD* = SIGCHLD; (* Same as SIGCHLD (System V). *)
  43. SIGCONT* = 18; (* Continue (POSIX). *)
  44. SIGSTOP* = 19; (* Stop, unblockable (POSIX). *)
  45. SIGTSTP* = 20; (* Keyboard stop (POSIX). *)
  46. SIGTTIN* = 21; (* Background read from tty (POSIX). *)
  47. SIGTTOU* = 22; (* Background write to tty (POSIX). *)
  48. SIGURG* = 23; (* Urgent condition on socket (4.2 BSD). *)
  49. SIGXCPU* = 24; (* CPU limit exceeded (4.2 BSD). *)
  50. SIGXFSZ* = 25; (* File size limit exceeded (4.2 BSD). *)
  51. SIGVTALRM* =26; (* Virtual alarm clock (4.2 BSD). *)
  52. SIGPROF* = 27; (* Profiling alarm clock (4.2 BSD). *)
  53. SIGWINCH* = 28; (* Window size change (4.3 BSD, Sun). *)
  54. SIGIO* = 29; (* I/O now possible (4.2 BSD). *)
  55. SIGPOLL* = SIGIO; (* Pollable event occurred (System V). *)
  56. SIGPWR* = 30; (* Power failure restart (System V). *)
  57. SIGSYS* = 31; (* Bad system call. *)
  58. SIGUNUSED* =31;
  59. _NSIG* = 64; (* Biggest signal number + 1 (including real-time signals). *)
  60. __SIGRTMIN*= 32;
  61. __SIGRTMAX*=_NSIG - 1;
  62. (* Bits in `sa_flags'. *)
  63. SA_NOCLDSTOP* = {0}; (* = 1 Don't send SIGCHLD when children stop. *)
  64. SA_NOCLDWAIT* = {1}; (* = 2 Don't create zombie on child death. *)
  65. SA_SIGINFO* = {2}; (* = 4 Invoke signal-catching function wth three arguments instead of one. *)
  66. SA_ONSTACK* = {27}; (* = 0x08000000 Use signal stack by using `sa_restorer'. *)
  67. SA_RESTART* = {28}; (* = 0x10000000 Restart syscall on signal return. *)
  68. SA_NODEFER* = {30}; (* = 0x40000000 Don't automatically block the signal when its handler is being executed. *)
  69. SA_RESETHAND* = {31}; (* = 0x80000000 Reset to SIG_DFL on entry to handler. *)
  70. SA_INTERRUPT* = {29}; (* = 0x20000000 Historical no-op. *)
  71. (* Some aliases for the SA_ constants. *)
  72. SA_NOMASK* = SA_NODEFER;
  73. SA_ONESHOT* = SA_RESETHAND;
  74. SA_STACK* = SA_ONSTACK;
  75. (* code values for siginfo_t.si_code when sig = SIGFPE *)
  76. FPE_INTDIV* = 1; (* Integer divide by zero. *)
  77. FPE_INTOVF* = 2; (* Integer overflow. *)
  78. FPE_FLTDIV* = 3; (* Floating point divide by zero. *)
  79. FPE_FLTOVF* = 4; (* Floating point overflow. *)
  80. FPE_FLTUND* = 5; (* Floating point underflow. *)
  81. FPE_FLTRES* =6; (* Floating point inexact result. *)
  82. FPE_FLTINV* = 7; (* Floating point invalid operation. *)
  83. FPE_FLTSUB* = 8; (* Subscript out of range. *)
  84. (* possible error constants for errno *)
  85. EPERM* = 1; (* Operation not permitted *)
  86. ENOENT* = 2; (* No such file or directory *)
  87. ESRCH* = 3; (* No such process *)
  88. EINTR* = 4; (* Interrupted system call *)
  89. EIO* = 5; (* I/O error *)
  90. ENXIO* = 6; (* No such device or address *)
  91. E2BIG* = 7; (* Arg list too long *)
  92. ENOEXEC* = 8; (* Exec format error *)
  93. EBADF* = 9; (* Bad file number *)
  94. ECHILD* = 10; (* No child processes *)
  95. EAGAIN* = 11; (* Try again *)
  96. ENOMEM* = 12; (* Out of memory *)
  97. EACCES* = 13; (* Permission denied *)
  98. EFAULT* = 14; (* Bad address *)
  99. ENOTBLK* = 15; (* Block device required *)
  100. EBUSY* = 16; (* Device or resource busy *)
  101. EEXIST* = 17; (* File exists *)
  102. EXDEV* = 18; (* Cross-device link *)
  103. ENODEV* = 19; (* No such device *)
  104. ENOTDIR* = 20; (* Not a directory *)
  105. EISDIR* = 21; (* Is a directory *)
  106. EINVAL* = 22; (* Invalid argument *)
  107. ENFILE* = 23; (* File table overflow *)
  108. EMFILE* = 24; (* Too many open files *)
  109. ENOTTY* = 25; (* Not a typewriter *)
  110. ETXTBSY* = 26; (* Text file busy *)
  111. EFBIG* = 27; (* File too large *)
  112. ENOSPC* = 28; (* No space left on device *)
  113. ESPIPE* = 29; (* Illegal seek *)
  114. EROFS* = 30; (* Read-only file system *)
  115. EMLINK* = 31; (* Too many links *)
  116. EPIPE* = 32; (* Broken pipe *)
  117. EDOM* = 33; (* Math argument out of domain of func *)
  118. ERANGE* = 34; (* Math result not representable *)
  119. EDEADLK* = 35; (* Resource deadlock would occur *)
  120. ENAMETOOLONG* = 36; (* File name too long *)
  121. ENOLCK* = 37; (* No record locks available *)
  122. ENOSYS* = 38; (* Function not implemented *)
  123. ENOTEMPTY* = 39; (* Directory not empty *)
  124. ELOOP* = 40; (* Too many symbolic links encountered *)
  125. EWOULDBLOCK* = EAGAIN; (* Operation would block *)
  126. ENOMSG* = 42; (* No message of desired type *)
  127. EIDRM* = 43; (* Identifier removed *)
  128. ECHRNG* = 44; (* Channel number out of range *)
  129. EL2NSYNC* = 45; (* Level 2 not synchronized *)
  130. EL3HLT* = 46; (* Level 3 halted *)
  131. EL3RST* = 47; (* Level 3 reset *)
  132. ELNRNG* = 48; (* Link number out of range *)
  133. EUNATCH* = 49; (* Protocol driver not attached *)
  134. ENOCSI* = 50; (* No CSI structure available *)
  135. EL2HLT* = 51; (* Level 2 halted *)
  136. EBADE* = 52; (* Invalid exchange *)
  137. EBADR* = 53; (* Invalid request descriptor *)
  138. EXFULL* = 54; (* Exchange full *)
  139. ENOANO* = 55; (* No anode *)
  140. EBADRQC* = 56; (* Invalid request code *)
  141. EBADSLT* = 57; (* Invalid slot *)
  142. EDEADLOCK* = EDEADLK;
  143. EBFONT* = 59; (* Bad font file format *)
  144. ENOSTR* = 60; (* Device not a stream *)
  145. ENODATA* = 61; (* No data available *)
  146. ETIME* = 62; (* Timer expired *)
  147. ENOSR* = 63; (* Out of streams resources *)
  148. ENONET* = 64; (* Machine is not on the network *)
  149. ENOPKG* = 65; (* Package not installed *)
  150. EREMOTE* = 66; (* Object is remote *)
  151. ENOLINK* = 67; (* Link has been severed *)
  152. EADV* = 68; (* Advertise error *)
  153. ESRMNT* = 69; (* Srmount error *)
  154. ECOMM* = 70; (* Communication error on send *)
  155. EPROTO* = 71; (* Protocol error *)
  156. EMULTIHOP* = 72; (* Multihop attempted *)
  157. EDOTDOT* = 73; (* RFS specific error *)
  158. EBADMSG* = 74; (* Not a data message *)
  159. EOVERFLOW* = 75; (* Value too large for defined data type *)
  160. ENOTUNIQ* = 76; (* Name not unique on network *)
  161. EBADFD* = 77; (* File descriptor in bad state *)
  162. EREMCHG* = 78; (* Remote address changed *)
  163. ELIBACC* = 79; (* Can not access a needed shared library *)
  164. ELIBBAD* = 80; (* Accessing a corrupted shared library *)
  165. ELIBSCN* = 81; (* .lib section in a.out corrupted *)
  166. ELIBMAX* = 82; (* Attempting to link in too many shared libraries *)
  167. ELIBEXEC* = 83; (* Cannot exec a shared library directly *)
  168. EILSEQ* = 84; (* Illegal byte sequence *)
  169. ERESTART* = 85; (* Interrupted system call should be restarted *)
  170. ESTRPIPE* = 86; (* Streams pipe error *)
  171. EUSERS* = 87; (* Too many users *)
  172. ENOTSOCK* = 88; (* Socket operation on non-socket *)
  173. EDESTADDRREQ* = 89; (* Destination address required *)
  174. EMSGSIZE* = 90; (* Message too long *)
  175. EPROTOTYPE* = 91; (* Protocol wrong type for socket *)
  176. ENOPROTOOPT* = 92; (* Protocol not available *)
  177. EPROTONOSUPPORT* = 93; (* Protocol not supported *)
  178. ESOCKTNOSUPPORT* = 94; (* Socket type not supported *)
  179. EOPNOTSUPP* = 95; (* Operation not supported on transport endpoint *)
  180. EPFNOSUPPORT* = 96; (* Protocol family not supported *)
  181. EAFNOSUPPORT* = 97; (* Address family not supported by protocol *)
  182. EADDRINUSE* = 98; (* Address already in use *)
  183. EADDRNOTAVAIL* = 99; (* Cannot assign requested address *)
  184. ENETDOWN* = 100; (* Network is down *)
  185. ENETUNREACH* = 101; (* Network is unreachable *)
  186. ENETRESET* = 102; (* Network dropped connection because of reset *)
  187. ECONNABORTED* = 103; (* Software caused connection abort *)
  188. ECONNRESET* = 104; (* Connection reset by peer *)
  189. ENOBUFS* = 105; (* No buffer space available *)
  190. EISCONN* = 106; (* Transport endpoint is already connected *)
  191. ENOTCONN* = 107; (* Transport endpoint is not connected *)
  192. ESHUTDOWN* = 108; (* Cannot send after transport endpoint shutdown *)
  193. ETOOMANYREFS* = 109; (* Too many references: cannot splice *)
  194. ETIMEDOUT* = 110; (* Connection timed out *)
  195. ECONNREFUSED* = 111; (* Connection refused *)
  196. EHOSTDOWN* = 112; (* Host is down *)
  197. EHOSTUNREACH* = 113; (* No route to host *)
  198. EALREADY* = 114; (* Operation already in progress *)
  199. EINPROGRESS* = 115; (* Operation now in progress *)
  200. ESTALE* = 116; (* Stale NFS file handle *)
  201. EUCLEAN* = 117; (* Structure needs cleaning *)
  202. ENOTNAM* = 118; (* Not a XENIX named type file *)
  203. ENAVAIL* = 119; (* No XENIX semaphores available *)
  204. EISNAM* = 120; (* Is a named type file *)
  205. EREMOTEIO* = 121; (* Remote I/O error *)
  206. EDQUOT* = 122; (* Quota exceeded *)
  207. ENOMEDIUM* = 123; (* No medium found *)
  208. EMEDIUMTYPE* = 124; (* Wrong medium type *)
  209. PROT_NONE* = {}; (* No access *)
  210. PROT_READ* = {2}; (* Pages can be read *)
  211. PROT_WRITE* = {1}; (* Pages can be written *)
  212. PROT_EXEC* = {0}; (* Pages can be executed *)
  213. MAP_FILE* = {0}; (* Mapped from a file or device *)
  214. MAP_ANON* = {1}; (* Allocated from anonymous virtual memory *)
  215. MAP_COPY* = {5}; (* Virtual copy of region at mapping time *)
  216. MAP_SHARED* = {4}; (* Share changes *)
  217. MAP_PRIVATE* = {}; (* Changes private; copy pages on write *)
  218. MAP_FIXED* = {8}; (* Map address must be exactly as requested *)
  219. MAP_NOEXTEND* = {9} ; (* For MAP_FILE, don't change file size *)
  220. MAP_HASSEMPHORE*= {10}; (* Region may contain semaphores *)
  221. MAP_INHERIT* = {11} ; (* Region is retained after exec *)
  222. MAP_FAILED* = -1;
  223. O_RDONLY* = {} ; (* Open read-only *)
  224. O_WRONLY* = {0} ; (* Open write-only *)
  225. O_RDWR* = {1} ; (* Open read/write *)
  226. _SC_PAGESIZE* = 30;
  227. SIGSTKSZ* = 8192;
  228. TYPE
  229. __ftw_func_t* = PROCEDURE (fileName: PtrSTR; VAR [nil] stat: stat_t; flag: INTEGER): INTEGER;
  230. PtrVoid* = INTEGER;
  231. PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
  232. PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR;
  233. PtrInt* = INTEGER;
  234. StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
  235. PtrFILE* = INTEGER;
  236. PtrDIR* = INTEGER;
  237. PtrProc* = INTEGER;
  238. clock_t* = INTEGER;
  239. jmp_buf* = ARRAY [untagged] 6 OF INTEGER; (* bx, si, di, bp, sp, pc *)
  240. mode_t* = SET;
  241. off_t* = INTEGER;
  242. SelectorFunc* = PROCEDURE (dirent: Dirent): INTEGER;
  243. CmpFunc* = PROCEDURE (VAR [nil] dirent1, dirent2: PtrDirent): INTEGER;
  244. size_t* = INTEGER; (* should be unsigned int *)
  245. sigjmp_buf* = RECORD [untagged]
  246. buf*: jmp_buf;
  247. mask_was_saved*: INTEGER;
  248. saved_mask*: sigset_t;
  249. END;
  250. PtrDirent* = POINTER TO Dirent;
  251. PtrDirentArray* = POINTER TO ARRAY [untagged] OF Dirent;
  252. Dirent* = RECORD [untagged]
  253. d_ino*: INTEGER; (* inode number *)
  254. d_off*: off_t; (* offset to this dirent *)
  255. d_reclen*: SHORTINT; (* length of this d_name *)
  256. d_type*: BYTE;
  257. d_name*: ARRAY[untagged] NAME_MAX+1 OF SHORTCHAR; (* file name (null-terminated) *)
  258. END;
  259. pid_t* = INTEGER;
  260. uid_t* = INTEGER;
  261. sigval_t* = INTEGER;
  262. siginfo_t* = RECORD [untagged]
  263. si_signo*: INTEGER; (* Signal number *)
  264. si_errno*: INTEGER; (* An errno value *)
  265. si_code*: INTEGER; (* Signal code *)
  266. si_pid*: pid_t; (* Sending process ID *)
  267. si_uid*: uid_t; (* Real user ID of sending process *)
  268. si_status*: INTEGER; (* Exit value or signal *)
  269. si_utime*: clock_t; (* User time consumed *)
  270. si_stime*: clock_t; (* System time consumed *)
  271. si_value*: sigval_t; (* Signal value *)
  272. si_int*: INTEGER; (* POSIX.1b signal *)
  273. si_ptr*: PtrVoid; (* POSIX.1b signal *)
  274. si_addr*: PtrVoid; (* Memory location which caused fault *)
  275. si_band*: INTEGER; (* Band event *)
  276. si_fd*: INTEGER; (* File descriptor *)
  277. END;
  278. Ptrsiginfo_t* = POINTER TO siginfo_t;
  279. sigset_t* = ARRAY [untagged] 128 OF BYTE;
  280. Ptrsigset_t* = INTEGER;
  281. sigaction_t* = RECORD [untagged]
  282. sa_sigaction*: PROCEDURE (sig: INTEGER; siginfo: Ptrsiginfo_t; ptr: Ptrucontext_t); (* union with sa_handler*: PtrProc;*)
  283. sa_mask*: sigset_t;
  284. sa_flags*: SET;
  285. sa_restorer*: LONGINT;
  286. END;
  287. stack_t* = RECORD [untagged]
  288. ss_sp*: PtrVoid;
  289. ss_flags*: INTEGER;
  290. ss_size*: size_t;
  291. END;
  292. stat_t* = RECORD [untagged]
  293. st_dev*: LONGINT; (* device *)
  294. __pad1: SHORTINT;
  295. st_ino*: INTEGER; (* 64? inode *)
  296. st_mode*: mode_t; (* protection *)
  297. st_nlink*: INTEGER; (* number of hard links *)
  298. st_uid*: uid_t; (* user ID of owner *)
  299. st_gid*: INTEGER; (* group ID of owner *)
  300. st_rdev*: LONGINT; (* device type (if inode device) *)
  301. __pad2: SHORTINT;
  302. st_size*: off_t; (* 64? total size, in bytes *)
  303. st_blksize*: INTEGER; (* blocksize for filesystem I/O *)
  304. st_blocks*: INTEGER; (* 64? number of blocks allocated *)
  305. st_atime*: INTEGER; (* time of last access *)
  306. __unused1: INTEGER;
  307. st_mtime*: INTEGER; (* time of last modification *)
  308. __unused2: INTEGER;
  309. st_ctime*: INTEGER; (* time of last change *)
  310. __unused3: INTEGER;
  311. __unused4: INTEGER;
  312. __unused5: INTEGER;
  313. END;
  314. fpreg* = RECORD [untagged]
  315. significand*: ARRAY [untagged] 4 OF CHAR;
  316. exponent*: CHAR;
  317. END;
  318. fpstate* = RECORD [untagged]
  319. cw*: INTEGER; (* unsigned long int *)
  320. sw*: INTEGER; (* unsigned long int *)
  321. tag*: INTEGER; (* unsigned long int *)
  322. ipoff*: INTEGER; (* unsigned long int *)
  323. cssel*: INTEGER; (* unsigned long int *)
  324. dataoff*: INTEGER; (* unsigned long int *)
  325. datasel*: INTEGER; (* unsigned long int *)
  326. _st: ARRAY [untagged] 8 OF fpreg;
  327. status*: INTEGER; (* unsigned long int *)
  328. END;
  329. gregset_t* = ARRAY [untagged] 19 OF INTEGER;
  330. fpregset_t* = POINTER TO fpstate;
  331. mcontext_t* = RECORD [untagged]
  332. gregs*: gregset_t;
  333. fpregs*: fpregset_t;
  334. oldmask*: INTEGER; (* unsigned long int *)
  335. cr2*: INTEGER; (* unsigned long int *)
  336. END;
  337. Ptrucontext_t* = POINTER TO ucontext_t;
  338. ucontext_t* = RECORD [untagged]
  339. uc_flags*: INTEGER; (* unsigned long int *)
  340. uc_link*: Ptrucontext_t;
  341. uc_stack*: stack_t;
  342. uc_mcontext*: mcontext_t;
  343. uc_sigmask: sigset_t;
  344. __fpregs_mem*: fpstate;
  345. END;
  346. (* Times and Dates *)
  347. tm* = POINTER TO tmDesc;
  348. tmDesc* = RECORD [untagged]
  349. tm_sec*: INTEGER; (* seconds *)
  350. tm_min*: INTEGER; (* minutes *)
  351. tm_hour*: INTEGER; (* hours *)
  352. tm_mday*: INTEGER; (* day of the month *)
  353. tm_mon*: INTEGER; (* month *)
  354. tm_year*: INTEGER; (* year *)
  355. tm_wday*: INTEGER; (* day of the week *)
  356. tm_yday*: INTEGER; (* day in the year *)
  357. tm_isdst*: INTEGER; (* daylight saving time *)
  358. END;
  359. time_t* = INTEGER;
  360. VAR
  361. timezone*: INTEGER; (* seconds from GMT *)
  362. stdin*, stdout*, stderr* : PtrFILE;
  363. PROCEDURE [ccall] calloc* (num, size: size_t): PtrVoid;
  364. PROCEDURE [ccall] clock* (): clock_t;
  365. PROCEDURE [ccall] closedir* (dir: PtrDIR): INTEGER;
  366. PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t);
  367. PROCEDURE [ccall] exit* (status: INTEGER);
  368. PROCEDURE [ccall] fclose* (fp: PtrFILE): INTEGER;
  369. PROCEDURE [ccall] fflush* (fp: PtrFILE): INTEGER;
  370. PROCEDURE [ccall] fopen* (filename, mode: PtrSTR): PtrFILE;
  371. PROCEDURE [ccall] feof* (fp: PtrFILE): INTEGER;
  372. PROCEDURE [ccall] fread* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;
  373. PROCEDURE [ccall] fseek* (stream: PtrFILE; offset, origin: INTEGER): INTEGER;
  374. PROCEDURE [ccall] free* (p: PtrVoid);
  375. PROCEDURE [ccall] ftell* (stream: PtrFILE): LONGINT;
  376. PROCEDURE [ccall] ftw* (filename: PtrSTR; func: __ftw_func_t; descriptors: INTEGER): INTEGER;
  377. PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size, nobj: size_t; stream: PtrFILE): size_t;
  378. PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
  379. PROCEDURE [ccall] getcontext* (ucontext_t: Ptrucontext_t): INTEGER;
  380. PROCEDURE [ccall] gets* (s: PtrSTR);
  381. PROCEDURE [ccall] fgets* (s: PtrSTR; n: INTEGER; fp: PtrFILE): PtrSTR;
  382. PROCEDURE [ccall] gmtime* (VAR timep: time_t): tm;
  383. PROCEDURE [ccall] kill* (pid: pid_t; sig: INTEGER): INTEGER;
  384. PROCEDURE [ccall] localtime* (VAR timep: time_t): tm;
  385. PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
  386. PROCEDURE [ccall] mkdir* (pathname: PtrSTR; mode: mode_t): INTEGER;
  387. PROCEDURE [ccall] mktime* (timeptr: tm): time_t;
  388. PROCEDURE [ccall] opendir* (name: PtrSTR): PtrDIR;
  389. PROCEDURE [ccall] printf* (s: PtrSTR): INTEGER;
  390. PROCEDURE [ccall] readdir* (dir: PtrDIR): PtrDirent;
  391. PROCEDURE [ccall] remove* (filename: PtrSTR): INTEGER;
  392. PROCEDURE [ccall] rename* (oldname, newname: PtrSTR): INTEGER;
  393. PROCEDURE [ccall] scandir* (dir: PtrDIR; namelist: PtrDirentArray; selector: SelectorFunc; cmp: CmpFunc): INTEGER;
  394. PROCEDURE [ccall] setcontext* (ucontext_t: Ptrucontext_t): INTEGER;
  395. PROCEDURE [ccall] setjmp* (VAR env: jmp_buf): INTEGER;
  396. PROCEDURE [ccall] sigaction* (sig_num: INTEGER; VAR [nil] act: sigaction_t; VAR [nil] oldact: sigaction_t): INTEGER;
  397. PROCEDURE [ccall] sigaddset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
  398. PROCEDURE [ccall] sigdelset* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
  399. PROCEDURE [ccall] sigemptyset* (set: Ptrsigset_t): INTEGER;
  400. PROCEDURE [ccall] sigfillset* (set: Ptrsigset_t): INTEGER;
  401. PROCEDURE [ccall] sigismemeber* (set: Ptrsigset_t; sig: INTEGER): INTEGER;
  402. PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: INTEGER);
  403. PROCEDURE [ccall] signal* (sig_num: INTEGER; sighandler: PtrProc): PtrProc;
  404. PROCEDURE [ccall] sigsetjmp* ["__sigsetjmp"] (VAR env: sigjmp_buf; savemask: INTEGER): INTEGER;
  405. (*
  406. PROCEDURE [ccall] stat* (filename: PtrSTR; VAR buf: stat_t): INTEGER; stat is a macro and expands to __xstat(3, filename, buf)
  407. *)
  408. PROCEDURE [ccall] __xstat* (version: INTEGER; filename: PtrSTR; VAR buf: stat_t): INTEGER;
  409. PROCEDURE [ccall] strftime* (s: PtrSTR; max: size_t; format: PtrSTR; ptm: tm): size_t;
  410. PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
  411. PROCEDURE [ccall] __errno_location*(): INTEGER;
  412. PROCEDURE [ccall] open* (name: PtrSTR; flags: SET; mode: mode_t): INTEGER;
  413. PROCEDURE [ccall] close* (d: INTEGER): INTEGER;
  414. PROCEDURE [ccall] read* (d: INTEGER; buf: PtrVoid; nbytes: size_t): INTEGER;
  415. PROCEDURE [ccall] write* (d: INTEGER; buf: PtrVoid; nBytes: size_t): INTEGER;
  416. PROCEDURE [ccall] mmap* (addr: PtrVoid; len: size_t; prot: SET; flags: SET; fd, offset: off_t): PtrVoid;
  417. PROCEDURE [ccall] munmap* (addr: PtrVoid; len: size_t): INTEGER;
  418. PROCEDURE [ccall] mprotect* (addr: PtrVoid; len: size_t; prot: SET): INTEGER;
  419. PROCEDURE [ccall] getenv* (name: PtrSTR): PtrSTR;
  420. PROCEDURE [ccall] sysconf* (name: INTEGER): INTEGER;
  421. PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): INTEGER;
  422. END LinLibc.