commit 371f3cb5ec3b8ef3135b3729326bfd6c7b7cb85c
parent c331811c91d9141a1b6c5273115517185d39df60
Author: Michael Forney <mforney@mforney.org>
Date: Fri, 10 Sep 2021 22:45:30 -0700
find: Flush stdout before executing commands
The commands may produce output themselves, so this is required to
ensure that our -print output is actually written before a command's
output, and also that we don't end up with partially written lines
due to stdout buffering intermixed with the output of other commands.
Other implementations of find(1) do the same.
Diffstat:
1 file changed, 5 insertions(+), 0 deletions(-)
diff --git a/find.c b/find.c
@@ -235,6 +235,11 @@ spawn(char *argv[])
pid_t pid;
int status;
+ /* flush stdout so that -print output always appears before
+ * any output from the command and does not get cut-off in
+ * the middle of a line. */
+ fflush(stdout);
+
switch((pid = fork())) {
case -1:
eprintf("fork:");