threads / patch / 46615

patchdiff: retire sane_truncate_fn

Subject: [PATCH] diff: retire sane_truncate_fn

## tl;dr

2 messages between Aug 17, 2017 and Aug 17, 2017. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Junio C Hamano· Aug 17, 2017, 17:27 UTC · lore

Long time ago, 23707811 ("diff: do not chomp hunk-header in the middle of a character", 2008-01-02) introduced sane_truncate_line() helper function to trim the "function header" line that is shown at the end of the hunk header line, in order to avoid chomping it in the middle of a single UTF-8 character. It also added a facility to define a custom callback function to make it possible to extend it to non UTF-8 encodings.

During the following 8 1/2 years, nobody found need for this custom callback facility.

A custom callback function is a wrong design to use here anyway---if your contents need support for non UTF-8 encoding, you shouldn't have to write a custom function and recompile Git to plumb it in. A better approach would be to extend sane_truncate_line() function and have a new member in emit_callback to conditionally trigger it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 diff.c | 5 -----
 1 file changed, 5 deletions(-)
Show changes to diff.c +0 −5
diff --git a/diff.c b/diff.c
index a628ac3a95..4bdaed8197 100644
--- a/diff.c
+++ b/diff.c
@@ -408,8 +408,6 @@ static struct diff_tempfile {
 	struct tempfile tempfile;
 } diff_temp[2];
 
-typedef unsigned long (*sane_truncate_fn)(char *line, unsigned long len);
-
 struct emit_callback {
 	int color_diff;
 	unsigned ws_rule;
@@ -417,7 +415,6 @@ struct emit_callback {
 	int blank_at_eof_in_postimage;
 	int lno_in_preimage;
 	int lno_in_postimage;
-	sane_truncate_fn truncate;
 	const char **label_path;
 	struct diff_words_data *diff_words;
 	struct diff_options *opt;
@@ -1246,8 +1243,6 @@ static unsigned long sane_truncate_line(struct emit_callback *ecb, char *line, u
 	unsigned long allot;
 	size_t l = len;
 
-	if (ecb->truncate)
-		return ecb->truncate(line, len);
 	cp = line;
 	allot = l;
 	while (0 < l) {
Stefan Beller· Aug 17, 2017, 17:42 UTC · re: Junio C Hamano · lore

Re: [PATCH] diff: retire sane_truncate_fn

On Thu, Aug 17, 2017 at 10:27 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> Long time ago, 23707811 ("diff: do not chomp hunk-header in the
> middle of a character", 2008-01-02) introduced sane_truncate_line()
> helper function to trim the "function header" line that is shown at
> the end of the hunk header line, in order to avoid chomping it in
> the middle of a single UTF-8 character.  It also added a facility to
> define a custom callback function to make it possible to extend it
> to non UTF-8 encodings.
>
> During the following 8 1/2 years, nobody found need for this custom
> callback facility.
>
> A custom callback function is a wrong design to use here anyway---if
> your contents need support for non UTF-8 encoding, you shouldn't
> have to write a custom function and recompile Git to plumb it in.  A
> better approach would be to extend sane_truncate_line() function and
> have a new member in emit_callback to conditionally trigger it.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This patch is
Reviewed-by: Stefan Beller <sbeller@google.com>

However while strolling around in code nearby, I do wonder if sane_truncate_line needs to make use of the return value of utf8_width. But that is not the case as we're interested in the byte length, not the print length.

Thanks Stefan

← back to recent threads