diff options
-rw-r--r-- | source3/lib/smbconf/smbconf.c | 26 | ||||
-rw-r--r-- | source3/lib/smbconf/smbconf.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/source3/lib/smbconf/smbconf.c b/source3/lib/smbconf/smbconf.c index e5a865a62b..86c1692574 100644 --- a/source3/lib/smbconf/smbconf.c +++ b/source3/lib/smbconf/smbconf.c @@ -60,6 +60,32 @@ bool smbconf_is_writeable(struct smbconf_ctx *ctx) } /** + * utitlity function: + * check whether a config source is writeable, + * given only the name of the config source. + */ +bool smbconf_is_writeable_bystring(const char *configsource) +{ + struct smbconf_ctx *conf_ctx; + WERROR err; + bool ret; + TALLOC_CTX *mem_ctx = talloc_stackframe; + + err = smbconf_init_reg(mem_ctx, &conf_ctx, configsource); + if (!W_ERROR_IS_OK(err)) { + ret = false; + goto done; + } + + ret = smbconf_is_writeable(conf_ctx); + +done: + smbconf_shutdown(conf_ctx); + TALLOC_FREE(mem_ctx); + return ret; +} + +/** * Close the configuration. */ void smbconf_shutdown(struct smbconf_ctx *ctx) diff --git a/source3/lib/smbconf/smbconf.h b/source3/lib/smbconf/smbconf.h index 9ff9a83fad..f65842ee34 100644 --- a/source3/lib/smbconf/smbconf.h +++ b/source3/lib/smbconf/smbconf.h @@ -58,6 +58,7 @@ WERROR smbconf_init_txt(TALLOC_CTX *mem_ctx, */ bool smbconf_backend_requires_messaging(struct smbconf_ctx *ctx); bool smbconf_is_writeable(struct smbconf_ctx *ctx); +bool smbconf_is_writeable_bystring(const char *configsource); void smbconf_shutdown(struct smbconf_ctx *ctx); bool smbconf_changed(struct smbconf_ctx *ctx, struct smbconf_csn *csn, const char *service, const char *param); |