diff options
author | Matthew Wild <mwild1@gmail.com> | 2012-07-05 17:40:12 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2012-07-05 17:40:12 +0100 |
commit | d7fbc07ca4b77809e07fc47e60f4ca87a7e9f997 (patch) | |
tree | d14b44262cee1dc74af32fbaa4658385b9552152 /util-src/pposix.c | |
parent | bb7fd8bb306ea2d2893bb7c5bc460ec2f9886687 (diff) | |
parent | 02dc79e546ce19f54b858c102943ee6d80eec584 (diff) | |
download | prosody-d7fbc07ca4b77809e07fc47e60f4ca87a7e9f997.tar.gz prosody-d7fbc07ca4b77809e07fc47e60f4ca87a7e9f997.zip |
Merge 0.9->trunk
Diffstat (limited to 'util-src/pposix.c')
-rw-r--r-- | util-src/pposix.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/util-src/pposix.c b/util-src/pposix.c index dae48390..a5a89d55 100644 --- a/util-src/pposix.c +++ b/util-src/pposix.c @@ -581,6 +581,37 @@ int lc_uname(lua_State* L) 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 @@ int luaopen_util_pposix(lua_State *L) { "uname", lc_uname }, + { "setenv", lc_setenv }, + { NULL, NULL } }; |