From: Anders Melchiorsen Date: Mon, 4 Aug 2008 10:18:40 +0000 (+0200) Subject: Add output flushing before fork() X-Git-Tag: v1.6.0-rc2~27 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=7d0b18a4da1be9e738293cc13812757ca47ed109;p=git.git Add output flushing before fork() This adds fflush(NULL) before fork() in start_command(), to keep the generic interface safe. A remaining use of fork() with no flushing is in a comment in show_tree(). Rewrite that comment to use start_command(). Signed-off-by: Anders Melchiorsen Signed-off-by: Junio C Hamano --- diff --git a/builtin-ls-tree.c b/builtin-ls-tree.c index d25767a1f..cb6171768 100644 --- a/builtin-ls-tree.c +++ b/builtin-ls-tree.c @@ -66,17 +66,16 @@ static int show_tree(const unsigned char *sha1, const char *base, int baselen, /* * Maybe we want to have some recursive version here? * - * Something like: + * Something similar to this incomplete example: * if (show_subprojects(base, baselen, pathname)) { - if (fork()) { - chdir(base); - exec ls-tree; - } - waitpid(); + struct child_process ls_tree; + + ls_tree.dir = base; + ls_tree.argv = ls-tree; + start_command(&ls_tree); } * - * ..or similar.. */ type = commit_type; } else if (S_ISDIR(mode)) { diff --git a/run-command.c b/run-command.c index 6af83c526..bbb9c777e 100644 --- a/run-command.c +++ b/run-command.c @@ -68,6 +68,7 @@ int start_command(struct child_process *cmd) trace_argv_printf(cmd->argv, "trace: run_command:"); #ifndef __MINGW32__ + fflush(NULL); cmd->pid = fork(); if (!cmd->pid) { if (cmd->no_stdin)