[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