Signed-off-by: Sebastian Götte <[email protected]>
---
commit.c | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/commit.c b/commit.c
index e94d122..48f09e9 100644
--- a/commit.c
+++ b/commit.c
@@ -1027,27 +1027,33 @@ static struct {
char result;
const char *check;
} sigcheck_gpg_status[] = {
- { 'G', "\n[GNUPG:] GOODSIG " },
- { 'B', "\n[GNUPG:] BADSIG " },
+ { 'G', "[GNUPG:] GOODSIG " },
+ { 'B', "[GNUPG:] BADSIG " },
};
static void parse_gpg_output(struct signature_check *sigc)
{
- const char *buf = sigc->gpg_status;
int i;
+ /* Iterate over all search strings */
for (i = 0; i < ARRAY_SIZE(sigcheck_gpg_status); i++) {
- const char *found = strstr(buf, sigcheck_gpg_status[i].check);
- const char *next;
- if (!found)
- continue;
- sigc->check_result = sigcheck_gpg_status[i].result;
- found += strlen(sigcheck_gpg_status[i].check);
- sigc->key = xmemdupz(found, 16);
- found += 17;
- next = strchrnul(found, '\n');
- sigc->signer = xmemdupz(found, next - found);
- break;
+ const char *found = sigc->gpg_status;
+
+ /* Iterate over all lines */
+ do {
+ if (!prefixcmp(found, sigcheck_gpg_status[i].check)) {
+ const char *next;
+
+ found += strlen(sigcheck_gpg_status[i].check);
+ sigc->check_result =
sigcheck_gpg_status[i].result;
+ sigc->key = xmemdupz(found, 16);
+ found += 17;
+ next = strchrnul(found, '\n');
+ sigc->signer = xmemdupz(found, next - found);
+ return;
+ }
+ found = strchr(found, '\n')+1;
+ } while(found-1);
}
}
--
1.8.1.5
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html