X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;ds=sidebyside;f=daemon.c;h=ddfe680cebc63dc1c7af89fde333c665873765eb;hb=2b004fc5dc0c652c6eb4daf84e5875f2c852ca72;hp=49d2e1007fcf92c99c511fbcadbe0f461a05638d;hpb=a047b764498632d977b75b543165383849a591f0;p=paraslash.git diff --git a/daemon.c b/daemon.c index 49d2e100..ddfe680c 100644 --- a/daemon.c +++ b/daemon.c @@ -30,6 +30,7 @@ struct daemon { char *hostname; /** Used for colored log messages. */ char log_colors[NUM_LOGLEVELS][COLOR_MAXLEN]; + char *old_cwd; }; static struct daemon the_daemon, *me = &the_daemon; @@ -117,7 +118,12 @@ void daemon_set_logfile(const char *logfile_name) { free(me->logfile_name); me->logfile_name = NULL; - if (logfile_name) + if (!logfile_name) + return; + if (me->old_cwd && logfile_name[0] != '/') + me->logfile_name = make_message("%s/%s", me->old_cwd, + logfile_name); + else me->logfile_name = para_strdup(logfile_name); } @@ -197,6 +203,7 @@ int daemonize(bool parent_waits) /* become session leader */ if (setsid() < 0) goto err; + me->old_cwd = getcwd(NULL, 0); if (chdir("/") < 0) goto err; null = open("/dev/null", O_RDWR);