[PATCH 06/19] built-in add -p: offer a helpful error message when hunk navigation failed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Johannes Schindelin <johannes.schindelin@xxxxxx>

... just like the Perl version currently does...

Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
---
 add-patch.c | 44 +++++++++++++++++++++++++++++++++-----------
 1 file changed, 33 insertions(+), 11 deletions(-)

diff --git a/add-patch.c b/add-patch.c
index dab2ff2381..f59471cdf2 100644
--- a/add-patch.c
+++ b/add-patch.c
@@ -34,6 +34,18 @@ struct add_p_state {
 	size_t hunk_nr, hunk_alloc;
 };
 
+static void err(struct add_p_state *s, const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	fputs(s->s.error_color, stderr);
+	vfprintf(stderr, fmt, args);
+	fputs(s->s.reset_color, stderr);
+	fputc('\n', stderr);
+	va_end(args);
+}
+
 static void setup_child_process(struct add_p_state *s,
 				struct child_process *cp, ...)
 {
@@ -368,17 +380,27 @@ static int patch_update_file(struct add_p_state *s)
 				if (hunk->use == UNDECIDED_HUNK)
 					hunk->use = SKIP_HUNK;
 			}
-		} else if (hunk_index && s->answer.buf[0] == 'K')
-			hunk_index--;
-		else if (hunk_index + 1 < s->hunk_nr &&
-			 s->answer.buf[0] == 'J')
-			hunk_index++;
-		else if (undecided_previous >= 0 &&
-			 s->answer.buf[0] == 'k')
-			hunk_index = undecided_previous;
-		else if (undecided_next >= 0 && s->answer.buf[0] == 'j')
-			hunk_index = undecided_next;
-		else
+		} else if (s->answer.buf[0] == 'K') {
+			if (hunk_index)
+				hunk_index--;
+			else
+				err(s, _("No previous hunk"));
+		} else if (s->answer.buf[0] == 'J') {
+			if (hunk_index + 1 < s->hunk_nr)
+				hunk_index++;
+			else
+				err(s, _("No next hunk"));
+		} else if (s->answer.buf[0] == 'k') {
+			if (undecided_previous >= 0)
+				hunk_index = undecided_previous;
+			else
+				err(s, _("No previous hunk"));
+		} else if (s->answer.buf[0] == 'j') {
+			if (undecided_next >= 0)
+				hunk_index = undecided_next;
+			else
+				err(s, _("No next hunk"));
+		} else
 			color_fprintf(stdout, s->s.help_color,
 				      _(help_patch_text));
 	}
-- 
gitgitgadget




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux