summaryrefslogtreecommitdiff
path: root/function.c
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2013-09-12 04:07:52 -0400
committerPaul Smith <psmith@gnu.org>2013-09-12 04:07:52 -0400
commitf8d3491aeb021c4ebc77a35ac59549e5294da698 (patch)
tree3da393310f9936a22aa211e6870a23e98b6fdebe /function.c
parent7a4d7947a0854e932c501d46fb9fe42c3aa2071d (diff)
downloadmake-f8d3491aeb021c4ebc77a35ac59549e5294da698.tar.gz
Enhance the output sync mode.
Create a new file, output.c, and collect functions that generate output there. We introduce a new global context specifying where output should go (to stdout or to a sync file), and the lowest level output generator chooses where to write output based on that context. This allows us to set the context globally, and all operations that write output (including functions like $(info ...) etc.) will use it. Removed the "--trace=dir" capability. It was too confusing. If you have directory tracking enabled then output sync will print the enter/leave message for each synchronized block. If you don't want that, disable directory tracking.
Diffstat (limited to 'function.c')
-rw-r--r--function.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/function.c b/function.c
index 9eabd73a..3379c904 100644
--- a/function.c
+++ b/function.c
@@ -1089,8 +1089,8 @@ func_error (char *o, char **argv, const char *funcname)
break;
case 'i':
- printf ("%s\n", msg);
- fflush (stdout);
+ outputs (0, msg);
+ outputs (0, "\n");
break;
default:
@@ -1675,6 +1675,9 @@ func_shell_base (char *o, char **argv, int trim_newlines)
else
error_prefix = "";
+ /* Set up the output in case the shell writes something. */
+ output_start ();
+
#if defined(__MSDOS__)
fpipe = msdos_openpipe (pipedes, &pid, argv[0]);
if (pipedes[0] < 0)