


The standard library Posix_File api is a sub-API of the Posix_1003_1b API.
The above information is manually maintained and may contain errors.
api { eqtype User_Id ;
eqtype Group_Id ;
eqtype File_Descriptor ;
fd_to_int : File_Descriptor -> Int;
int_to_fd : Int -> File_Descriptor;
fd_to_iod : File_Descriptor -> Int;
iod_to_fd : Int -> File_Descriptor;
Directory_Stream ;
open_directory_stream : String -> Directory_Stream;
read_directory_entry : Directory_Stream -> Null_Or(String );
rewind_directory_stream : Directory_Stream -> Void;
close_directory_stream : Directory_Stream -> Void;
change_directory : String -> Void;
current_directory : Void -> String;
stdin : File_Descriptor;
stdout : File_Descriptor;
stderr : File_Descriptor;
package s : api {
Mode ;
Flags = Mode;
to_unt : Flags -> one_word_unt::Unt;
from_unt : one_word_unt::Unt -> Flags;
all : Flags;
flags : List(Flags ) -> Flags;
intersect : List(Flags ) -> Flags;
clear : (Flags , Flags) -> Flags;
all_set : (Flags , Flags) -> Bool;
any_set : (Flags , Flags) -> Bool;
irwxu : Mode;
irusr : Mode;
iwusr : Mode;
ixusr : Mode;
irwxg : Mode;
irgrp : Mode;
iwgrp : Mode;
ixgrp : Mode;
irwxo : Mode;
iroth : Mode;
iwoth : Mode;
ixoth : Mode;
isuid : Mode;
isgid : Mode;
};;
mode_0755 : s::Mode;
mode_0700 : s::Mode;
mode_0666 : s::Mode;
mode_0644 : s::Mode;
mode_0600 : s::Mode;
package o : api {
eqtype Flags ;
to_unt : Flags -> one_word_unt::Unt;
from_unt : one_word_unt::Unt -> Flags;
all : Flags;
flags : List(Flags ) -> Flags;
intersect : List(Flags ) -> Flags;
clear : (Flags , Flags) -> Flags;
all_set : (Flags , Flags) -> Bool;
any_set : (Flags , Flags) -> Bool;
append : Flags;
dsync : Flags;
excl : Flags;
noctty : Flags;
nonblock : Flags;
rsync : Flags;
sync : Flags;
trunc : Flags;
};;
Open_Mode = O_RDONLY | O_RDWR | O_WRONLY;
openf : (String , Open_Mode , o::Flags) -> File_Descriptor;
createf : (String , Open_Mode , o::Flags , s::Mode)
-> File_Descriptor;
creat : (String , s::Mode) -> File_Descriptor;
umask : s::Mode -> s::Mode;
link : {new:String, old:String} -> Void;
mkstemp : Void -> File_Descriptor;
mkdir : (String , s::Mode) -> Void;
make_named_pipe : (String , s::Mode) -> Void;
unlink : String -> Void;
rmdir : String -> Void;
rename : {from:String, to:String} -> Void;
symlink : {new:String, old:String} -> Void;
readlink : String -> String;
ftruncate : (File_Descriptor , Int) -> Void;
eqtype Device ;
unt_to_dev : one_word_unt::Unt -> Device;
dev_to_unt : Device -> one_word_unt::Unt;
eqtype Inode ;
unt_to_ino : one_word_unt::Unt -> Inode;
ino_to_unt : Inode -> one_word_unt::Unt;
package stat : api {
Stat = {atime:time::Time, ctime:time::Time, dev:Int,
ftype:Int, gid:one_word_unt::Unt, inode:Int,
mode:s::Flags, mtime:time::Time, nlink:Int,
size:Int, uid:one_word_unt::Unt};
is_directory : Stat -> Bool;
is_char_dev : Stat -> Bool;
is_block_dev : Stat -> Bool;
is_file : Stat -> Bool;
is_pipe : Stat -> Bool;
is_symlink : Stat -> Bool;
is_socket : Stat -> Bool;
mode : Stat -> s::Mode;
inode : Stat -> Int;
dev : Stat -> Int;
nlink : Stat -> Int;
uid : Stat -> User_Id;
gid : Stat -> Group_Id;
size : Stat -> Int;
atime : Stat -> time::Time;
mtime : Stat -> time::Time;
ctime : Stat -> time::Time;
};;
stat : String -> stat::Stat;
lstat : String -> stat::Stat;
fstat : File_Descriptor -> stat::Stat;
Access_Mode = MAY_EXECUTE | MAY_READ | MAY_WRITE;
access : (String , List(Access_Mode )) -> Bool;
chmod : (String , s::Mode) -> Void;
fchmod : (File_Descriptor , s::Mode) -> Void;
chown : (String , User_Id , Group_Id) -> Void;
fchown : (File_Descriptor , User_Id , Group_Id) -> Void;
utime : (String
, Null_Or({actime:time::Time, modtime:time::Time} ))
-> Void;
pathconf : (String , String) -> Null_Or(one_word_unt::Unt );
fpathconf : (File_Descriptor , String)
-> Null_Or(one_word_unt::Unt );
};


