util.pposix: syslog(): Support an optional source parameter (producing messages of...
[prosody.git] / util-src / pposix.c
index 191e276ee1bc4576603feae2451924547bf5606d..c8c25ba942c60e972c237b2f2694b08f7e1cfb62 100644 (file)
@@ -89,6 +89,10 @@ static int lc_daemonize(lua_State *L)
        close(0);
        close(1);
        close(2);
+       /* Make sure accidental use of FDs 0, 1, 2 don't cause weirdness */
+       open("/dev/null", O_RDONLY);
+       open("/dev/null", O_WRONLY);
+       open("/dev/null", O_WRONLY);
 
        /* Final fork, use it wisely */
        if(fork())
@@ -200,12 +204,13 @@ int level_constants[] =   {
                        };
 int lc_syslog_log(lua_State* L)
 {
-       int level = luaL_checkoption(L, 1, "notice", level_strings);
-       level = level_constants[level];
+       int level = level_constants[luaL_checkoption(L, 1, "notice", level_strings)];
 
-       luaL_checkstring(L, 2);
+       if(lua_gettop(L) == 3)
+               syslog(level, "%s: %s", luaL_checkstring(L, 2), luaL_checkstring(L, 3));
+       else
+               syslog(level, "%s", lua_tostring(L, 2));
 
-       syslog(level, "%s", lua_tostring(L, 2));
        return 0;
 }
 
@@ -479,6 +484,9 @@ int string2resource(const char *s) {
        if (!strcmp(s, "MEMLOCK")) return RLIMIT_MEMLOCK;
        if (!strcmp(s, "NPROC")) return RLIMIT_NPROC;
        if (!strcmp(s, "RSS")) return RLIMIT_RSS;
+#endif
+#ifdef RLIMIT_NICE
+       if (!strcmp(s, "NICE")) return RLIMIT_NICE;
 #endif
        return -1;
 }