X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=daemon.c;fp=daemon.c;h=ddfe680cebc63dc1c7af89fde333c665873765eb;hp=49d2e1007fcf92c99c511fbcadbe0f461a05638d;hb=bde44cf34bd9b334892af6ef4731ecb74b1ab544;hpb=a047b764498632d977b75b543165383849a591f0 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);