Diff

util-src/pposix.c @ 4934:5a6a85719b7b

util.pposix: Add setenv()
author Kim Alvefur <zash@zash.se>
date Tue, 03 Jul 2012 15:43:46 +0200
parent 4415:0091db139229
child 4946:2975c7008ccd
line wrap: on
line diff
--- a/util-src/pposix.c	Mon Jun 18 16:57:46 2012 +0100
+++ b/util-src/pposix.c	Tue Jul 03 15:43:46 2012 +0200
@@ -581,6 +581,37 @@
 	return 1;
 }
 
+int lc_setenv(lua_State* L)
+{
+	const char *var = luaL_checkstring(L, 1);
+	const char *value;
+
+	/* If the second argument is nil or nothing, unset the var */
+	if(lua_isnoneornil(L, 2))
+	{
+		if(unsetenv(var) != 0)
+		{
+			lua_pushnil(L);
+			lua_pushstring(L, strerror(errno));
+			return 2;
+		}
+		lua_pushboolean(L, 1);
+		return 1;
+	}
+
+	value = luaL_checkstring(L, 2);
+
+	if(setenv(var, value, 1) != 0)
+	{
+		lua_pushnil(L);
+		lua_pushstring(L, strerror(errno));
+		return 2;
+	}
+
+	lua_pushboolean(L, 1);
+	return 1;
+}
+
 /* Register functions */
 
 int luaopen_util_pposix(lua_State *L)
@@ -612,6 +643,8 @@
 
 		{ "uname", lc_uname },
 
+		{ "setenv", lc_setenv },
+
 		{ NULL, NULL }
 	};