summaryrefslogtreecommitdiff
path: root/src/luaotfload-parsers.lua
diff options
context:
space:
mode:
authorPhilipp Gesang <phg42.2a@gmail.com>2014-07-18 23:48:24 +0200
committerPhilipp Gesang <phg42.2a@gmail.com>2014-07-18 23:52:08 +0200
commitf2bb496d4df55c80bda955b4b2fdc0cabd332b4f (patch)
tree08cfa676fe631d448f05170f919b1f320d40413e /src/luaotfload-parsers.lua
parent55663ee9f171539dd39a87b12200654edd3bfded (diff)
downloadluaotfload-f2bb496d4df55c80bda955b4b2fdc0cabd332b4f.tar.gz
[parsers] fix missing argument to fontconfig scanner
The reference to ``find_files`` didn’t get passed on to recursive calls which caused an error if multiple directories are searched. Reported by Norbert Preining.
Diffstat (limited to 'src/luaotfload-parsers.lua')
-rw-r--r--src/luaotfload-parsers.lua62
1 files changed, 45 insertions, 17 deletions
diff --git a/src/luaotfload-parsers.lua b/src/luaotfload-parsers.lua
index 3eeb614..e7f9cd2 100644
--- a/src/luaotfload-parsers.lua
+++ b/src/luaotfload-parsers.lua
@@ -217,20 +217,35 @@ local conf_filter = function (path)
end
--[[doc--
- read_fonts_conf_indeed() is called with seven arguments; the
- latter three are tables that represent the state and are
- always returned.
+
+ read_fonts_conf_indeed() -- Scan paths included from fontconfig
+ configuration files recursively. Called with eight arguments.
The first four are
+
· the path to the file
· the expanded $HOME
· the expanded $XDG_CONFIG_HOME
· the expanded $XDG_DATA_HOME
+
+ determining the path to be checked. Another three arguments are
+ tables that represent the state of the current job as lists of
+ strings; these are always returned. Finally a reference to the
+ find_files function is passed.
+
--doc]]--
---- string -> string -> string -> tab -> tab -> (tab * tab * tab)
+
+--- string -> string -> string -> string
+--- -> string list -> string list -> string list
+--- -> (string -> fun option -> string list)
+--- -> tab * tab * tab
local read_fonts_conf_indeed
-read_fonts_conf_indeed = function (start, home, xdg_config_home,
+read_fonts_conf_indeed = function (start,
+ home,
+ xdg_config_home,
xdg_data_home,
- acc, done, dirs_done,
+ acc,
+ done,
+ dirs_done,
find_files)
local paths = fonts_conf_scanner(start)
@@ -281,16 +296,26 @@ read_fonts_conf_indeed = function (start, home, xdg_config_home,
then
--- we exclude path with texmf in them, as they should
--- be found otherwise
- acc = read_fonts_conf_indeed(
- path, home, xdg_config_home, xdg_data_home,
- acc, done, dirs_done)
+ acc = read_fonts_conf_indeed(path,
+ home,
+ xdg_config_home,
+ xdg_data_home,
+ acc,
+ done,
+ dirs_done,
+ find_files)
elseif lfsisdir(path) then --- arrow code ahead
local config_files = find_files (path, conf_filter)
for _, filename in next, config_files do
if not done[filename] then
- acc = read_fonts_conf_indeed(
- filename, home, xdg_config_home, xdg_data_home,
- acc, done, dirs_done)
+ acc = read_fonts_conf_indeed(filename,
+ home,
+ xdg_config_home,
+ xdg_data_home,
+ acc,
+ done,
+ dirs_done,
+ find_files)
end
end
end --- match “kind”
@@ -325,11 +350,14 @@ local read_fonts_conf = function (path_list, find_files)
local done = { } ---> set: files inspected
local dirs_done = { } ---> set: dirs in list
for i=1, #path_list do --- we keep the state between files
- acc, done, dirs_done = read_fonts_conf_indeed(
- path_list[i], home, xdg_config_home,
- xdg_data_home,
- acc, done, dirs_done,
- find_files)
+ acc, done, dirs_done = read_fonts_conf_indeed(path_list[i],
+ home,
+ xdg_config_home,
+ xdg_data_home,
+ acc,
+ done,
+ dirs_done,
+ find_files)
end
return acc
end