json: Add file handling for debug output

* src/gpgme-json.c (main): Add possibilty to set log file.

--
This is similar to how GPGME_DEBUG works. It takes ; on
Windows as seperator and : on linux. Followed by a file name.

For Linux it might make sense to use a different seperator
to allow setting a socket explicitly. But this is better
in line with the current GPGME_DEBUG behavior.

The change helps on Windows where we don't have a
log socket.
This commit is contained in:
Andre Heinecke 2018-06-20 09:43:19 +02:00
parent 19c5267f86
commit d8beab30c4
No known key found for this signature in database
GPG Key ID: 2978E9D40CBABA5C

View File

@ -3617,6 +3617,8 @@ main (int argc, char *argv[])
}; };
gpgrt_argparse_t pargs = { &argc, &argv}; gpgrt_argparse_t pargs = { &argc, &argv};
int log_file_set = 0;
gpgrt_set_strusage (my_strusage); gpgrt_set_strusage (my_strusage);
#ifdef HAVE_SETLOCALE #ifdef HAVE_SETLOCALE
@ -3653,12 +3655,24 @@ main (int argc, char *argv[])
if (!opt_debug) if (!opt_debug)
{ {
/* Handling is similar to GPGME_DEBUG */
const char *s = getenv ("GPGME_JSON_DEBUG"); const char *s = getenv ("GPGME_JSON_DEBUG");
const char *s1;
if (s && atoi (s) > 0) if (s && atoi (s) > 0)
opt_debug = 1; {
opt_debug = 1;
s1 = strchr (s, PATHSEP_C);
if (s1 && strlen (s1) > 2)
{
s1++;
log_set_file (s1);
log_file_set = 1;
}
}
} }
if (opt_debug) if (opt_debug && !log_file_set)
{ {
const char *home = getenv ("HOME"); const char *home = getenv ("HOME");
char *file = xstrconcat ("socket://", char *file = xstrconcat ("socket://",