From c722973212547aa812cd818279e3fb989fb38dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de> Date: Wed, 7 Feb 2018 22:33:06 +0100 Subject: [PATCH] Fix logging in background mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ../src/main.c: Re-init logfile if changed for background mode * ../src/utils.c: fork_to_background() returns whether logfile changed * ../src/utils.h: Set return type bool for fork_to_background() Fixes: #53020 Reported-by: Noël Köthe --- src/main.c | 7 ++++++- src/utils.c | 4 +++- src/utils.h | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 0ffd551a..5430e7ce 100644 --- a/src/main.c +++ b/src/main.c @@ -1880,7 +1880,12 @@ for details.\n\n")); sock_init(); #else if (opt.background) - fork_to_background (); + { + bool logfile_changed = fork_to_background (); + + if (logfile_changed) + log_init (opt.lfilename, append_to_log); + } #endif /* Initialize progress. Have to do this after the options are diff --git a/src/utils.c b/src/utils.c index 6f41fabe..2d265c11 100644 --- a/src/utils.c +++ b/src/utils.c @@ -469,7 +469,7 @@ fork_to_background (void) #else /* def __VMS */ #if !defined(WINDOWS) && !defined(MSDOS) -void +bool fork_to_background (void) { pid_t pid; @@ -514,6 +514,8 @@ fork_to_background (void) DEBUGP (("Failed to redirect stdout to /dev/null.\n")); if (freopen ("/dev/null", "w", stderr) == NULL) DEBUGP (("Failed to redirect stderr to /dev/null.\n")); + + return logfile_changed; } #endif /* !WINDOWS && !MSDOS */ diff --git a/src/utils.h b/src/utils.h index 66838f2c..26e2c28c 100644 --- a/src/utils.h +++ b/src/utils.h @@ -71,7 +71,7 @@ char *xstrdup_lower (const char *); char *strdupdelim (const char *, const char *); char **sepstring (const char *); bool subdir_p (const char *, const char *); -void fork_to_background (void); +bool fork_to_background (void); char *aprintf (const char *, ...) GCC_FORMAT_ATTR (1, 2); char *concat_strings (const char *, ...);