diff options
author | Günther Deschner <gdeschner@redhat.com> | 2013-04-12 23:28:57 +0200 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2013-04-23 12:02:55 -0700 |
commit | d627d9195e043e3cb926292d87927a0a1cf03bee (patch) | |
tree | 6b921b23928278b54150f6bc5a6657a0a30e0875 /proxy/src/gp_config_iniparser.c | |
parent | edf939632c9a1dbab4e769f0c23fe393d7fc8a6a (diff) | |
download | gss-proxy-d627d9195e043e3cb926292d87927a0a1cf03bee.tar.gz gss-proxy-d627d9195e043e3cb926292d87927a0a1cf03bee.tar.xz gss-proxy-d627d9195e043e3cb926292d87927a0a1cf03bee.zip |
Convert gp_config_get_* to return an error.
ENOENT is returned if no value is available.
Signed-off-by: Günther Deschner <gdeschner@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'proxy/src/gp_config_iniparser.c')
-rw-r--r-- | proxy/src/gp_config_iniparser.c | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/proxy/src/gp_config_iniparser.c b/proxy/src/gp_config_iniparser.c index b0c4c1f..f4cddd9 100644 --- a/proxy/src/gp_config_iniparser.c +++ b/proxy/src/gp_config_iniparser.c @@ -37,30 +37,45 @@ #include <iniparser.h> -char *gp_iniparser_get_string(struct gp_ini_context *ctx, - const char *secname, - const char *key) +int gp_iniparser_get_string(struct gp_ini_context *ctx, + const char *secname, + const char *key, + char **value) { dictionary *dict; char *skey; - char *value; + char *val; int ret; dict = (dictionary *)ctx->private_data; + if (!value) { + return -1; + } + + *value = NULL; + ret = asprintf(&skey, "%s:%s", secname, key); if (ret == -1) { - return NULL; + return -1; } - value = iniparser_getstring(dict, skey, NULL); + val = iniparser_getstring(dict, skey, NULL); free(skey); - return value; + + if (!val) { + return -1; + } + + *value = val; + + return 0; } int gp_iniparser_get_int(struct gp_ini_context *ctx, const char *secname, - const char *key) + const char *key, + int *value) { dictionary *dict; char *skey; @@ -68,6 +83,12 @@ int gp_iniparser_get_int(struct gp_ini_context *ctx, dict = (dictionary *)ctx->private_data; + if (!value) { + return -1; + } + + *value = -1; + ret = asprintf(&skey, "%s:%s", secname, key); if (ret == -1) { return -1; @@ -75,7 +96,14 @@ int gp_iniparser_get_int(struct gp_ini_context *ctx, ret = iniparser_getint(dict, skey, -1); free(skey); - return ret; + + if (ret == -1) { + return -1; + } + + *value = ret; + + return 0; } int gp_iniparser_init(const char *config_file, |