List of Import References :
See BOOL
See Char
See Com
See DENOTATION
See Denotation
See Nat
See Option
See Real
See Seq
See Set
See String
See Time
See UserAndGroup
See Void
SIGNATURE FileSystem
$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)
-- access to the file system
IMPORT
Void ONLY void: SORT
Nat ONLY nat: SORT
String ONLY string: SORT
Com[void] ONLY com: SORT
Com[denotation] ONLY com: SORT
Com[seq[denotation]]
ONLY com: SORT
Com[string] ONLY com: SORT
Com[filestat] ONLY com: SORT
Seq[denotation] ONLY seq: SORT
Time ONLY time: SORT
UserAndGroup ONLY userid: SORT groupid: SORT
SORT inode
FUN < = : inode ** inode -> bool
-- the system's inode representation and orderings
SORT device
FUN < = : device ** device -> bool
-- the system's device representation and orderings
TYPE filetype == regular -- regular file
directory -- directory
charSpecial -- character special file
blockSpecial -- block special file
fifo -- fifo (named pipe) special file
-- not necessarily POSIX; ignored if not supported
socket -- UNIX domain socket special file
symLink -- symbolic link
-- file systems may support other non-POSIX file types
unknown -- some strange local file type
FUN < = : filetype ** filetype -> bool
-- orderings
TYPE permission == setUIdOnExec -- set user ID on execution
setGIdOnExec -- set group ID on execution
stickyBit -- non-POSIX; ignored if not supported
ownerRead -- owner may read
ownerWrite -- write
ownerExec -- execute
groupRead -- group may read
groupWrite -- write
groupExec -- execute
worldRead -- world may read
worldWrite -- write
worldExec -- execute
SORT filemode
FUN < = : filemode ** filemode -> bool
-- orderings
FUN {} : filemode
-- empty file mode ("no permission bits set")
FUN none? : filemode -> bool
-- true if none of the above permissions is set
-- NOTE that none?(FM)==true =/> FM=={} due to portability
FUN % : permission -> filemode
-- singleton; make filemode from single permission
FUN + - : filemode ** permission -> filemode
-- add/delete permission to/from mode
FUN + : permission ** permission -> filemode
-- for convenient infix notation; {} + P1 + P2 ... == P1 + P2 ...
FUN + - * : filemode ** filemode -> filemode
-- union/difference/intersection of filemodes
FUN in : permission ** filemode -> bool
-- test for membership
SORT filestat
FUN type : filestat -> filetype -- file type
mode : filestat -> filemode -- access permissions
inode : filestat -> inode -- INode number of file
device : filestat -> device -- device containing the file
nlinks : filestat -> nat -- number of links; MAY OVERFLOW
owner : filestat -> userid -- owner of file
group : filestat -> groupid -- group of file
size : filestat -> nat -- size in bytes; MAY OVERFLOW
atime : filestat -> time -- time of last access
ctime : filestat -> time -- time of last change of status
mtime : filestat -> time -- time of last data modification
FUN < = : filestat ** filestat -> bool
-- orderings based on inode and device ordering; the tuple
-- (inode,device) identifies a physical file uniquely
-- NOTE that physical files may have more than one name, see link
-- FILE STATUS --
FUN stat : denotation -> com[filestat]
-- get status of file
-- see POSIX stat()
-- GENERAL OPERATIONS --
FUN link : denotation ** denotation -> com[void]
-- give existing file an additional name
-- see POSIX link()
FUN unlink : denotation -> com[void]
-- remove file
-- see POSIX unlink()
FUN rename : denotation ** denotation -> com[void]
-- rename file; RENAME ACROSS FILE SYSTEMS MAY FAIL
-- see POSIX rename()
FUN touch : denotation -> com[void]
-- set file access and modification time to current time
-- NOTE that this function will not create the file
-- see POSIX utime()
FUN utime : denotation ** time ** time -> com[void]
-- set file access and modification time
-- see POSIX utime()
-- ACCESS PERMISSIONS --
FUN chmod : denotation ** filemode -> com[void]
-- change file permissions
-- see POSIX chmod()
FUN chown : denotation ** userid -> com[void]
-- change file owner; USUALLY NOT ALLOWED FOR ORDINARY USERS
-- see POSIX chown()
FUN chgrp : denotation ** groupid -> com[void]
-- change file group
-- see POSIX chown()
-- DIRECTORY OPERATIONS --
FUN mkDir : denotation ** filemode -> com[void]
-- create a directory
-- see POSIX mkdir()
FUN rmDir : denotation -> com[void]
-- remove a directory
-- see POSIX rmdir()
FUN readDir : denotation -> com[seq[denotation]]
-- return all directory entries
-- MAY OR MAY NOT RETURN ENTRIES FOR . AND ..
-- see POSIX readdir()
-- SYMBOLIC LINKS --
FUN symLink : denotation ** denotation -> com[void]
-- give existing file a soft additional name
-- see POSIX symlink()
FUN readLink : denotation -> com[denotation]
-- get a symbolic link's reference
-- see POSIX readlink()
-- NAMED PIPES (FIFOS) --
FUN mkFifo : denotation ** filemode -> com[void]
-- create FIFO special file (named pipe)
-- see POSIX mkfifo()
-- OTHER --
FUN tmpName : com[denotation]
-- return valid unique filename; MAY RUN OUT OF NEW FILENAMES
-- see POSIX tmpnam()
-- old fashioned
FUN delete : string -> com[void] -- same as unlink
FUN rename : string ** string -> com[void] -- see above
FUN tmpName : com[string] -- see above
next node: Process,
prev node: FileConv,
up to node: Subsystem Unix