From 96d2e7d8e7206b79b6e12b7013e92665b1678dd3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 4 Jul 2016 17:05:59 +0100 Subject: [PATCH] [Feature] Support archives when matching patterns in multimap --- src/plugins/lua/multimap.lua | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/plugins/lua/multimap.lua b/src/plugins/lua/multimap.lua index 9f0d92849..786a9a492 100644 --- a/src/plugins/lua/multimap.lua +++ b/src/plugins/lua/multimap.lua @@ -344,16 +344,28 @@ local function multimap_callback(task, pre_filter) end end -- Filename rules + local function check_file(fn) + _.each(function(r) + match_filename(r, fn) + end, + _.filter(function(r) + return pre_filter == r['prefilter'] and r['type'] == 'filename' + end, rules)) + end + local parts = task:get_parts() for i,p in ipairs(parts) do - local fn = p:get_filename() - if fn then - _.each(function(r) - match_filename(r, fn) - end, - _.filter(function(r) - return pre_filter == r['prefilter'] and r['type'] == 'filename' - end, rules)) + if p:is_archive() then + local fnames = p:get_archive():get_files() + + for ii,fn in ipairs(fnames) do + check_file(fn) + end + else + local fn = p:get_filename() + if fn then + check_file(fn) + end end end -- RBL rules -- 2.39.5