From 1d811104b2af8e296ef6be38faca4460b2e13648 Mon Sep 17 00:00:00 2001 From: Tobias Ulmer Date: Mon, 25 Nov 2013 14:10:33 +0100 Subject: [PATCH] Write debuglogfile using eio Signed-off-by: Tobias Ulmer --- generic/e2lib.lua | 9 ++++++--- local/e2tool.lua | 27 +++++++++++++++++++-------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/generic/e2lib.lua b/generic/e2lib.lua index e388998..ce6a3b2 100644 --- a/generic/e2lib.lua +++ b/generic/e2lib.lua @@ -583,12 +583,11 @@ function e2lib.log(level, msg) -- 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 @@ -672,6 +671,10 @@ function e2lib.cleanup() 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 diff --git a/local/e2tool.lua b/local/e2tool.lua index 89d0583..e830946 100644 --- a/local/e2tool.lua +++ b/local/e2tool.lua @@ -248,21 +248,32 @@ local function check_tab(tab, keys, inherit) 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. -- 2.39.5