original commit: 957aed3185b8cf9c3d28f3d672894ee8b6dc8d14
This commit is contained in:
Matthew Flatt 2003-06-18 14:13:00 +00:00
parent 2ef98371e4
commit 0f19ec8337
2 changed files with 25 additions and 12 deletions

View File

@ -11,6 +11,8 @@
imap-disconnect
imap-force-disconnect
imap-reselect
imap-examine
imap-noop
imap-status
imap-get-messages

View File

@ -216,18 +216,29 @@
(imap-connect* r w username password inbox)))
(define (imap-reselect imap inbox)
(let ([r (imap-connection-r imap)]
[w (imap-connection-w imap)])
(let ([init-count 0]
[init-recent 0])
(check-ok (imap-send r w (format "SELECT ~a" (str->arg inbox))
(lambda (i)
(when (and (list? i) (= 2 (length i)))
(cond
[(tag-eq? (cadr i) 'EXISTS)
(set! init-count (car i))]
[(tag-eq? (cadr i) 'RECENT)
(set! init-recent (car i))])))))
(imap-selectish-command imap (format "SELECT ~a" (str->arg inbox))))
(define (imap-examine imap inbox)
(imap-selectish-command imap (format "EXAMINE ~a" (str->arg inbox))))
;; returns (values #f #f) if no change since last check
(define (imap-noop imap)
(imap-selectish-command imap "NOOP"))
;; icky name, someone think of something better!
(define (imap-selectish-command imap command-string)
(let ([r (imap-connection-r imap)]
[w (imap-connection-w imap)])
(let ([init-count #f]
[init-recent #f])
(check-ok (imap-send r w command-string
(lambda (i)
(when (and (list? i) (= 2 (length i)))
(cond
[(tag-eq? (cadr i) 'EXISTS)
(set! init-count (car i))]
[(tag-eq? (cadr i) 'RECENT)
(set! init-recent (car i))])))))
(values init-count init-recent))))
(define (imap-status imap inbox flags)