Re: [PATCH] pager: exit without error on SIGPIPE
From: Johannes Sixt <hidden>
Date: 2021-01-30 12:53:41
Subsystem:
the rest · Maintainer:
Linus Torvalds
Am 30.01.21 um 09:29 schrieb Johannes Sixt:
Am 30.01.21 um 00:48 schrieb Denton Liu:quoted
+++ b/t/helper/test-pager.c@@ -0,0 +1,12 @@ +#include "test-tool.h" +#include "cache.h" + +int cmd__pager(int argc, const char **argv) +{ + if (argc > 1) + usage("\ttest-tool pager"); + + setup_pager(); + for (;;) + puts("y"); +}My gut feeling tells that this will end in an infinite loop on Windows. There are no signals on Windows that would kill the upstream of a pipe. This call site will only notice that the downstream of the pipe was closed, when it checks for write errors. Let me test it.
The test case is protected by a TTY prerequisite; that is not satisfied on Windows, and the test is skipped. No harm done so far. But when I run `test-tool pager` manually and quit out of the pager, the tool does spin in the endless loop. The following fixup helps.
diff --git a/t/helper/test-pager.c b/t/helper/test-pager.c
index feb68b8643..5f1982411f 100644
--- a/t/helper/test-pager.c
+++ b/t/helper/test-pager.c@@ -7,6 +7,8 @@ int cmd__pager(int argc, const char **argv) usage("\ttest-tool pager"); setup_pager(); - for (;;) - puts("y"); + while (write_in_full(1, "y\n", 2) > 0) + ; + + return 0; }
--
2.30.0.119.g680bcb97f5