#include "cmdline_contexts.h"
#include "lib/util/string_wrappers.h"
#include "lib/param/param.h"
+#include "lib/smbconf/smbconf.h"
+#include "lib/smbconf/smbconf_init.h"
static TALLOC_CTX *ctx;
return 0;
}
+static bool registry_share(const char *sharename)
+{
+ sbcErr err;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
+ struct smbconf_ctx *conf_ctx;
+ bool ret_status = true;
+
+ err = smbconf_init(mem_ctx, &conf_ctx, "registry:");
+ if (!SBC_ERROR_IS_OK(err)) {
+ DEBUG(0, ("Unable to init smbconf registry. Err:%s\n",
+ sbcErrorString(err)));
+ ret_status = false;
+ goto out;
+ }
+
+ if(!smbconf_share_exists(conf_ctx, sharename)) {
+ ret_status = false;
+ goto done;
+ }
+done:
+ smbconf_shutdown(conf_ctx);
+out:
+ talloc_free(mem_ctx);
+ return ret_status;
+}
+
+static bool txt_share(const char *sharename)
+{
+ sbcErr err;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
+ struct smbconf_ctx *conf_ctx;
+ bool ret_status = true;
+ char *fconf_path;
+
+ fconf_path = talloc_asprintf(mem_ctx, "file:%s", get_dyn_CONFIGFILE());
+ if (fconf_path == NULL) {
+ DEBUG(0, ("Not enough memory for conf file path"));
+ ret_status = false;
+ goto out;
+ }
+
+ err = smbconf_init(mem_ctx, &conf_ctx, fconf_path);
+ if (!SBC_ERROR_IS_OK(err)) {
+ DEBUG(0, ("Unable to init smbconf file. Err:%s\n",
+ sbcErrorString(err)));
+ ret_status = false;
+ goto out;
+ }
+
+ if(!smbconf_share_exists(conf_ctx, sharename)) {
+ ret_status = false;
+ goto done;
+ }
+done:
+ smbconf_shutdown(conf_ctx);
+out:
+ talloc_free(mem_ctx);
+ return ret_status;
+}
+
+static bool share_exists(const char *sharename)
+{
+ bool ret_status = false;
+
+ if ((lp_config_backend() == CONFIG_BACKEND_REGISTRY) ||
+ (lp_registry_shares() == true))
+ ret_status = registry_share(sharename);
+
+ if (!ret_status) {
+ ret_status = txt_share(sharename);
+ }
+ return ret_status;
+}
+
/********************************************************************
main program
********************************************************************/