t/test-lib.sh: fix TRASH_DIRECTORY handling
[gitweb.git] / gpg-interface.c
index f700b4c30d2163291f7ef37daf9e9261099d1462..8b0e87436b687ce26e3e4987129a2fc171069280 100644 (file)
@@ -100,21 +100,22 @@ 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");
        if (fd < 0)
-               return error("could not create temporary file '%s': %s",
+               return error(_("could not create temporary file '%s': %s"),
                             path, strerror(errno));
        if (write_in_full(fd, signature, signature_size) < 0)
-               return error("failed writing detached signature to '%s': %s",
+               return error(_("failed writing detached signature to '%s': %s"),
                             path, strerror(errno));
        close(fd);
 
@@ -127,7 +128,7 @@ int verify_signed_buffer(const char *payload, size_t payload_size,
        args_gpg[3] = path;
        if (start_command(&gpg)) {
                unlink(path);
-               return error("could not run gpg.");
+               return error(_("could not run gpg."));
        }
 
        write_in_full(gpg.in, payload, payload_size);
@@ -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;
 }