Copyright (C) 1994, Digital Equipment Corp.
FileSys.i3
INTERFACEFileSys ; IMPORT TextList, OSError, Rd, Time, Wr;
(semi) OS-independent file system types and ops
TYPE FN = TEXT; FilePerm = [0..65535]; FileType = {Normal, SLink, Dir, Other}; FileInfo = RECORD type: BITS 16 FOR FileType; perm: BITS 16 FOR FilePerm; length: BITS 32 FOR [-16_7FFFFFFF-1..16_7FFFFFFF]; (* in bytes *) date: Time.T; END; TYPE Enumeration = TextList.T; CONST FilePermNorm = 1; (* 644 on Ultrix *) FilePermRWX = 2; (* 755 on Ultrix *) FilePermReadOnly = 3; (* 444 on Ultrix *) FilePermRX = 4; (* 555 on Ultrix *) TYPE ErrorClass = {NoRoomInFS, IO, Access, Lookup, Other}; PROCEDURE ClassifyError(e: OSError.Code) : ErrorClass;open/close file
PROCEDURE OpenRead(fn: FN) : Rd.T RAISES {OSError.E}; PROCEDURE OpenWrite(fn: FN) : Wr.T RAISES {OSError.E}; PROCEDURE OpenAppend(fn: FN) : Wr.T RAISES {OSError.E};main procedures
PROCEDURE Enumerate (path: FN): Enumeration RAISES {OSError.E}; (* *) PROCEDURE GetInfo(path: FN; followLink: BOOLEAN := FALSE) : FileInfo RAISES {OSError.E}; (* *) PROCEDURE GetPath (path: FN): FN RAISES {OSError.E}; (* *) PROCEDURE MakeDir (path: FN) RAISES {OSError.E}; (* *) PROCEDURE SetModifiedDate (path: FN; date: Time.T) RAISES {OSError.E}; (* *) PROCEDURE SetMode (path: FN; perm: FilePerm) RAISES {OSError.E}; (* *) PROCEDURE Rename (source, dest: FN) RAISES {OSError.E}; (* *) PROCEDURE Remove (path: FN; recursive: BOOLEAN := FALSE) RAISES {OSError.E}; (* iff recursive, we'll remove entire dir, otherwise the target must be a non-directory *) PROCEDURE ReadLink(path: FN) : FN RAISES {OSError.E}; (* *) PROCEDURE HardLink(path: FN; referent: FN) RAISES {OSError.E}; (* *) PROCEDURE SymLink(path: FN; referent: FN) RAISES {OSError.E}; (* *) PROCEDURE CheckAccess ( path: FN; write: BOOLEAN; fail: BOOLEAN := FALSE): BOOLEAN RAISES {OSError.E}; (* returns result if not "fail" *) PROCEDURE FreeDiskSpace(fn: FN) : CARDINAL RAISES {OSError.E}; (* Returns the number of user 1KB block available in the file system volume which contains "fn". *) END FileSys.