62 |
sieve-mailbox-list) |
sieve-mailbox-list) |
63 |
(set! sieve-mailbox-list '())) |
(set! sieve-mailbox-list '())) |
64 |
|
|
65 |
|
(define (sieve-expand-filename filename) |
66 |
|
(case (string-ref filename 0) |
67 |
|
((#\~) |
68 |
|
(let ((pw (mu_getpwuid (geteuid)))) |
69 |
|
(if (and (vector? pw) |
70 |
|
(let ((dir (vector-ref pw 5))) |
71 |
|
(and |
72 |
|
(access? dir W_OK) |
73 |
|
(eq? (vector-ref (stat (vector-ref pw 5)) 13) 'directory)))) |
74 |
|
(string-append (vector-ref pw 5) |
75 |
|
(substring filename |
76 |
|
1 (string-length filename))) |
77 |
|
#f))) |
78 |
|
((#\/) |
79 |
|
filename) |
80 |
|
(else |
81 |
|
(let ((pw (getpwuid (geteuid)))) |
82 |
|
(if (vector? pw) |
83 |
|
(string-append (vector-ref pw 5) |
84 |
|
"/" |
85 |
|
filename) |
86 |
|
filename))))) |
87 |
|
|
88 |
;;; Comparators |
;;; Comparators |
89 |
(cond |
(cond |
90 |
(sieve-parser |
(sieve-parser |
103 |
;;; fileinto |
;;; fileinto |
104 |
|
|
105 |
(define (action-fileinto filename) |
(define (action-fileinto filename) |
106 |
(let ((outbox (sieve-mailbox-open filename "cw"))) |
(let ((name (sieve-expand-filename filename))) |
107 |
(cond |
(if (string? name) |
108 |
(outbox |
(let ((outbox (sieve-mailbox-open name "cw"))) |
109 |
(mu-mailbox-append-message outbox sieve-current-message) |
(cond |
110 |
(mu-message-delete sieve-current-message))))) |
(outbox |
111 |
|
(mu-mailbox-append-message outbox sieve-current-message) |
112 |
|
(mu-message-delete sieve-current-message)) |
113 |
|
(else |
114 |
|
(runtime-message SIEVE-ERROR |
115 |
|
"Could not open mailbox " name)))) |
116 |
|
(runtime-message SIEVE-ERROR |
117 |
|
"Could not expand mailbox name " filename)))) |
118 |
|
|
119 |
;;; redirect is defined in redirect.scm |
;;; redirect is defined in redirect.scm |
120 |
|
|