;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 126.15 ;;; Reason: ;;; The DIRECTORY function was bombing out over TCP/FTP. Teach ;;; FS:FTP-ACCESS to ignore the :FAST option to DIRECTORY-LIST. ;;; Written 5-Aug-88 18:26:41 by keith (Keith Corbett) at site Gigamos Cambridge ;;; while running on Breaking Glass from band 2 ;;; with Experimental System 126.14, ZWEI 125.11, ZMail 73.2, Local-File 75.2, File-Server 24.1, Unix-Interface 13.0, Tape 24.2, Lambda-Diag 17.0, microcode 1762, SDU Boot Tape 3.14, SDU ROM 103. ; From modified file DJ: L.NETWORK.IP-TCP.USER; FTP-ACCESS.LISP#58 at 5-Aug-88 18:26:42 #10R FILE-SYSTEM#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "FILE-SYSTEM"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; USER; FTP-ACCESS  " (defmethod (ftp-access :directory-list) (given-pathname options) (let ((pathname (normalize-ftp-directory-list-pathname given-pathname host)) (no-error-p nil) ;T to not generate errors (deleted-p nil) ;T to include deleted files (sorted-p nil) ;T to sort generated list (tcp:*tcp-stream-whostate* "Directory List")) (do ((l options (cdr l))) ((null l)) (case (car l) (:noerror (setq no-error-p t)) (:sorted (setq sorted-p t)) (:deleted (setq deleted-p t)) (:fast nil) ;Not supported, not a problem (otherwise (ferror nil "~S is not a known DIRECTORY option" (car l))))) (with-open-file (s pathname :raw-directory-list t :error (not no-error-p)) (if (errorp s) s (let ((dir-list (ftp-access-canonicalize-directory-list (cons `(nil :pathname ,pathname) (do ((line) (eofp) (list)) (eofp (nreverse list)) (multiple-value (line eofp) (send s :line-in)) (when line (let ((plist (ftp-parse-directory-list-line line host pathname))) (when plist (let ((truename (getf (cdr plist) :truename)) (deleted (getf (cdr plist) :deleted))) (when (or (not deleted) deleted-p) (when truename (setf (car plist) truename)) (push plist list))))))))))) (when sorted-p (let ((null-elem (assq nil dir-list))) (and null-elem (setq dir-list (delq null-elem dir-list))) (setq dir-list (sortcar dir-list #'pathname-lessp)) (and null-elem (push null-elem dir-list)))) dir-list))))) ))