summaryrefslogtreecommitdiff
path: root/source3/registry/reg_util_internal.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2010-06-24 16:33:37 +0200
committerMichael Adam <obnox@samba.org>2010-06-25 17:35:41 +0200
commit15bacaf3c594ac24cf26b0329723e873a5cae43d (patch)
tree6d49def92215c4fd375d54862a260984702099cd /source3/registry/reg_util_internal.c
parentf540833632ffe2c743e90ef9df1627e69b7a0c7b (diff)
downloadsamba-15bacaf3c594ac24cf26b0329723e873a5cae43d.tar.gz
s3-registry: Convert registry key delimiter from slash to backslash.
This is needed to support keynames containing a '/' like TCP/IP. Which is used in serveral standard paths. Signed-off-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/registry/reg_util_internal.c')
-rw-r--r--source3/registry/reg_util_internal.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/source3/registry/reg_util_internal.c b/source3/registry/reg_util_internal.c
index 47e2ce576fb..a1aeaa405cd 100644
--- a/source3/registry/reg_util_internal.c
+++ b/source3/registry/reg_util_internal.c
@@ -86,9 +86,8 @@ bool reg_split_key(char *path, char **base, char **key)
}
/**
- * The full path to the registry key is used as database key
- * after the \'s are converted to /'s.
- * Leading and trailing '/' and '\' characters are stripped.
+ * The full path to the registry key is used as database key.
+ * Leading and trailing '\' characters are stripped.
* Key string is also normalized to UPPER case.
*/
@@ -97,22 +96,22 @@ char *normalize_reg_path(TALLOC_CTX *ctx, const char *keyname )
char *p;
char *nkeyname;
- /* skip leading '/' and '\' chars */
+ /* skip leading '\' chars */
p = (char *)keyname;
- while ((*p == '/') || (*p == '\\')) {
+ while (*p == '\\') {
p++;
}
- nkeyname = talloc_string_sub(ctx, p, "\\", "/");
+ nkeyname = talloc_strdup(ctx, p);
if (nkeyname == NULL) {
return NULL;
}
- /* strip trailing '/' chars */
- p = strrchr(nkeyname, '/');
+ /* strip trailing '\' chars */
+ p = strrchr(nkeyname, '\\');
while ((p != NULL) && (p[1] == '\0')) {
*p = '\0';
- p = strrchr(nkeyname, '/');
+ p = strrchr(nkeyname, '\\');
}
strupper_m(nkeyname);
@@ -139,11 +138,7 @@ char *reg_remaining_path(TALLOC_CTX *ctx, const char *key)
}
/* normalize_reg_path( new_path ); */
if (!(p = strchr(new_path, '\\')) ) {
- if (!(p = strchr( new_path, '/'))) {
- p = new_path;
- } else {
- p++;
- }
+ p = new_path;
} else {
p++;
}