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

[Outreachy PATCH v2 1/2] gpg-interface: replace strbuf_split_max() with string_list_split()

From
Olamide Caleb Bello <belkid98@gmail.com>
Date
Oct 16, 2025, 01:03 UTC
Message-ID
<818ca6b104cf25ebe4c60145d046029f057f4db1.1760571220.git.belkid98@gmail.com>
In-Reply-To
<cover.1760571220.git.belkid98@gmail.com>

In get_ssh_finger_print(), the output of the `ssh-keygen` command is put into `fingerprint_stdout

The string in fingerprint_stdout is then split into 3 strbufs using strbuf_split_max(), however they are not modified after the split thereby not making use of the strbuf API as the fingerprint token is merely returned as a char * and not a strbuf, hence they do not need to be strbufs.

Use string_list_split() instead for simplicity.

Note that strbuf_split_max() uses 3 to specify the number of tokens to extract from the string, while string_list_split() uses 2 because it specifies the number of times the split will be done on the string, so 2 gives 3 tokens as it is in the original instance.

Signed-off-by: Olamide Caleb Bello <belkid98@gmail.com>
---
 Changes in v2
   - Reword the commit message for clarity
   - Add () to the function names
   - Change the test to ensure the number of tokens appended to the
    list by string_list_split() equals 3
 gpg-interface.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/gpg-interface.c b/gpg-interface.c
index 2f4f0e32cb..989dca7d14 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -14,6 +14,7 @@
 #include "sigchain.h"
 #include "tempfile.h"
 #include "alias.h"
+#include "string-list.h"
 
 static int git_gpg_config(const char *, const char *,
 			  const struct config_context *, void *);
@@ -821,7 +822,7 @@ static char *get_ssh_key_fingerprint(const char *signing_key)
 	struct child_process ssh_keygen = CHILD_PROCESS_INIT;
 	int ret = -1;
 	struct strbuf fingerprint_stdout = STRBUF_INIT;
-	struct strbuf **fingerprint;
+	struct string_list split = STRING_LIST_INIT_DUP;
 	char *fingerprint_ret;
 	const char *literal_key = NULL;
 
@@ -845,13 +846,12 @@ static char *get_ssh_key_fingerprint(const char *signing_key)
 		die_errno(_("failed to get the ssh fingerprint for key '%s'"),
 			  signing_key);
 
-	fingerprint = strbuf_split_max(&fingerprint_stdout, ' ', 3);
-	if (!fingerprint[1])
+	if (string_list_split(&split, fingerprint_stdout.buf, " ", 2) != 3)
 		die_errno(_("failed to get the ssh fingerprint for key '%s'"),
 			  signing_key);
 
-	fingerprint_ret = strbuf_detach(fingerprint[1], NULL);
-	strbuf_list_free(fingerprint);
+	fingerprint_ret = xstrdup(split.items[1].string);
+	string_list_clear(&split, 0);
 	strbuf_release(&fingerprint_stdout);
 	return fingerprint_ret;
 }
-- 
2.51.0.463.g79cf913ea9
Previous: Olamide Caleb BelloNext: Junio C Hamano
Message 2 of 10 in “gpg-interface.c: use string_list_split() instead of strbuf_split_max()”
  1. 0/2 gpg-interface.c: use string_list_split() instead of strbuf_split_max()Olamide Caleb Bello, Oct 16, 2025
  2. 1/2 gpg-interface: replace strbuf_split_max() with string_list_split()Olamide Caleb Bello, Oct 16, 2025
  3. Junio C HamanoOct 16, 2025
  4. Christian CouderOct 17, 2025
  5. Bello OlamideOct 17, 2025
  6. Junio C HamanoOct 17, 2025
  7. Bello OlamideOct 17, 2025
  8. 2/2 gpg-interface: use string_list_split() instead of strbuf_split_max()Olamide Caleb Bello, Oct 16, 2025
  9. Christian CouderOct 17, 2025
  10. Bello OlamideOct 17, 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.