X-Git-Url: http://nsz.repo.hu/git/?p=libc-test;a=blobdiff_plain;f=src%2Fapi%2Funistd.c;h=522ccdc737cf6123fd04e870d79eb5f7ef959e23;hp=10a94cd6698ac95832e6cd51c9b15d273188d05c;hb=338079caa555f160e40cca45fc2c8fe455195e3a;hpb=6a2161f389e6115bb3b948d71c56c8c882eaeda6 diff --git a/src/api/unistd.c b/src/api/unistd.c index 10a94cd..522ccdc 100644 --- a/src/api/unistd.c +++ b/src/api/unistd.c @@ -1,14 +1,72 @@ #include +#include "options.h" #define T(t) (t*)0; #define F(t,n) {t *y = &x.n;} #define C(n) switch(n){case n:;} +#define A(n) {char p[n];} static void f() { -C(_POSIX_VERSION) -C(_POSIX2_VERSION) -#ifdef _XOPEN_SOURCE) -C(_XOPEN_VERSION) +A(_POSIX_VERSION >= 200809L) +A(_POSIX2_VERSION >= 200809L) +#ifdef _XOPEN_SOURCE +A(_XOPEN_VERSION >= 700) +// A(_XOPEN_CRYPT >= 0) + A(_XOPEN_ENH_I18N > 0) +// A(_XOPEN_REALTIME >= 0) +// A(_XOPEN_REALTIME_THREADS >= 0) +// A(_XOPEN_SHM >= 0) + A(_XOPEN_UNIX >= 0) +#endif +A(_POSIX_ASYNCHRONOUS_IO >= 200809L) +A(_POSIX_BARRIERS >= 200809L) +A(_POSIX_CHOWN_RESTRICTED >= 0) +A(_POSIX_CLOCK_SELECTION >= 200809L) +A(_POSIX_JOB_CONTROL > 0) +A(_POSIX_MAPPED_FILES >= 200809L) +A(_POSIX_MEMORY_PROTECTION >= 200809L) +A(_POSIX_NO_TRUNC >= 0) +A(_POSIX_READER_WRITER_LOCKS >= 200809L) +A(_POSIX_REALTIME_SIGNALS >= 200809L) +A(_POSIX_REGEXP > 0) +A(_POSIX_SAVED_IDS > 0) +A(_POSIX_SEMAPHORES >= 200809L) +A(_POSIX_SHELL > 0) +A(_POSIX_SPIN_LOCKS >= 200809L) +A(_POSIX_THREAD_SAFE_FUNCTIONS >= 200809L) +A(_POSIX_THREADS >= 200809L) +A(_POSIX_TIMEOUTS >= 200809L) +A(_POSIX_TIMERS >= 200809L) +#if _POSIX_V7_ILP32_OFFBIG<=0 && _POSIX_V7_LP64_OFF64<=0 && _POSIX_V7_LPBIG_OFFBIG<=0 +#error _POSIX_V7_ILP32_OFFBIG<=0 && _POSIX_V7_LP64_OFF64<=0 && _POSIX_V7_LPBIG_OFFBIG<=0 #endif +A(_POSIX2_C_BIND >= 200809L) +// not required by the standard + A(_POSIX_ADVISORY_INFO >= 0) + A(_POSIX_CPUTIME >= 0) + A(_POSIX_FSYNC >= 0) + A(_POSIX_IPV6 >= 0) + A(_POSIX_MEMLOCK >= 0) + A(_POSIX_MEMLOCK_RANGE >= 0) + A(_POSIX_MESSAGE_PASSING >= 0) + A(_POSIX_MONOTONIC_CLOCK >= 0) +// A(_POSIX_PRIORITIZED_IO >= 0) +// A(_POSIX_PRIORITY_SCHEDULING >= 0) + A(_POSIX_RAW_SOCKETS >= 0) +// A(_POSIX_SHARED_MEMORY_OBJECTS >= 0) + A(_POSIX_SPAWN >= 0) +// A(_POSIX_SPORADIC_SERVER >= 0) +// A(_POSIX_SYNCHRONIZED_IO >= 0) + A(_POSIX_THREAD_ATTR_STACKADDR >= 0) + A(_POSIX_THREAD_ATTR_STACKSIZE >= 0) + A(_POSIX_THREAD_CPUTIME >= 0) +// A(_POSIX_THREAD_PRIO_INHERIT >= 0) +// A(_POSIX_THREAD_PRIO_PROTECT >= 0) + A(_POSIX_THREAD_PRIORITY_SCHEDULING >= 0) + A(_POSIX_THREAD_PROCESS_SHARED >= 0) +// A(_POSIX_THREAD_ROBUST_PRIO_INHERIT >= 0) +// A(_POSIX_THREAD_ROBUST_PRIO_PROTECT >= 0) +// A(_POSIX_THREAD_SPORADIC_SERVER >= 0) +// A(_POSIX_TYPED_MEMORY_OBJECTS >= 0) C(F_OK) C(R_OK) C(W_OK) @@ -190,93 +248,94 @@ T(gid_t) T(off_t) T(pid_t) T(intptr_t) -void(*p__exit)(int) = _exit; -int(*p_access)(const char*,int) = access; -unsigned(*p_alarm)(unsigned) = alarm; -int(*p_chdir)(const char*) = chdir; -int(*p_chown)(const char*,uid_t,gid_t) = chown; -int(*p_close)(int) = close; -size_t(*p_confstr)(int,char*,size_t) = confstr; -char*(*p_ctermid)(char*) = ctermid; -int(*p_dup)(int) = dup; -int(*p_dup2)(int,int) = dup2; -{char **x = environ}; -int(*p_execl)(const char*,const char*,...) = execl; -int(*p_execle)(const char*,const char*,...) = execle; -int(*p_execlp)(const char*,const char*,...) = execlp; -int(*p_execv)(const char*,char*const[]) = execv; -int(*p_execve)(const char*,char*const[],char*const[]) = execve; -int(*p_execvp)(const char*,char*const[]) = execvp; -int(*p_faccessat)(int,const char*,int,int) = faccessat; -int(*p_fchdir)(int) = fchdir; -int(*p_fchown)(int,uid_t,gid_t) = fchown; -int(*p_fchownat)(int,const char*,uid_t,gid_t,int) = fchownat; -int(*p_fdatasync)(int) = fdatasync; -int(*p_fexecve)(int,char*const[],char*const[]) = fexecve; -pid_t(*p_fork)(void) = fork; -long(*p_fpathconf)(int,int) = fpathconf; -int(*p_fsync)(int) = fsync; -int(*p_ftruncate)(int,off_t) = ftruncate; -char*(*p_getcwd)(char*,size_t) = getcwd; -gid_t(*p_getegid)(void) = getegid; -uid_t(*p_geteuid)(void) = geteuid; -gid_t(*p_getgid)(void) = getgid; -int(*p_getgroups)(int,gid_t[]) = getgroups; -int(*p_gethostname)(char*,size_t) = gethostname; -char*(*p_getlogin)(void) = getlogin; -int(*p_getlogin_r)(char*,size_t) = getlogin_r; -int(*p_getopt)(int,char*const[],const char*) = getopt; -pid_t(*p_getpgid)(pid_t) = getpgid; -pid_t(*p_getpgrp)(void) = getpgrp; -pid_t(*p_getpid)(void) = getpid; -pid_t(*p_getppid)(void) = getppid; -pid_t(*p_getsid)(pid_t) = getsid; -uid_t(*p_getuid)(void) = getuid; -int(*p_isatty)(int) = isatty; -int(*p_lchown)(const char*,uid_t,gid_t) = lchown; -int(*p_link)(const char*,const char*) = link; -int(*p_linkat)(int,const char*,int,const char*,int) = linkat; -off_t(*p_lseek)(int,off_t,int) = lseek; +{void(*p)(int) = _exit;} +{int(*p)(const char*,int) = access;} +{unsigned(*p)(unsigned) = alarm;} +{int(*p)(const char*) = chdir;} +{int(*p)(const char*,uid_t,gid_t) = chown;} +{int(*p)(int) = close;} +{size_t(*p)(int,char*,size_t) = confstr;} +{int(*p)(int) = dup;} +{int(*p)(int,int) = dup2;} +{extern char **environ; char **x = environ;}; +{int(*p)(const char*,const char*,...) = execl;} +{int(*p)(const char*,const char*,...) = execle;} +{int(*p)(const char*,const char*,...) = execlp;} +{int(*p)(const char*,char*const[]) = execv;} +{int(*p)(const char*,char*const[],char*const[]) = execve;} +{int(*p)(const char*,char*const[]) = execvp;} +{int(*p)(int,const char*,int,int) = faccessat;} +{int(*p)(int) = fchdir;} +{int(*p)(int,uid_t,gid_t) = fchown;} +{int(*p)(int,const char*,uid_t,gid_t,int) = fchownat;} +#ifdef POSIX_SYNCHRONIZED_IO +{int(*p)(int) = fdatasync;} +#endif +{int(*p)(int,char*const[],char*const[]) = fexecve;} +{pid_t(*p)(void) = fork;} +{long(*p)(int,int) = fpathconf;} +{int(*p)(int) = fsync;} +{int(*p)(int,off_t) = ftruncate;} +{char*(*p)(char*,size_t) = getcwd;} +{gid_t(*p)(void) = getegid;} +{uid_t(*p)(void) = geteuid;} +{gid_t(*p)(void) = getgid;} +{int(*p)(int,gid_t[]) = getgroups;} +{int(*p)(char*,size_t) = gethostname;} +{char*(*p)(void) = getlogin;} +{int(*p)(char*,size_t) = getlogin_r;} +{int(*p)(int,char*const[],const char*) = getopt;} +{pid_t(*p)(pid_t) = getpgid;} +{pid_t(*p)(void) = getpgrp;} +{pid_t(*p)(void) = getpid;} +{pid_t(*p)(void) = getppid;} +{pid_t(*p)(pid_t) = getsid;} +{uid_t(*p)(void) = getuid;} +{int(*p)(int) = isatty;} +{int(*p)(const char*,uid_t,gid_t) = lchown;} +{int(*p)(const char*,const char*) = link;} +{int(*p)(int,const char*,int,const char*,int) = linkat;} +{off_t(*p)(int,off_t,int) = lseek;} {char *x = optarg;} {int i = opterr;} {int i = optind;} {int i = optopt;} -long(*p_pathconf)(const char*,int) = pathconf; -int(*p_pause)(void) = pause; -int(*p_pipe)(int[]) = pipe; -ssize_t(*p_pread)(int,void*,size_t,off_t) = pread; -ssize_t(*p_pwrite)(int,const void*,size_t,off_t) = pwrite; -ssize_t(*p_read)(int,void*,size_t) = read; -ssize_t(*p_readlink)(const char*restrict,char*restrict,size_t) = readlink; -ssize_t(*p_readlinkat)(int,const char*restrict,char*restrict,size_t) = readlinkat; -int(*p_rmdir)(const char*) = rmdir; -int(*p_setegid)(gid_t) = setegid; -int(*p_seteuid)(uid_t) = seteuid; -int(*p_setgid)(gid_t) = setgid; -int(*p_setpgid)(pid_t,pid_t) = setpgid; -pid_t(*p_setsid)(void) = setsid; -int(*p_setuid)(uid_t) = setuid; -unsigned(*p_sleep)(unsigned) = sleep; -int(*p_symlink)(const char*,const char*) = symlink; -int(*p_symlinkat)(const char*,int,const char*) = symlinkat; -long(*p_sysconf)(int) = sysconf; -pid_t(*p_tcgetpgrp)(int) = tcgetpgrp; -int(*p_tcsetpgrp)(int,pid_t) = tcsetpgrp; -int(*p_truncate)(const char*,off_t) = truncate; -char*(*p_ttyname)(int) = ttyname; -int(*p_ttyname_r)(int,char*,size_t) = ttyname_r; -int(*p_unlink)(const char*) = unlink; -int(*p_unlinkat)(int,const char*,int) = unlinkat; -ssize_t(*p_write)(int,const void*,size_t) = write; +{long(*p)(const char*,int) = pathconf;} +{int(*p)(void) = pause;} +{int(*p)(int[]) = pipe;} +{ssize_t(*p)(int,void*,size_t,off_t) = pread;} +{ssize_t(*p)(int,const void*,size_t,off_t) = pwrite;} +{ssize_t(*p)(int,void*,size_t) = read;} +{ssize_t(*p)(const char*restrict,char*restrict,size_t) = readlink;} +{ssize_t(*p)(int,const char*restrict,char*restrict,size_t) = readlinkat;} +{int(*p)(const char*) = rmdir;} +{int(*p)(gid_t) = setegid;} +{int(*p)(uid_t) = seteuid;} +{int(*p)(gid_t) = setgid;} +{int(*p)(pid_t,pid_t) = setpgid;} +{pid_t(*p)(void) = setsid;} +{int(*p)(uid_t) = setuid;} +{unsigned(*p)(unsigned) = sleep;} +{int(*p)(const char*,const char*) = symlink;} +{int(*p)(const char*,int,const char*) = symlinkat;} +{long(*p)(int) = sysconf;} +{pid_t(*p)(int) = tcgetpgrp;} +{int(*p)(int,pid_t) = tcsetpgrp;} +{int(*p)(const char*,off_t) = truncate;} +{char*(*p)(int) = ttyname;} +{int(*p)(int,char*,size_t) = ttyname_r;} +{int(*p)(const char*) = unlink;} +{int(*p)(int,const char*,int) = unlinkat;} +{ssize_t(*p)(int,const void*,size_t) = write;} #ifdef _XOPEN_SOURCE -char*(*p_crypt)(const char*,const char*) = crypt; -void(*p_encrypt)(char[],int) = encrypt; -long(*p_gethostid)(void) = gethostid; -int(*p_lockf)(int,int,off_t) = lockf; -int(*p_nice)(int) = nice; -int(*p_setregid)(gid_t,gid_t) = setregid; -int(*p_setreuid)(uid_t,uid_t) = setreuid; -void(*p_swab)(const void*restrict,void*restrict,ssize_t) = swab; -void(*p_sync)(void) = sync; +{char*(*p)(const char*,const char*) = crypt;} +{void(*p)(char[],int) = encrypt;} +{long(*p)(void) = gethostid;} +{int(*p)(int,int,off_t) = lockf;} +{int(*p)(int) = nice;} +{int(*p)(gid_t,gid_t) = setregid;} +{int(*p)(uid_t,uid_t) = setreuid;} +{void(*p)(const void*restrict,void*restrict,ssize_t) = swab;} +{void(*p)(void) = sync;} #endif }