From 52fffebc9d359125c21130d93a67b225b4778457 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Thu, 1 Apr 2010 23:12:33 +0300 Subject: Implement mailbox iterators in Scheme. * libmu_scm/mu_mailbox.c (struct mu_mailbox): New member. (mu_scm_mailbox_free): Destroy the iterator. (mu_scm_mailbox_create0): Initialize itr to NULL. (mu-mailbox-first-message, mu-mailbox-next-message) (mu-mailbox-more-messages?): New function. * guimb/scm/sieve-core.scm (sieve-run): Rewrite main loop in the True Schemish Way. --- guimb/scm/sieve-core.scm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'guimb') diff --git a/guimb/scm/sieve-core.scm b/guimb/scm/sieve-core.scm index 5a11c65ac..f5f335c7b 100644 --- a/guimb/scm/sieve-core.scm +++ b/guimb/scm/sieve-core.scm @@ -472,14 +472,15 @@ (if (not sieve-my-email) (set! sieve-my-email (mu-username->email))) ; (DEBUG 1 "Mailbox: " sieve-mailbox) - - (let ((count (mu-mailbox-messages-count sieve-mailbox))) - (do ((n 1 (1+ n))) - ((> n count) #f) - (set! sieve-current-message - (mu-mailbox-get-message sieve-mailbox n)) - (sieve-run-current-message thunk)) - (sieve-close-mailboxes))) + + (let msg-loop ((msg (mu-mailbox-first-message sieve-mailbox))) + (if (not (eof-object? msg)) + (begin + (set! sieve-current-message msg) + (sieve-run-current-message thunk) + (msg-loop (mu-mailbox-next-message sieve-mailbox))))) + + (sieve-close-mailboxes)) (define (sieve-command-line) (catch #t -- cgit v1.2.1