diff options
author | Michael Adam <obnox@samba.org> | 2008-04-22 16:31:16 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-04-23 01:43:31 +0200 |
commit | fb9232c0a98d9ce600e379dd03ee6fa3cd73cba5 (patch) | |
tree | 611aebbcadfb490cb37bcb70fd22f942be888ea7 /source3/lib/smbconf/smbconf_reg.c | |
parent | 5dd54c58b4d65b28751fda3ba2acbfe71ea7a75f (diff) | |
download | samba-fb9232c0a98d9ce600e379dd03ee6fa3cd73cba5.tar.gz samba-fb9232c0a98d9ce600e379dd03ee6fa3cd73cba5.tar.bz2 samba-fb9232c0a98d9ce600e379dd03ee6fa3cd73cba5.zip |
libsmbconf: rewrite API to use smbconf_service struct
instead of lists of strings and counters directly...
Michael
(This used to be commit 17415e2dc457ce41793a7e28e71f72c538c19c61)
Diffstat (limited to 'source3/lib/smbconf/smbconf_reg.c')
-rw-r--r-- | source3/lib/smbconf/smbconf_reg.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/source3/lib/smbconf/smbconf_reg.c b/source3/lib/smbconf/smbconf_reg.c index 930999cc3f..5f5724c406 100644 --- a/source3/lib/smbconf/smbconf_reg.c +++ b/source3/lib/smbconf/smbconf_reg.c @@ -875,23 +875,44 @@ static WERROR smbconf_reg_create_share(struct smbconf_ctx *ctx, static WERROR smbconf_reg_get_share(struct smbconf_ctx *ctx, TALLOC_CTX *mem_ctx, const char *servicename, - uint32_t *num_params, - char ***param_names, char ***param_values) + struct smbconf_service **service) { WERROR werr = WERR_OK; struct registry_key *key = NULL; + struct smbconf_service *tmp_service = NULL; + TALLOC_CTX *tmp_ctx = talloc_stackframe(); - werr = smbconf_reg_open_service_key(mem_ctx, ctx, servicename, + werr = smbconf_reg_open_service_key(tmp_ctx, ctx, servicename, REG_KEY_READ, &key); if (!W_ERROR_IS_OK(werr)) { goto done; } - werr = smbconf_reg_get_values(mem_ctx, key, num_params, - param_names, param_values); + tmp_service = TALLOC_ZERO_P(tmp_ctx, struct smbconf_service); + if (tmp_service == NULL) { + werr = WERR_NOMEM; + goto done; + } + + if (servicename != NULL) { + tmp_service->name = talloc_strdup(tmp_service, servicename); + if (tmp_service->name == NULL) { + werr = WERR_NOMEM; + goto done; + } + } + + werr = smbconf_reg_get_values(tmp_service, key, + &(tmp_service->num_params), + &(tmp_service->param_names), + &(tmp_service->param_values)); + + if (W_ERROR_IS_OK(werr)) { + *service = talloc_move(mem_ctx, &tmp_service); + } done: - TALLOC_FREE(key); + TALLOC_FREE(tmp_ctx); return werr; } |