Diff

util-src/pposix.c @ 723:c1e7d280c174

mod_posix/pposix: Fix reporting of incorrect PID on daemonization. Log correct PID, and support writing a pidfile (pidfile = '/path/to/prosody.pid' in config). Added getpid() to pposix and improved function names.
author Matthew Wild <mwild1@gmail.com>
date Thu, 15 Jan 2009 20:59:36 +0000
parent 722:63456c9d0522
child 727:78c9542de94e
line wrap: on
line diff
--- a/util-src/pposix.c	Thu Jan 15 20:06:41 2009 +0000
+++ b/util-src/pposix.c	Thu Jan 15 20:59:36 2009 +0000
@@ -37,7 +37,7 @@
 
 /* Daemonization support */
 
-static int daemonize(lua_State *L)
+static int lc_daemonize(lua_State *L)
 {
 
 	pid_t pid;
@@ -147,7 +147,7 @@
 */ 
 char* syslog_ident = NULL;
 
-int syslog_open(lua_State* L)
+int lc_syslog_open(lua_State* L)
 {
 	int facility = luaL_checkoption(L, 2, "daemon", &facility_strings);
 	facility = facility_constants[facility];
@@ -179,7 +179,7 @@
 				LOG_EMERG,
 				-1
 			};
-int syslog_log(lua_State* L)
+int lc_syslog_log(lua_State* L)
 {
 	int level = luaL_checkoption(L, 1, "notice", &level_strings);
 	level = level_constants[level];
@@ -190,7 +190,7 @@
 	return 0;
 }
 
-int syslog_close(lua_State* L)
+int lc_syslog_close(lua_State* L)
 {
 	closelog();
 	if(syslog_ident)
@@ -201,21 +201,34 @@
 	return 0;
 }
 
+/* getpid */
+
+int lc_getpid(lua_State* L)
+{
+	lua_pushinteger(L, getpid());
+	return 1;
+}
+
+/* Register functions */
+
 int luaopen_util_pposix(lua_State *L)
 {
 	lua_newtable(L);
 
-	lua_pushcfunction(L, daemonize);
+	lua_pushcfunction(L, lc_daemonize);
 	lua_setfield(L, -2, "daemonize");
 
-	lua_pushcfunction(L, syslog_open);
+	lua_pushcfunction(L, lc_syslog_open);
 	lua_setfield(L, -2, "syslog_open");
 
-	lua_pushcfunction(L, syslog_close);
+	lua_pushcfunction(L, lc_syslog_close);
 	lua_setfield(L, -2, "syslog_close");
 
-	lua_pushcfunction(L, syslog_log);
+	lua_pushcfunction(L, lc_syslog_log);
 	lua_setfield(L, -2, "syslog_log");
 
+	lua_pushcfunction(L, lc_getpid);
+	lua_setfield(L, -2, "getpid");
+
 	return 1;
 };