On Sun, Mar 31, 2013 at 04:32:52PM +0200, Sebastian Götte wrote:
>
> Signed-off-by: Sebastian Götte <[email protected]>
> ---
> commit.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/commit.c b/commit.c
> index eb645af..eda7f90 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -1027,8 +1027,8 @@ 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)
> @@ -1036,13 +1036,20 @@ 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;
> + const char *found, *next;
> +
> + if (!prefixcmp(buf, sigcheck_gpg_status[i].check + 1)) {
> + /* At the very beginning of the buffer */
This seems wrong. You're losing the "\n" in front of the status strings
above but adding a special first line check skipping the first
character. Surely it should be one of these changes or the other, not
both?
> + found = buf + strlen(sigcheck_gpg_status[i].check + 1);
> + } else {
> + found = strstr(buf, sigcheck_gpg_status[i].check);
> + if (!found)
> + continue;
> + found += strlen(sigcheck_gpg_status[i].check);
> + }
> sigc->result = sigcheck_gpg_status[i].result;
> - found += strlen(sigcheck_gpg_status[i].check);
> sigc->key = xmemdupz(found, 16);
> found += 17;
> next = strchrnul(found, '\n');
> --
> 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