]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sub-process: do not use strbuf_split*()
authorJunio C Hamano <gitster@pobox.com>
Thu, 31 Jul 2025 22:54:31 +0000 (15:54 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 3 Aug 2025 05:44:58 +0000 (22:44 -0700)
The code to read status from subprocess reads one packet line and
tries to find "status=<foo>".  It is way overkill to split the line
into an array of two strbufs to extract <foo>.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
sub-process.c

index 1daf5a975254b9b9ea286c5486f4d07f3874bb26..83bf0a0e82e56d5949dd439a6b51f969004eb1e7 100644 (file)
@@ -30,23 +30,20 @@ struct subprocess_entry *subprocess_find_entry(struct hashmap *hashmap, const ch
 
 int subprocess_read_status(int fd, struct strbuf *status)
 {
-       struct strbuf **pair;
-       char *line;
        int len;
 
        for (;;) {
+               char *line;
+               const char *value;
+
                len = packet_read_line_gently(fd, NULL, &line);
                if ((len < 0) || !line)
                        break;
-               pair = strbuf_split_str(line, '=', 2);
-               if (pair[0] && pair[0]->len && pair[1]) {
+               if (skip_prefix(line, "status=", &value)) {
                        /* the last "status=<foo>" line wins */
-                       if (!strcmp(pair[0]->buf, "status=")) {
-                               strbuf_reset(status);
-                               strbuf_addbuf(status, pair[1]);
-                       }
+                       strbuf_reset(status);
+                       strbuf_addstr(status, value);
                }
-               strbuf_list_free(pair);
        }
 
        return (len < 0) ? len : 0;