From: Olamide Caleb Bello Date: Thu, 16 Oct 2025 01:03:53 GMT Subject: [Outreachy PATCH v2 1/2] gpg-interface: replace strbuf_split_max() with string_list_split() Message-ID: <818ca6b104cf25ebe4c60145d046029f057f4db1.1760571220.git.belkid98@gmail.com> In-Reply-To: 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 --- 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