Changeset

3481:72d3c8029178

util.pposix: Add pposix.uname(), bump version
author Matthew Wild <mwild1@gmail.com>
date Tue, 31 Aug 2010 15:14:39 +0100
parents 3480:97831dfe7f72
children 3482:e1a4f7b15caf
files plugins/mod_posix.lua prosodyctl util-src/pposix.c
diffstat 3 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_posix.lua	Tue Aug 31 00:38:44 2010 +0100
+++ b/plugins/mod_posix.lua	Tue Aug 31 15:14:39 2010 +0100
@@ -7,7 +7,7 @@
 --
 
 
-local want_pposix_version = "0.3.4";
+local want_pposix_version = "0.3.5";
 
 local pposix = assert(require "util.pposix");
 if pposix._VERSION ~= want_pposix_version then module:log("warn", "Unknown version (%s) of binary pposix module, expected %s", tostring(pposix._VERSION), want_pposix_version); end
--- a/prosodyctl	Tue Aug 31 00:38:44 2010 +0100
+++ b/prosodyctl	Tue Aug 31 15:14:39 2010 +0100
@@ -79,7 +79,7 @@
 -- Switch away from root and into the prosody user --
 local switched_user, current_uid;
 
-local want_pposix_version = "0.3.4";
+local want_pposix_version = "0.3.5";
 local ok, pposix = pcall(require, "util.pposix");
 
 if ok and pposix then
--- a/util-src/pposix.c	Tue Aug 31 00:38:44 2010 +0100
+++ b/util-src/pposix.c	Tue Aug 31 15:14:39 2010 +0100
@@ -13,7 +13,7 @@
 * POSIX support functions for Lua
 */
 
-#define MODULE_VERSION "0.3.4"
+#define MODULE_VERSION "0.3.5"
 
 #include <stdlib.h>
 #include <math.h>
@@ -22,6 +22,7 @@
 #include <sys/resource.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <sys/utsname.h>
 #include <fcntl.h>
 
 #include <syslog.h>
@@ -553,6 +554,28 @@
 	return 0;
 }
 
+int lc_uname(lua_State* L)
+{
+	struct utsname uname_info;
+	if(uname(&uname_info) != 0)
+	{
+		lua_pushstring(L, strerror(errno));
+		return 2;
+	}
+	lua_newtable(L);
+	lua_pushstring(L, uname_info.sysname);
+	lua_setfield(L, -2, "sysname");
+	lua_pushstring(L, uname_info.nodename);
+	lua_setfield(L, -2, "nodename");
+	lua_pushstring(L, uname_info.release);
+	lua_setfield(L, -2, "release");
+	lua_pushstring(L, uname_info.version);
+	lua_setfield(L, -2, "version");
+	lua_pushstring(L, uname_info.machine);
+	lua_setfield(L, -2, "machine");
+	return 1;
+}
+
 /* Register functions */
 
 int luaopen_util_pposix(lua_State *L)
@@ -582,6 +605,8 @@
 		{ "setrlimit", lc_setrlimit },
 		{ "getrlimit", lc_getrlimit },
 
+		{ "uname", lc_uname },
+
 		{ NULL, NULL }
 	};