Rev 5340: add key_exists check to getparm and delparm commands and in http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

Michael Adam ma at sernet.de
Thu Apr 5 11:25:44 GMT 2007


At http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

------------------------------------------------------------
revno: 5340
revision-id: ma at sernet.de-20070405112540-b9df5260bd79fef1
parent: ma at sernet.de-20070405105551-e04e0f8f2239511e
committer: Michael Adam <ma at sernet.de>
branch nick: SAMBA_3_0-registry.bzr
timestamp: Thu 2007-04-05 13:25:40 +0200
message:
  add key_exists check to getparm and delparm commands and 
  value_exists check to delparm. 
modified:
  source/utils/net_conf.c        net_conf.c-20070228210606-uywdn1acd043wgvt-1
=== modified file 'source/utils/net_conf.c'
--- a/source/utils/net_conf.c	2007-04-04 23:06:36 +0000
+++ b/source/utils/net_conf.c	2007-04-05 11:25:40 +0000
@@ -333,6 +333,22 @@
 	return ret;
 }
 
+static BOOL smbconf_value_exists(TALLOC_CTX *ctx, struct registry_key *key,
+				 const char *param)
+{
+	BOOL ret = False;
+	WERROR werr = WERR_OK;
+	struct registry_value *value = NULL;
+
+	werr = reg_queryvalue(ctx, key, param, &value);	
+	if (W_ERROR_IS_OK(werr)) {
+		ret = True;
+	}
+
+	TALLOC_FREE(value);
+	return ret;
+}
+
 static WERROR list_values(TALLOC_CTX *ctx, struct registry_key *key)
 {
 	WERROR werr = WERR_OK;
@@ -967,6 +983,13 @@
 	service = strdup_lower(argv[0]);
 	param = strdup_lower(argv[1]);
 
+	if (!smbconf_key_exists(ctx, service)) {
+		d_fprintf(stderr, 
+			  "ERROR: given service '%s' does not exist.\n",
+			  service);
+		goto done;
+	}
+
 	werr = smbconf_open_path(ctx, service, REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
@@ -1007,11 +1030,24 @@
 	service = strdup_lower(argv[0]);
 	param = strdup_lower(argv[1]);
 
+	if (!smbconf_key_exists(ctx, service)) {
+		d_fprintf(stderr, 
+			  "Error: given service '%s' does not exist.\n",
+			  service);
+		goto done;
+	}
+
 	werr = smbconf_open_path(ctx, service, REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
 
+	if (!smbconf_value_exists(ctx, key, param)) {
+		d_fprintf(stderr, 
+			  "Error: given parameter '%s' is not set.\n",
+			  param);
+		goto done;
+	}
 	werr = reg_deletevalue(key, param);
 	if (!W_ERROR_IS_OK(werr)) {
 		d_fprintf(stderr, "Error deleting value '%s': %s.\n",



More information about the samba-cvs mailing list