summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-10-24 13:49:16 +0200
committerMichael Adam <obnox@samba.org>2009-04-27 11:21:02 +0200
commit38d02c5d857ecea3405c3f48e64906764329f1a1 (patch)
treef4707ad934303139b1b763f583ec3a2548d0b076
parentcf9b027709b46872b07e7f7ca1c9740fc5e0037b (diff)
downloadsamba-38d02c5d857ecea3405c3f48e64906764329f1a1.tar.gz
samba-38d02c5d857ecea3405c3f48e64906764329f1a1.tar.bz2
samba-38d02c5d857ecea3405c3f48e64906764329f1a1.zip
s3:net conf: support dangling parameters by specifying "" as the section name.
for {get,set,del}parm Michael
-rw-r--r--source3/utils/net_conf.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c
index 663c5925c7..864ca9cc18 100644
--- a/source3/utils/net_conf.c
+++ b/source3/utils/net_conf.c
@@ -769,10 +769,16 @@ static int net_conf_setparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
net_conf_setparm_usage(c, argc, argv);
goto done;
}
- service = talloc_strdup(mem_ctx, argv[0]);
- if (service == NULL) {
- d_printf("error: out of memory!\n");
- goto done;
+ /*
+ * NULL service name means "dangling parameters" to libsmbconf.
+ * We use the empty string from the command line for this purpose.
+ */
+ if (strlen(argv[0]) != 0) {
+ service = talloc_strdup(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
}
param = strlower_talloc(mem_ctx, argv[1]);
if (param == NULL) {
@@ -821,10 +827,16 @@ static int net_conf_getparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
net_conf_getparm_usage(c, argc, argv);
goto done;
}
- service = talloc_strdup(mem_ctx, argv[0]);
- if (service == NULL) {
- d_printf("error: out of memory!\n");
- goto done;
+ /*
+ * NULL service name means "dangling parameters" to libsmbconf.
+ * We use the empty string from the command line for this purpose.
+ */
+ if (strlen(argv[0]) != 0) {
+ service = talloc_strdup(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
}
param = strlower_talloc(mem_ctx, argv[1]);
if (param == NULL) {
@@ -871,10 +883,16 @@ static int net_conf_delparm(struct net_context *c, struct smbconf_ctx *conf_ctx,
net_conf_delparm_usage(c, argc, argv);
goto done;
}
- service = talloc_strdup(mem_ctx, argv[0]);
- if (service == NULL) {
- d_printf("error: out of memory!\n");
- goto done;
+ /*
+ * NULL service name means "dangling parameters" to libsmbconf.
+ * We use the empty string from the command line for this purpose.
+ */
+ if (strlen(argv[0]) != 0) {
+ service = talloc_strdup(mem_ctx, argv[0]);
+ if (service == NULL) {
+ d_printf("error: out of memory!\n");
+ goto done;
+ }
}
param = strlower_talloc(mem_ctx, argv[1]);
if (param == NULL) {