-- write out buffered messages first
for _,m in ipairs(e2lib.globals.debuglogfilebuffer) do
- e2lib.globals.debuglogfile:write(m)
+ eio.fwrite(e2lib.globals.debuglogfile, m)
end
e2lib.globals.debuglogfilebuffer = {}
- e2lib.globals.debuglogfile:write(log_prefix .. msg .. "\n")
- e2lib.globals.debuglogfile:flush()
+ eio.fwrite(e2lib.globals.debuglogfile, log_prefix .. msg .. "\n")
else
table.insert(e2lib.globals.debuglogfilebuffer, log_prefix .. msg .. "\n")
end
if e2lib.globals.lock then
e2lib.globals.lock:cleanup()
end
+
+ if e2lib.globals.debuglogfile then
+ eio.fclose(e2lib.globals.debuglogfile)
+ end
end
--- exit from the tool, cleaning up temporary files and directories
end
--- Open debug logfile.
+-- @param info Info table.
+-- @return True on success, false on error.
+-- @return Error object on failure.
local function opendebuglogfile(info)
- local rc, re = e2lib.mkdir_recursive(e2lib.join(info.root, "log"))
+ local rc, re, e, logfile, debuglogfile
+
+ rc, re = e2lib.mkdir_recursive(e2lib.join(info.root, "log"))
if not rc then
- local e = err.new("error making log directory")
+ e = err.new("error making log directory")
return false, e:cat(re)
end
- local logfile = info.root .. "/log/debug.log"
- local rc, re = e2lib.rotate_log(logfile)
- local debuglogfile, msg = io.open(logfile, "w")
+ logfile = e2lib.join(info.root, "log/debug.log")
+ rc, re = e2lib.rotate_log(logfile)
+ if not rc then
+ return false, re
+ end
+
+ debuglogfile, re = eio.fopen(logfile, "w")
if not debuglogfile then
- local e = err.new("error opening debug logfile")
- return false, e:append(msg)
+ e = err.new("error opening debug logfile")
+ return false, e:cat(re)
end
+
e2lib.globals.debuglogfile = debuglogfile
- return true, nil
+
+ return true
end
--- Load user configuration file.