%{#
#include "libc/sys/CATS/stat.cats"
%}
staload T = "libc/sys/SATS/types.sats"
typedef dev_t = $T.dev_t
typedef ino_t = $T.ino_t
typedef mode_t = $T.mode_t
typedef nlink_t = $T.nlink_t
typedef gid_t = $T.gid_t
typedef uid_t = $T.uid_t
typedef off_t = $T.off_t
typedef blkcnt_t = $T.blkcnt_t
typedef blksize_t = $T.blksize_t
typedef time_t = $T.time_t
abst@ype
stat_rest typedef stat_struct =
$extype_struct "ats_stat_type" of {
st_dev= dev_t , st_ino= ino_t , st_mode= mode_t , st_nlink= nlink_t , st_uid= uid_t , st_gid= gid_t , st_rdev= dev_t , st_size= off_t , st_blksize= blksize_t , st_blocks= blkcnt_t , st_atime= time_t , st_mtime= time_t , st_ctime= time_t , _rest= stat_rest } typedef stat = stat_struct
macdef S_IFMT = $extval (mode_t, "S_IFMT")
macdef S_IFBLK = $extval (mode_t, "S_IFBLK")
macdef S_IFCHR = $extval (mode_t, "S_IFCHR")
macdef S_IFDIR = $extval (mode_t, "S_IFDIR")
macdef S_IFIFO = $extval (mode_t, "S_IFIFO")
macdef S_IFLNK = $extval (mode_t, "S_IFLNK")
macdef S_IFREG = $extval (mode_t, "S_IFREG")
macdef S_IFSOCK = $extval (mode_t, "S_IFSOCK")
macdef S_IRWXU = $extval (mode_t, "S_IRWXU")
macdef S_IRUSR = $extval (mode_t, "S_IRUSR")
macdef S_IWUSR = $extval (mode_t, "S_IWUSR")
macdef S_IXUSR = $extval (mode_t, "S_IXUSR")
macdef S_IRWXG = $extval (mode_t, "S_IRWXG")
macdef S_IRGRP = $extval (mode_t, "S_IRGRP")
macdef S_IWGRP = $extval (mode_t, "S_IWGRP")
macdef S_IXGRP = $extval (mode_t, "S_IXGRP")
macdef S_IRWXO = $extval (mode_t, "S_IRWXO")
macdef S_IROTH = $extval (mode_t, "S_IROTH")
macdef S_IWOTH = $extval (mode_t, "S_IWOTH")
macdef S_IXOTH = $extval (mode_t, "S_IXOTH")
macdef S_ISUID = $extval (mode_t, "S_ISUID")
macdef S_ISGID = $extval (mode_t, "S_ISGID")
macdef S_ISVTX = $extval (mode_t, "S_ISVTX")
fun S_ISBLK (m: mode_t): bool = "atslib_S_ISBLK"
fun S_ISCHR (m: mode_t): bool = "atslib_S_ISCHR"
fun S_ISDIR (m: mode_t): bool = "atslib_S_ISDIR"
fun S_ISFIFO (m: mode_t): bool = "atslib_S_ISFIFO"
fun S_ISREG (m: mode_t): bool = "atslib_S_ISREG"
fun S_ISLNK (m: mode_t): bool = "atslib_S_ISLNK"
fun S_ISSOCK (m: mode_t): bool = "atslib_S_ISSOCK"
fun isfdtype {fd:nat}
(fd: int fd, fdtype: mode_t): int
fun chmod_err (path: string, mode: mode_t): int
= "#atslib_chmod_err" fun chmod_exn (path: string, mode: mode_t): void
= "atslib_chmod_exn"
fun mkdir_err (path: string, mode: mode_t): int
= "#atslib_mkdir_err" fun mkdir_exn (path: string, mode: mode_t): void
= "atslib_mkdir_exn"
fun stat_err (
name: string, st: &stat? >> opt (stat, i==0)
) : #[i:int | i <= 0] int i
= "#atslib_stat_err" fun stat_exn
(name: string, st: &stat? >> stat): void = "atslib_stat_exn"
fun fstat_err {fd:nat} (
fd: int fd, st: &stat? >> opt (stat, i==0)
) : #[i:int | i <= 0] int i
= "#atslib_fstat_err" fun fstat_exn {fd:nat}
(fd: int fd, st: &stat? >> stat): void = "atslib_fstat_exn"
fun lstat_err (
name: string, st: &stat? >> opt (stat, i==0)
) : #[i:int | i <= 0] int i
= "#atslib_lstat_err" fun lstat_exn
(name: string, buf: &stat? >> stat): void = "atslib_lstat_exn"
fun umask (mask_new: mode_t): mode_t = "#atslib_umask"
fun mkfifo (path: string, perm: mode_t): int = "#atslib_mkfifo"