diff options
author | Michael J Gruber <git@drmicha.warpmail.net> | 2013-02-14 17:04:44 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-02-14 09:30:04 -0800 |
commit | 9cc4ac8ff1ae84f9435f2c7de3f7ab796103adba (patch) | |
tree | 7f5e079652c0ae7c107321c7b91cdead79240ccd /gpg-interface.c | |
parent | log-tree: rely upon the check in the gpg_interface (diff) | |
download | tgif-9cc4ac8ff1ae84f9435f2c7de3f7ab796103adba.tar.xz |
gpg_interface: allow to request status return
Currently, verify_signed_buffer() returns the user facing output only.
Allow callers to request the status output also.
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gpg-interface.c')
-rw-r--r-- | gpg-interface.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gpg-interface.c b/gpg-interface.c index f700b4c30d..ce07cd5cbb 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -100,13 +100,14 @@ int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *sig */ int verify_signed_buffer(const char *payload, size_t payload_size, const char *signature, size_t signature_size, - struct strbuf *gpg_output) + struct strbuf *gpg_output, struct strbuf *gpg_status) { struct child_process gpg; const char *args_gpg[] = {NULL, "--status-fd=1", "--verify", "FILE", "-", NULL}; char path[PATH_MAX]; int fd, ret; struct strbuf buf = STRBUF_INIT; + struct strbuf *pbuf = &buf; args_gpg[0] = gpg_program; fd = git_mkstemp(path, PATH_MAX, ".git_vtag_tmpXXXXXX"); @@ -137,15 +138,17 @@ int verify_signed_buffer(const char *payload, size_t payload_size, strbuf_read(gpg_output, gpg.err, 0); close(gpg.err); } - strbuf_read(&buf, gpg.out, 0); + if (gpg_status) + pbuf = gpg_status; + strbuf_read(pbuf, gpg.out, 0); close(gpg.out); ret = finish_command(&gpg); unlink_or_warn(path); - ret |= !strstr(buf.buf, "\n[GNUPG:] GOODSIG "); - strbuf_release(&buf); + ret |= !strstr(pbuf->buf, "\n[GNUPG:] GOODSIG "); + strbuf_release(&buf); /* no matter it was used or not */ return ret; } |