/*
    AUTOMATICALLY GENERATED BY tspec 2.10
    API SUBSET: posix:sys/stat.h
*/

#ifndef __TDF_POSIX_SYS_STAT_H
#define __TDF_POSIX_SYS_STAT_H

#ifdef __cplusplus
extern "C" {
#endif

#pragma TenDRA declaration block api__posix__sys_stat begin

#ifndef __TDF_POSIX_SYS_TYPES_H
#pragma extend interface "../../posix.api/sys/types.h"
#endif /* __TDF_POSIX_SYS_TYPES_H */
#ifndef __TDF_ANSI_TIME_H_TIME_T
#pragma extend interface "../../shared/ansi.api/time_t.h"
#endif /* __TDF_ANSI_TIME_H_TIME_T */
/* This type is abstracted */
#if __STRICT_POSIX
typedef mode_t __local_stat_mode_t;
#else /* __STRICT_POSIX */
#pragma token ARITHMETIC __local_stat_mode_t # posix.stat.__local_stat_mode_t
#pragma token PROC (EXP rvalue : __local_stat_mode_t : ) EXP rvalue : mode_t : __stat_mode2mode # posix.stat.__stat_mode2mode
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : __local_stat_mode_t : __mode2stat_mode # posix.stat.__mode2stat_mode
#ifndef __BUILDING_LIBS
#pragma accept conversion __stat_mode2mode
#pragma accept conversion __mode2stat_mode
#endif /* __BUILDING_LIBS */
#endif /* __STRICT_POSIX */
#pragma token STRUCT TAG stat # posix.stat.struct_stat
#pragma token MEMBER dev_t : struct stat : st_dev # posix.stat.stat.st_dev
#pragma token MEMBER ino_t : struct stat : st_ino # posix.stat.stat.st_ino
#pragma token MEMBER __local_stat_mode_t : struct stat : st_mode # posix.stat.stat.st_mode
#pragma token MEMBER nlink_t : struct stat : st_nlink # posix.stat.stat.st_nlink
#pragma token MEMBER uid_t : struct stat : st_uid # posix.stat.stat.st_uid
#pragma token MEMBER gid_t : struct stat : st_gid # posix.stat.stat.st_gid
#pragma token MEMBER off_t : struct stat : st_size # posix.stat.stat.st_size
#pragma token MEMBER time_t : struct stat : st_atime # posix.stat.stat.st_atime
#pragma token MEMBER time_t : struct stat : st_mtime # posix.stat.stat.st_mtime
#pragma token MEMBER time_t : struct stat : st_ctime # posix.stat.stat.st_ctime
#pragma token EXP const : int : S_IRWXU # posix.stat.S_IRWXU
#pragma token EXP const : int : S_IRUSR # posix.stat.S_IRUSR
#pragma token EXP const : int : S_IWUSR # posix.stat.S_IWUSR
#pragma token EXP const : int : S_IXUSR # posix.stat.S_IXUSR
#pragma token EXP const : int : S_IRWXG # posix.stat.S_IRWXG
#pragma token EXP const : int : S_IRGRP # posix.stat.S_IRGRP
#pragma token EXP const : int : S_IWGRP # posix.stat.S_IWGRP
#pragma token EXP const : int : S_IXGRP # posix.stat.S_IXGRP
#pragma token EXP const : int : S_IRWXO # posix.stat.S_IRWXO
#pragma token EXP const : int : S_IROTH # posix.stat.S_IROTH
#pragma token EXP const : int : S_IWOTH # posix.stat.S_IWOTH
#pragma token EXP const : int : S_IXOTH # posix.stat.S_IXOTH
#pragma token EXP const : int : S_ISUID # posix.stat.S_ISUID
#pragma token EXP const : int : S_ISGID # posix.stat.S_ISGID
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : int : S_ISBLK # posix.stat.S_ISBLK
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : int : S_ISCHR # posix.stat.S_ISCHR
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : int : S_ISDIR # posix.stat.S_ISDIR
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : int : S_ISFIFO # posix.stat.S_ISFIFO
#pragma token PROC (EXP rvalue : mode_t : ) EXP rvalue : int : S_ISREG # posix.stat.S_ISREG
#pragma token FUNC int (int, struct stat *) : fstat # posix.stat.fstat
#pragma token FUNC int (const char *, struct stat *) : stat # posix.stat.stat
#pragma token FUNC int (const char *, mode_t) : chmod # posix.stat.chmod
#pragma token FUNC int (const char *, mode_t) : mkdir # posix.stat.mkdir
#pragma token FUNC int (const char *, mode_t) : mkfifo # posix.stat.mkfifo
#pragma token FUNC mode_t (mode_t) : umask # posix.stat.umask

#if __STRICT_POSIX
#else /* __STRICT_POSIX */
#pragma interface __local_stat_mode_t __stat_mode2mode __mode2stat_mode
#endif /* __STRICT_POSIX */
#pragma interface TAG stat TAG stat.st_dev TAG stat.st_ino TAG stat.st_mode
#pragma interface TAG stat.st_nlink TAG stat.st_uid TAG stat.st_gid
#pragma interface TAG stat.st_size TAG stat.st_atime TAG stat.st_mtime
#pragma interface TAG stat.st_ctime S_IRWXU S_IRUSR S_IWUSR S_IXUSR S_IRWXG
#pragma interface S_IRGRP S_IWGRP S_IXGRP S_IRWXO S_IROTH S_IWOTH S_IXOTH
#pragma interface S_ISUID S_ISGID S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
#pragma interface fstat stat chmod mkdir mkfifo umask

#pragma TenDRA declaration block end

#ifdef __cplusplus
}
#endif

#endif /* __TDF_POSIX_SYS_STAT_H */
