git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] add-patch: quit on EOF

From
René Scharfe <l.s.r@web.de>
Date
Oct 25, 2025, 05:48 UTC
Message-ID
<13529bee-1e02-4c20-9461-6569312bfe4f@web.de>
In-Reply-To
<0985f775-fb01-4de0-99a8-4775b602829a@web.de>

If we reach the end of the input, e.g. because the user pressed ctrl-D on Linux, there is no point in showing any more prompts, as we won't get any reply. Do the same as option 'q' would: Quit.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 add-patch.c                |  4 +++-
 t/t3701-add-interactive.sh | 11 +++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/add-patch.c b/add-patch.c
index a70def1f81..173a53241e 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -1569,8 +1569,10 @@ static int patch_update_file(struct add_p_state *s,
 		if (*s->s.reset_color_interactive)
 			fputs(s->s.reset_color_interactive, stdout);
 		fflush(stdout);
-		if (read_single_character(s) == EOF)
+		if (read_single_character(s) == EOF) {
+			quit = 1;
 			break;
+		}
 
 		if (!s->answer.len)
 			continue;
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 851ca6dd91..071b78c355 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -1431,4 +1431,15 @@ test_expect_success 'invalid option s is rejected' '
 	test_cmp expect actual
 '
 
+test_expect_success 'EOF quits' '
+	echo a >file &&
+	echo a >file2 &&
+	git add file file2 &&
+	echo X >file &&
+	echo X >file2 &&
+	git add -p </dev/null >out &&
+	grep file out &&
+	! grep file2 out
+'
+
 test_done
-- 
2.51.1
Previous: René ScharfeNext: Junio C Hamano
Message 2 of 8 in “add-patch: quit without skipping undecided hunks”
  1. 1/2 add-patch: quit without skipping undecided hunksRené Scharfe, Oct 25, 2025
  2. 2/2 add-patch: quit on EOFRené Scharfe, Oct 25, 2025
  3. Junio C HamanoOct 25, 2025
  4. René ScharfeOct 25, 2025
  5. Junio C HamanoOct 26, 2025
  6. Junio C HamanoOct 26, 2025
  7. René ScharfeOct 26, 2025
  8. Junio C HamanoOct 25, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.