cli: Flush stdout before fork()ing to run hooks

Without this flush, if stdout is block buffered (which will happen if
it's a pipe or a file, for example) and the hook also writes to
stdout, then notmuch new's output will appear *after* the hook output.

This situation may be a little esoteric, but it's good practice to
flush before you fork anyway.
This commit is contained in:
Austin Clements 2014-03-23 17:22:26 -04:00 committed by David Bremner
parent 31a6333aa4
commit 03680d1006

View file

@ -50,6 +50,9 @@ notmuch_run_hook (const char *db_path, const char *hook)
goto DONE; goto DONE;
} }
/* Flush any buffered output before forking. */
fflush (stdout);
pid = fork(); pid = fork();
if (pid == -1) { if (pid == -1) {
fprintf (stderr, "Error: %s hook fork failed: %s\n", hook, fprintf (stderr, "Error: %s hook fork failed: %s\n", hook,