#include "sigchain.h"
#include "pkt-line.h"
-int cmd2process_cmp(const struct subprocess_entry *e1,
- const struct subprocess_entry *e2,
- const void *unused)
+int cmd2process_cmp(const void *unused_cmp_data,
+ const void *entry,
+ const void *entry_or_key,
+ const void *unused_keydata)
{
+ const struct subprocess_entry *e1 = entry;
+ const struct subprocess_entry *e2 = entry_or_key;
+
return strcmp(e1->cmd, e2->cmd);
}
return hashmap_get(hashmap, &key, NULL);
}
-void subprocess_read_status(int fd, struct strbuf *status)
+int subprocess_read_status(int fd, struct strbuf *status)
{
struct strbuf **pair;
char *line;
+ int len;
+
for (;;) {
- line = packet_read_line(fd, NULL);
- if (!line)
+ 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]) {
}
strbuf_list_free(pair);
}
+
+ return (len < 0) ? len : 0;
}
void subprocess_stop(struct hashmap *hashmap, struct subprocess_entry *entry)