4 #include "git-compat-util.h"
6 #include "run-command.h"
9 * Generic implementation of background process infrastructure.
10 * See: Documentation/technical/api-sub-process.txt
15 struct subprocess_entry
{
16 struct hashmap_entry ent
; /* must be the first member! */
18 struct child_process process
;
21 /* subprocess functions */
23 extern int cmd2process_cmp(const void *unused_cmp_data
,
24 const struct subprocess_entry
*e1
,
25 const struct subprocess_entry
*e2
,
26 const void *unused_keydata
);
28 typedef int(*subprocess_start_fn
)(struct subprocess_entry
*entry
);
29 int subprocess_start(struct hashmap
*hashmap
, struct subprocess_entry
*entry
, const char *cmd
,
30 subprocess_start_fn startfn
);
32 void subprocess_stop(struct hashmap
*hashmap
, struct subprocess_entry
*entry
);
34 struct subprocess_entry
*subprocess_find_entry(struct hashmap
*hashmap
, const char *cmd
);
36 /* subprocess helper functions */
38 static inline struct child_process
*subprocess_get_child_process(
39 struct subprocess_entry
*entry
)
41 return &entry
->process
;
45 * Helper function that will read packets looking for "status=<foo>"
46 * key/value pairs and return the value from the last "status" packet
49 int subprocess_read_status(int fd
, struct strbuf
*status
);