-#+lispworks
-(defun make-telnet-stream (handle)
- (let ((stream (make-instance 'comm:socket-stream
- :socket handle
- :direction :io
- :element-type
- 'base-char)))
- (mp:process-run-function
- (format nil "telnet-session ~D" handle)
- '()
- 'telnet-on-stream stream)))
+(defun telnet-worker (conn users announce)
+ (when announce
+ (format conn "~A~%" announce))
+ (when users
+ (let (user-name password)
+ (format conn "user: ")
+ (setq user-name (read-line conn))
+ (format conn "password: ")
+ (setq password (read-line conn))
+ (unless (and (string= user (car users))
+ (string= password (cdr users)))
+ (format conn "Invalid login~%")
+ (return-from telnet-worker))))
+ #+allegro
+ (tpl::start-interactive-top-level
+ conn
+ #'tpl::top-level-read-eval-print-loop
+ nil)
+ #-allegro
+ (telnet-on-stream conn)
+ )