summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/ad/ad_common.c16
-rw-r--r--src/providers/data_provider.h5
-rw-r--r--src/providers/data_provider_opts.c42
3 files changed, 42 insertions, 21 deletions
diff --git a/src/providers/ad/ad_common.c b/src/providers/ad/ad_common.c
index 99fa4c07a..605de49f7 100644
--- a/src/providers/ad/ad_common.c
+++ b/src/providers/ad/ad_common.c
@@ -44,10 +44,10 @@ ad_create_default_sdap_options(TALLOC_CTX *mem_ctx)
return NULL;
}
- ret = dp_copy_options(id_opts,
- ad_def_ldap_opts,
- SDAP_OPTS_BASIC,
- &id_opts->basic);
+ ret = dp_copy_defaults(id_opts,
+ ad_def_ldap_opts,
+ SDAP_OPTS_BASIC,
+ &id_opts->basic);
if (ret != EOK) {
goto fail;
}
@@ -117,10 +117,10 @@ ad_create_default_options(TALLOC_CTX *mem_ctx,
ad_options = talloc_zero(mem_ctx, struct ad_options);
if (ad_options == NULL) return NULL;
- ret = dp_copy_options(ad_options,
- ad_basic_opts,
- AD_OPTS_BASIC,
- &ad_options->basic);
+ ret = dp_copy_defaults(ad_options,
+ ad_basic_opts,
+ AD_OPTS_BASIC,
+ &ad_options->basic);
if (ret != EOK) {
talloc_free(ad_options);
return NULL;
diff --git a/src/providers/data_provider.h b/src/providers/data_provider.h
index d086d5d2f..d86ff58e6 100644
--- a/src/providers/data_provider.h
+++ b/src/providers/data_provider.h
@@ -295,6 +295,11 @@ int dp_copy_options(TALLOC_CTX *memctx,
int num_opts,
struct dp_option **_opts);
+int dp_copy_defaults(TALLOC_CTX *memctx,
+ struct dp_option *src_opts,
+ int num_opts,
+ struct dp_option **_opts);
+
const char *_dp_opt_get_cstring(struct dp_option *opts,
int id, const char *location);
char *_dp_opt_get_string(struct dp_option *opts,
diff --git a/src/providers/data_provider_opts.c b/src/providers/data_provider_opts.c
index 5a2e3b74d..0cc48e46e 100644
--- a/src/providers/data_provider_opts.c
+++ b/src/providers/data_provider_opts.c
@@ -131,11 +131,11 @@ done:
}
/* =Basic-Option-Helpers================================================== */
-
-int dp_copy_options(TALLOC_CTX *memctx,
- struct dp_option *src_opts,
- int num_opts,
- struct dp_option **_opts)
+static int dp_copy_options_ex(TALLOC_CTX *memctx,
+ bool copy_values,
+ struct dp_option *src_opts,
+ int num_opts,
+ struct dp_option **_opts)
{
struct dp_option *opts;
int i, ret = EOK;
@@ -151,9 +151,9 @@ int dp_copy_options(TALLOC_CTX *memctx,
switch (src_opts[i].type) {
case DP_OPT_STRING:
- if (src_opts[i].val.string) {
+ if (copy_values) {
ret = dp_opt_set_string(opts, i, src_opts[i].val.string);
- } else if (src_opts[i].def_val.string) {
+ } else {
ret = dp_opt_set_string(opts, i, src_opts[i].def_val.string);
}
if (ret != EOK) {
@@ -169,9 +169,9 @@ int dp_copy_options(TALLOC_CTX *memctx,
break;
case DP_OPT_BLOB:
- if (src_opts[i].val.blob.data) {
+ if (copy_values) {
ret = dp_opt_set_blob(opts, i, src_opts[i].val.blob);
- } else if (src_opts[i].def_val.blob.data) {
+ } else {
ret = dp_opt_set_blob(opts, i, src_opts[i].def_val.blob);
}
if (ret != EOK) {
@@ -185,9 +185,9 @@ int dp_copy_options(TALLOC_CTX *memctx,
break;
case DP_OPT_NUMBER:
- if (src_opts[i].val.number) {
+ if (copy_values) {
ret = dp_opt_set_int(opts, i, src_opts[i].val.number);
- } else if (src_opts[i].def_val.number) {
+ } else {
ret = dp_opt_set_int(opts, i, src_opts[i].def_val.number);
}
if (ret != EOK) {
@@ -201,9 +201,9 @@ int dp_copy_options(TALLOC_CTX *memctx,
break;
case DP_OPT_BOOL:
- if (src_opts[i].val.boolean) {
+ if (copy_values) {
ret = dp_opt_set_bool(opts, i, src_opts[i].val.boolean);
- } else if (src_opts[i].def_val.boolean) {
+ } else {
ret = dp_opt_set_bool(opts, i, src_opts[i].def_val.boolean);
}
if (ret != EOK) {
@@ -225,6 +225,22 @@ done:
return ret;
}
+int dp_copy_options(TALLOC_CTX *memctx,
+ struct dp_option *src_opts,
+ int num_opts,
+ struct dp_option **_opts)
+{
+ return dp_copy_options_ex(memctx, true, src_opts, num_opts, _opts);
+}
+
+int dp_copy_defaults(TALLOC_CTX *memctx,
+ struct dp_option *src_opts,
+ int num_opts,
+ struct dp_option **_opts)
+{
+ return dp_copy_options_ex(memctx, false, src_opts, num_opts, _opts);
+}
+
static const char *dp_opt_type_to_string(enum dp_opt_type type)
{
switch (type) {