return -1;
}
+static int net_conf_getincludes_usage(int argc, const char **argv)
+{
+ d_printf("USAGE: net conf getincludes <section>\n");
+ return -1;
+}
+
+static int net_conf_setincludes_usage(int argc, const char **argv)
+{
+ d_printf("USAGE: net conf setincludes <section> [<filename>]*\n");
+ return -1;
+}
+
+static int net_conf_delincludes_usage(int argc, const char **argv)
+{
+ d_printf("USAGE: net conf delincludes <section>\n");
+ return -1;
+}
+
/**********************************************************************
*
TALLOC_CTX *mem_ctx = talloc_stackframe();
if (opt_testmode) {
- d_printf("[%s]\n", servicename);
- for (idx = 0; idx < num_params; idx ++) {
- d_printf("\t%s = %s\n", param_names[idx],
+ const char *indent = "";
+ if (servicename != NULL) {
+ d_printf("[%s]\n", servicename);
+ indent = "\t";
+ }
+ for (idx = 0; idx < num_params; idx++) {
+ d_printf("%s%s = %s\n", indent, param_names[idx],
param_values[idx]);
}
d_printf("\n");
}
for (share_count = 0; share_count < num_shares; share_count++) {
- d_printf("[%s]\n", share_names[share_count]);
+ const char *indent = "";
+ if (share_names[share_count] != NULL) {
+ d_printf("[%s]\n", share_names[share_count]);
+ indent = "\t";
+ }
for (param_count = 0; param_count < num_params[share_count];
param_count++)
{
- d_printf("\t%s = %s\n",
+ d_printf("%s%s = %s\n",
+ indent,
param_names[share_count][param_count],
param_values[share_count][param_count]);
}
int ret = -1;
const char *filename = NULL;
const char *servicename = NULL;
+ char *conf_source = NULL;
TALLOC_CTX *mem_ctx;
struct smbconf_ctx *txt_ctx;
WERROR werr;
net_conf_import_usage(argc, argv);
goto done;
case 2:
- servicename = argv[1];
+ servicename = talloc_strdup_lower(mem_ctx, argv[1]);
+ if (servicename == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
case 1:
filename = argv[0];
break;
DEBUG(3,("net_conf_import: reading configuration from file %s.\n",
filename));
- werr = smbconf_init_txt_simple(mem_ctx, &txt_ctx, filename, true);
+ conf_source = talloc_asprintf(mem_ctx, "file:%s", filename);
+ if (conf_source == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+
+ werr = smbconf_init(mem_ctx, &txt_ctx, conf_source);
if (!W_ERROR_IS_OK(werr)) {
+ d_printf("error loading file '%s': %s\n", filename,
+ dos_errstr(werr));
goto done;
}
goto done;
}
- sharename = argv[0];
+ sharename = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (sharename == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
werr = smbconf_get_share(conf_ctx, mem_ctx, sharename, &num_params,
¶m_names, ¶m_values);
const char *guest_ok = "no";
const char *writeable = "no";
SMB_STRUCT_STAT sbuf;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
switch (argc) {
case 0:
}
case 2:
path = argv[1];
- sharename = strdup_lower(argv[0]);
+ sharename = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (sharename == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+
break;
}
ret = 0;
done:
- SAFE_FREE(sharename);
+ TALLOC_FREE(mem_ctx);
return ret;
}
int ret = -1;
const char *sharename = NULL;
WERROR werr = WERR_OK;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
if (argc != 1) {
net_conf_delshare_usage(argc, argv);
goto done;
}
- sharename = argv[0];
+ sharename = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (sharename == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
werr = smbconf_delete_share(conf_ctx, sharename);
if (!W_ERROR_IS_OK(werr)) {
ret = 0;
done:
+ TALLOC_FREE(mem_ctx);
return ret;
}
char *service = NULL;
char *param = NULL;
const char *value_str = NULL;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
if (argc != 3) {
net_conf_setparm_usage(argc, argv);
goto done;
}
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+ param = talloc_strdup_lower(mem_ctx, argv[1]);
+ if (param == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
value_str = argv[2];
if (!smbconf_share_exists(conf_ctx, service)) {
ret = 0;
done:
- SAFE_FREE(service);
- SAFE_FREE(param);
+ TALLOC_FREE(mem_ctx);
return ret;
}
net_conf_getparm_usage(argc, argv);
goto done;
}
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+ param = talloc_strdup_lower(mem_ctx, argv[1]);
+ if (param == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
werr = smbconf_get_parameter(conf_ctx, mem_ctx, service, param, &valstr);
ret = 0;
done:
- SAFE_FREE(service);
- SAFE_FREE(param);
TALLOC_FREE(mem_ctx);
return ret;
}
WERROR werr = WERR_OK;
char *service = NULL;
char *param = NULL;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
if (argc != 2) {
net_conf_delparm_usage(argc, argv);
goto done;
}
- service = strdup_lower(argv[0]);
- param = strdup_lower(argv[1]);
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+ param = talloc_strdup_lower(mem_ctx, argv[1]);
+ if (param == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
werr = smbconf_delete_parameter(conf_ctx, service, param);
ret = 0;
done:
- SAFE_FREE(service);
- SAFE_FREE(param);
+ TALLOC_FREE(mem_ctx);
+ return ret;
+}
+
+static int net_conf_getincludes(struct smbconf_ctx *conf_ctx,
+ int argc, const char **argv)
+{
+ WERROR werr;
+ uint32_t num_includes;
+ uint32_t count;
+ char *service;
+ char **includes = NULL;
+ int ret = -1;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
+
+ if (argc != 1) {
+ net_conf_getincludes_usage(argc, argv);
+ goto done;
+ }
+
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+
+ werr = smbconf_get_includes(conf_ctx, mem_ctx, service,
+ &num_includes, &includes);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_printf("error getting includes: %s\n", dos_errstr(werr));
+ goto done;
+ }
+
+ for (count = 0; count < num_includes; count++) {
+ d_printf("include = %s\n", includes[count]);
+ }
+
+ ret = 0;
+
+done:
+ TALLOC_FREE(mem_ctx);
+ return ret;
+}
+
+static int net_conf_setincludes(struct smbconf_ctx *conf_ctx,
+ int argc, const char **argv)
+{
+ WERROR werr;
+ char *service;
+ uint32_t num_includes;
+ const char **includes;
+ int ret = -1;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
+
+ if (argc < 1) {
+ net_conf_setincludes_usage(argc, argv);
+ goto done;
+ }
+
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+
+ num_includes = argc - 1;
+ if (num_includes == 0) {
+ includes = NULL;
+ } else {
+ includes = argv + 1;
+ }
+
+ werr = smbconf_set_includes(conf_ctx, service, num_includes, includes);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_printf("error setting includes: %s\n", dos_errstr(werr));
+ goto done;
+ }
+
+ ret = 0;
+
+done:
+ TALLOC_FREE(mem_ctx);
+ return ret;
+}
+
+static int net_conf_delincludes(struct smbconf_ctx *conf_ctx,
+ int argc, const char **argv)
+{
+ WERROR werr;
+ char *service;
+ int ret = -1;
+ TALLOC_CTX *mem_ctx = talloc_stackframe();
+
+ if (argc != 1) {
+ net_conf_delincludes_usage(argc, argv);
+ goto done;
+ }
+
+ service = talloc_strdup_lower(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
+
+ werr = smbconf_delete_includes(conf_ctx, service);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_printf("error deleting includes: %s\n", dos_errstr(werr));
+ goto done;
+ }
+
+ ret = 0;
+
+done:
+ TALLOC_FREE(mem_ctx);
return ret;
}
struct smbconf_ctx *conf_ctx;
int ret = -1;
- werr = smbconf_init_reg(mem_ctx, &conf_ctx, NULL);
+ werr = smbconf_init(mem_ctx, &conf_ctx, "registry:");
if (!W_ERROR_IS_OK(werr)) {
return -1;
"Retrieve the value of a parameter."},
{"delparm", net_conf_delparm,
"Delete a parameter."},
+ {"getincludes", net_conf_getincludes,
+ "Show the includes of a share definition."},
+ {"setincludes", net_conf_setincludes,
+ "Set includes for a share."},
+ {"delincludes", net_conf_delincludes,
+ "Delete includes from a share definition."},
{NULL, NULL, NULL}
};