DIRECTORY BasicTime USING [GMT], IO USING [STREAM], Rope USING [ROPE]; CinderSysOps: CEDAR DEFINITIONS = BEGIN Interceptor: TYPE = REF InterceptorRecord; InterceptorRecord: TYPE = RECORD [ open: OpenProc, close: CloseProc, delete: DeleteProc, data: REF ¬ NIL ]; OpenProc: TYPE = PROC [interceptor: Interceptor, name: Rope.ROPE, kind: OpenKind] RETURNS [stream: IO.STREAM, err: Rope.ROPE, time: BasicTime.GMT]; OpenKind: TYPE = {read, write, writeLog}; CloseProc: TYPE = PROC [interceptor: Interceptor, stream: IO.STREAM, abortAndDelete: BOOL] RETURNS [err: Rope.ROPE]; DeleteProc: TYPE = PROC [interceptor: Interceptor, name: Rope.ROPE] RETURNS [err: Rope.ROPE]; Intercept: PROC [interceptor: Interceptor] RETURNS [old: Interceptor]; Open: PROC [name: Rope.ROPE, kind: OpenKind] RETURNS [stream: IO.STREAM, err: Rope.ROPE, time: BasicTime.GMT]; Close: PROC [stream: IO.STREAM, abortAndDelete: BOOL ¬ FALSE] RETURNS [err: Rope.ROPE]; Delete: PROC [name: Rope.ROPE] RETURNS [err: Rope.ROPE]; Cleanup: PROC [abortAndDelete: BOOL]; END. φ CinderSysOps.mesa Copyright Σ 1987, 1989, 1991 by Xerox Corporation. All rights reserved. Russ Atkinson (RRA) November 19, 1987 7:42:44 pm PST Andy Litman February 16, 1988 11:35:31 pm PST JKF July 22, 1989 3:49:53 pm PDT Opens the named file and returns a stream to it. If the stream cannot be opened then an error message is returned. Closes the given stream. If abortAndDelete, then abort all output operations and delete the associated file (if any). Otherwise, normal close is performed. Deletes the named file (returning a messge if not possible). Intercepts the system operations, returning the previous interceptor (if any). Opens the file via the current interceptor proc. Closes the stream via the current interceptor proc. If abortAndDelete, then all I/O operations on files opened with kind in {read, write} will be aborted, and all files opened with kind = write will be deleted. Deletes the named file (returning a messge if not possible). Closes all open streams managed by MimSysOps. Κr–(cedarcode) style•NewlineDelimiter ™code™Kšœ Οeœ=™HKšœΟkœž™4KšΟy*Πky™-Kšžœ™ —˜šž ˜ Kšœ žœžœ˜Kšžœžœžœ˜Kšœžœžœ˜K˜——š Οn œžœž œžœΟc˜)K˜Kšœ žœžœ˜*šœžœžœ˜"Kšœ˜Kšœ˜Kšœ˜Kšœžœž˜Kšœ˜K˜—šœ žœžœ'žœžœ žœžœ žœžœ˜“Kšœ žœ˜)K™s—šœ žœžœ$žœžœžœžœ žœ˜tKšœ™—š œ žœžœ'žœžœ žœ˜]Kšœ<™<—K˜š‘ œžœžœ˜FKšœN™NK™—š‘œžœ žœžœ žœžœ žœžœ˜nK™0K˜—š‘œžœ žœžœžœžœžœ žœ˜WKšœΣ™ΣK˜—š ‘œžœ žœžœ žœ˜8Kšœ<™