diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-09-08 21:39:38 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-08 21:39:38 -0700 |
commit | 49981d8a250837019b4a14f44d471fc6ff7e334f (patch) | |
tree | c3394268eaaade296d7de692fe7e76bacb3be97b /run-command.h | |
parent | 0202c411edc25940cc381bf317badcdf67670be4 (diff) | |
parent | 6ebdac1bab966b720d776aa43ca188fe378b1f4b (diff) | |
download | git-49981d8a250837019b4a14f44d471fc6ff7e334f.tar.gz git-49981d8a250837019b4a14f44d471fc6ff7e334f.tar.xz |
Start maintenance track for 2.10.x series
Diffstat (limited to 'run-command.h')
-rw-r--r-- | run-command.h | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/run-command.h b/run-command.h index 11f76b04e..50666497a 100644 --- a/run-command.h +++ b/run-command.h @@ -79,17 +79,34 @@ int run_command_v_opt(const char **argv, int opt); int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const char *const *env); /** - * Execute the given command, capturing its stdout in the given strbuf. + * Execute the given command, sending "in" to its stdin, and capturing its + * stdout and stderr in the "out" and "err" strbufs. Any of the three may + * be NULL to skip processing. + * * Returns -1 if starting the command fails or reading fails, and otherwise - * returns the exit code of the command. The output collected in the - * buffer is kept even if the command returns a non-zero exit. The hint field - * gives a starting size for the strbuf allocation. + * returns the exit code of the command. Any output collected in the + * buffers is kept even if the command returns a non-zero exit. The hint fields + * gives starting sizes for the strbuf allocations. * * The fields of "cmd" should be set up as they would for a normal run_command - * invocation. But note that there is no need to set cmd->out; the function - * sets it up for the caller. + * invocation. But note that there is no need to set the in, out, or err + * fields; pipe_command handles that automatically. + */ +int pipe_command(struct child_process *cmd, + const char *in, size_t in_len, + struct strbuf *out, size_t out_hint, + struct strbuf *err, size_t err_hint); + +/** + * Convenience wrapper around pipe_command for the common case + * of capturing only stdout. */ -int capture_command(struct child_process *cmd, struct strbuf *buf, size_t hint); +static inline int capture_command(struct child_process *cmd, + struct strbuf *out, + size_t hint) +{ + return pipe_command(cmd, NULL, 0, out, hint, NULL, 0); +} /* * The purpose of the following functions is to feed a pipe by running |