Am 18.08.19 um 22:04 schrieb brian m. carlson:
> diff --git a/builtin/patch-id.c b/builtin/patch-id.c
> index bd28b80b2d..3059e525b8 100644
> --- a/builtin/patch-id.c
> +++ b/builtin/patch-id.c
> @@ -1,15 +1,16 @@
> +#include "cache.h"
> #include "builtin.h"
> #include "config.h"
> #include "diff.h"
>
> static void flush_current_id(int patchlen, struct object_id *id, struct
> object_id *result)
> {
> - char name[50];
> + char name[GIT_MAX_HEXSZ + 1];
>
> if (!patchlen)
> return;
>
> - memcpy(name, oid_to_hex(id), GIT_SHA1_HEXSZ + 1);
> + memcpy(name, oid_to_hex(id), the_hash_algo->hexsz + 1);
> printf("%s %s\n", oid_to_hex(result), name);
> }
OK. But why do we need our own buffer? oid_to_hex() provides four of
them for us, so the body could become just:
if (patchlen)
printf("%s %s\n", oid_to_hex(result), oid_to_hex(id));
Right? Well, this buffer comes from f97672225b («Add "git-patch-id"
program to generate patch ID's.», 2005-06-23), which predates the
introduction of the four-buffer feature in dcb3450fd8 («sha1_to_hex()
usage cleanup», 2006-05-03).
And with 30e12b924b («patch-id: make it stable against hunk reordering»,
2014-04-27) the function's name became a bit misleading, because it
stopped being responsible for flushing the hash calculation.
So perhaps this on top? (Or squash it in, if you like, but it's
certainly not worth a re-roll.)
-- >8 --
Subject: [PATCH] patch-id: inline flush_current_id()
The function hasn't been flushing the hash calculation since 30e12b924b
("patch-id: make it stable against hunk reordering", 2014-04-27), and
there is no need for a private copy of the second hexadecimal hash value
since dcb3450fd8 ("sha1_to_hex() usage cleanup", 2006-05-03) added
support for up to four sha1_to_hex() results to be used in the same
printf(3) call, which oid_to_hex() inherited. So print both hash values
directly and get rid of the function with the outdated name.
Signed-off-by: René Scharfe <[email protected]>
---
builtin/patch-id.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/builtin/patch-id.c b/builtin/patch-id.c
index 3059e525b8..d328714af7 100644
--- a/builtin/patch-id.c
+++ b/builtin/patch-id.c
@@ -3,17 +3,6 @@
#include "config.h"
#include "diff.h"
-static void flush_current_id(int patchlen, struct object_id *id, struct
object_id *result)
-{
- char name[GIT_MAX_HEXSZ + 1];
-
- if (!patchlen)
- return;
-
- memcpy(name, oid_to_hex(id), the_hash_algo->hexsz + 1);
- printf("%s %s\n", oid_to_hex(result), name);
-}
-
static int remove_space(char *line)
{
char *src = line;
@@ -137,13 +126,12 @@ static int get_one_patchid(struct object_id *next_oid,
struct object_id *result,
static void generate_id_list(int stable)
{
struct object_id oid, n, result;
- int patchlen;
struct strbuf line_buf = STRBUF_INIT;
oidclr(&oid);
while (!feof(stdin)) {
- patchlen = get_one_patchid(&n, &result, &line_buf, stable);
- flush_current_id(patchlen, &oid, &result);
+ if (get_one_patchid(&n, &result, &line_buf, stable))
+ printf("%s %s\n", oid_to_hex(&result),
oid_to_hex(&oid));
oidcpy(&oid, &n);
}
strbuf_release(&line_buf);
--
2.23.0