comparison druntime/import/core/sys/posix/unistd.d @ 1458:e0b2d67cfe7c

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