;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*-
;;; Patch file for System version 123.174
;;; Reason:
;;;  The :tab method of :simple-ascii-stream-terminal was broken if you did a tab
;;;  from part way into a tab stop.  E.g. 2 characters followed by TAB should
;;;  move you 6 spaces.  Instead, you got the error handler.
;;; Written 4-Jan-88 15:35:59 by pld at site Gigamos Cambridge
;;; while running on Jack Flanders from band 2
;;; with Experimental System 123.173, Experimental Local-File 73.3, Experimental FILE-Server 22.1, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.3, 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; TERMCAP.LISP#89 at 4-Jan-88 15:35:59
#10R TELNET#: 
(COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "TELNET")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; TERMCAP  "

(defmethod (simple-ascii-stream-terminal :tab) ()
  (let ((stops (termcap.tab-stops termcap)))
    (cond ((null stops)
	   (send self :string-out "        "))
	  ((numberp stops)
	   (let ((spaces (mod (pixels-to-chars tv:cursor-x) stops)))
	     (dotimes (i (if (plusp spaces) spaces stops))
	       (send self :tyo #\Space))))
	  ('else
	   ;; a list of tab stops. write this some other time
	   nil
	   ))))

))
