tmail refactor - 2
This commit is contained in:
parent
3af7ef7c6d
commit
1bf7db77ab
|
@ -55,53 +55,50 @@
|
|||
(socket-accept *socket))
|
||||
(lambda (in out)
|
||||
(write *motd out)
|
||||
(do ((i 0 (+ i 1))) ;; iterate
|
||||
((> i 9)(display *bye)(newline))
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
'((read in)(read in)(read in)))
|
||||
(lambda (answer)
|
||||
(let ((answer2 (car answer))
|
||||
(answer3 (if (not (null? (cdr answer)))
|
||||
(cadr answer)
|
||||
'foo)))
|
||||
(for-each display '((servermsg) (symbol->string answer2) " " answer3 (eoln)))
|
||||
(if (symbol? answer2)
|
||||
(cond ((eq? 'APOP answer2)
|
||||
(write mailbox-contents out)
|
||||
)
|
||||
((eq? 'STAT answer2)
|
||||
#t)
|
||||
((eq? 'LIST answer2)
|
||||
#t)
|
||||
((eq? 'RETR answer2)
|
||||
(let ((idx (string->number (symbol->string answer3))))
|
||||
(if idx
|
||||
(write (tmail-get-mail-with-index (getenv "USER") idx) out))))
|
||||
((eq? 'USER answer2)
|
||||
(let ((username (if (number? answer3)
|
||||
(number->string answer3)
|
||||
(symbol->string answer3))))
|
||||
(setenv "USER" username)
|
||||
(write "+OK user accepted - not implemented" out)))
|
||||
((eq? 'PASS answer2)
|
||||
(let ((pass (if (number? answer3)
|
||||
(number->string answer3)
|
||||
(symbol->string answer3))))
|
||||
(write "+OK password accepted - not implemented" out)))
|
||||
((eq? 'QUIT answer2)
|
||||
(write *bye out)
|
||||
(close-input-port in)
|
||||
(close-socket *socket)
|
||||
(close-output-port out)
|
||||
(exit))
|
||||
(else
|
||||
(write (errormsg) out))
|
||||
))
|
||||
))))
|
||||
(write *bye out)
|
||||
(close-input-port in)
|
||||
(close-socket *socket)
|
||||
(close-output-port out)
|
||||
(exit)
|
||||
))))))
|
||||
(let ((answer (read (make-string-input-port in))))
|
||||
(for-each display '((servermsg) (symbol->string answer)))
|
||||
(if (symbol? answer)
|
||||
(cond ((eq? 'APOP answer)
|
||||
(write mailbox-contents out)
|
||||
)
|
||||
((eq? 'STAT answer)
|
||||
#t)
|
||||
((eq? 'LIST answer)
|
||||
#t)
|
||||
((eq? 'RETR answer)
|
||||
(let ((answer2 (read (make-string-input-port in))))
|
||||
(let ((idx (string->number (symbol->string answer3))))
|
||||
(if idx
|
||||
(write (tmail-get-mail-with-index (getenv "USER") idx) out)))))
|
||||
((eq? 'USER answer)
|
||||
(let* ((answer2 (read (make-string-input-port in)))
|
||||
((username (if (number? answer2)
|
||||
(number->string answer2)
|
||||
(symbol->string answer2)))))
|
||||
(setenv "USER" username)
|
||||
(write "+OK user accepted - not implemented" out)))
|
||||
((eq? 'PASS answer)
|
||||
(let* ((answer2 (read (make-string-input-port in)))
|
||||
(pass (if (number? answer2)
|
||||
(number->string answer2)
|
||||
(symbol->string answer2))))
|
||||
(write "+OK password accepted - not implemented" out)))
|
||||
((eq? 'QUIT answer)
|
||||
(write *bye out)
|
||||
(close-input-port in)
|
||||
(close-socket *socket)
|
||||
(close-output-port out)
|
||||
(exit))
|
||||
(else
|
||||
(write (errormsg) out))
|
||||
))
|
||||
)))))
|
||||
|
||||
|
||||
(let ((answer2 (read (make-string-input-port in))))
|
||||
(for-each display '((servermsg) (symbol->string answer2)))
|
||||
(write *bye out)
|
||||
(close-input-port in)
|
||||
(close-socket *socket)
|
||||
(close-output-port out)
|
||||
(exit))))
|
|
@ -38,6 +38,4 @@
|
|||
;;(let ((answer (make-string-input-port in))) ; returns any server response into some string
|
||||
;;FIXME(close-input-port in)
|
||||
;;answer)
|
||||
)))
|
||||
|
||||
|
||||
)))
|
Loading…
Reference in New Issue