DEADSOFTWARE

fileno added
[bbcp.git] / BlackBox / _FreeBSDLinuxOpenBSD_ / Lin / Mod / gen-Libc / Libc.txt.templ
1 MODULE LinLibc ["libc.so%%libver%%"];
3 (*
4 %%osname%%
5 %%machine%%
6 *)
8 CONST
9 NULL* = 0H;
10 FALSE* = 0;
11 TRUE* = 1;
13 CLOCKS_PER_SEC* = %%clockspersec%%;
15 MAP_FAILED* = -1;
17 (* MAP_PRIVATE, MAP_ANON (intFlags) *)
18 %%defs-map%%
20 (* PROT_READ, PROT_WRITE, PROT_EXEC (intFlags) *)
21 %%defs-prot%%
23 (* SIG_UNBLOCK, SIG_SETMASK (int) *)
24 %%defs-sigmask%%
26 (* FPE_INTDIV, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB (int) *)
27 %%defs-fpe%%
29 (* SA_SIGINFO (intFlags) *)
30 %%defs-sa%%
32 (* SIGINT, SIGILL, SIGFPE, SIGSEGV, SIGKILL, SIGSTOP, SIGWINCH, SIGTHR (int) *)
33 %%defs-signo%%
34 _NSIG* = %%nsig%%;
36 (*
37 PAGE_SIZE* = 4096;
38 *)
39 %%defs-sc%%
41 SIGSTKSZ* = %%sigstksz%%;
43 (* ENOENT, EEXIST, EACCES, ENOMEM, EDQUOT, EMFILE, ENOTDIR (int) *)
44 %%defs-errno%%
46 %%defs-wait%%
48 NAME_MAX* = %%namemax%%;
50 SEEK_SET* = 0;
51 SEEK_CUR* = 1;
52 SEEK_END* = 2;
54 STDIN_FILENO* = 0;
55 STDOUT_FILENO* = 1;
56 STDERR_FILENO* = 2;
58 P_tmpdir* = "/tmp";
60 (* O_RDWR, O_NONBLOCK (intFlags) *)
61 %%defs-fcntlo%%
63 %%defs-clockid%%
65 TYPE
66 StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
67 PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
69 (* PtrVoid, int, long, size_t, ssize_t, off_t, time_t, clock_t, sigjmp_buf *)
70 (* mode_t, intFlags, sigset_t (set) *)
71 %%defs-basictypes%%
73 tm* = POINTER TO tmDesc;
74 tmDesc* = RECORD [untagged]
75 (* NOTE: check record size *)
76 (* tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday [ , tm_gmtoff ] *)
77 %%fields-tm%%
78 END;
80 Ptrsiginfo_t* = POINTER TO siginfo_t;
81 siginfo_t = RECORD [untagged]
82 (* si_code, fault address *)
83 %%fields-siginfo%%
84 END;
86 Ptrucontext_t* = POINTER TO ucontext_t;
87 ucontext_t = RECORD [untagged]
88 (* IP, SP, FP *)
89 %%fields-ucontext%%
90 END;
92 sigaction_t* = RECORD [untagged]
93 (*
94 sa_sigaction*: PROCEDURE [ccall] (sig: INTEGER; siginfo: Ptrsiginfo_t; context: Ptrucontext_t),
95 sa_flags*: intFlags, sa_mask*: sigset_t
96 *)
97 %%fields-sigaction%%
98 END;
100 stack_t* = RECORD [untagged]
101 (*
102 ss_sp*: PtrVoid, ss_size*: size_t, ss_flags*: intFlags
103 *)
104 %%fields-stack%%
105 END;
107 stat_t* = RECORD [untagged]
108 (*
109 NOTE: check record size
110 st_mode*: mode_t, st_size*: off_t, st_mtime*: time_t
111 *)
112 %%fields-stat%%
113 END;
115 PtrFILE* = PtrVoid;
116 PtrDIR* = PtrVoid;
118 PtrDirent* = POINTER TO Dirent;
119 Dirent = RECORD [untagged]
120 (*
121 d_name*: ARRAY [untagged] NAME_MAX + 1 OF SHORTCHAR
122 *)
123 %%fields-dirent%%
124 END;
126 timespec_t* = RECORD [untagged]
127 %%fields-timespec%%
128 END;
130 (*
131 VAR
132 stdin*: INTEGER;
133 timezone*: INTEGER; (* or tm.tm_gmtoff *)
134 *)
135 (*
136 PROCEDURE [ccall] __errno_location* (): PtrVoid;
137 *)
138 (*
139 (* POSIX.1 *)
140 PROCEDURE [ccall] stat* (path: PtrSTR; VAR sp: stat_t): int;
141 *)
142 %%custom%%
144 (* ANSI C 89 *)
145 PROCEDURE [ccall] clock* (): clock_t;
147 (* POSIX.1 *)
148 PROCEDURE [ccall] clock_gettime* (clock_id: clockid_t; VAR tp: timespec_t): int;
150 PROCEDURE [ccall] mmap* (adr: PtrVoid; len: size_t; prot: intFlags; flags: intFlags; fd: int; offset: off_t): PtrVoid;
151 (* BSD *)
152 PROCEDURE [ccall] munmap* (adr: PtrVoid; len: size_t): int;
153 PROCEDURE [ccall] mprotect* (adr: PtrVoid; len: size_t; prot: intFlags): int;
155 (*
156 PROCEDURE [ccall] calloc* (nmemb: size_t; size: size_t): PtrVoid;
157 (* ANSI C 89 *)
158 PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
159 *)
160 PROCEDURE [ccall] free* (ptr: PtrVoid);
162 (* AT&T *)
163 PROCEDURE [ccall] time* (VAR [nil] t: time_t): time_t;
164 PROCEDURE [ccall] gmtime* (VAR [nil] t: time_t): tm;
165 PROCEDURE [ccall] localtime* (VAR [nil] t: time_t): tm;
167 (* POSIX.1 *)
168 PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: int): int;
169 PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: int);
171 (* POSIX.1 *)
172 PROCEDURE [ccall] sigemptyset* (VAR set: sigset_t): int;
173 PROCEDURE [ccall] sigfillset* (VAR set: sigset_t): int;
174 PROCEDURE [ccall] sigaddset* (VAR set: sigset_t; signo: int): int;
175 PROCEDURE [ccall] sigprocmask* (how: int; VAR [nil] set: sigset_t; VAR [nil] oset: sigset_t): int;
177 (* POSIX.1 *)
178 PROCEDURE [ccall] sigaction* (sig: int; VAR [nil] act: sigaction_t; VAR [nil] oact: sigaction_t): int;
180 (* BSD *)
181 PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): int;
183 (* ANSI C 89 *)
184 PROCEDURE [ccall] getenv* (s: PtrSTR): PtrSTR;
186 (* ANSI C 89 *)
187 PROCEDURE [ccall] fopen* (path, mode: PtrSTR): PtrFILE;
188 PROCEDURE [ccall] fdopen* (fildes: int; mode: PtrSTR): PtrFILE;
189 PROCEDURE [ccall] fclose* (stream: PtrFILE): int;
190 PROCEDURE [ccall] fread* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
191 PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
192 PROCEDURE [ccall] fflush* (s: PtrFILE): int;
193 PROCEDURE [ccall] printf* (s: PtrSTR): int;
194 (* ANSI C 89, XPG4 *)
195 PROCEDURE [ccall] fseek* (stream: PtrFILE; offset: long; whence: int): int;
197 (* POSIX.1 *)
198 PROCEDURE [ccall] fileno* (stream: PtrFILE): int;
200 (* POSIX.1 *)
201 PROCEDURE [ccall] rename* (from, to: PtrSTR): int;
202 PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): int;
203 PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
204 PROCEDURE [ccall] readdir* (dirp: PtrDIR): PtrDirent;
205 PROCEDURE [ccall] closedir* (dirp: PtrDIR): int;
206 (* ANSI C 89, XPG4.2 *)
207 PROCEDURE [ccall] remove* (path: PtrSTR): int;
209 (* POSIX.1 *)
210 PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
212 (* ANSI C 99 *)
213 PROCEDURE [ccall] exit* (status: int);
215 (* ANSI C 89 *)
216 PROCEDURE [ccall] strftime* (buf: PtrSTR; maxsize: size_t; format: PtrSTR; timeptr: tm): size_t;
218 (* XXX: use fread instead *)
219 PROCEDURE [ccall] fgets* (str: PtrSTR; size: int; stream: PtrFILE): PtrSTR;
221 (* POSIX.1 *)
222 PROCEDURE [ccall] open* (path: PtrSTR; flags: intFlags; mode: mode_t): int;
223 PROCEDURE [ccall] write* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
224 PROCEDURE [ccall] read* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
225 PROCEDURE [ccall] close* (d: int): int;
226 PROCEDURE [ccall] lseek* (d: int; offset: off_t; whence: int): off_t;
228 (* POSIX.1 *)
229 PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t): int;
230 PROCEDURE [ccall] fchmod* (fd: int; mode: mode_t): int;
232 (* POSIX.1 *)
233 PROCEDURE [ccall] fork* (): pid_t;
234 PROCEDURE [ccall] waitpid* (wpid: pid_t; VAR [nil] status: int; options: intFlags): pid_t;
236 (* POSIX.1 *)
237 PROCEDURE [ccall] execv* (path: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
238 PROCEDURE [ccall] execvp* (file: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
240 (* POSIX.2 *)
241 PROCEDURE [ccall] system* (string: PtrSTR): int;
243 (* POSIX.1 *)
244 PROCEDURE [ccall] sysconf* (name: int): long;
246 PROCEDURE [ccall] popen* (command, type: PtrSTR): PtrFILE;
247 PROCEDURE [ccall] pclose* (stream: PtrFILE): int;
249 END LinLibc.