show: don't use hex literals in JSON output
authorThomas Jost <schnouki@schnouki.net>
Sun, 22 Jan 2012 00:20:57 +0000 (01:20 +0100)
committerDavid Bremner <bremner@debian.org>
Sun, 22 Jan 2012 12:41:19 +0000 (08:41 -0400)
JSON does not support hex literals (0x..) so numbers must be formatted
as %d instead of %x.

Currently, the possible values for the gmime error code are 1 (expired
signature), 2 (no public key), 4 (expired key) and 8 (revoked key).
The other possible value is 16 (unsupported algorithm) but obviously
it is much more rare. If this happens, the current code will add
'"errors": 10'. This is valid JSON (it looks like a decimal number)
but it is incorrect (should be 16, not 10).

Since this is just an issue in the JSON encoder, no changes are needed
on the Emacs side (or in other UIs using the JSON output).

notmuch-show.c

index 43ee2112d72c925f239bc3fcb7d6ce8c5036240c..7b40568e83240ba5cb48b368f1bf89fb703f34ec 100644 (file)
@@ -728,7 +728,7 @@ format_part_sigstatus_json (const GMimeSignatureValidity* validity)
                printf (", \"keyid\": %s", json_quote_str (ctx_quote, signer->keyid));
        }
        if (signer->errors != GMIME_SIGNER_ERROR_NONE) {
-           printf (", \"errors\": %x", signer->errors);
+           printf (", \"errors\": %d", signer->errors);
        }
 
        printf ("}");