| 
				
			 | 
			
			
				@@ -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 
			 |