summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/smbconf/smbconf.c26
-rw-r--r--source3/lib/smbconf/smbconf.h1
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);