mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
libsmbconf: Convert smbconf_drop() to sbcErr.
Signed-off-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
9082c7cee8
commit
720ba8e7e7
@ -126,7 +126,7 @@ bool smbconf_changed(struct smbconf_ctx *ctx, struct smbconf_csn *csn,
|
||||
/**
|
||||
* Drop the whole configuration (restarting empty).
|
||||
*/
|
||||
WERROR smbconf_drop(struct smbconf_ctx *ctx)
|
||||
sbcErr smbconf_drop(struct smbconf_ctx *ctx)
|
||||
{
|
||||
return ctx->ops->drop(ctx);
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ bool smbconf_is_writeable(struct smbconf_ctx *ctx);
|
||||
void smbconf_shutdown(struct smbconf_ctx *ctx);
|
||||
bool smbconf_changed(struct smbconf_ctx *ctx, struct smbconf_csn *csn,
|
||||
const char *service, const char *param);
|
||||
WERROR smbconf_drop(struct smbconf_ctx *ctx);
|
||||
sbcErr smbconf_drop(struct smbconf_ctx *ctx);
|
||||
WERROR smbconf_get_config(struct smbconf_ctx *ctx,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32_t *num_shares,
|
||||
|
@ -35,7 +35,7 @@ struct smbconf_ops {
|
||||
int (*close_conf)(struct smbconf_ctx *ctx);
|
||||
void (*get_csn)(struct smbconf_ctx *ctx, struct smbconf_csn *csn,
|
||||
const char *service, const char *param);
|
||||
WERROR (*drop)(struct smbconf_ctx *ctx);
|
||||
sbcErr (*drop)(struct smbconf_ctx *ctx);
|
||||
WERROR (*get_share_names)(struct smbconf_ctx *ctx,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
uint32_t *num_shares,
|
||||
|
@ -285,9 +285,9 @@ static void smbconf_txt_get_csn(struct smbconf_ctx *ctx,
|
||||
/**
|
||||
* Drop the whole configuration (restarting empty)
|
||||
*/
|
||||
static WERROR smbconf_txt_drop(struct smbconf_ctx *ctx)
|
||||
static sbcErr smbconf_txt_drop(struct smbconf_ctx *ctx)
|
||||
{
|
||||
return WERR_NOT_SUPPORTED;
|
||||
return SBC_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -698,10 +698,11 @@ static void smbconf_reg_get_csn(struct smbconf_ctx *ctx,
|
||||
/**
|
||||
* Drop the whole configuration (restarting empty) - registry version
|
||||
*/
|
||||
static WERROR smbconf_reg_drop(struct smbconf_ctx *ctx)
|
||||
static sbcErr smbconf_reg_drop(struct smbconf_ctx *ctx)
|
||||
{
|
||||
char *path, *p;
|
||||
WERROR werr = WERR_OK;
|
||||
sbcErr err = SBC_ERR_OK;
|
||||
struct registry_key *parent_key = NULL;
|
||||
struct registry_key *new_key = NULL;
|
||||
TALLOC_CTX* mem_ctx = talloc_stackframe();
|
||||
@ -711,39 +712,44 @@ static WERROR smbconf_reg_drop(struct smbconf_ctx *ctx)
|
||||
werr = ntstatus_to_werror(registry_create_admin_token(ctx, &token));
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
DEBUG(1, ("Error creating admin token\n"));
|
||||
err = SBC_ERR_UNKNOWN_FAILURE;
|
||||
goto done;
|
||||
}
|
||||
|
||||
path = talloc_strdup(mem_ctx, ctx->path);
|
||||
if (path == NULL) {
|
||||
werr = WERR_NOMEM;
|
||||
err = SBC_ERR_NOMEM;
|
||||
goto done;
|
||||
}
|
||||
p = strrchr(path, '\\');
|
||||
if (p == NULL) {
|
||||
werr = WERR_INVALID_PARAM;
|
||||
err = SBC_ERR_INVALID_PARAM;
|
||||
goto done;
|
||||
}
|
||||
*p = '\0';
|
||||
werr = reg_open_path(mem_ctx, path, REG_KEY_WRITE, token,
|
||||
&parent_key);
|
||||
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
err = SBC_ERR_IO_FAILURE;
|
||||
goto done;
|
||||
}
|
||||
|
||||
werr = reg_deletekey_recursive(parent_key, p+1);
|
||||
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
err = SBC_ERR_IO_FAILURE;
|
||||
goto done;
|
||||
}
|
||||
|
||||
werr = reg_createkey(mem_ctx, parent_key, p+1, REG_KEY_WRITE,
|
||||
&new_key, &action);
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
err = SBC_ERR_IO_FAILURE;
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
talloc_free(mem_ctx);
|
||||
return werr;
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -393,8 +393,7 @@ static int net_conf_import(struct net_context *c, struct smbconf_ctx *conf_ctx,
|
||||
goto cancel;
|
||||
}
|
||||
if (!c->opt_testmode) {
|
||||
werr = smbconf_drop(conf_ctx);
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
if (!SBC_ERROR_IS_OK(smbconf_drop(conf_ctx))) {
|
||||
goto cancel;
|
||||
}
|
||||
}
|
||||
@ -502,17 +501,17 @@ static int net_conf_drop(struct net_context *c, struct smbconf_ctx *conf_ctx,
|
||||
int argc, const char **argv)
|
||||
{
|
||||
int ret = -1;
|
||||
WERROR werr;
|
||||
sbcErr err;
|
||||
|
||||
if (argc != 0 || c->display_usage) {
|
||||
net_conf_drop_usage(c, argc, argv);
|
||||
goto done;
|
||||
}
|
||||
|
||||
werr = smbconf_drop(conf_ctx);
|
||||
if (!W_ERROR_IS_OK(werr)) {
|
||||
err = smbconf_drop(conf_ctx);
|
||||
if (!SBC_ERROR_IS_OK(err)) {
|
||||
d_fprintf(stderr, _("Error deleting configuration: %s\n"),
|
||||
win_errstr(werr));
|
||||
sbcErrorString(err));
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user