Blob Blame History Raw
#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)
F(time_t, st_mtime)
F(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)(const char*,mode_t) = chmod;}
{int(*p)(int,mode_t) = fchmod;}
{int(*p)(int,const char*,mode_t,int) = fchmodat;}
{int(*p)(int,struct stat*) = fstat;}
{int(*p)(int,const char*restrict,struct stat*restrict,int) = fstatat;}
{int(*p)(int,const struct timespec[]) = futimens;}
{int(*p)(const char*restrict,struct stat*restrict) = lstat;}
{int(*p)(const char*,mode_t) = mkdir;}
{int(*p)(int,const char*,mode_t) = mkdirat;}
{int(*p)(const char*,mode_t) = mkfifo;}
{int(*p)(int,const char*,mode_t) = mkfifoat;}
#ifdef _XOPEN_SOURCE
{int(*p)(const char*,mode_t,dev_t) = mknod;}
{int(*p)(int,const char*,mode_t,dev_t) = mknodat;}
#endif
{int(*p)(const char*restrict,struct stat*restrict) = stat;}
{mode_t(*p)(mode_t) = umask;}
{int(*p)(int,const char*,const struct timespec[],int) = utimensat;}
}