#if !defined ISO && !defined ISO99 && !defined ISO11

#if !defined POSIX && !defined POSIX2008 && !defined XPG3 && !defined XPG4
type blkcnt_t
type blksize_t
#endif
#ifndef POSIX
type dev_t
type ino_t
type mode_t
type nlink_t
type uid_t
type gid_t
type off_t
type time_t
#else
# define dev_t __dev_t
# define ino_t __ino_t
# define mode_t __mode_t
# define nlink_t __nlink_t
# define uid_t __uid_t
# define gid_t __gid_t
# define off_t __off_t
# define time_t __time_t
#endif

type {struct stat}

element {struct stat} dev_t st_dev
element {struct stat} ino_t st_ino
element {struct stat} mode_t st_mode
element {struct stat} nlink_t st_nlink
element {struct stat} uid_t st_uid
element {struct stat} gid_t st_gid
#if !defined POSIX && !defined POSIX2008
element {struct stat} dev_t st_rdev
#endif
element {struct stat} off_t st_size
element {struct stat} time_t st_atime
element {struct stat} time_t st_mtime
element {struct stat} time_t st_ctime
#if !defined POSIX && !defined POSIX2008
element {struct stat} blksize_t st_blksize
element {struct stat} blkcnt_t st_blocks
#endif

# if defined XOPEN2K8 || defined POSIX2008
type {struct timespec}
element {struct timespec} time_t tv_sec
element {struct timespec} long tv_nsec
# endif

#if !defined POSIX && !defined POSIX2008
constant S_IFMT
constant S_IFBLK
constant S_IFCHR
constant S_IFIFO
constant S_IFREG
constant S_IFDIR
constant S_IFLNK
constant S_IFSOCK
#endif

constant S_IRWXU
constant S_IRUSR
constant S_IWUSR
constant S_IXUSR
constant S_IRWXG
constant S_IWGRP
constant S_IXGRP
constant S_IRWXO
constant S_IROTH
constant S_IWOTH
constant S_IXOTH
constant S_ISUID
constant S_ISGID
#if !defined POSIX && !defined POSIX2008
constant S_ISVTX
#endif

#if !defined POSIX
macro S_ISBLK
macro S_ISCHR
macro S_ISDIR
macro S_ISFIFO
macro S_ISREG
macro S_ISLNK
macro S_ISSOCK
#endif

// How to represent optional tests?
optional-macro S_TYPEISMQ
optional-macro S_TYPEISSEM
optional-macro S_TYPEISSHM
optional-macro S_TYPEISTMO

# if defined XOPEN2K8 || defined POSIX2008
constant UTIME_NOW
constant UTIME_OMIT
# endif

function int chmod (const char*, mode_t)
function int fchmod (int, mode_t)
# if defined XOPEN2K8 || defined POSIX2008
function int fchmodat (int, const char*, mode_t, int)
# endif
function int fstat (int, struct stat*)
# if defined XOPEN2K8 || defined POSIX2008
function int fstatat (int, const char*, struct stat*, int)
function int futimens (int, const struct timespec[2])
# endif
#if !defined POSIX
function int lstat (const char*, struct stat*)
#endif
function int mkdir (const char*, mode_t)
# if defined XOPEN2K8 || defined POSIX2008
function int mkdirat (int, const char*, mode_t)
# endif
function int mkfifo (const char*, mode_t)
# if defined XOPEN2K8 || defined POSIX2008
function int mkfifoat (int, const char*, mode_t)
# endif
# if !defined POSIX && !defined POSIX2008
function int mknod (const char*, mode_t, dev_t)
# endif
# ifdef XOPEN2K8
function int mknodat (int, const char*, mode_t, dev_t)
# endif
function int stat (const char*, struct stat*)
function mode_t umask (mode_t)
# if defined XOPEN2K8 || defined POSIX2008
function int utimensat (int, const char*, const struct timespec[2], int)
# endif

allow st_*
allow S_*
allow *_t
#endif
