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