summaryrefslogtreecommitdiff
path: root/source3/lib/smbconf
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-10-24 10:36:29 +0200
committerMichael Adam <obnox@samba.org>2008-10-27 13:02:41 +0100
commite4fe3320ec75f0ba542c689b3072fa8a2ed9e232 (patch)
treee481103311408486ea8de2b9ef6b5f7f718ff5e8 /source3/lib/smbconf
parent3a06201086e77b1c6bd8cf9374f02e5f667aa86c (diff)
downloadsamba-e4fe3320ec75f0ba542c689b3072fa8a2ed9e232.tar.gz
samba-e4fe3320ec75f0ba542c689b3072fa8a2ed9e232.tar.bz2
samba-e4fe3320ec75f0ba542c689b3072fa8a2ed9e232.zip
[s3]libsmbconf: add utility function smbconf_is_writeable_bystring()
This checks the writeability of a config source specified by the config source name. Michael
Diffstat (limited to 'source3/lib/smbconf')
-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);