summaryrefslogtreecommitdiffstats
path: root/proxy/src/gp_config_iniparser.c
diff options
context:
space:
mode:
authorGünther Deschner <gdeschner@redhat.com>2013-04-12 23:28:57 +0200
committerSimo Sorce <simo@redhat.com>2013-04-23 12:02:55 -0700
commitd627d9195e043e3cb926292d87927a0a1cf03bee (patch)
tree6b921b23928278b54150f6bc5a6657a0a30e0875 /proxy/src/gp_config_iniparser.c
parentedf939632c9a1dbab4e769f0c23fe393d7fc8a6a (diff)
downloadgss-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.c46
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,