[SCM] Samba Shared Repository - branch master updated
Michael Adam
obnox at samba.org
Tue May 28 12:02:02 MDT 2013
The branch, master has been updated
via 89edff0 net: use smbconf_create_set_share() in "net conf import"
via caf83bc libsmbconf: add smbconf_create_set_share
via 57634fd libsmbconf: fix documentation of transaction calls.
from 277831e dsdb-repl_meta_data: Move TODO comment about conflicts and missing parents
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 89edff08db367417f3032563df3ea1b546553c83
Author: Michael Adam <obnox at samba.org>
Date: Tue May 21 16:50:49 2013 +0200
net: use smbconf_create_set_share() in "net conf import"
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: David Disseldorp <ddiss at samba.org>
Autobuild-User(master): Michael Adam <obnox at samba.org>
Autobuild-Date(master): Tue May 28 20:01:12 CEST 2013 on sn-devel-104
commit caf83bcb76f52b0628f6d59e95396d16b5e3c66e
Author: David Disseldorp <ddiss at samba.org>
Date: Thu May 16 11:55:04 2013 +0200
libsmbconf: add smbconf_create_set_share
This call creates a new share definition, using the parameters provided
with a smbconf_service structure.
Such an interface allows for simple cloning of services with:
smbconf_get_share(conf_ctx, mem_ctx, base_sharename, &base_service_def);
base_service_def->name = clone_sharename;
smbconf_create_set_share(conf_ctx, base_service_def);
Pair-Programmed-With: Michael Adam <obnox at samba.org>
Signed-off-by: David Disseldorp <ddiss at samba.org>
Signed-off-by: Michael Adam <obnox at samba.org>
commit 57634fd87d7176a1f92281ad1b3e9a565b54cfc7
Author: Michael Adam <obnox at samba.org>
Date: Mon May 20 23:30:14 2013 +0200
libsmbconf: fix documentation of transaction calls.
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: David Disseldorp <ddiss at samba.org>
-----------------------------------------------------------------------
Summary of changes:
lib/smbconf/smbconf.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++
lib/smbconf/smbconf.h | 22 ++++++++++++-
source3/utils/net_conf.c | 49 +----------------------------
3 files changed, 99 insertions(+), 49 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/smbconf/smbconf.c b/lib/smbconf/smbconf.c
index e0441ed..27d36ca 100644
--- a/lib/smbconf/smbconf.c
+++ b/lib/smbconf/smbconf.c
@@ -231,6 +231,83 @@ sbcErr smbconf_create_share(struct smbconf_ctx *ctx,
}
/**
+ * create and set the definition for a new share (service).
+ */
+sbcErr smbconf_create_set_share(struct smbconf_ctx *ctx,
+ struct smbconf_service *service)
+{
+ sbcErr err, err2;
+ int i;
+ uint32_t num_includes = 0;
+ char **includes = NULL;
+ TALLOC_CTX *tmp_ctx = NULL;
+
+ if ((service->name != NULL) && smbconf_share_exists(ctx, service->name))
+ {
+ return SBC_ERR_FILE_EXISTS;
+ }
+
+ err = smbconf_transaction_start(ctx);
+ if (!SBC_ERROR_IS_OK(err)) {
+ return err;
+ }
+
+ tmp_ctx = talloc_stackframe();
+
+ err = smbconf_create_share(ctx, service->name);
+ if (!SBC_ERROR_IS_OK(err)) {
+ goto cancel;
+ }
+
+ for (i = 0; i < service->num_params; i++) {
+ if (strequal(service->param_names[i], "include")) {
+ includes = talloc_realloc(tmp_ctx, includes, char *,
+ num_includes+1);
+ if (includes == NULL) {
+ err = SBC_ERR_NOMEM;
+ goto cancel;
+ }
+ includes[num_includes] = talloc_strdup(includes,
+ service->param_values[i]);
+ if (includes[num_includes] == NULL) {
+ err = SBC_ERR_NOMEM;
+ goto cancel;
+ }
+ num_includes++;
+ } else {
+ err = smbconf_set_parameter(ctx,
+ service->name,
+ service->param_names[i],
+ service->param_values[i]);
+ if (!SBC_ERROR_IS_OK(err)) {
+ goto cancel;
+ }
+ }
+ }
+
+ err = smbconf_set_includes(ctx, service->name, num_includes,
+ (const char **)includes);
+ if (!SBC_ERROR_IS_OK(err)) {
+ goto cancel;
+ }
+
+ err = smbconf_transaction_commit(ctx);
+
+ goto done;
+
+cancel:
+ err2 = smbconf_transaction_cancel(ctx);
+ if (!SBC_ERROR_IS_OK(err2)) {
+ DEBUG(5, (__location__ ": Error cancelling transaction: %s\n",
+ sbcErrorString(err2)));
+ }
+
+done:
+ talloc_free(tmp_ctx);
+ return err;
+}
+
+/**
* get a definition of a share (service) from configuration.
*/
sbcErr smbconf_get_share(struct smbconf_ctx *ctx,
diff --git a/lib/smbconf/smbconf.h b/lib/smbconf/smbconf.h
index 7f62b06..69a55db 100644
--- a/lib/smbconf/smbconf.h
+++ b/lib/smbconf/smbconf.h
@@ -205,6 +205,19 @@ bool smbconf_share_exists(struct smbconf_ctx *ctx, const char *servicename);
sbcErr smbconf_create_share(struct smbconf_ctx *ctx, const char *servicename);
/**
+ * @brief create and set the definition for a new service.
+ *
+ * @param[in] ctx The smbconf context to use.
+ *
+ * @param[in] service The definition for the added service.
+ *
+ * @return SBC_ERR_OK on success, a corresponding sbcErr if an
+ * error occured.
+ */
+sbcErr smbconf_create_set_share(struct smbconf_ctx *ctx,
+ struct smbconf_service *service);
+
+/**
* @brief Get a definition of a share (service) from configuration.
*
* @param[in] ctx The smbconf context to use.
@@ -447,7 +460,8 @@ sbcErr smbconf_delete_global_includes(struct smbconf_ctx *ctx);
/**
* @brief Start a transaction on the configuration backend.
*
- * This is to speed up writes to the registry based backend.
+ * Transactions are exposed in order to make it possible
+ * to create atomic compound writing commands.
*
* @param[in] ctx The smbconf context to start the transaction.
*
@@ -459,7 +473,8 @@ sbcErr smbconf_transaction_start(struct smbconf_ctx *ctx);
/**
* @brief Commit a transaction on the configuration backend.
*
- * This is to speed up writes to the registry based backend.
+ * Transactions are exposed in order to make it possible
+ * to create atomic compound writing commands.
*
* @param[in] ctx The smbconf context to commit the transaction.
*
@@ -473,6 +488,9 @@ sbcErr smbconf_transaction_commit(struct smbconf_ctx *ctx);
/**
* @brief Cancel a transaction on the configuration backend.
*
+ * Transactions are exposed in order to make it possible
+ * to create atomic compound writing commands.
+ *
* @param[in] ctx The smbconf context to cancel the transaction.
*
* @return SBC_ERR_OK on success, a corresponding sbcErr if an
diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c
index 60588c0..e43cd12 100644
--- a/source3/utils/net_conf.c
+++ b/source3/utils/net_conf.c
@@ -179,13 +179,10 @@ static sbcErr import_process_service(struct net_context *c,
struct smbconf_ctx *conf_ctx,
struct smbconf_service *service)
{
- uint32_t idx;
sbcErr err = SBC_ERR_OK;
- uint32_t num_includes = 0;
- char **includes = NULL;
- TALLOC_CTX *mem_ctx = talloc_stackframe();
if (c->opt_testmode) {
+ uint32_t idx;
const char *indent = "";
if (service->name != NULL) {
d_printf("[%s]\n", service->name);
@@ -206,52 +203,10 @@ static sbcErr import_process_service(struct net_context *c,
goto done;
}
}
- err = smbconf_create_share(conf_ctx, service->name);
- if (!SBC_ERROR_IS_OK(err)) {
- goto done;
- }
- for (idx = 0; idx < service->num_params; idx ++) {
- if (strequal(service->param_names[idx], "include")) {
- includes = talloc_realloc(mem_ctx,
- includes,
- char *,
- num_includes+1);
- if (includes == NULL) {
- err = SBC_ERR_NOMEM;
- goto done;
- }
- includes[num_includes] = talloc_strdup(includes,
- service->param_values[idx]);
- if (includes[num_includes] == NULL) {
- err = SBC_ERR_NOMEM;
- goto done;
- }
- num_includes++;
- } else {
- err = smbconf_set_parameter(conf_ctx,
- service->name,
- service->param_names[idx],
- service->param_values[idx]);
- if (!SBC_ERROR_IS_OK(err)) {
- d_fprintf(stderr,
- _("Error in section [%s], parameter \"%s\": %s\n"),
- service->name, service->param_names[idx],
- sbcErrorString(err));
- goto done;
- }
- }
- }
+ err = smbconf_create_set_share(conf_ctx, service);
- err = smbconf_set_includes(conf_ctx, service->name, num_includes,
- (const char **)includes);
- if (!SBC_ERROR_IS_OK(err)) {
- goto done;
- }
-
- err = SBC_ERR_OK;
done:
- TALLOC_FREE(mem_ctx);
return err;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list