diff options
author | Max Kellermann <max@duempel.org> | 2008-12-30 16:28:07 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-12-30 16:28:07 +0100 |
commit | 671480814c643cd094978e4a0db76687fbddec4f (patch) | |
tree | 06d2b04e3d02047ad62025b748046b08624ff6ab /src/main.c | |
parent | d99595c2143ef31d4bf3b2274d55100f39363be3 (diff) | |
download | mpd-671480814c643cd094978e4a0db76687fbddec4f.tar.gz mpd-671480814c643cd094978e4a0db76687fbddec4f.tar.xz mpd-671480814c643cd094978e4a0db76687fbddec4f.zip |
main: moved daemonize() to daemon.c
Diffstat (limited to '')
-rw-r--r-- | src/main.c | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/src/main.c b/src/main.c index 7ccbf1a05..c840240a3 100644 --- a/src/main.c +++ b/src/main.c @@ -16,6 +16,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "daemon.h" #include "client.h" #include "idle.h" #include "command.h" @@ -135,65 +136,6 @@ static void openDB(Options * options, char *argv0) } } -static void daemonize(Options * options) -{ -#ifndef WIN32 - FILE *fp = NULL; - ConfigParam *pidFileParam = parseConfigFilePath(CONF_PID_FILE, 0); - - if (pidFileParam) { - /* do this before daemon'izing so we can fail gracefully if we can't - * write to the pid file */ - g_debug("opening pid file"); - fp = fopen(pidFileParam->value, "w+"); - if (!fp) { - g_error("could not open %s \"%s\" (at line %i) for writing: %s", - CONF_PID_FILE, pidFileParam->value, - pidFileParam->line, strerror(errno)); - } - } - - if (options->daemon) { - int pid; - - fflush(NULL); - pid = fork(); - if (pid > 0) - _exit(EXIT_SUCCESS); - else if (pid < 0) { - g_error("problems fork'ing for daemon!"); - } - - if (chdir("/") < 0) { - g_error("problems changing to root directory"); - } - - if (setsid() < 0) { - g_error("problems setsid'ing"); - } - - fflush(NULL); - pid = fork(); - if (pid > 0) - _exit(EXIT_SUCCESS); - else if (pid < 0) { - g_error("problems fork'ing for daemon!"); - } - - g_debug("daemonized!"); - } - - if (pidFileParam) { - g_debug("writing pid file"); - fprintf(fp, "%lu\n", (unsigned long)getpid()); - fclose(fp); - } -#else - /* no daemonization on WIN32 */ - (void)options; -#endif -} - static void cleanUpPidFile(void) { ConfigParam *pidFileParam = parseConfigFilePath(CONF_PID_FILE, 0); |