diff options
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/ad/ad_common.c | 16 | ||||
-rw-r--r-- | src/providers/data_provider.h | 5 | ||||
-rw-r--r-- | src/providers/data_provider_opts.c | 42 |
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) { |