(FILECREATED "17-Jul-86 15:52:06" {ERIS}<LISPCORE>LIBRARY>CMLFILESYS.;5 4320   

      changes to:  (FNS CL:DIRECTORY CL:DIRECTORY2)
                   (FUNCTIONS CL:DIRECTORY)
                   (VARS CMLFILESYSCOMS)

      previous date: "20-Jun-86 15:23:25" {ERIS}<LISPCORE>LIBRARY>CMLFILESYS.;1)


(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT CMLFILESYSCOMS)

(RPAQQ CMLFILESYSCOMS ((FUNCTIONS FILE-AUTHOR FILE-LENGTH FILE-POSITION USER-HOMEDIR-PATHNAME 
                              FILE-WRITE-DATE)
                       (FUNCTIONS PROBE-FILE RENAME-FILE DELETE-FILE)
                       (FNS CL:DIRECTORY)
                       (PROP FILETYPE CMLFILESYS)))
(DEFUN FILE-AUTHOR (FILE) 
          
          (* * "Returns author of file")
 (COERCE (OR (GETFILEINFO FILE (QUOTE AUTHOR))
             "")
        (QUOTE SIMPLE-STRING)))

(DEFUN FILE-LENGTH (FILE-STREAM) (if (AND (STREAMP FILE-STREAM)
                                          (OPENP FILE-STREAM))
                                     then (GETEOFPTR FILE-STREAM)))

(DEFUN FILE-POSITION (FILE-STREAM &OPTIONAL (POSITION NIL POSITIONP))
   (COND
      (POSITIONP (GETFILEPTR FILE-STREAM))
      (T (SETFILEPTR FILE-STREAM (CASE POSITION (:START 0)
                                       (:END (GETEOFPTR FILE-STREAM))
                                       (T POSITION)))
         T)))

(DEFUN USER-HOMEDIR-PATHNAME (&OPTIONAL HOST) (DECLARE (GLOBALVARS LOGINHOST/DIR 
                                                              *DEFAULT-PATHNAME-DEFAULTS*))
                                              (CL:DECLARE (IGNORE HOST))
                                              (PATHNAME (OR LOGINHOST/DIR *DEFAULT-PATHNAME-DEFAULTS*
                                                            )))

(DEFUN FILE-WRITE-DATE (FILE) 
          
          (* * "Return file's creation date, or NIL if it doesn't exist.")
          
          (* * "N.B. date is returned in Common Lisp Universal Time, not Interlisp-D internal time")

 (LET ((TN (PROBE-FILE FILE)))
      (CL:WHEN TN (DIFFERENCE (GETFILEINFO TN (QUOTE IWRITEDATE))
                         MIN.FIXP))))

(DEFUN PROBE-FILE (FILE) 
          
          (* * "Return a pathname which is the truename of the file if it exists, NIL otherwise.  Returns NIL for directories and other non-file entries.")
 (if (AND (STREAMP FILE)
          (OPENP STREAM))
     then (fetch FULLNAME of FILE)
   else (if (INFILEP FILE)
            then (PATHNAME FILE)
          else NIL)))

(DEFUN RENAME-FILE (FILE NEW-NAME) 
          
          (* * "Give FILE the new name NEW-NAME.  If FILE is an open stream, error.  Otherwise, do the rename.  If successful, return three values: the new name, truename of original file, truename of new file.")
 (LET ((OLD-PATHNAME (PATHNAME FILE))
       (NEW-FULLNAME))
      (if (STREAMP FILE)
          then (if (OPENP FILE)
                   then (CL:ERROR "Renaming open streams is not supported: ~S" FILE)
                 else (SETQ NEW-FULLNAME (RENAMEFILE (SETQ FILE (fetch (STREAM FULLNAME) of FILE))
                                                NEW-NAME)))
        else (SETQ NEW-FULLNAME (RENAMEFILE FILE NEW-NAME)))
      (VALUES (MERGE-PATHNAMES NEW-NAME FILE)
             OLD-PATHNAME
             (PATHNAME NEW-FULLNAME))))

(DEFUN DELETE-FILE (FILE) 
          
          (* * "Delete the specified file.")
 (LET ((TN (PROBE-FILE FILE)))
      (CL:WHEN (STREAMP FILE)
             (CLOSE FILE :ABORT T))
      (CL:IF TN (LET ((NS (NAMESTRING TN)))
                     (DELFILE NS))
             (CL:UNLESS (STREAMP FILE)
                    (CL:ERROR "File to be deleted does not exist: ~S" FILE))))
 T)

(DEFINEQ

(CL:DIRECTORY
  [LAMBDA (PATHNAME)                                         (* hdj "17-Jul-86 15:50")
          
          (* * "CML directory function.  Returns a list of files matching PATHNAME")

    (for FILE infiles (DIRECTORY.FILL.PATTERN (\CONVERT-PATHNAME PATHNAME)) collect FILE])
)

(PUTPROPS CMLFILESYS FILETYPE COMPILE-FILE)
(PUTPROPS CMLFILESYS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (3862 4190 (CL:DIRECTORY 3872 . 4188)))))
STOP