Blob Blame History Raw
#include <fcntl.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(F_DUPFD)
C(F_DUPFD_CLOEXEC)
C(F_GETFD)
C(F_SETFD)
C(F_GETFL)
C(F_SETFL)
C(F_GETLK)
C(F_SETLK)
C(F_SETLKW)
C(F_GETOWN)
C(F_SETOWN)
C(FD_CLOEXEC)
C(F_RDLCK)
C(F_UNLCK)
C(F_WRLCK)
C(SEEK_SET)
C(SEEK_CUR)
C(SEEK_END)
C(O_CREAT)
C(O_EXCL)
C(O_NOCTTY)
C(O_TRUNC)
C(O_TTY_INIT)
C(O_APPEND)
C(O_DSYNC)
C(O_NONBLOCK)
C(O_RSYNC)
C(O_SYNC)
C(O_ACCMODE)
C(O_EXEC)
C(O_RDONLY)
C(O_RDWR)
C(O_SEARCH)
C(O_WRONLY)
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)
#endif
C(AT_FDCWD)
C(AT_EACCESS)
C(AT_SYMLINK_NOFOLLOW)
C(AT_SYMLINK_FOLLOW)
C(O_CLOEXEC)
C(O_DIRECTORY)
C(O_NOFOLLOW)
C(AT_REMOVEDIR)
C(POSIX_FADV_DONTNEED)
C(POSIX_FADV_NOREUSE)
C(POSIX_FADV_NORMAL)
C(POSIX_FADV_RANDOM)
C(POSIX_FADV_SEQUENTIAL)
C(POSIX_FADV_WILLNEED)

{
struct flock x;
F(short, l_type)
F(short, l_whence)
F(off_t, l_start)
F(off_t, l_len)
F(pid_t, l_pid)
}

T(mode_t)
T(off_t)
T(pid_t)

int(*p_fcntl)(int,int,...) = fcntl;
int(*p_posix_fadvise)(int,off_t,off_t,int) = posix_fadvise;
int(*p_posix_fallocate)(int,off_t,off_t) = posix_fallocate;
#ifndef _XOPEN_SOURCE
#include <sys/stat.h>
#endif
int(*p_creat)(const char*,mode_t) = creat;
int(*p_open)(const char*,int,...) = open;
int(*p_openat)(int,const char*,int,...) = openat;
}