strbuf_split() has the unfortunate behavior of leaving the
separator character on the end of the split components, thus
placing the burden of manually removing the separator on the
caller. It's also heavyweight in that each split component is a
full-on strbuf. We need neither feature of strbuf_split() so
let's use string_list_split() instead since it removes the
separator character and returns an array of simple NUL-terminated
strings.

Helped-by: Eric Sunshine <sunsh...@sunshineco.com>
Signed-off-by: Moritz Neeb <li...@moritzneeb.de>
---
 builtin/notes.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/builtin/notes.c b/builtin/notes.c
index 706ec11..715fade 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -292,17 +292,16 @@ static int notes_copy_from_stdin(int force, const char 
*rewrite_cmd)
 
        while (strbuf_getline(&buf, stdin) != EOF) {
                unsigned char from_obj[20], to_obj[20];
-               struct strbuf **split;
+               struct string_list split = STRING_LIST_INIT_DUP;
                int err;
 
-               split = strbuf_split(&buf, ' ');
-               if (!split[0] || !split[1])
+               string_list_split(&split, buf.buf, ' ', -1);
+               if (split.nr != 2)
                        die(_("Malformed input line: '%s'."), buf.buf);
-               strbuf_rtrim(split[0]);
-               if (get_sha1(split[0]->buf, from_obj))
-                       die(_("Failed to resolve '%s' as a valid ref."), 
split[0]->buf);
-               if (get_sha1(split[1]->buf, to_obj))
-                       die(_("Failed to resolve '%s' as a valid ref."), 
split[1]->buf);
+               if (get_sha1(split.items[0].string, from_obj))
+                       die(_("Failed to resolve '%s' as a valid ref."), 
split.items[0].string);
+               if (get_sha1(split.items[1].string, to_obj))
+                       die(_("Failed to resolve '%s' as a valid ref."), 
split.items[1].string);
 
                if (rewrite_cmd)
                        err = copy_note_for_rewrite(c, from_obj, to_obj);
@@ -312,11 +311,11 @@ static int notes_copy_from_stdin(int force, const char 
*rewrite_cmd)
 
                if (err) {
                        error(_("Failed to copy notes from '%s' to '%s'"),
-                             split[0]->buf, split[1]->buf);
+                             split.items[0].string, split.items[1].string);
                        ret = 1;
                }
 
-               strbuf_list_free(split);
+               string_list_clear(&split, 0);
        }
 
        if (!rewrite_cmd) {
-- 
2.4.3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to