GPGME_DEBUG on Android, which makes env vars hard

Hans-Christoph Steiner hans at
Tue Oct 16 23:51:24 CEST 2012

On 09/25/2012 10:13 AM, Werner Koch wrote:
> On Tue,  4 Sep 2012 19:58, hans at said:
>> Another idea would be for setting this from a conf file somewhere, but
>> I'm not sure if there is a gpgme conf file.
> I just pushed a new function to set debugging.
>  -- Function: int gpgme_set_global_flag (const char *NAME,
>           const char *VALUE)
>      On some systems it is not easy to set environment variables and
>      thus hard to use GPGME's internal trace facility for debugging.
>      This function has been introduced as an alternative way to enable
>      debugging.  It is important to assure that only one thread accesses
>      GPGME functions between a call to this function and after the
>      return from the call to `gpgme_check_version'.
>      To enable debugging, you need to call this function as early as
>      possible -- even before `gpgme_check_version' -- with the string
>      "debug" for NAME and VALUE identical to the value used with the
>      environment variable `GPGME_DEBUG'.
>      This function returns `0' on success.  In contrast to other
>      functions the non-zero return value on failure does not convey any
>      error code.  For setting "debug" the only possible error cause is
>      an out of memory condition; which would exhibit itself later
>      anyway.  Thus the return value may be ignored.
> Thus your init code may look like this:
>      void
>      init_gpgme (void)
>      {
>        /* Initialize the locale environment.  */
>        setlocale (LC_ALL, "");
>        if (debug_gpgme)
>           gpgme_set_global_flag ("debug", "9:/tmp/gpgme.log");
>        gpgme_check_version (NULL);
>        gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
>      #ifdef LC_MESSAGES
>        gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
>      #endif
>      }
> Does this make sense?

OMG, thank you!  Its working for me. This makes life soooo much easier,
rather than flying blind.  Here's how I used it:

setlocale(LC_ALL, "");

const char* version = gpgme_check_version(NULL);


More information about the Gnupg-devel mailing list