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

[PATCH v5 4/6] builtin/verify-tag: replace name argument with sha1

From
santiago@nyu.edu <santiago@nyu.edu>
Date
Apr 5, 2016, 16:07 UTC
Message-ID
<1459872449-7537-5-git-send-email-santiago@nyu.edu>
In-Reply-To
<1459872449-7537-1-git-send-email-santiago@nyu.edu>
From: Santiago Torres <santiago@nyu.edu>

This change is meant to prepare verify_tag for libification. Many existing modules/commands already do the refname to sha1 resolution, so should avoid resolving the refname twice. To avoid breaking builtin/verify-tag, we move the refname resolution outside of the verify_tag() call.

Signed-off-by: Santiago Torres <santiago@nyu.edu>
---
 builtin/verify-tag.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c
index 1ca9a05..7a7c376 100644
--- a/builtin/verify-tag.c
+++ b/builtin/verify-tag.c
@@ -42,25 +42,23 @@ static int run_gpg_verify(const char *buf, unsigned long size, unsigned flags)
 	return ret;
 }
 
-static int verify_tag(const char *name, unsigned flags)
+static int verify_tag(const unsigned char *sha1, unsigned flags)
 {
 	enum object_type type;
-	unsigned char sha1[20];
 	char *buf;
+	char *hex_sha1;
 	unsigned long size;
 	int ret;
 
-	if (get_sha1(name, sha1))
-		return error("tag '%s' not found.", name);
-
+	hex_sha1 = sha1_to_hex(sha1);
 	type = sha1_object_info(sha1, NULL);
 	if (type != OBJ_TAG)
 		return error("%s: cannot verify a non-tag object of type %s.",
-				name, typename(type));
+				hex_sha1, typename(type));
 
 	buf = read_sha1_file(sha1, &type, &size);
 	if (!buf)
-		return error("%s: unable to read file.", name);
+		return error("%s: unable to read file.", hex_sha1);
 
 	ret = run_gpg_verify(buf, size, flags);
 
@@ -80,6 +78,8 @@ int cmd_verify_tag(int argc, const char **argv, const char *prefix)
 {
 	int i = 1, verbose = 0, had_error = 0;
 	unsigned flags = 0;
+	unsigned char sha1[20];
+	const char *name;
 	const struct option verify_tag_options[] = {
 		OPT__VERBOSE(&verbose, N_("print tag contents")),
 		OPT_BIT(0, "raw", &flags, N_("print raw gpg status output"), GPG_VERIFY_RAW),
@@ -96,8 +96,15 @@ int cmd_verify_tag(int argc, const char **argv, const char *prefix)
 	if (verbose)
 		flags |= GPG_VERIFY_VERBOSE;
 
-	while (i < argc)
-		if (verify_tag(argv[i++], flags))
+	while (i < argc) {
+		name = argv[i++];
+		if (get_sha1(name, sha1)) {
+			error("tag '%s' not found.", name);
 			had_error = 1;
+			continue;
+		}
+		if (verify_tag(sha1, flags))
+			had_error = 1;
+	}
 	return had_error;
 }
-- 
2.8.0
Previous: Junio C HamanoNext: Eric Sunshine
Message 13 of 28 in “tag: move PGP verification code to tag.c”
  1. 0/6 tag: move PGP verification code to tag.csantiago@nyu.edu, Apr 5, 2016
  2. 1/6 builtin/verify-tag.c: Ignore SIGPIPE on gpg-interfacesantiago@nyu.edu, Apr 5, 2016
  3. Junio C HamanoApr 6, 2016
  4. 2/6 t7030-verify-tag: Adds validation for multiple tagssantiago@nyu.edu, Apr 5, 2016
  5. Eric SunshineApr 6, 2016
  6. Santiago TorresApr 17, 2016
  7. Eric SunshineApr 17, 2016
  8. Santiago TorresApr 17, 2016
  9. Eric SunshineApr 17, 2016
  10. Junio C HamanoApr 6, 2016
  11. 3/6 builtin/verify-tag: change variable name for readabilitysantiago@nyu.edu, Apr 5, 2016
  12. Junio C HamanoApr 6, 2016
  13. 4/6 builtin/verify-tag: replace name argument with sha1santiago@nyu.edu, Apr 5, 2016
  14. Eric SunshineApr 6, 2016
  15. Junio C HamanoApr 6, 2016
  16. Santiago TorresApr 7, 2016
  17. 5/6 builtin/verify-tag: move verification code to tag.csantiago@nyu.edu, Apr 5, 2016
  18. Junio C HamanoApr 6, 2016
  19. 6/6 tag: use gpg_verify_function in tag -v callsantiago@nyu.edu, Apr 5, 2016
  20. Eric SunshineApr 6, 2016
  21. Santiago TorresApr 5, 2016
  22. Eric SunshineApr 6, 2016
  23. Santiago TorresApr 7, 2016
  24. Eric SunshineApr 7, 2016
  25. Santiago TorresApr 17, 2016
  26. Eric SunshineApr 17, 2016
  27. Junio C HamanoApr 6, 2016
  28. Santiago TorresApr 7, 2016

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.