|
@@ -139,6 +139,41 @@ function has_part_like(query, structure)
|
139
|
139
|
return false
|
140
|
140
|
end
|
141
|
141
|
|
|
142
|
+function save_header(mesg, name)
|
|
143
|
+ --
|
|
144
|
+ -- Append header from *mesg* to file named *name*
|
|
145
|
+ --
|
|
146
|
+ -- File will be placed under directory specified by IMAPDOMO_HEADERS
|
|
147
|
+ -- environment variable.
|
|
148
|
+ --
|
|
149
|
+ local dest = os.getenv("IMAPDOMO_HEADERS") .. '/' .. name
|
|
150
|
+ local cmd = ('cat >>"%q"'):format(dest)
|
|
151
|
+ mbox, uid = table.unpack(mesg)
|
|
152
|
+ header = mbox[uid]:fetch_header()
|
|
153
|
+ if pipe_to(cmd, header) == 0 then
|
|
154
|
+ return true
|
|
155
|
+ else
|
|
156
|
+ return false
|
|
157
|
+ end
|
|
158
|
+end
|
|
159
|
+
|
|
160
|
+function filter_header_saved(seq, name)
|
|
161
|
+ --
|
|
162
|
+ -- Save headers from sequence
|
|
163
|
+ --
|
|
164
|
+ -- Append header of each message in sequence *seq* to file names
|
|
165
|
+ -- *name* and return new sequence with those messages where save was
|
|
166
|
+ -- successful.
|
|
167
|
+ --
|
|
168
|
+ result = Set {}
|
|
169
|
+ for _, mesg in ipairs(seq) do
|
|
170
|
+ if save_header(mesg, name) then
|
|
171
|
+ table.insert(result, mesg)
|
|
172
|
+ end
|
|
173
|
+ end
|
|
174
|
+ return result
|
|
175
|
+end
|
|
176
|
+
|
142
|
177
|
function filter_part_like(query, seq)
|
143
|
178
|
--
|
144
|
179
|
-- Run MIME part query on *seq* sequence of messages
|