132
|
1 /**
|
|
2 * D header file for POSIX.
|
|
3 *
|
|
4 * Copyright: Public Domain
|
|
5 * License: Public Domain
|
|
6 * Authors: Sean Kelly
|
|
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
|
|
8 */
|
|
9 module tango.stdc.posix.unistd;
|
|
10
|
|
11 private import tango.stdc.posix.config;
|
|
12 private import tango.stdc.stddef;
|
|
13 public import tango.stdc.posix.inttypes; // for intptr_t
|
|
14 public import tango.stdc.posix.sys.types; // for size_t, ssize_t, uid_t, gid_t, off_t, pid_t, useconds_t
|
|
15
|
|
16 extern (C):
|
|
17
|
|
18 const STDIN_FILENO = 0;
|
|
19 const STDOUT_FILENO = 1;
|
|
20 const STDERR_FILENO = 2;
|
|
21
|
|
22 char* optarg;
|
|
23 int optind;
|
|
24 int opterr;
|
|
25 int optopt;
|
|
26
|
|
27 int access(char*, int);
|
|
28 uint alarm(uint);
|
|
29 int chdir(char*);
|
|
30 int chown(char*, uid_t, gid_t);
|
|
31 int close(int);
|
|
32 size_t confstr(int, char*, size_t);
|
|
33 int dup(int);
|
|
34 int dup2(int, int);
|
|
35 int execl(char*, char*, ...);
|
|
36 int execle(char*, char*, ...);
|
|
37 int execlp(char*, char*, ...);
|
|
38 int execv(char*, char**);
|
|
39 int execve(char*, char**, char**);
|
|
40 int execvp(char*, char**);
|
|
41 void _exit(int);
|
|
42 int fchown(int, uid_t, gid_t);
|
|
43 pid_t fork();
|
|
44 c_long fpathconf(int, int);
|
|
45 int ftruncate(int, off_t);
|
|
46 char* getcwd(char*, size_t);
|
|
47 gid_t getegid();
|
|
48 uid_t geteuid();
|
|
49 gid_t getgid();
|
|
50 int getgroups(int, gid_t *);
|
|
51 int gethostname(char*, size_t);
|
|
52 char* getlogin();
|
|
53 int getlogin_r(char*, size_t);
|
|
54 int getopt(int, char**, char*);
|
|
55 pid_t getpgrp();
|
|
56 pid_t getpid();
|
|
57 pid_t getppid();
|
|
58 uid_t getuid();
|
|
59 int isatty(int);
|
|
60 int link(char*, char*);
|
|
61 off_t lseek(int, off_t, int);
|
|
62 c_long pathconf(char*, int);
|
|
63 int pause();
|
|
64 int pipe(int[2]);
|
|
65 ssize_t read(int, void*, size_t);
|
|
66 ssize_t readlink(char*, char*, size_t);
|
|
67 int rmdir(char*);
|
|
68 int setegid(gid_t);
|
|
69 int seteuid(uid_t);
|
|
70 int setgid(gid_t);
|
|
71 int setpgid(pid_t, pid_t);
|
|
72 pid_t setsid();
|
|
73 int setuid(uid_t);
|
|
74 uint sleep(uint);
|
|
75 int symlink(char*, char*);
|
|
76 c_long sysconf(int);
|
|
77 pid_t tcgetpgrp(int);
|
|
78 int tcsetpgrp(int, pid_t);
|
|
79 char* ttyname(int);
|
|
80 int ttyname_r(int, char*, size_t);
|
|
81 int unlink(char*);
|
|
82 ssize_t write(int, void*, size_t);
|
|
83
|
|
84 version( linux )
|
|
85 {
|
|
86 const F_OK = 0;
|
|
87 const R_OK = 4;
|
|
88 const W_OK = 2;
|
|
89 const X_OK = 1;
|
|
90
|
|
91 const F_ULOCK = 0;
|
|
92 const F_LOCK = 1;
|
|
93 const F_TLOCK = 2;
|
|
94 const F_TEST = 3;
|
|
95
|
|
96 enum
|
|
97 {
|
|
98 _CS_PATH,
|
|
99
|
|
100 _CS_V6_WIDTH_RESTRICTED_ENVS,
|
|
101
|
|
102 _CS_GNU_LIBC_VERSION,
|
|
103 _CS_GNU_LIBPTHREAD_VERSION,
|
|
104
|
|
105 _CS_LFS_CFLAGS = 1000,
|
|
106 _CS_LFS_LDFLAGS,
|
|
107 _CS_LFS_LIBS,
|
|
108 _CS_LFS_LINTFLAGS,
|
|
109 _CS_LFS64_CFLAGS,
|
|
110 _CS_LFS64_LDFLAGS,
|
|
111 _CS_LFS64_LIBS,
|
|
112 _CS_LFS64_LINTFLAGS,
|
|
113
|
|
114 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
|
|
115 _CS_XBS5_ILP32_OFF32_LDFLAGS,
|
|
116 _CS_XBS5_ILP32_OFF32_LIBS,
|
|
117 _CS_XBS5_ILP32_OFF32_LINTFLAGS,
|
|
118 _CS_XBS5_ILP32_OFFBIG_CFLAGS,
|
|
119 _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
|
|
120 _CS_XBS5_ILP32_OFFBIG_LIBS,
|
|
121 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
|
|
122 _CS_XBS5_LP64_OFF64_CFLAGS,
|
|
123 _CS_XBS5_LP64_OFF64_LDFLAGS,
|
|
124 _CS_XBS5_LP64_OFF64_LIBS,
|
|
125 _CS_XBS5_LP64_OFF64_LINTFLAGS,
|
|
126 _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
|
|
127 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
|
|
128 _CS_XBS5_LPBIG_OFFBIG_LIBS,
|
|
129 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
|
|
130
|
|
131 _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
|
|
132 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
|
|
133 _CS_POSIX_V6_ILP32_OFF32_LIBS,
|
|
134 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
|
|
135 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
|
|
136 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
|
|
137 _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
|
|
138 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
|
|
139 _CS_POSIX_V6_LP64_OFF64_CFLAGS,
|
|
140 _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
|
|
141 _CS_POSIX_V6_LP64_OFF64_LIBS,
|
|
142 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
|
|
143 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
|
|
144 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
|
|
145 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
|
|
146 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
|
|
147 }
|
|
148
|
|
149 enum
|
|
150 {
|
|
151 _PC_LINK_MAX,
|
|
152 _PC_MAX_CANON,
|
|
153 _PC_MAX_INPUT,
|
|
154 _PC_NAME_MAX,
|
|
155 _PC_PATH_MAX,
|
|
156 _PC_PIPE_BUF,
|
|
157 _PC_CHOWN_RESTRICTED,
|
|
158 _PC_NO_TRUNC,
|
|
159 _PC_VDISABLE,
|
|
160 _PC_SYNC_IO,
|
|
161 _PC_ASYNC_IO,
|
|
162 _PC_PRIO_IO,
|
|
163 _PC_SOCK_MAXBUF,
|
|
164 _PC_FILESIZEBITS,
|
|
165 _PC_REC_INCR_XFER_SIZE,
|
|
166 _PC_REC_MAX_XFER_SIZE,
|
|
167 _PC_REC_MIN_XFER_SIZE,
|
|
168 _PC_REC_XFER_ALIGN,
|
|
169 _PC_ALLOC_SIZE_MIN,
|
|
170 _PC_SYMLINK_MAX,
|
|
171 _PC_2_SYMLINKS
|
|
172 }
|
|
173
|
|
174 enum
|
|
175 {
|
|
176 _SC_ARG_MAX,
|
|
177 _SC_CHILD_MAX,
|
|
178 _SC_CLK_TCK,
|
|
179 _SC_NGROUPS_MAX,
|
|
180 _SC_OPEN_MAX,
|
|
181 _SC_STREAM_MAX,
|
|
182 _SC_TZNAME_MAX,
|
|
183 _SC_JOB_CONTROL,
|
|
184 _SC_SAVED_IDS,
|
|
185 _SC_REALTIME_SIGNALS,
|
|
186 _SC_PRIORITY_SCHEDULING,
|
|
187 _SC_TIMERS,
|
|
188 _SC_ASYNCHRONOUS_IO,
|
|
189 _SC_PRIORITIZED_IO,
|
|
190 _SC_SYNCHRONIZED_IO,
|
|
191 _SC_FSYNC,
|
|
192 _SC_MAPPED_FILES,
|
|
193 _SC_MEMLOCK,
|
|
194 _SC_MEMLOCK_RANGE,
|
|
195 _SC_MEMORY_PROTECTION,
|
|
196 _SC_MESSAGE_PASSING,
|
|
197 _SC_SEMAPHORES,
|
|
198 _SC_SHARED_MEMORY_OBJECTS,
|
|
199 _SC_AIO_LISTIO_MAX,
|
|
200 _SC_AIO_MAX,
|
|
201 _SC_AIO_PRIO_DELTA_MAX,
|
|
202 _SC_DELAYTIMER_MAX,
|
|
203 _SC_MQ_OPEN_MAX,
|
|
204 _SC_MQ_PRIO_MAX,
|
|
205 _SC_VERSION,
|
|
206 _SC_PAGESIZE,
|
|
207 _SC_PAGE_SIZE = _SC_PAGESIZE,
|
|
208 _SC_RTSIG_MAX,
|
|
209 _SC_SEM_NSEMS_MAX,
|
|
210 _SC_SEM_VALUE_MAX,
|
|
211 _SC_SIGQUEUE_MAX,
|
|
212 _SC_TIMER_MAX,
|
|
213
|
|
214 _SC_BC_BASE_MAX,
|
|
215 _SC_BC_DIM_MAX,
|
|
216 _SC_BC_SCALE_MAX,
|
|
217 _SC_BC_STRING_MAX,
|
|
218 _SC_COLL_WEIGHTS_MAX,
|
|
219 _SC_EQUIV_CLASS_MAX,
|
|
220 _SC_EXPR_NEST_MAX,
|
|
221 _SC_LINE_MAX,
|
|
222 _SC_RE_DUP_MAX,
|
|
223 _SC_CHARCLASS_NAME_MAX,
|
|
224
|
|
225 _SC_2_VERSION,
|
|
226 _SC_2_C_BIND,
|
|
227 _SC_2_C_DEV,
|
|
228 _SC_2_FORT_DEV,
|
|
229 _SC_2_FORT_RUN,
|
|
230 _SC_2_SW_DEV,
|
|
231 _SC_2_LOCALEDEF,
|
|
232
|
|
233 _SC_PII,
|
|
234 _SC_PII_XTI,
|
|
235 _SC_PII_SOCKET,
|
|
236 _SC_PII_INTERNET,
|
|
237 _SC_PII_OSI,
|
|
238 _SC_POLL,
|
|
239 _SC_SELECT,
|
|
240 _SC_UIO_MAXIOV,
|
|
241 _SC_IOV_MAX = _SC_UIO_MAXIOV,
|
|
242 _SC_PII_INTERNET_STREAM,
|
|
243 _SC_PII_INTERNET_DGRAM,
|
|
244 _SC_PII_OSI_COTS,
|
|
245 _SC_PII_OSI_CLTS,
|
|
246 _SC_PII_OSI_M,
|
|
247 _SC_T_IOV_MAX,
|
|
248
|
|
249 _SC_THREADS,
|
|
250 _SC_THREAD_SAFE_FUNCTIONS,
|
|
251 _SC_GETGR_R_SIZE_MAX,
|
|
252 _SC_GETPW_R_SIZE_MAX,
|
|
253 _SC_LOGIN_NAME_MAX,
|
|
254 _SC_TTY_NAME_MAX,
|
|
255 _SC_THREAD_DESTRUCTOR_ITERATIONS,
|
|
256 _SC_THREAD_KEYS_MAX,
|
|
257 _SC_THREAD_STACK_MIN,
|
|
258 _SC_THREAD_THREADS_MAX,
|
|
259 _SC_THREAD_ATTR_STACKADDR,
|
|
260 _SC_THREAD_ATTR_STACKSIZE,
|
|
261 _SC_THREAD_PRIORITY_SCHEDULING,
|
|
262 _SC_THREAD_PRIO_INHERIT,
|
|
263 _SC_THREAD_PRIO_PROTECT,
|
|
264 _SC_THREAD_PROCESS_SHARED,
|
|
265
|
|
266 _SC_NPROCESSORS_CONF,
|
|
267 _SC_NPROCESSORS_ONLN,
|
|
268 _SC_PHYS_PAGES,
|
|
269 _SC_AVPHYS_PAGES,
|
|
270 _SC_ATEXIT_MAX,
|
|
271 _SC_PASS_MAX,
|
|
272
|
|
273 _SC_XOPEN_VERSION,
|
|
274 _SC_XOPEN_XCU_VERSION,
|
|
275 _SC_XOPEN_UNIX,
|
|
276 _SC_XOPEN_CRYPT,
|
|
277 _SC_XOPEN_ENH_I18N,
|
|
278 _SC_XOPEN_SHM,
|
|
279
|
|
280 _SC_2_CHAR_TERM,
|
|
281 _SC_2_C_VERSION,
|
|
282 _SC_2_UPE,
|
|
283
|
|
284 _SC_XOPEN_XPG2,
|
|
285 _SC_XOPEN_XPG3,
|
|
286 _SC_XOPEN_XPG4,
|
|
287
|
|
288 _SC_CHAR_BIT,
|
|
289 _SC_CHAR_MAX,
|
|
290 _SC_CHAR_MIN,
|
|
291 _SC_INT_MAX,
|
|
292 _SC_INT_MIN,
|
|
293 _SC_LONG_BIT,
|
|
294 _SC_WORD_BIT,
|
|
295 _SC_MB_LEN_MAX,
|
|
296 _SC_NZERO,
|
|
297 _SC_SSIZE_MAX,
|
|
298 _SC_SCHAR_MAX,
|
|
299 _SC_SCHAR_MIN,
|
|
300 _SC_SHRT_MAX,
|
|
301 _SC_SHRT_MIN,
|
|
302 _SC_UCHAR_MAX,
|
|
303 _SC_UINT_MAX,
|
|
304 _SC_ULONG_MAX,
|
|
305 _SC_USHRT_MAX,
|
|
306
|
|
307 _SC_NL_ARGMAX,
|
|
308 _SC_NL_LANGMAX,
|
|
309 _SC_NL_MSGMAX,
|
|
310 _SC_NL_NMAX,
|
|
311 _SC_NL_SETMAX,
|
|
312 _SC_NL_TEXTMAX,
|
|
313
|
|
314 _SC_XBS5_ILP32_OFF32,
|
|
315 _SC_XBS5_ILP32_OFFBIG,
|
|
316 _SC_XBS5_LP64_OFF64,
|
|
317 _SC_XBS5_LPBIG_OFFBIG,
|
|
318
|
|
319 _SC_XOPEN_LEGACY,
|
|
320 _SC_XOPEN_REALTIME,
|
|
321 _SC_XOPEN_REALTIME_THREADS,
|
|
322
|
|
323 _SC_ADVISORY_INFO,
|
|
324 _SC_BARRIERS,
|
|
325 _SC_BASE,
|
|
326 _SC_C_LANG_SUPPORT,
|
|
327 _SC_C_LANG_SUPPORT_R,
|
|
328 _SC_CLOCK_SELECTION,
|
|
329 _SC_CPUTIME,
|
|
330 _SC_THREAD_CPUTIME,
|
|
331 _SC_DEVICE_IO,
|
|
332 _SC_DEVICE_SPECIFIC,
|
|
333 _SC_DEVICE_SPECIFIC_R,
|
|
334 _SC_FD_MGMT,
|
|
335 _SC_FIFO,
|
|
336 _SC_PIPE,
|
|
337 _SC_FILE_ATTRIBUTES,
|
|
338 _SC_FILE_LOCKING,
|
|
339 _SC_FILE_SYSTEM,
|
|
340 _SC_MONOTONIC_CLOCK,
|
|
341 _SC_MULTI_PROCESS,
|
|
342 _SC_SINGLE_PROCESS,
|
|
343 _SC_NETWORKING,
|
|
344 _SC_READER_WRITER_LOCKS,
|
|
345 _SC_SPIN_LOCKS,
|
|
346 _SC_REGEXP,
|
|
347 _SC_REGEX_VERSION,
|
|
348 _SC_SHELL,
|
|
349 _SC_SIGNALS,
|
|
350 _SC_SPAWN,
|
|
351 _SC_SPORADIC_SERVER,
|
|
352 _SC_THREAD_SPORADIC_SERVER,
|
|
353 _SC_SYSTEM_DATABASE,
|
|
354 _SC_SYSTEM_DATABASE_R,
|
|
355 _SC_TIMEOUTS,
|
|
356 _SC_TYPED_MEMORY_OBJECTS,
|
|
357 _SC_USER_GROUPS,
|
|
358 _SC_USER_GROUPS_R,
|
|
359 _SC_2_PBS,
|
|
360 _SC_2_PBS_ACCOUNTING,
|
|
361 _SC_2_PBS_LOCATE,
|
|
362 _SC_2_PBS_MESSAGE,
|
|
363 _SC_2_PBS_TRACK,
|
|
364 _SC_SYMLOOP_MAX,
|
|
365 _SC_STREAMS,
|
|
366 _SC_2_PBS_CHECKPOINT,
|
|
367
|
|
368 _SC_V6_ILP32_OFF32,
|
|
369 _SC_V6_ILP32_OFFBIG,
|
|
370 _SC_V6_LP64_OFF64,
|
|
371 _SC_V6_LPBIG_OFFBIG,
|
|
372
|
|
373 _SC_HOST_NAME_MAX,
|
|
374 _SC_TRACE,
|
|
375 _SC_TRACE_EVENT_FILTER,
|
|
376 _SC_TRACE_INHERIT,
|
|
377 _SC_TRACE_LOG,
|
|
378
|
|
379 _SC_LEVEL1_ICACHE_SIZE,
|
|
380 _SC_LEVEL1_ICACHE_ASSOC,
|
|
381 _SC_LEVEL1_ICACHE_LINESIZE,
|
|
382 _SC_LEVEL1_DCACHE_SIZE,
|
|
383 _SC_LEVEL1_DCACHE_ASSOC,
|
|
384 _SC_LEVEL1_DCACHE_LINESIZE,
|
|
385 _SC_LEVEL2_CACHE_SIZE,
|
|
386 _SC_LEVEL2_CACHE_ASSOC,
|
|
387 _SC_LEVEL2_CACHE_LINESIZE,
|
|
388 _SC_LEVEL3_CACHE_SIZE,
|
|
389 _SC_LEVEL3_CACHE_ASSOC,
|
|
390 _SC_LEVEL3_CACHE_LINESIZE,
|
|
391 _SC_LEVEL4_CACHE_SIZE,
|
|
392 _SC_LEVEL4_CACHE_ASSOC,
|
|
393 _SC_LEVEL4_CACHE_LINESIZE,
|
|
394
|
|
395 _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
|
|
396 _SC_RAW_SOCKETS
|
|
397 }
|
|
398 }
|
|
399 else version( darwin )
|
|
400 {
|
|
401 const F_OK = 0;
|
|
402 const R_OK = 4;
|
|
403 const W_OK = 2;
|
|
404 const X_OK = 1;
|
|
405
|
|
406 const F_ULOCK = 0;
|
|
407 const F_LOCK = 1;
|
|
408 const F_TLOCK = 2;
|
|
409 const F_TEST = 3;
|
|
410 }
|
|
411
|
|
412 //
|
|
413 // File Synchronization (FSC)
|
|
414 //
|
|
415 /*
|
|
416 int fsync(int);
|
|
417 */
|
|
418
|
|
419 //
|
|
420 // Synchronized I/O (SIO)
|
|
421 //
|
|
422 /*
|
|
423 int fdatasync(int);
|
|
424 */
|
|
425
|
|
426 //
|
|
427 // XOpen (XSI)
|
|
428 //
|
|
429 /*
|
|
430 char* crypt(char*, char*);
|
|
431 char* ctermid(char*);
|
|
432 void encrypt(char[64], int);
|
|
433 int fchdir(int);
|
|
434 c_long gethostid();
|
|
435 pid_t getpgid(pid_t);
|
|
436 pid_t getsid(pid_t);
|
|
437 char* getwd(char*); // LEGACY
|
|
438 int lchown(char*, uid_t, gid_t);
|
|
439 int lockf(int, int, off_t);
|
|
440 int nice(int);
|
|
441 ssize_t pread(int, void*, size_t, off_t);
|
|
442 ssize_t pwrite(int, void*, size_t, off_t);
|
|
443 pid_t setpgrp();
|
|
444 int setregid(gid_t, gid_t);
|
|
445 int setreuid(uid_t, uid_t);
|
|
446 void swab(void*, void*, ssize_t);
|
|
447 void sync();
|
|
448 int truncate(char*, off_t);
|
|
449 useconds_t ualarm(useconds_t, useconds_t);
|
|
450 int usleep(useconds_t);
|
|
451 pid_t vfork();
|
|
452 */
|
|
453
|
|
454 version( linux )
|
|
455 {
|
|
456 char* crypt(char*, char*);
|
|
457 char* ctermid(char*);
|
|
458 void encrypt(char[64], int);
|
|
459 int fchdir(int);
|
|
460 c_long gethostid();
|
|
461 pid_t getpgid(pid_t);
|
|
462 pid_t getsid(pid_t);
|
|
463 char* getwd(char*); // LEGACY
|
|
464 int lchown(char*, uid_t, gid_t);
|
|
465 int lockf(int, int, off_t);
|
|
466 int nice(int);
|
|
467 ssize_t pread(int, void*, size_t, off_t);
|
|
468 ssize_t pwrite(int, void*, size_t, off_t);
|
|
469 pid_t setpgrp();
|
|
470 int setregid(gid_t, gid_t);
|
|
471 int setreuid(uid_t, uid_t);
|
|
472 void swab(void*, void*, ssize_t);
|
|
473 void sync();
|
|
474 int truncate(char*, off_t);
|
|
475 useconds_t ualarm(useconds_t, useconds_t);
|
|
476 int usleep(useconds_t);
|
|
477 pid_t vfork();
|
|
478 }
|
|
479 else version (darwin)
|
|
480 {
|
|
481 char* crypt(char*, char*);
|
|
482 char* ctermid(char*);
|
|
483 void encrypt(char[64], int);
|
|
484 int fchdir(int);
|
|
485 c_long gethostid();
|
|
486 pid_t getpgid(pid_t);
|
|
487 pid_t getsid(pid_t);
|
|
488 char* getwd(char*); // LEGACY
|
|
489 int lchown(char*, uid_t, gid_t);
|
|
490 int lockf(int, int, off_t);
|
|
491 int nice(int);
|
|
492 ssize_t pread(int, void*, size_t, off_t);
|
|
493 ssize_t pwrite(int, void*, size_t, off_t);
|
|
494 pid_t setpgrp();
|
|
495 int setregid(gid_t, gid_t);
|
|
496 int setreuid(uid_t, uid_t);
|
|
497 void swab(void*, void*, ssize_t);
|
|
498 void sync();
|
|
499 int truncate(char*, off_t);
|
|
500 useconds_t ualarm(useconds_t, useconds_t);
|
|
501 int usleep(useconds_t);
|
|
502 pid_t vfork();
|
|
503 }
|