From: Tobias Ulmer Date: Mon, 18 Nov 2013 13:34:34 +0000 (+0100) Subject: Improve error reporting in e2lib.setenv() X-Git-Tag: e2factory-2.3.15rc1~376 X-Git-Url: https://git.e2factory.org/?a=commitdiff_plain;h=ce74ad6e82c807a5f35fd9b09e63b0a6447fe8b6;p=e2factory.git Improve error reporting in e2lib.setenv() Signed-off-by: Tobias Ulmer --- diff --git a/generic/e2lib.lua b/generic/e2lib.lua index fad6d07..2397824 100644 --- a/generic/e2lib.lua +++ b/generic/e2lib.lua @@ -254,9 +254,18 @@ end -- @param val Variable content (string). -- @param overwrite True to overwrite existing variable of same name. -- @return True on success, false on error. +-- @return Error object on failure. function e2lib.setenv(var, val, overwrite) - -- used in only once, questionable - return le2lib.setenv(var, val, overwrite) + local rc, errstring + + rc, errstring = le2lib.setenv(var, val, overwrite) + if not rc then + return false, + err.new("setting environmenv variable %q to $q failed: %s", + var, val, errstring) + end + + return true end --- Reset signal handlers back to their default. diff --git a/generic/le2lib.c b/generic/le2lib.c index 3734a79..fb69302 100644 --- a/generic/le2lib.c +++ b/generic/le2lib.c @@ -367,10 +367,15 @@ do_setenv(lua_State *lua) const char *val = luaL_checkstring(lua, 2); int overwrite = lua_toboolean(lua, 3); int rc; - rc = setenv(var, val, overwrite != 0); - lua_pushboolean(lua, rc == 0); - return 1; + rc = setenv(var, val, overwrite); + if (rc != 0) { + lua_pushboolean(lua, 0); + lua_pushstring(lua, strerror(errno)); + return 2; + } + lua_pushboolean(lua, 1); + return 1; } #if 0