]> git.e2factory.org Git - e2factory.git/commitdiff
Improve error reporting in e2lib.setenv()
authorTobias Ulmer <tu@emlix.com>
Mon, 18 Nov 2013 13:34:34 +0000 (14:34 +0100)
committerTobias Ulmer <tu@emlix.com>
Wed, 16 Nov 2016 14:41:17 +0000 (15:41 +0100)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
generic/e2lib.lua
generic/le2lib.c

index fad6d074e1d33da64d878ea9c220398ebe4898d9..2397824864084e7ef76f8f052a972a4d17ee76d9 100644 (file)
@@ -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.
index 3734a792888fa65c20c493dc3d36057c642f6d88..fb6930229612411a982df080ea3309b7560a58d1 100644 (file)
@@ -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