mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
[s3]libsmbconf: add method is_writeable() and wrapper smbconf_is_writeable()
This allows for per-config-source checking of write support. Michael
This commit is contained in:
@ -51,6 +51,14 @@ bool smbconf_backend_requires_messaging(struct smbconf_ctx *ctx)
|
||||
return ctx->ops->requires_messaging(ctx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tell whether the source is writeable.
|
||||
*/
|
||||
bool smbconf_is_writeable(struct smbconf_ctx *ctx)
|
||||
{
|
||||
return ctx->ops->is_writeable(ctx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the configuration.
|
||||
*/
|
||||
|
@ -57,6 +57,7 @@ WERROR smbconf_init_txt(TALLOC_CTX *mem_ctx,
|
||||
* the smbconf API functions
|
||||
*/
|
||||
bool smbconf_backend_requires_messaging(struct smbconf_ctx *ctx);
|
||||
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);
|
||||
|
@ -24,6 +24,7 @@ struct smbconf_ops {
|
||||
WERROR (*init)(struct smbconf_ctx *ctx, const char *path);
|
||||
int (*shutdown)(struct smbconf_ctx *ctx);
|
||||
bool (*requires_messaging)(struct smbconf_ctx *ctx);
|
||||
bool (*is_writeable)(struct smbconf_ctx *ctx);
|
||||
WERROR (*open_conf)(struct smbconf_ctx *ctx);
|
||||
int (*close_conf)(struct smbconf_ctx *ctx);
|
||||
void (*get_csn)(struct smbconf_ctx *ctx, struct smbconf_csn *csn,
|
||||
|
@ -652,6 +652,17 @@ static bool smbconf_reg_requires_messaging(struct smbconf_ctx *ctx)
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool smbconf_reg_is_writeable(struct smbconf_ctx *ctx)
|
||||
{
|
||||
/*
|
||||
* The backend has write support.
|
||||
*
|
||||
* TODO: add access checks whether the concrete
|
||||
* config source is really writeable by the calling user.
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
static WERROR smbconf_reg_open(struct smbconf_ctx *ctx)
|
||||
{
|
||||
WERROR werr;
|
||||
@ -1130,6 +1141,7 @@ struct smbconf_ops smbconf_ops_reg = {
|
||||
.init = smbconf_reg_init,
|
||||
.shutdown = smbconf_reg_shutdown,
|
||||
.requires_messaging = smbconf_reg_requires_messaging,
|
||||
.is_writeable = smbconf_reg_is_writeable,
|
||||
.open_conf = smbconf_reg_open,
|
||||
.close_conf = smbconf_reg_close,
|
||||
.get_csn = smbconf_reg_get_csn,
|
||||
|
@ -248,6 +248,12 @@ static bool smbconf_txt_requires_messaging(struct smbconf_ctx *ctx)
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool smbconf_txt_is_writeable(struct smbconf_ctx *ctx)
|
||||
{
|
||||
/* no write support in this backend yet... */
|
||||
return false;
|
||||
}
|
||||
|
||||
static WERROR smbconf_txt_open(struct smbconf_ctx *ctx)
|
||||
{
|
||||
return smbconf_txt_load_file(ctx);
|
||||
@ -610,6 +616,7 @@ static struct smbconf_ops smbconf_ops_txt = {
|
||||
.init = smbconf_txt_init,
|
||||
.shutdown = smbconf_txt_shutdown,
|
||||
.requires_messaging = smbconf_txt_requires_messaging,
|
||||
.is_writeable = smbconf_txt_is_writeable,
|
||||
.open_conf = smbconf_txt_open,
|
||||
.close_conf = smbconf_txt_close,
|
||||
.get_csn = smbconf_txt_get_csn,
|
||||
|
Reference in New Issue
Block a user