(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
(FILECREATED "18-May-88 18:57:45" {PHYLUM}<LISP>LYRIC>PATCHES>GETFILEINFOPATCH.\;1 2299
|changes| |to:| (VARS GETFILEINFOPATCHCOMS))
; Copyright (c) 1988 by Xerox Corporation. All rights reserved.
(PRETTYCOMPRINT GETFILEINFOPATCHCOMS)
(RPAQQ GETFILEINFOPATCHCOMS ((FNS \\LEAF.GETFILEINFO)))
(DEFINEQ
(\\LEAF.GETFILEINFO
(LAMBDA (STREAM ATTRIBUTE DEV) (* \; "Edited 7-Jan-88 14:44 by bvm:")
(COND
((|type?| STREAM STREAM) (* \; "Handle open case easily")
(\\LEAF.GETFILEINFO.OPEN STREAM ATTRIBUTE))
(T (PROG (DEVINFO SEQUIN RESULT)
(COND
((FMEMB ATTRIBUTE '(CREATIONDATE ICREATIONDATE))
(* |;;| "Use the LOOKUPFILE protocol. Would like to have LENGTH here, too, but might disagree with Leaf due to race conditions; e.g. LENGTH of a file that I just had closed could get an old length")
(COND
((AND (SETQ SEQUIN (|fetch| PFSLEAFSEQUIN |of| (SETQ DEVINFO
(|fetch| DEVICEINFO
|of| DEV))))
(SETQ RESULT (|fetch| LEAFCACHEDFILE |of| SEQUIN))
(EQ (|fetch| FULLFILENAME |of| RESULT)
STREAM)) (* \; "A name we know about")
(RETURN (\\LEAF.GETFILEINFO.OPEN RESULT ATTRIBUTE)))
((NEQ (SETQ RESULT (\\IFS.LOOKUPFILE STREAM 'OLD ATTRIBUTE DEVINFO))
'?)
(RETURN RESULT)))))
(* |;;| "To get attributes, have to open file, read them, then close.")
(RETURN (COND
((SETQ STREAM (\\LEAF.GETFILE DEV STREAM 'NONE 'OLD))
(PROG1 (\\LEAF.GETFILEINFO.OPEN STREAM ATTRIBUTE)
(\\LEAF.CLOSEFILE STREAM T))))))))))
)
(PUTPROPS GETFILEINFOPATCH COPYRIGHT ("Xerox Corporation" 1988))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (374 2211 (\\LEAF.GETFILEINFO 384 . 2209)))))
STOP