Rev 5324: refactoring: add internal functions _open_path und _open_baspath in http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/

Michael Adam ma at sernet.de
Tue Apr 3 21:22:38 GMT 2007


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

------------------------------------------------------------
revno: 5324
revision-id: ma at sernet.de-20070403212235-04bf8e8ea92fab7a
parent: ma at sernet.de-20070403140604-2790a9b4aa642558
committer: Michael Adam <ma at sernet.de>
branch nick: SAMBA_3_0-registry.bzr
timestamp: Tue 2007-04-03 23:22:35 +0200
message:
  refactoring: add internal functions _open_path und _open_baspath
  to reduce code duplication when opening subkeys of KEY_SMBCONF
  (calls to reg_open_path).
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-02 14:20:27 +0000
+++ b/source/utils/net_conf.c	2007-04-03 21:22:35 +0000
@@ -188,6 +188,43 @@
 	return werr;
 }
 
+/* 
+ * Open a subkey of KEY_SMBCONF (i.e a service)
+ */
+static WERROR _open_path(TALLOC_CTX *ctx, const char *subkeyname,
+			 uint32 desired_access, struct registry_key **key)
+{
+	WERROR werr = WERR_OK;
+	char *path = NULL;
+
+	if ((subkeyname == NULL) || (strequal(subkeyname, GLOBAL_NAME))) {
+		path = talloc_strdup(ctx, KEY_SMBCONF);
+	}
+	else {
+		path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, subkeyname);
+	}
+
+	werr = reg_open_path(ctx, path, desired_access,
+			     get_root_nt_token(), key);
+	if (!W_ERROR_IS_OK(werr)) {
+		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
+			  path, dos_errstr(werr));
+		goto done;
+	}
+done:
+	TALLOC_FREE(path);
+	return werr;
+}
+
+/*
+ * open the base key KEY_SMBCONF
+ */
+static WERROR _open_basepath(TALLOC_CTX *ctx, uint32 desired_access,
+			     struct registry_key **key)
+{
+	return _open_path(ctx, NULL, desired_access, key);
+}
+
 /*
  * delete a subkey of KEY_SMBCONF
  */
@@ -196,11 +233,8 @@
 	WERROR werr = WERR_OK;
 	struct registry_key *key = NULL;
 
-	werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_WRITE,
-			       get_root_nt_token(), &key);
+	werr = _open_basepath(ctx, REG_KEY_WRITE, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  KEY_SMBCONF, dos_errstr(werr));
 		goto done;
 	}
 
@@ -235,11 +269,8 @@
 		goto done;
 	}
 
-	werr = reg_open_path(create_ctx, KEY_SMBCONF, REG_KEY_WRITE,
-			     get_root_nt_token(), &create_parent);
+	werr = _open_basepath(create_ctx, REG_KEY_WRITE, &create_parent);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  KEY_SMBCONF, dos_errstr(werr));
 		goto done;
 	}
 
@@ -267,12 +298,11 @@
         struct registry_value *valvalue = NULL;
         char *valname = NULL;
 	
-	werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_WRITE, 
-			     get_root_nt_token(), &key);
+	werr = _open_basepath(ctx, REG_KEY_WRITE, &key);
 	if (!W_ERROR_IS_OK(werr)) {
 		goto done;
 	}
-	
+			
 	for (idx = 0;
 	     W_ERROR_IS_OK(werr = reg_enumvalue(ctx, key, idx, &valname,
 						&valvalue));
@@ -349,12 +379,8 @@
 					  dos_errstr(werr));
 				goto done;
 			}
-			werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_WRITE,
-					     get_root_nt_token(), &key);
+			werr = _open_basepath(ctx, REG_KEY_WRITE, &key);
 			if (!W_ERROR_IS_OK(werr)) {
-				d_fprintf(stderr, 
-					"Error opening registry path '%s': %s\n",
-					KEY_SMBCONF, dos_errstr(werr));
 				goto done;
 			}
 		}
@@ -497,11 +523,8 @@
 		goto done;
 	}
 
-	werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_READ,
-			     get_root_nt_token(), &base_key);
+	werr = _open_basepath(ctx, REG_KEY_READ, &base_key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path: %s\n", 
-			  dos_errstr(werr));
 		goto done;
 	}
 
@@ -646,11 +669,8 @@
 		goto done;
 	}
 
-	werr = reg_open_path(ctx, KEY_SMBCONF, SEC_RIGHTS_ENUM_SUBKEYS,
-			     get_root_nt_token(), &key);
+	werr = _open_basepath(ctx, SEC_RIGHTS_ENUM_SUBKEYS, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path: %s\n", 
-			  dos_errstr(werr));
 		goto done;
 	}
 
@@ -679,7 +699,6 @@
 	int ret = -1;
 	WERROR werr = WERR_OK;
 	struct registry_key *key = NULL;
-	char *path = NULL;
 	TALLOC_CTX *ctx;
 
 	ctx = talloc_init("showshare");
@@ -689,17 +708,8 @@
 		goto done;
 	}
 
-	path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, argv[0]);
-	if (path == NULL) {
-		d_fprintf(stderr, "Error building path to registry key.\n");
-		goto done;
-	}
-
-	werr = reg_open_path(ctx, path, REG_KEY_READ,
-			       get_root_nt_token(), &key);
+	werr = _open_path(ctx, argv[0], REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  path, dos_errstr(werr));
 		goto done;
 	}
 
@@ -894,7 +904,6 @@
 	char *service = NULL;
 	char *param = NULL;
 	char *type = NULL;
-	char *path;
 	const char *value_str = NULL;
 	TALLOC_CTX *ctx;
 
@@ -909,18 +918,8 @@
 	type = strdup_lower(argv[2]);
 	value_str = argv[3];
 
-	if (strequal(service, "global")) {
-		path = talloc_strdup(ctx, KEY_SMBCONF);
-	}
-	else {
-		path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, service);
-	}
-
-	werr = reg_open_path(ctx, path, REG_KEY_READ,
-			     get_root_nt_token(), &key);
+	werr = _open_path(ctx, service, REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  KEY_SMBCONF, dos_errstr(werr));
 		goto done;
 	}
 
@@ -947,7 +946,6 @@
 	struct registry_key *key = NULL;
 	char *service = NULL;
 	char *param = NULL;
-	char *path = NULL;
 	struct registry_value *value = NULL;
 	TALLOC_CTX *ctx;
 
@@ -959,18 +957,9 @@
 	}
 	service = strdup_lower(argv[0]);
 	param = strdup_lower(argv[1]);
-	if (strequal(service, "global")) {
-		path = talloc_strdup(ctx, KEY_SMBCONF);
-	}
-	else {
-		path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, service);
-	}
 
-	werr = reg_open_path(ctx, path, REG_KEY_READ,
-			     get_root_nt_token(), &key);
+	werr = _open_path(ctx, service, REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  KEY_SMBCONF, dos_errstr(werr));
 		goto done;
 	}
 
@@ -998,7 +987,6 @@
 	struct registry_key *key = NULL;
 	char *service = NULL;
 	char *param = NULL;
-	char *path = NULL;
 	TALLOC_CTX *ctx;
 
 	ctx = talloc_init("delparm");
@@ -1009,18 +997,9 @@
 	}
 	service = strdup_lower(argv[0]);
 	param = strdup_lower(argv[1]);
-	if (strequal(service, "global")) {
-		path = talloc_strdup(ctx, KEY_SMBCONF);
-	}
-	else {
-		path = talloc_asprintf(ctx, "%s\\%s", KEY_SMBCONF, service);
-	}
 
-	werr = reg_open_path(ctx, path, REG_KEY_READ,
-			     get_root_nt_token(), &key);
+	werr = _open_path(ctx, service, REG_KEY_READ, &key);
 	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr, "Error opening registry path '%s': %s\n",
-			  KEY_SMBCONF, dos_errstr(werr));
 		goto done;
 	}
 



More information about the samba-cvs mailing list