notes: do not use strbuf_split*()

When reading copy instructions from the standard input, the program reads a line, splits it into tokens at whitespace, and trims each of the tokens before using. We no longer need to use strbuf just to be able to trim, as string_list_split*() family now can trim while splitting a string. Retire the use of strbuf_split() from this code path. Note that this loop is a bit sloppy in that it ensures at least there are two tokens on each line, but ignores if there are extra tokens on the line. Tightening it is outside the scope of this series. Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Jul 31, 2025 at 15:54 UTC 566e91049558cf9837e2f760877437b929fbb232
1 file changed +12 -11
builtin/notes.c
+12 -11
@@ -375,18 +375,19 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
375
376 while (strbuf_getline_lf(&buf, stdin) != EOF) {
377 struct object_id from_obj, to_obj;
378 - struct strbuf **split;
378 + struct string_list split = STRING_LIST_INIT_NODUP;
379 int err;
380
381 - split = strbuf_split(&buf, ' ');
382 - if (!split[0] || !split[1])
381 + string_list_split_in_place_f(&split, buf.buf, " ", -1,
382 + STRING_LIST_SPLIT_TRIM);
383 + if (split.nr < 2)
384 die(_("malformed input line: '%s'."), buf.buf);
384 - strbuf_rtrim(split[0]);
385 - strbuf_rtrim(split[1]);
386 - if (repo_get_oid(the_repository, split[0]->buf, &from_obj))
387 - die(_("failed to resolve '%s' as a valid ref."), split[0]->buf);
388 - if (repo_get_oid(the_repository, split[1]->buf, &to_obj))
389 - die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
385 + if (repo_get_oid(the_repository, split.items[0].string, &from_obj))
386 + die(_("failed to resolve '%s' as a valid ref."),
387 + split.items[0].string);
388 + if (repo_get_oid(the_repository, split.items[1].string, &to_obj))
389 + die(_("failed to resolve '%s' as a valid ref."),
390 + split.items[1].string);
391
392 if (rewrite_cmd)
393 err = copy_note_for_rewrite(c, &from_obj, &to_obj);
@@ -396,11 +397,11 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
397
398 if (err) {
399 error(_("failed to copy notes from '%s' to '%s'"),
399 - split[0]->buf, split[1]->buf);
400 + split.items[0].string, split.items[1].string);
401 ret = 1;
402 }
403
403 - strbuf_list_free(split);
404 + string_list_clear(&split, 0);
405 }
406
407 if (!rewrite_cmd) {