home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-08-18 | 5.9 KB | 146 lines | [TEXT/Moml] |
- (* OS.FileSys -- SML Basis Library *)
-
- type dirstream
- datatype access = A_READ | A_WRITE | A_EXEC
-
- val openDir : string -> dirstream
- val readDir : dirstream -> string
- val rewindDir : dirstream -> unit
- val closeDir : dirstream -> unit
-
- val chDir : string -> unit
- val getDir : unit -> string
- val mkDir : string -> unit
- val rmDir : string -> unit
- val isDir : string -> bool
-
- val realPath : string -> string
- val fullPath : string -> string
- val isLink : string -> bool
- val readLink : string -> string
-
- val modTime : string -> Time.time
- val setTime : string * Time.time option -> unit
- val remove : string -> unit
- val rename : {old: string, new: string} -> unit
- val access : string * access list -> bool
- val fileSize : string -> int
-
- val tmpName : unit -> string
-
- eqtype file_id;
- val fileId : string -> file_id
- val hash : file_id -> word
- val compare : file_id * file_id -> order
-
- (* These functions operate on the file system. They raise OS.SysErr
- in case of errors.
-
- [openDir p] opens directory p and returns a directory stream for
- use by readDir, rewindDir, and closeDir. Subsequent calls to
- readDir will return the directory entries in some unspecified
- order.
-
- [readDir dstr] returns and consumes a file name from the directory
- stream. If the directory stream is empty (all entries have been
- read), then the empty string "" is returned.
-
- [rewindDir dstr] resets the directory stream as if it had just been
- opened.
-
- [closeDir dstr] closes the directory stream. All subsequent
- operations on the stream will raise OS.SysErr.
-
- [chDir p] changes the current working directory to p. This affects
- calls to the functions use, load, compile in the interactive
- system, as well as all functions defined in this library. If p
- specifies a volume name, then this command also changes the current
- volume (relevant under DOS, Windows, OS/2, etc.).
-
- [getDir ()] returns the name of the current working directory.
-
- [mkDir p] creates directory p on the file system.
-
- [rmDir p] removes directory p from the file system.
-
- [isDir p] tests whether p is a directory.
-
- [fullPath p] returns a canonical form of path p, where all
- occurrences of the arcs ".", "..", "" have been expanded or
- removed, and (under Unix) symbolic links have been fully expanded.
- Raises SysErr if a directory on the path, or the file or directory
- named, does not exist or is not accessible, or if there is a link
- loop.
-
- [realPath p] behaves as fullPath(p) if p is absolute. If p is
- relative and on the same volume as the current working directory,
- it returns a canonical path relative to the current working
- directory, where superfluous occurrences of the arcs ".", "..", ""
- have been removed, and (under Unix) symbolic links have been fully
- expanded. Raises SysErr if a directory on the path, or the file or
- directory named, does not exist or is not accessible, or if there
- is a link loop. Raises Path if p is relative and on a different
- volume than the current working directory.
-
- [isLink p] returns true if p names a symbolic link. Raises SysErr
- if the file does not exist or there is an access violation. On
- operating systems without symbolic links, it returns false, or
- raises SysErr if the file does not exist or there is an access
- violation.
-
- [readLink p] returns the contents of the symbolic link p. Raises
- SysErr if p does not exist or is not a symbolic link, or there is
- an access violation. On operating systems without symbolic links,
- it raises SysErr.
-
- [modTime p] returns the modification time of file p.
-
- [setTime (p, tmopt)] sets the modification and access time of file
- p. If tmopt is SOME t, then the time t is used; otherwise the
- current time, that is, Time.now(), is used.
-
- [remove p] deletes file p from the file system.
-
- [rename {old, new}] changes the name of file `old' to `new'.
-
- [access (p, accs)] tests the access permissions of file p,
- expanding symbolic links as necessary. If the list accs of
- required access permission is empty, it tests whether p exists. If
- accs contains A_READ, A_WRITE, or A_EXEC, respectively, it tests
- whether the user process has read, write, or execute permission for
- the file.
- Under Unix, the access test is done with the `real' user
- id and group id (as opposed to the `effective' user id and group
- id) of the user process. Hence access("file", [A_READ]) may return
- false, yet the file may be readable by the process, in case the
- effective user id or group id has been changed by setuid.
-
- [fileSize p] return the size, in bytes, of the file p. Raises SysErr
- if p does not exist or its directory is not accessible.
-
- [tmpName ()] returns a file name suitable for creating a fresh
- temporary file. Note that there is no guarantee that the file name
- will be unique, since a file of that name may be created between
- the call to tmpName and a subsequent call to openOut which creates
- the file. The file name will be absolute, usually of the form
- /tmp/xxxxxxxx provided by POSIX tmpnam (3).
-
- [file_id] is the type of unique identities of file system objects
- (including device ids and volume ids, but possibly insensitive to
- volume changes on removable volumes, such as tapes and diskettes).
- The set of file ids is equipped with a total linear order.
-
- [fileId p] returns the file_id of the file system object named by
- path p. It holds that fileId p1 = fileId p2 if and only if p1 and
- p2 name the same file system object.
-
- [hash fid] returns a hashvalue for fid, suitable for use in a
- hashtable of file ids (and hence files).
- If fid1 = fid2 then hash fid1 = hash fid2.
-
- [compare (fid1, fid2)] returns LESS, EQUAL, or GREATER, according
- as fid1 precedes, equals, or follows fid2 in the total linear order
- on file ids. This is suitable for e.g. an ordered binary tree of
- file ids (and hence files).
- *)
-