From 3244d4daff892d5d3c39e78f4eb0934379beda2c Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Wed, 16 Aug 2017 01:50:00 +0200 Subject: [PATCH] gpgconf: Fix some warnings. * tests/gpg/t-gpgconf.c (main): Fix warnings. * src/engine-gpgconf.c (struct gpgconf_config_dir_s): New struct. (gpgconf_config_dir_cb, gpgconf_conf_dir) Use it to fix warning. Signed-off-by: Marcus Brinkmann --- src/engine-gpgconf.c | 24 +++++++++++++++--------- tests/gpg/t-gpgconf.c | 31 +++++++++++++++++-------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/engine-gpgconf.c b/src/engine-gpgconf.c index 2b0f448a..84d8df7b 100644 --- a/src/engine-gpgconf.c +++ b/src/engine-gpgconf.c @@ -986,20 +986,25 @@ gpgconf_conf_save (void *engine, gpgme_conf_comp_t comp) } +struct gpgconf_config_dir_s +{ + const char *what; + char *result; +}; + static gpgme_error_t gpgconf_config_dir_cb (void *hook, char *line) { /* This is an input- and output-parameter. */ - char **str_p = (char **) hook; - char *what = *str_p; - int len = strlen(what); + struct gpgconf_config_dir_s *data = (char **) hook; + int len = strlen(data->what); - if (!strncmp(line, what, len) && line[len] == ':') + if (!strncmp(line, data->what, len) && line[len] == ':') { char *result = strdup(&line[len + 1]); if (!result) return gpg_error_from_syserror (); - *str_p = result; + data->result = result; return gpg_error(GPG_ERR_USER_1); } return 0; @@ -1010,15 +1015,16 @@ static gpgme_error_t gpgconf_conf_dir (void *engine, const char *what, char **result) { gpgme_error_t err; - char *res = what; + struct gpgconf_config_dir_s data; - *result = NULL; + data.what = what; + data.result = NULL; err = gpgconf_read (engine, "--list-dirs", NULL, - gpgconf_config_dir_cb, &res); + gpgconf_config_dir_cb, &data); if (gpg_err_code (err) == GPG_ERR_USER_1) { /* This signals to use that a result was found. */ - *result = res; + *result = data.result; return 0; } diff --git a/tests/gpg/t-gpgconf.c b/tests/gpg/t-gpgconf.c index 8c81de69..5eccedeb 100644 --- a/tests/gpg/t-gpgconf.c +++ b/tests/gpg/t-gpgconf.c @@ -263,22 +263,25 @@ main (void) err = gpgme_new (&ctx); fail_if_err (err); - /* Let's check getting the agent-socket directory for different homedirs. */ - char *result1 = NULL; - err = gpgme_ctx_set_engine_info (ctx, GPGME_PROTOCOL_GPGCONF, NULL, "/tmp/foo"); - fail_if_err (err); - err = gpgme_op_conf_dir (ctx, "agent-socket", &result1); - fail_if_err (err); + { + /* Let's check getting the agent-socket directory for different homedirs. */ + char *result1 = NULL; + char *result2 = NULL; + err = gpgme_ctx_set_engine_info (ctx, GPGME_PROTOCOL_GPGCONF, NULL, "/tmp/foo"); + fail_if_err (err); + err = gpgme_op_conf_dir (ctx, "agent-socket", &result1); + fail_if_err (err); - char *result2 = NULL; - err = gpgme_ctx_set_engine_info (ctx, GPGME_PROTOCOL_GPGCONF, NULL, NULL); - fail_if_err (err); - err = gpgme_op_conf_dir (ctx, "agent-socket", &result2); - fail_if_err (err); - - /* They have to be different. */ - test (strcmp(result1, result2)); + err = gpgme_ctx_set_engine_info (ctx, GPGME_PROTOCOL_GPGCONF, NULL, NULL); + fail_if_err (err); + err = gpgme_op_conf_dir (ctx, "agent-socket", &result2); + fail_if_err (err); + /* They have to be different. */ + test (strcmp(result1, result2)); + gpgme_free (result1); + gpgme_free (result2); + } err = gpgme_op_conf_load (ctx, &conf); fail_if_err (err);