api: add stdarg .. sys/uio
authornsz <nsz@port70.net>
Fri, 19 Oct 2012 22:18:26 +0000 (00:18 +0200)
committernsz <nsz@port70.net>
Fri, 19 Oct 2012 22:18:26 +0000 (00:18 +0200)
16 files changed:
src/api/netdb.c
src/api/stdarg.c [new file with mode: 0644]
src/api/stdio.c [new file with mode: 0644]
src/api/stdlib.c [new file with mode: 0644]
src/api/string.c [new file with mode: 0644]
src/api/strings.c [new file with mode: 0644]
src/api/sys_ipc.c [new file with mode: 0644]
src/api/sys_mman.c [new file with mode: 0644]
src/api/sys_msg.c [new file with mode: 0644]
src/api/sys_resource.c [new file with mode: 0644]
src/api/sys_select.c [new file with mode: 0644]
src/api/sys_sem.c [new file with mode: 0644]
src/api/sys_shm.c [new file with mode: 0644]
src/api/sys_socket.c [new file with mode: 0644]
src/api/sys_stat.c [new file with mode: 0644]
src/api/sys_uio.c [new file with mode: 0644]

index c8b223c..40675af 100644 (file)
@@ -89,3 +89,10 @@ void(*p_setnetent)(int) = setnetent;
 void(*p_setprotoent)(int) = setprotoent;
 void(*p_setservent)(int) = setservent;
 }
+#include <sys/socket.h>
+static void g()
+{
+void(*p_freeaddrinfo)(struct addrinfo*) = freeaddrinfo;
+int(*p_getaddrinfo)(const char*restrict,const char*restrict,const struct addrinfo*restrict,struct addrinfo**restrict) = getaddrinfo;
+int(*p_getnameinfo)(const struct sockaddr*restrict,socklen_t,char*restrict,socklen_t,char*restrict,socklen_t,int) = getnameinfo;
+}
diff --git a/src/api/stdarg.c b/src/api/stdarg.c
new file mode 100644 (file)
index 0000000..7211594
--- /dev/null
@@ -0,0 +1,18 @@
+#include <stdarg.h>
+#define T(t) (t*)0;
+static void f()
+{
+T(va_list)
+#ifndef va_start
+#error no va_start
+#endif
+#ifndef va_arg
+#error no va_arg
+#endif
+#ifndef va_end
+#error no va_end
+#endif
+#ifndef va_copy
+#error no va_copy
+#endif
+}
diff --git a/src/api/stdio.c b/src/api/stdio.c
new file mode 100644 (file)
index 0000000..b854540
--- /dev/null
@@ -0,0 +1,129 @@
+#include <stdio.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(FILE)
+T(fpos_t)
+T(off_t)
+T(size_t)
+C(BUFSIZ)
+#ifdef _POSIX_C_SOURCE
+T(ssize_t)
+T(va_list)
+C(L_ctermid)
+#endif
+C(_IOFBF)
+C(_IOLBF)
+C(_IONBF)
+C(SEEK_CUR)
+C(SEEK_END)
+C(SEEK_SET)
+C(FILENAME_MAX)
+C(FOPEN_MAX)
+C(EOF)
+{void *x=NULL;}
+{FILE *x=stderr;}
+{FILE *x=stdin;}
+{FILE *x=stdout;}
+void(*p_clearerr)(FILE*) = clearerr;
+char*(*p_ctermid)(char*) = ctermid;
+int(*p_dprintf)(int,const char*restrict,...) = dprintf;
+int(*p_fclose)(FILE*) = fclose;
+FILE*(*p_fdopen)(int,const char*) = fdopen;
+int(*p_feof)(FILE*) = feof;
+int(*p_ferror)(FILE*) = ferror;
+int(*p_fflush)(FILE*) = fflush;
+int(*p_fgetc)(FILE*) = fgetc;
+int(*p_fgetpos)(FILE*restrict,fpos_t*restrict) = fgetpos;
+char*(*p_fgets)(char*restrict,int,FILE*restrict) = fgets;
+int(*p_fileno)(FILE*) = fileno;
+void(*p_flockfile)(FILE*) = flockfile;
+FILE*(*p_fmemopen)(void*restrict,size_t,const char*restrict) = fmemopen;
+FILE*(*p_fopen)(const char*restrict,const char*restrict) = fopen;
+int(*p_fprintf)(FILE*restrict,const char*restrict,...) = fprintf;
+int(*p_fputc)(int,FILE*) = fputc;
+int(*p_fputs)(const char*restrict,FILE*restrict) = fputs;
+size_t(*p_fread)(void*restrict,size_t,size_t,FILE*restrict) = fread;
+FILE*(*p_freopen)(const char*restrict,const char*restrict,FILE*restrict) = freopen;
+int(*p_fscanf)(FILE*restrict,const char*restrict,...) = fscanf;
+int(*p_fseek)(FILE*,long,int) = fseek;
+int(*p_fseeko)(FILE*,off_t,int) = fseeko;
+int(*p_fsetpos)(FILE*,const fpos_t*) = fsetpos;
+long(*p_ftell)(FILE*) = ftell;
+off_t(*p_ftello)(FILE*) = ftello;
+int(*p_ftrylockfile)(FILE*) = ftrylockfile;
+void(*p_funlockfile)(FILE*) = funlockfile;
+size_t(*p_fwrite)(const void*restrict,size_t,size_t,FILE*restrict) = fwrite;
+int(*p_getc)(FILE*) = getc;
+int(*p_getc_unlocked)(FILE*) = getc_unlocked;
+int(*p_getchar)(void) = getchar;
+int(*p_getchar_unlocked)(void) = getchar_unlocked;
+ssize_t(*p_getdelim)(char**restrict,size_t*restrict,int,FILE*restrict) = getdelim;
+ssize_t(*p_getline)(char**restrict,size_t*restrict,FILE*restrict) = getline;
+char*(*p_gets)(char*) = gets;
+FILE*(*p_open_memstream)(char**,size_t*) = open_memstream;
+int(*p_pclose)(FILE*) = pclose;
+void(*p_perror)(const char*) = perror;
+FILE*(*p_popen)(const char*,const char*) = popen;
+int(*p_printf)(const char*restrict,...) = printf;
+int(*p_putc)(int,FILE*) = putc;
+int(*p_putc_unlocked)(int,FILE*) = putc_unlocked;
+int(*p_putchar)(int) = putchar;
+int(*p_putchar_unlocked)(int) = putchar_unlocked;
+int(*p_puts)(const char*) = puts;
+int(*p_remove)(const char*) = remove;
+int(*p_rename)(const char*,const char*) = rename;
+int(*p_renameat)(int,const char*,int,const char*) = renameat;
+void(*p_rewind)(FILE*) = rewind;
+int(*p_scanf)(const char*restrict,...) = scanf;
+void(*p_setbuf)(FILE*restrict,char*restrict) = setbuf;
+int(*p_setvbuf)(FILE*restrict,char*restrict,int,size_t) = setvbuf;
+int(*p_snprintf)(char*restrict,size_t,const char*restrict,...) = snprintf;
+int(*p_sprintf)(char*restrict,const char*restrict,...) = sprintf;
+int(*p_sscanf)(const char*restrict,const char*restrict,...) = sscanf;
+char*(*p_tempnam)(const char*,const char*) = tempnam;
+FILE*(*p_tmpfile)(void) = tmpfile;
+char*(*p_tmpnam)(char*) = tmpnam;
+int(*p_ungetc)(int,FILE*) = ungetc;
+}
+#include <wchar.h>
+static void g()
+{
+wint_t(*p_btowc)(int) = btowc;
+wint_t(*p_fgetwc)(FILE*) = fgetwc;
+wchar_t*(*p_fgetws)(wchar_t*restrict,int,FILE*restrict) = fgetws;
+wint_t(*p_fputwc)(wchar_t,FILE*) = fputwc;
+int(*p_fputws)(const wchar_t*restrict,FILE*restrict) = fputws;
+int(*p_fwide)(FILE*,int) = fwide;
+int(*p_fwprintf)(FILE*restrict,const wchar_t*restrict,...) = fwprintf;
+int(*p_fwscanf)(FILE*restrict,const wchar_t*restrict,...) = fwscanf;
+wint_t(*p_getwc)(FILE*) = getwc;
+wint_t(*p_putwc)(wchar_t,FILE*) = putwc;
+int(*p_swprintf)(wchar_t*restrict,size_t,const wchar_t*restrict,...) = swprintf;
+int(*p_swscanf)(const wchar_t*restrict,const wchar_t*restrict,...) = swscanf;
+wint_t(*p_ungetwc)(wint_t,FILE*) = ungetwc;
+int(*p_wctob)(wint_t) = wctob;
+int(*p_wprintf)(const wchar_t*restrict,...) = wprintf;
+int(*p_wscanf)(const wchar_t*restrict,...) = wscanf;
+}
+#include <stdarg.h>
+static void h()
+{
+int(*p_vdprintf)(int,const char*restrict,va_list) = vdprintf;
+int(*p_vfprintf)(FILE*restrict,const char*restrict,va_list) = vfprintf;
+int(*p_vfscanf)(FILE*restrict,const char*restrict,va_list) = vfscanf;
+int(*p_vprintf)(const char*restrict,va_list) = vprintf;
+int(*p_vscanf)(const char*restrict,va_list) = vscanf;
+int(*p_vsnprintf)(char*restrict,size_t,const char*restrict,va_list) = vsnprintf;
+int(*p_vsprintf)(char*restrict,const char*restrict,va_list) = vsprintf;
+int(*p_vsscanf)(const char*restrict,const char*restrict,va_list) = vsscanf;
+
+int(*p_vfwprintf)(FILE*restrict,const wchar_t*restrict,va_list) = vfwprintf;
+int(*p_vfwscanf)(FILE*restrict,const wchar_t*restrict,va_list) = vfwscanf;
+int(*p_vswprintf)(wchar_t*restrict,size_t,const wchar_t*restrict,va_list) = vswprintf;
+int(*p_vswscanf)(const wchar_t*restrict,const wchar_t*restrict,va_list) = vswscanf;
+int(*p_vwprintf)(const wchar_t*restrict,va_list) = vwprintf;
+int(*p_vwscanf)(const wchar_t*restrict,va_list) = vwscanf;
+}
diff --git a/src/api/stdlib.c b/src/api/stdlib.c
new file mode 100644 (file)
index 0000000..ca5337c
--- /dev/null
@@ -0,0 +1,103 @@
+#include <stdlib.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+C(EXIT_FAILURE)
+C(EXIT_SUCCESS)
+C(RAND_MAX)
+C(MB_CUR_MAX)
+{void *x=NULL;}
+T(div_t)
+T(ldiv_t)
+T(lldiv_t)
+T(size_t)
+T(wchar_t)
+#ifdef _POSIX_C_SOURCE
+C(WEXITSTATUS(0))
+C(WIFEXITED(0))
+C(WIFSIGNALED(0))
+C(WIFSTOPPED(0))
+C(WNOHANG)
+C(WSTOPSIG(0))
+C(WTERMSIG(0))
+C(WUNTRACED)
+#endif
+void(*p__Exit)(int) = _Exit;
+void(*p_abort)(void) = abort;
+int(*p_abs)(int) = abs;
+int(*p_atexit)(void(*)(void)) = atexit;
+double(*p_atof)(const char*) = atof;
+int(*p_atoi)(const char*) = atoi;
+long(*p_atol)(const char*) = atol;
+long long(*p_atoll)(const char*) = atoll;
+void*(*p_bsearch)(const void*,const void*,size_t,size_t,int(*)(const void*,const void*)) = bsearch;
+void*(*p_calloc)(size_t,size_t) = calloc;
+div_t(*p_div)(int,int) = div;
+void(*p_exit)(int) = exit;
+void(*p_free)(void*) = free;
+char*(*p_getenv)(const char*) = getenv;
+int(*p_getsubopt)(char**,char*const*,char**) = getsubopt;
+long(*p_labs)(long) = labs;
+ldiv_t(*p_ldiv)(long,long) = ldiv;
+long long(*p_llabs)(long long) = llabs;
+lldiv_t(*p_lldiv)(long long,long long) = lldiv;
+void*(*p_malloc)(size_t) = malloc;
+int(*p_mblen)(const char*,size_t) = mblen;
+size_t(*p_mbstowcs)(wchar_t*restrict,const char*restrict,size_t) = mbstowcs;
+int(*p_mbtowc)(wchar_t*restrict,const char*restrict,size_t) = mbtowc;
+int(*p_posix_memalign)(void**,size_t,size_t) = posix_memalign;
+void(*p_qsort)(void*,size_t,size_t,int(*)(const void*,const void*)) = qsort;
+int(*p_rand)(void) = rand;
+void*(*p_realloc)(void*,size_t) = realloc;
+void(*p_srand)(unsigned) = srand;
+double(*p_strtod)(const char*restrict,char**restrict) = strtod;
+float(*p_strtof)(const char*restrict,char**restrict) = strtof;
+long(*p_strtol)(const char*restrict,char**restrict,int) = strtol;
+long double(*p_strtold)(const char*restrict,char**restrict) = strtold;
+long long(*p_strtoll)(const char*restrict,char**restrict,int) = strtoll;
+unsigned long(*p_strtoul)(const char*restrict,char**restrict,int) = strtoul;
+unsigned long long(*p_strtoull)(const char*restrict,char**restrict,int) = strtoull;
+int(*p_system)(const char*) = system;
+size_t(*p_wcstombs)(char*restrict,const wchar_t*restrict,size_t) = wcstombs;
+int(*p_wctomb)(char*,wchar_t) = wctomb;
+#ifdef _POSIX_C_SOURCE
+char*(*p_mkdtemp)(char*) = mkdtemp;
+int(*p_mkstemp)(char*) = mkstemp;
+int(*p_setenv)(const char*,const char*,int) = setenv;
+int(*p_unsetenv)(const char*) = unsetenv;
+#endif
+#ifdef _XOPEN_SOURCE
+long(*p_a64l)(const char*) = a64l;
+double(*p_drand48)(void) = drand48;
+double(*p_erand48)(unsigned short[]) = erand48;
+int(*p_grantpt)(int) = grantpt;
+char*(*p_initstate)(unsigned,char*,size_t) = initstate;
+long(*p_jrand48)(unsigned short[]) = jrand48;
+char*(*p_l64a)(long) = l64a;
+void(*p_lcong48)(unsigned short[]) = lcong48;
+long(*p_lrand48)(void) = lrand48;
+long(*p_mrand48)(void) = mrand48;
+long(*p_nrand48)(unsigned short[]) = nrand48;
+char*(*p_ptsname)(int) = ptsname;
+int(*p_putenv)(char*) = putenv;
+long(*p_random)(void) = random;
+char*(*p_realpath)(const char*restrict,char*restrict) = realpath;
+unsigned short*(*p_seed48)(unsigned short[]) = seed48;
+void(*p_setkey)(const char*) = setkey;
+char*(*p_setstate)(char*) = setstate;
+void(*p_srand48)(long) = srand48;
+void(*p_srandom)(unsigned) = srandom;
+int(*p_unlockpt)(int) = unlockpt;
+#endif
+}
+
+#ifdef _XOPEN_SOURCE
+#include <fcntl.h>
+static void g()
+{
+int(*p_posix_openpt)(int) = posix_openpt;
+}
+#endif
+
diff --git a/src/api/string.c b/src/api/string.c
new file mode 100644 (file)
index 0000000..60aa768
--- /dev/null
@@ -0,0 +1,45 @@
+#include <string.h>
+#define T(t) (t*)0;
+static void f()
+{
+T(size_t)
+void*(*p_memchr)(const void*,int,size_t) = memchr;
+int(*p_memcmp)(const void*,const void*,size_t) = memcmp;
+void*(*p_memcpy)(void*restrict,const void*restrict,size_t) = memcpy;
+void*(*p_memmove)(void*,const void*,size_t) = memmove;
+void*(*p_memset)(void*,int,size_t) = memset;
+char*(*p_strcat)(char*restrict,const char*restrict) = strcat;
+char*(*p_strchr)(const char*,int) = strchr;
+int(*p_strcmp)(const char*,const char*) = strcmp;
+int(*p_strcoll)(const char*,const char*) = strcoll;
+char*(*p_strcpy)(char*restrict,const char*restrict) = strcpy;
+size_t(*p_strcspn)(const char*,const char*) = strcspn;
+char*(*p_strerror)(int) = strerror;
+size_t(*p_strlen)(const char*) = strlen;
+char*(*p_strncat)(char*restrict,const char*restrict,size_t) = strncat;
+int(*p_strncmp)(const char*,const char*,size_t) = strncmp;
+char*(*p_strncpy)(char*restrict,const char*restrict,size_t) = strncpy;
+char*(*p_strpbrk)(const char*,const char*) = strpbrk;
+char*(*p_strrchr)(const char*,int) = strrchr;
+char*(*p_strsignal)(int) = strsignal;
+size_t(*p_strspn)(const char*,const char*) = strspn;
+char*(*p_strstr)(const char*,const char*) = strstr;
+char*(*p_strtok)(char*restrict,const char*restrict) = strtok;
+size_t(*p_strxfrm)(char*restrict,const char*restrict,size_t) = strxfrm;
+#ifdef _POSIX_C_SOURCE
+T(locale_t)
+char*(*p_stpcpy)(char*restrict,const char*restrict) = stpcpy;
+char*(*p_stpncpy)(char*restrict,const char*restrict,size_t) = stpncpy;
+int(*p_strcoll_l)(const char*,const char*,locale_t) = strcoll_l;
+char*(*p_strdup)(const char*) = strdup;
+char*(*p_strerror_l)(int,locale_t) = strerror_l;
+int(*p_strerror_r)(int,char*,size_t) = strerror_r;
+char*(*p_strndup)(const char*,size_t) = strndup;
+size_t(*p_strnlen)(const char*,size_t) = strnlen;
+char*(*p_strtok_r)(char*restrict,const char*restrict,char**restrict) = strtok_r;
+size_t(*p_strxfrm_l)(char*restrict,const char*restrict,size_t,locale_t) = strxfrm_l;
+#endif
+#ifdef _XOPEN_SOURCE
+void*(*p_memccpy)(void*restrict,const void*restrict,int,size_t) = memccpy;
+#endif
+}
diff --git a/src/api/strings.c b/src/api/strings.c
new file mode 100644 (file)
index 0000000..30177cd
--- /dev/null
@@ -0,0 +1,14 @@
+#include <strings.h>
+#define T(t) (t*)0;
+static void f()
+{
+T(size_t)
+T(locale_t)
+#ifdef _XOPEN_SOURCE
+int(*p_ffs)(int) = ffs;
+#endif
+int(*p_strcasecmp)(const char*,const char*) = strcasecmp;
+int(*p_strcasecmp_l)(const char*,const char*,locale_t) = strcasecmp_l;
+int(*p_strncasecmp)(const char*,const char*,size_t) = strncasecmp;
+int(*p_strncasecmp_l)(const char*,const char*,size_t,locale_t) = strncasecmp_l;
+}
diff --git a/src/api/sys_ipc.c b/src/api/sys_ipc.c
new file mode 100644 (file)
index 0000000..8995206
--- /dev/null
@@ -0,0 +1,27 @@
+#include <sys/ipc.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(uid_t)
+T(gid_t)
+T(mode_t)
+T(key_t)
+{
+struct ipc_perm x;
+F(uid_t,uid)
+F(gid_t,gid)
+F(uid_t,cuid)
+F(gid_t,cgid)
+F(mode_t, mode)
+}
+C(IPC_CREAT)
+C(IPC_EXCL)
+C(IPC_NOWAIT)
+C(IPC_PRIVATE)
+C(IPC_RMID)
+C(IPC_SET)
+C(IPC_STAT)
+key_t(*p_ftok)(const char*,int) = ftok;
+}
diff --git a/src/api/sys_mman.c b/src/api/sys_mman.c
new file mode 100644 (file)
index 0000000..4217223
--- /dev/null
@@ -0,0 +1,53 @@
+#include <sys/mman.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(mode_t)
+T(off_t)
+T(size_t)
+C(PROT_EXEC)
+C(PROT_NONE)
+C(PROT_READ)
+C(PROT_WRITE)
+C(MAP_FIXED)
+C(MAP_PRIVATE)
+C(MAP_SHARED)
+#ifdef _XOPEN_SOURCE
+C(MS_ASYNC)
+C(MS_INVALIDATE)
+C(MS_SYNC)
+#endif
+C(MCL_CURRENT)
+C(MCL_FUTURE)
+{void *x = MAP_FAILED;}
+C(POSIX_MADV_DONTNEED)
+C(POSIX_MADV_NORMAL)
+C(POSIX_MADV_RANDOM)
+C(POSIX_MADV_SEQUENTIAL)
+C(POSIX_MADV_WILLNEED)
+//C(POSIX_TYPED_MEM_ALLOCATE)
+//C(POSIX_TYPED_MEM_ALLOCATE_CONTIG)
+//C(POSIX_TYPED_MEM_MAP_ALLOCATABLE)
+//{
+//struct posix_typed_mem_info x;
+//F(size_t,posix_tmi_length)
+//}
+int(*p_mlock)(const void*,size_t) = mlock;
+int(*p_mlockall)(int) = mlockall;
+void*(*p_mmap)(void*,size_t,int,int,int,off_t) = mmap;
+int(*p_mprotect)(void*,size_t,int) = mprotect;
+#ifdef _XOPEN_SOURCE
+int(*p_msync)(void*,size_t,int) = msync;
+#endif
+int(*p_munlock)(const void*,size_t) = munlock;
+int(*p_munlockall)(void) = munlockall;
+int(*p_munmap)(void*,size_t) = munmap;
+int(*p_posix_madvise)(void*,size_t,int) = posix_madvise;
+//int(*p_posix_mem_offset)(const void*restrict,size_t,off_t*restrict,size_t*restrict,int*restrict) = posix_mem_offset;
+//int(*p_posix_typed_mem_get_info)(int,struct posix_typed_mem_info*) = posix_typed_mem_get_info;
+//int(*p_posix_typed_mem_open)(const char*,int,int) = posix_typed_mem_open;
+int(*p_shm_open)(const char*,int,mode_t) = shm_open;
+int(*p_shm_unlink)(const char*) = shm_unlink;
+}
diff --git a/src/api/sys_msg.c b/src/api/sys_msg.c
new file mode 100644 (file)
index 0000000..41c76ec
--- /dev/null
@@ -0,0 +1,29 @@
+#include <sys/msg.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(msgqnum_t)
+T(msglen_t)
+T(pid_t)
+T(size_t)
+T(ssize_t)
+T(time_t)
+C(MSG_NOERROR)
+{
+struct msqid_ds x;
+F(struct ipc_perm, msg_perm)
+F(msgqnum_t, msg_qnum)
+F(msglen_t,msg_qbytes)
+F(pid_t, msg_lspid)
+F(pid_t, msg_lrpid)
+F(time_t, msg_stime)
+F(time_t, msg_rtime)
+F(time_t,msg_ctime)
+}
+int(*p_msgctl)(int,int,struct msqid_ds*) = msgctl;
+int(*p_msgget)(key_t,int) = msgget;
+ssize_t(*p_msgrcv)(int,void*,size_t,long,int) = msgrcv;
+int(*p_msgsnd)(int,const void*,size_t,int) = msgsnd;
+}
diff --git a/src/api/sys_resource.c b/src/api/sys_resource.c
new file mode 100644 (file)
index 0000000..0622a50
--- /dev/null
@@ -0,0 +1,39 @@
+#include <sys/resource.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(rlim_t)
+T(struct timeval)
+C(PRIO_PROCESS)
+C(PRIO_PGRP)
+C(PRIO_USER)
+C(RLIM_INFINITY)
+C(RLIM_SAVED_MAX)
+C(RLIM_SAVED_CUR)
+C(RUSAGE_SELF)
+C(RUSAGE_CHILDREN)
+{
+struct rlimit x;
+F(rlim_t, rlim_cur)
+F(rlim_t, rlim_max)
+}
+{
+struct rusage x;
+F(struct timeval, ru_utime)
+F(struct timeval, ru_stime)
+}
+C(RLIMIT_CORE)
+C(RLIMIT_CPU)
+C(RLIMIT_DATA)
+C(RLIMIT_FSIZE)
+C(RLIMIT_NOFILE)
+C(RLIMIT_STACK)
+C(RLIMIT_AS)
+int(*p_getpriority)(int,id_t) = getpriority;
+int(*p_getrlimit)(int,struct rlimit*) = getrlimit;
+int(*p_getrusage)(int,struct rusage*) = getrusage;
+int(*p_setpriority)(int,id_t,int) = setpriority;
+int(*p_setrlimit)(int,const struct rlimit*) = setrlimit;
+}
diff --git a/src/api/sys_select.c b/src/api/sys_select.c
new file mode 100644 (file)
index 0000000..d013d96
--- /dev/null
@@ -0,0 +1,32 @@
+#include <sys/select.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(time_t)
+T(suseconds_t)
+T(sigset_t)
+T(struct timespec)
+T(fd_set)
+{
+struct timeval x;
+F(time_t, tv_sec)
+F(suseconds_t, tv_usec)
+}
+C(FD_SETSIZE)
+#ifndef FD_CLR
+void(*p_FD_CLR)(int,fd_set*) = FD_CLR;
+#endif
+#ifndef FD_ISSET
+int(*p_FD_ISSET)(int,fd_set*) = FD_ISSET;
+#endif
+#ifndef FD_SET
+void(*p_FD_SET)(int,fd_set*) = FD_SET;
+#endif
+#ifndef FD_ZERO
+void(*p_FD_ZERO)(fd_set*) = FD_ZERO;
+#endif
+int(*p_pselect)(int,fd_set*restrict,fd_set*restrict,fd_set*restrict,const struct timespec*restrict,const sigset_t*restrict) = pselect;
+int(*p_select)(int,fd_set*restrict,fd_set*restrict,fd_set*restrict,struct timeval*restrict) = select;
+}
diff --git a/src/api/sys_sem.c b/src/api/sys_sem.c
new file mode 100644 (file)
index 0000000..94dc8e1
--- /dev/null
@@ -0,0 +1,55 @@
+#include <sys/sem.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(pid_t)
+T(size_t)
+T(time_t)
+C(SEM_UNDO)
+C(GETNCNT)
+C(GETPID)
+C(GETVAL)
+C(GETALL)
+C(GETZCNT)
+C(SETVAL)
+C(SETALL)
+{
+struct semid_ds x;
+F(struct ipc_perm,sem_perm)
+F(unsigned short, sem_nsems)
+F(time_t, sem_otime)
+F(time_t, sem_ctime)
+}
+{
+struct sembuf x;
+F(unsigned short,sem_num)
+F(short, sem_op)
+F(short, sem_flg)
+}
+int(*p_semctl)(int,int,int,...) = semctl;
+int(*p_semget)(key_t,int,int) = semget;
+int(*p_semop)(int,struct sembuf*,size_t) = semop;
+
+T(uid_t)
+T(gid_t)
+T(mode_t)
+T(key_t)
+{
+struct ipc_perm x;
+F(uid_t,uid)
+F(gid_t,gid)
+F(uid_t,cuid)
+F(gid_t,cgid)
+F(mode_t, mode)
+}
+C(IPC_CREAT)
+C(IPC_EXCL)
+C(IPC_NOWAIT)
+C(IPC_PRIVATE)
+C(IPC_RMID)
+C(IPC_SET)
+C(IPC_STAT)
+key_t(*p_ftok)(const char*,int) = ftok;
+}
diff --git a/src/api/sys_shm.c b/src/api/sys_shm.c
new file mode 100644 (file)
index 0000000..128e806
--- /dev/null
@@ -0,0 +1,50 @@
+#include <sys/shm.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(shmatt_t)
+T(pid_t)
+T(size_t)
+T(time_t)
+C(SHM_RDONLY)
+C(SHM_RND)
+C(SHMLBA)
+{
+struct shmid_ds x;
+F(struct ipc_perm, shm_perm)
+F(size_t,shm_segsz)
+F(pid_t, shm_lpid)
+F(pid_t, shm_cpid)
+F(shmatt_t,shm_nattch)
+F(time_t,shm_atime)
+F(time_t,shm_dtime)
+F(time_t,shm_ctime)
+}
+void*(*p_shmat)(int,const void*,int) = shmat;
+int(*p_shmctl)(int,int,struct shmid_ds*) = shmctl;
+int(*p_shmdt)(const void*) = shmdt;
+int(*p_shmget)(key_t,size_t,int) = shmget;
+
+T(uid_t)
+T(gid_t)
+T(mode_t)
+T(key_t)
+{
+struct ipc_perm x;
+F(uid_t,uid)
+F(gid_t,gid)
+F(uid_t,cuid)
+F(gid_t,cgid)
+F(mode_t, mode)
+}
+C(IPC_CREAT)
+C(IPC_EXCL)
+C(IPC_NOWAIT)
+C(IPC_PRIVATE)
+C(IPC_RMID)
+C(IPC_SET)
+C(IPC_STAT)
+key_t(*p_ftok)(const char*,int) = ftok;
+}
diff --git a/src/api/sys_socket.c b/src/api/sys_socket.c
new file mode 100644 (file)
index 0000000..d22fe08
--- /dev/null
@@ -0,0 +1,106 @@
+#include <sys/socket.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(size_t)
+T(ssize_t)
+T(socklen_t)
+T(sa_family_t)
+{
+struct sockaddr x;
+F(sa_family_t,sa_family)
+F(char, sa_data[0])
+}
+{
+struct sockaddr_storage x;
+F(sa_family_t, ss_family)
+}
+{
+struct msghdr x;
+F(void*,msg_name)
+F(socklen_t,msg_namelen)
+F(struct iovec*,msg_iov)
+F(int,msg_iovlen)
+F(void*,msg_control)
+F(socklen_t,msg_controllen)
+F(int,msg_flags)
+}
+{
+struct cmsghdr x;
+F(socklen_t,cmsg_len)
+F(int,cmsg_level)
+F(int,cmsg_type)
+}
+C(SCM_RIGHTS)
+#ifndef CMSG_DATA
+#error no CMSG_DATA
+#endif
+#ifndef CMSG_NXTHDR
+#error no CMSG_NXTHDR
+#endif
+#ifndef CMSG_FIRSTHDR
+#error CMSG_FIRSTTHDR
+#endif
+{
+struct linger x;
+F(int,l_onoff)
+F(int,l_linger)
+}
+C(SOCK_DGRAM)
+C(SOCK_RAW)
+C(SOCK_SEQPACKET)
+C(SOCK_STREAM)
+C(SOL_SOCKET)
+C(SO_ACCEPTCONN)
+C(SO_BROADCAST)
+C(SO_DEBUG)
+C(SO_DONTROUTE)
+C(SO_ERROR)
+C(SO_KEEPALIVE)
+C(SO_LINGER)
+C(SO_OOBINLINE)
+C(SO_RCVBUF)
+C(SO_RCVLOWAT)
+C(SO_RCVTIMEO)
+C(SO_REUSEADDR)
+C(SO_SNDBUF)
+C(SO_SNDLOWAT)
+C(SO_SNDTIMEO)
+C(SO_TYPE)
+C(SOMAXCONN)
+C(MSG_CTRUNC)
+C(MSG_DONTROUTE)
+C(MSG_EOR)
+C(MSG_OOB)
+C(MSG_NOSIGNAL)
+C(MSG_PEEK)
+C(MSG_TRUNC)
+C(MSG_WAITALL)
+C(AF_INET)
+C(AF_INET6)
+C(AF_UNIX)
+C(AF_UNSPEC)
+C(SHUT_RD)
+C(SHUT_RDWR)
+C(SHUT_WR)
+int(*p_accept)(int,struct sockaddr*restrict,socklen_t*restrict) = accept;
+int(*p_bind)(int,const struct sockaddr*,socklen_t) = bind;
+int(*p_connect)(int,const struct sockaddr*,socklen_t) = connect;
+int(*p_getpeername)(int,struct sockaddr*restrict,socklen_t*restrict) = getpeername;
+int(*p_getsockname)(int,struct sockaddr*restrict,socklen_t*restrict) = getsockname;
+int(*p_getsockopt)(int,int,int,void*restrict,socklen_t*restrict) = getsockopt;
+int(*p_listen)(int,int) = listen;
+ssize_t(*p_recv)(int,void*,size_t,int) = recv;
+ssize_t(*p_recvfrom)(int,void*restrict,size_t,int,struct sockaddr*restrict,socklen_t*restrict) = recvfrom;
+ssize_t(*p_recvmsg)(int,struct msghdr*,int) = recvmsg;
+ssize_t(*p_send)(int,const void*,size_t,int) = send;
+ssize_t(*p_sendmsg)(int,const struct msghdr*,int) = sendmsg;
+ssize_t(*p_sendto)(int,const void*,size_t,int,const struct sockaddr*,socklen_t) = sendto;
+int(*p_setsockopt)(int,int,int,const void*,socklen_t) = setsockopt;
+int(*p_shutdown)(int,int) = shutdown;
+int(*p_sockatmark)(int) = sockatmark;
+int(*p_socket)(int,int,int) = socket;
+int(*p_socketpair)(int,int,int,int[]) = socketpair;
+}
diff --git a/src/api/sys_stat.c b/src/api/sys_stat.c
new file mode 100644 (file)
index 0000000..bebf08e
--- /dev/null
@@ -0,0 +1,98 @@
+#include <sys/stat.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+#define C(n) switch(n){case n:;}
+static void f()
+{
+T(blkcnt_t)
+T(blksize_t)
+T(dev_t)
+T(ino_t)
+T(mode_t)
+T(nlink_t)
+T(uid_t)
+T(gid_t)
+T(off_t)
+T(time_t)
+T(struct timespec)
+
+{
+struct stat x;
+F(dev_t, st_dev)
+F(ino_t, st_ino)
+F(mode_t, st_mode)
+F(nlink_t, st_nlink)
+F(uid_t, st_uid)
+F(gid_t, st_gid)
+F(dev_t, st_rdev)
+F(off_t, st_size)
+F(struct timespec, st_atim)
+F(struct timespec, st_mtim)
+F(struct timespec, st_ctim)
+F(blksize_t, st_blksize)
+F(blkcnt_t, st_blocks)
+
+F(time_t, st_atime)
+T(time_t, st_mtime)
+T(time_t, st_ctime)
+}
+C(S_IRWXU)
+C(S_IRUSR)
+C(S_IWUSR)
+C(S_IXUSR)
+C(S_IRWXG)
+C(S_IRGRP)
+C(S_IWGRP)
+C(S_IXGRP)
+C(S_IRWXO)
+C(S_IROTH)
+C(S_IWOTH)
+C(S_IXOTH)
+C(S_ISUID)
+C(S_ISGID)
+#ifdef _XOPEN_SOURCE
+C(S_ISVTX)
+C(S_IFMT)
+C(S_IFBLK)
+C(S_IFCHR)
+C(S_IFIFO)
+C(S_IFREG)
+C(S_IFDIR)
+C(S_IFLNK)
+C(S_IFSOCK)
+#endif
+C(S_ISBLK(0))
+C(S_ISCHR(0))
+C(S_ISDIR(0))
+C(S_ISFIFO(0))
+C(S_ISREG(0))
+C(S_ISLNK(0))
+C(S_ISSOCK(0))
+{
+struct stat x = {0};
+{int i = S_TYPEISMQ(&x);}
+{int i = S_TYPEISSEM(&x);}
+{int i = S_TYPEISSHM(&x);}
+{int i = S_TYPEISTMO(&x);}
+}
+C(UTIME_NOW)
+C(UTIME_OMIT)
+int(*p_chmod)(const char*,mode_t) = chmod;
+int(*p_fchmod)(int,mode_t) = fchmod;
+int(*p_fchmodat)(int,const char*,mode_t,int) = fchmodat;
+int(*p_fstat)(int,struct stat*) = fstat;
+int(*p_fstatat)(int,const char*restrict,struct stat*restrict,int) = fstatat;
+int(*p_futimens)(int,const struct timespec[]) = futimens;
+int(*p_lstat)(const char*restrict,struct stat*restrict) = lstat;
+int(*p_mkdir)(const char*,mode_t) = mkdir;
+int(*p_mkdirat)(int,const char*,mode_t) = mkdirat;
+int(*p_mkfifo)(const char*,mode_t) = mkfifo;
+int(*p_mkfifoat)(int,const char*,mode_t) = mkfifoat;
+#ifdef _XOPEN_SOURCE
+int(*p_mknod)(const char*,mode_t,dev_t) = mknod;
+int(*p_mknodat)(int,const char*,mode_t,dev_t) = mknodat;
+#endif
+int(*p_stat)(const char*restrict,struct stat*restrict) = stat;
+mode_t(*p_umask)(mode_t) = umask;
+int(*p_utimensat)(int,const char*,const struct timespec[],int) = utimensat;
+}
diff --git a/src/api/sys_uio.c b/src/api/sys_uio.c
new file mode 100644 (file)
index 0000000..5417a72
--- /dev/null
@@ -0,0 +1,15 @@
+#include <sys/uio.h>
+#define T(t) (t*)0;
+#define F(t,n) {t *y = &x.n;}
+static void f()
+{
+T(size_t)
+T(ssize_t)
+{
+struct iovec x;
+F(void *,iov_base)
+F(size_t,iov_len)
+}
+ssize_t(*p_readv)(int,const struct iovec*,int) = readv;
+ssize_t(*p_writev)(int,const struct iovec*,int) = writev;
+}