aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--awall/policy.lua12
1 files changed, 10 insertions, 2 deletions
diff --git a/awall/policy.lua b/awall/policy.lua
index af00ace..a680052 100644
--- a/awall/policy.lua
+++ b/awall/policy.lua
@@ -74,13 +74,21 @@ end
function PolicySet:loadJSON(name, fname)
- local file = fname and io.open(fname) or open(name, self.importdirs)
+ local file
+ if fname then
+ file = io.open(fname)
+ else
+ file, fname = open(name, self.importdirs)
+ end
if not file then error('Import failed: '..name) end
local data = ''
for line in file:lines() do data = data..line end
file:close()
- return json.decode(data)
+
+ local success, res = pcall(json.decode, data)
+ if success then return res end
+ error(res..' while parsing '..fname)
end