;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 123.40 ;;; Reason: ;;; FTP server was only accepting lower case parameters for file type, structure, and mode. ;;; Thus, you couldn't set any binary mode (for QFASL files, for example.) ;;; Written 7-Oct-87 17:10:10 by pld at site LMI Cambridge ;;; while running on Jack Flanders from band 2 ;;; with Experimental System 123.39, Experimental Local-File 73.0, Experimental FILE-Server 22.0, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8. ; From modified file DJ: L.NETWORK.IP-TCP.SERVER; FTP.LISP#62 at 7-Oct-87 17:10:23 #10R FTP#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "FTP"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; FTP  " (defun (:property type ftp-server-handle) (state arg cmdline) (let ((arg2 (ftp-second-cmd-arg cmdline))) (case (char-upcase (aref arg 0)) (#\A (cond ((and arg2 (not (zerop (length arg2))) (char-not-equal (aref arg2 0) #\n)) (ftp-reply state 504 "Form must be N.")) (t (setf (ftpstate-byte-size state) 8) (setf (ftpstate-transfer-type state) :ascii) (ftp-reply state 200 "Type set to A.")))) (#\E (ftp-reply state 504 "Type E not implemented.")) (#\I (ftp-reply state 200 "Type set to I.") (setf (ftpstate-byte-size state) 8) (setf (ftpstate-transfer-type state) :image)) (#\L (cond ((not arg2) (setq arg2 8)) ((setq arg2 (parse-integer arg2 :radix 10 :junk-allowed t)))) (cond ((member arg2 '(8 16) :test #'eq) (setf (ftpstate-transfer-type state) :logical-byte-size) (setf (ftpstate-byte-size state) arg2) (ftp-reply state 200 "Type set to L (byte size ~D)." arg2)) (t (ftp-reply state 504 "Byte size must be 8 or 16")))) (otherwise (ftp-reply state 504 "Command not implemented for that parameter."))))) )) ; From modified file DJ: L.NETWORK.IP-TCP.SERVER; FTP.LISP#62 at 7-Oct-87 17:10:30 #10R FTP#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "FTP"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; FTP  " (defun (:property stru ftp-server-handle) (state arg cmdline) cmdline (case (aref arg 0) ((#\f #\F) (setf (ftpstate-transfer-structure state) :file) (ftp-reply state 200 "Structure set to F.")) (otherwise (ftp-reply state 504 "Command not implemented for that parameter.")))) )) ; From modified file DJ: L.NETWORK.IP-TCP.SERVER; FTP.LISP#62 at 7-Oct-87 17:10:31 #10R FTP#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "FTP"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; FTP  " (defun (:property mode ftp-server-handle) (state arg cmdline) cmdline (case (aref arg 0) ((#\s #\S) (setf (ftpstate-transfer-mode state) :stream) (ftp-reply state 200 "Mode set to S.")) (otherwise (ftp-reply state 504 "Command not implemented for that parameter.")))) ))