diff options
author | Timo Teräs <timo.teras@iki.fi> | 2010-08-11 14:22:57 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2010-08-11 14:22:57 +0300 |
commit | cf7e91d59880424ff6c643a848938619b7968ad8 (patch) | |
tree | ec6f1c34591c3c2ccc9395105768162bc50b267d /sqdb-build.lua | |
parent | e38e9c2db7db666605ef914fb481397e784eb7d8 (diff) | |
download | squark-cf7e91d59880424ff6c643a848938619b7968ad8.tar.bz2 squark-cf7e91d59880424ff6c643a848938619b7968ad8.tar.xz |
sqdb-build: write out category section
store the names of categories to database
Diffstat (limited to 'sqdb-build.lua')
-rwxr-xr-x | sqdb-build.lua | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/sqdb-build.lua b/sqdb-build.lua index 6cde349..fce1e7b 100755 --- a/sqdb-build.lua +++ b/sqdb-build.lua @@ -7,6 +7,7 @@ local all_domains = {} local all_ips = {} local all_categories = {} +local all_categories_by_id = {} local num_categories = 0 local strfind = string.find @@ -42,9 +43,13 @@ local function get_category(category_text) cat = all_categories[category_text] if cat ~= nil then return cat end - num_categories = num_categories + 1 + -- start category ID's from zero cat = { desc=category_text, id=num_categories } all_categories[category_text] = cat + num_categories = num_categories + 1 + + -- but index them from one + all_categories_by_id[num_categories] = cat account_string(category_text) @@ -169,11 +174,10 @@ local function enum_paths(cb, category, path, data) end local function enum_tree(cb, category, dns, data) - local cdns, cdata, fdns - local cat = data.category or category + local cdns, cdata, fdns, cat if data.paths ~= nil then - enum_paths(cb, cat, dns, data.paths) + enum_paths(cb, category, dns, data.paths) end if data.children ~= nil then for cdns, cdata in pairs(data.children) do @@ -182,6 +186,7 @@ local function enum_tree(cb, category, dns, data) else fdns = cdns end + cat = cdata.category or category cb(fdns, dns, cdns, cat, data.children, data.paths) enum_tree(cb, cat, fdns, cdata) end @@ -276,6 +281,7 @@ local function load_lists(conffile, part) end -- start by reading in all classification data +get_category("unknown") load_lists("lists.conf", "domains") prune_tree(all_domains, nil) load_lists("lists.conf", "urls") @@ -288,6 +294,12 @@ num_entries = db:generate_hash(function() enum_all(coroutine.yield) end) -- write string literals db:map_strings(all_strings) +-- map category names and write the category section out +for id, cdata in ipairs(all_categories_by_id) do + all_categories_by_id[id] = all_strings[cdata.desc] +end +db:write_section("categories", all_categories_by_id) + -- create master index db:create_index(num_entries) enum_all( |