svn commit: samba r24220 - in branches/4.0-regwrite: . source/lib/registry source/lib/registry/tests

jelmer at samba.org jelmer at samba.org
Sat Aug 4 18:16:36 GMT 2007


Author: jelmer
Date: 2007-08-04 18:16:33 +0000 (Sat, 04 Aug 2007)
New Revision: 24220

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24220

Log:
Getting a basic get_predefined_key implementation to work.
Modified:
   branches/4.0-regwrite/
   branches/4.0-regwrite/source/lib/registry/interface.c
   branches/4.0-regwrite/source/lib/registry/local.c
   branches/4.0-regwrite/source/lib/registry/registry.h
   branches/4.0-regwrite/source/lib/registry/tests/generic.c
   branches/4.0-regwrite/source/lib/registry/tests/registry.c


Changeset:

Property changes on: branches/4.0-regwrite
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: Wed 2007-06-13 22:53:58.466000080 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties: 
	branch-nick: 4.0-regwrite
	rebase-of: jelmer at samba.org-20070613205358-bw2nnemz6ringkd0

   + timestamp: Mon 2007-06-18 23:15:30.483000040 +0200
committer: Jelmer Vernooij <jelmer at samba.org>
properties: 
	branch-nick: 4.0-regwrite
	rebase-of: jelmer at samba.org-20070618211530-94qthtfumeziwpyy

Name: bzr:file-ids
   - source/lib/registry/tests/registry.c	registry.c-20070613193046-9w6vxztx0uea8a0p-1

   + 
Name: bzr:revision-id:v3-trunk0
   - 11140 jelmer at samba.org-20070113195019-yrx40nap220myng0-svn3-upgrade
11142 jelmer at samba.org-20070113195431-nshumfy5z00cpnaj-svn3-upgrade
11143 jelmer at samba.org-20070113195555-am0swaxzsoxp05p0-svn3-upgrade
11144 wilco at baanhofman.nl-20070114042604-b7pwqobkrbmlbp8p-svn3-upgrade
11145 wilco at baanhofman.nl-20070114042644-fa3gbnlhall7nkry-svn3-upgrade
11146 wilco at baanhofman.nl-20070114042712-7ueqyvk12ki1frc5-svn3-upgrade
11147 wilco at baanhofman.nl-20070114042737-pwu8etpcs7lmwsms-svn3-upgrade
11148 wilco at baanhofman.nl-20070114043501-7g3vsn55rrr643z6-svn3-upgrade
11149 wilco at baanhofman.nl-20070114061526-fpg1tdt07virwgdk-svn3-upgrade
11150 wilco at baanhofman.nl-20070114133602-npguwp5mbuki5qlp-svn3-upgrade
11151 wilco at baanhofman.nl-20070114134318-79ylyc0gzh43xhqi-svn3-upgrade
11152 wilco at baanhofman.nl-20070114151541-6adzkudwihn30k9j-svn3-upgrade
11153 wilco at baanhofman.nl-20070114152236-z6iel538oen6t8g5-svn3-upgrade
11154 jelmer at samba.org-20070115165838-maz3nw52ijbba8rk-svn3-upgrade
11155 jelmer at samba.org-20070115170435-ert8ib689dhntd4p-svn3-upgrade
11156 jelmer at samba.org-20070115235410-krfav3ng4in38pkx-svn3-upgrade
11157 jelmer at samba.org-20070116222757-087aafuwkwfw4267-svn3-upgrade
11158 jelmer at samba.org-20070117013853-mfuqd1o46k44pk2d-svn3-upgrade
11159 jelmer at samba.org-20070117022606-q54g08ss30u86c5c-svn3-upgrade
11160 jelmer at samba.org-20070124130019-zt6jr00m7df9ur0m-svn3-upgrade
11161 jelmer at samba.org-20070124131946-1yxj4h6b092i8fwd-svn3-upgrade
11162 jelmer at samba.org-20070207151808-znhiwyn0cbnuah7z-svn3-upgrade
11163 jelmer at samba.org-20070208155904-yfb5n63xvx2w0kzz-svn3-upgrade
11164 jelmer at samba.org-20070208161920-v3bjwnhfqy4f6j6y-svn3-upgrade
11165 jelmer at samba.org-20070208171835-589fvhzi1hilvnan-svn3-upgrade
11166 jelmer at samba.org-20070210150222-mpmii8ak5w25btqc-svn3-upgrade
11167 jelmer at samba.org-20070210150533-khwd9jnhx7sqsbo6-svn3-upgrade
11168 jelmer at samba.org-20070212210015-vfey1bupuo237gtc-svn3-upgrade
11169 jelmer at samba.org-20070212210746-y5062ss2jjup80c0-svn3-upgrade
11170 jelmer at samba.org-20070212235354-htyicol9aj4sbk5l-svn3-upgrade
11171 jelmer at samba.org-20070221113700-q1sittkxd3a14jwk-svn3-upgrade
11172 jelmer at samba.org-20070227013556-0w8d95jjxfp1dstd-svn3-upgrade
11173 jelmer at samba.org-20070304145613-pufes2hspszib9qv-svn3-upgrade
11174 jelmer at samba.org-20070304184755-bgf26jhs49nt7s2u-svn3-upgrade
11175 jelmer at samba.org-20070304184903-gwgc00z1gtbmb01b-svn3-upgrade
11176 jelmer at samba.org-20070418170502-zvjkpzrur94nevvb-svn3-upgrade
11177 jelmer at samba.org-20070423140539-m81ruspga5mhbmdm-svn3-upgrade
11178 jelmer at samba.org-20070423141635-i6jhd2syudt5vry4-svn3-upgrade
11179 jelmer at samba.org-20070601151710-8xoranh864s3h1rs-svn3-upgrade
11180 jelmer at samba.org-20070602140325-y0nwln7k17vaj14o-svn3-upgrade
11181 jelmer at samba.org-20070602152504-3bij55pqljimwz31-svn3-upgrade
11182 jelmer at samba.org-20070608215652-x6m0ejk982bzfp76-svn3-upgrade
11183 jelmer at samba.org-20070610222652-11vkd62zyiyk971l-svn3-upgrade
11184 jelmer at samba.org-20070610234755-tpxetmbupthvqfp8-svn3-upgrade
11185 jelmer at samba.org-20070611134928-pew4ydd6a0qnh3iv-svn3-upgrade
11186 jelmer at samba.org-20070612165440-1x7k1m3nb1bzbal0-svn3-upgrade
11187 jelmer at samba.org-20070612200826-54acueedast7lnmr-svn3-upgrade
11188 jelmer at samba.org-20070612202736-meu8bltye0rberi6-svn3-upgrade
11189 jelmer at samba.org-20070612231137-i8mbl1sgmcfkb5vn-svn3-upgrade
11190 jelmer at samba.org-20070612234637-779h4pffu0ybx829-svn3-upgrade
11191 jelmer at samba.org-20070613001344-qkqechdlu867mozv-svn3-upgrade
11192 jelmer at samba.org-20070613205358-bw2nnemz6ringkd0-svn3-upgrade

   + 11140 jelmer at samba.org-20070113195019-yrx40nap220myng0-svn3-upgrade
11142 jelmer at samba.org-20070113195431-nshumfy5z00cpnaj-svn3-upgrade
11143 jelmer at samba.org-20070113195555-am0swaxzsoxp05p0-svn3-upgrade
11144 wilco at baanhofman.nl-20070114042604-b7pwqobkrbmlbp8p-svn3-upgrade
11145 wilco at baanhofman.nl-20070114042644-fa3gbnlhall7nkry-svn3-upgrade
11146 wilco at baanhofman.nl-20070114042712-7ueqyvk12ki1frc5-svn3-upgrade
11147 wilco at baanhofman.nl-20070114042737-pwu8etpcs7lmwsms-svn3-upgrade
11148 wilco at baanhofman.nl-20070114043501-7g3vsn55rrr643z6-svn3-upgrade
11149 wilco at baanhofman.nl-20070114061526-fpg1tdt07virwgdk-svn3-upgrade
11150 wilco at baanhofman.nl-20070114133602-npguwp5mbuki5qlp-svn3-upgrade
11151 wilco at baanhofman.nl-20070114134318-79ylyc0gzh43xhqi-svn3-upgrade
11152 wilco at baanhofman.nl-20070114151541-6adzkudwihn30k9j-svn3-upgrade
11153 wilco at baanhofman.nl-20070114152236-z6iel538oen6t8g5-svn3-upgrade
11154 jelmer at samba.org-20070115165838-maz3nw52ijbba8rk-svn3-upgrade
11155 jelmer at samba.org-20070115170435-ert8ib689dhntd4p-svn3-upgrade
11156 jelmer at samba.org-20070115235410-krfav3ng4in38pkx-svn3-upgrade
11157 jelmer at samba.org-20070116222757-087aafuwkwfw4267-svn3-upgrade
11158 jelmer at samba.org-20070117013853-mfuqd1o46k44pk2d-svn3-upgrade
11159 jelmer at samba.org-20070117022606-q54g08ss30u86c5c-svn3-upgrade
11160 jelmer at samba.org-20070124130019-zt6jr00m7df9ur0m-svn3-upgrade
11161 jelmer at samba.org-20070124131946-1yxj4h6b092i8fwd-svn3-upgrade
11162 jelmer at samba.org-20070207151808-znhiwyn0cbnuah7z-svn3-upgrade
11163 jelmer at samba.org-20070208155904-yfb5n63xvx2w0kzz-svn3-upgrade
11164 jelmer at samba.org-20070208161920-v3bjwnhfqy4f6j6y-svn3-upgrade
11165 jelmer at samba.org-20070208171835-589fvhzi1hilvnan-svn3-upgrade
11166 jelmer at samba.org-20070210150222-mpmii8ak5w25btqc-svn3-upgrade
11167 jelmer at samba.org-20070210150533-khwd9jnhx7sqsbo6-svn3-upgrade
11168 jelmer at samba.org-20070212210015-vfey1bupuo237gtc-svn3-upgrade
11169 jelmer at samba.org-20070212210746-y5062ss2jjup80c0-svn3-upgrade
11170 jelmer at samba.org-20070212235354-htyicol9aj4sbk5l-svn3-upgrade
11171 jelmer at samba.org-20070221113700-q1sittkxd3a14jwk-svn3-upgrade
11172 jelmer at samba.org-20070227013556-0w8d95jjxfp1dstd-svn3-upgrade
11173 jelmer at samba.org-20070304145613-pufes2hspszib9qv-svn3-upgrade
11174 jelmer at samba.org-20070304184755-bgf26jhs49nt7s2u-svn3-upgrade
11175 jelmer at samba.org-20070304184903-gwgc00z1gtbmb01b-svn3-upgrade
11176 jelmer at samba.org-20070418170502-zvjkpzrur94nevvb-svn3-upgrade
11177 jelmer at samba.org-20070423140539-m81ruspga5mhbmdm-svn3-upgrade
11178 jelmer at samba.org-20070423141635-i6jhd2syudt5vry4-svn3-upgrade
11179 jelmer at samba.org-20070601151710-8xoranh864s3h1rs-svn3-upgrade
11180 jelmer at samba.org-20070602140325-y0nwln7k17vaj14o-svn3-upgrade
11181 jelmer at samba.org-20070602152504-3bij55pqljimwz31-svn3-upgrade
11182 jelmer at samba.org-20070608215652-x6m0ejk982bzfp76-svn3-upgrade
11183 jelmer at samba.org-20070610222652-11vkd62zyiyk971l-svn3-upgrade
11184 jelmer at samba.org-20070610234755-tpxetmbupthvqfp8-svn3-upgrade
11185 jelmer at samba.org-20070611134928-pew4ydd6a0qnh3iv-svn3-upgrade
11186 jelmer at samba.org-20070612165440-1x7k1m3nb1bzbal0-svn3-upgrade
11187 jelmer at samba.org-20070612200826-54acueedast7lnmr-svn3-upgrade
11188 jelmer at samba.org-20070612202736-meu8bltye0rberi6-svn3-upgrade
11189 jelmer at samba.org-20070612231137-i8mbl1sgmcfkb5vn-svn3-upgrade
11190 jelmer at samba.org-20070612234637-779h4pffu0ybx829-svn3-upgrade
11191 jelmer at samba.org-20070613001344-qkqechdlu867mozv-svn3-upgrade
11192 jelmer at samba.org-20070613205358-bw2nnemz6ringkd0-svn3-upgrade
11193 jelmer at samba.org-20070618211530-94qthtfumeziwpyy-svn3-upgrade


Modified: branches/4.0-regwrite/source/lib/registry/interface.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/interface.c	2007-08-04 18:16:25 UTC (rev 24219)
+++ branches/4.0-regwrite/source/lib/registry/interface.c	2007-08-04 18:16:33 UTC (rev 24220)
@@ -43,21 +43,6 @@
 	{ 0, NULL }
 };
 
-/** Obtain a list of predefined keys. */
-_PUBLIC_ int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, uint32_t **hkeys)
-{
-	int i;
-	*predefs = talloc_array(mem_ctx, char *, ARRAY_SIZE(reg_predefined_keys));
-	*hkeys = talloc_array(mem_ctx, uint32_t, ARRAY_SIZE(reg_predefined_keys));
-
-	for (i = 0; reg_predefined_keys[i].name; i++) {
-		(*predefs)[i] = talloc_strdup(mem_ctx, reg_predefined_keys[i].name);
-		(*hkeys)[i] = reg_predefined_keys[i].handle;
-	}
-
-	return i;
-}
-
 /** Obtain name of specific hkey. */
 _PUBLIC_ const char *reg_get_predef_name(uint32_t hkey)
 {
@@ -71,12 +56,16 @@
 }
 
 /** Get predefined key by name. */
-_PUBLIC_ WERROR reg_get_predefined_key_by_name(struct registry_context *ctx, const char *name, struct registry_key **key)
+_PUBLIC_ WERROR reg_get_predefined_key_by_name(struct registry_context *ctx, 
+											   const char *name, 
+											   struct registry_key **key)
 {
 	int i;
 	
 	for (i = 0; reg_predefined_keys[i].name; i++) {
-		if (!strcasecmp(reg_predefined_keys[i].name, name)) return reg_get_predefined_key(ctx, reg_predefined_keys[i].handle, key);
+		if (!strcasecmp(reg_predefined_keys[i].name, name)) 
+			return reg_get_predefined_key(ctx, reg_predefined_keys[i].handle, 
+										  key);
 	}
 
 	DEBUG(1, ("No predefined key with name '%s'\n", name));
@@ -227,7 +216,8 @@
 /**
  * Set a value.
  */
-_PUBLIC_ WERROR reg_val_set(struct registry_key *key, const char *value, uint32_t type, const DATA_BLOB data)
+_PUBLIC_ WERROR reg_val_set(struct registry_key *key, const char *value, 
+							uint32_t type, const DATA_BLOB data)
 {
 	if (key == NULL)
 		return WERR_INVALID_PARAM;
@@ -262,8 +252,7 @@
 /**
  * Delete a value.
  */
-_PUBLIC_ WERROR reg_del_value(struct registry_key *key, 
-							  const char *valname)
+_PUBLIC_ WERROR reg_del_value(struct registry_key *key, const char *valname)
 {
 	if (key == NULL)
 		return WERR_INVALID_PARAM;

Modified: branches/4.0-regwrite/source/lib/registry/local.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/local.c	2007-08-04 18:16:25 UTC (rev 24219)
+++ branches/4.0-regwrite/source/lib/registry/local.c	2007-08-04 18:16:33 UTC (rev 24220)
@@ -48,10 +48,6 @@
 	struct hive_key *hive_key;
 };
 
-WERROR reg_mount_hive(struct registry_context *ctx, struct reg_key_path *path, 
-					  struct hive_key *hive);
-WERROR reg_unmount_hive(struct registry_context *ctx, struct hive_key *hive);
-
 static WERROR local_open_key(TALLOC_CTX *mem_ctx,
 						   struct registry_key *parent, 
 						   const char *path,
@@ -103,7 +99,7 @@
 	return WERR_OK;
 }
 
-WERROR local_get_predefined_key (struct registry_context *ctx, 
+WERROR local_get_predefined_key (const struct registry_context *ctx, 
 	  uint32_t key_id, struct registry_key **key) 
 {	
 	struct registry_local *rctx = talloc_get_type(ctx, struct registry_local);
@@ -152,3 +148,27 @@
 	
 	return WERR_OK;
 }
+
+WERROR reg_mount_hive(struct registry_context *rctx, 
+					  struct hive_key *hive_key,
+					  uint32_t key_id,
+					  const char **elements) 
+{
+	struct registry_local *reg_local = talloc_get_type(rctx, struct registry_local);
+	struct mountpoint *mp = talloc(rctx, struct mountpoint);
+	int i = 0;
+
+	mp->path.predefined_key = key_id;
+	mp->prev = mp->next = NULL;
+	mp->key = hive_key;
+	mp->path.elements = talloc_array(mp, const char *, 
+									 str_list_length(elements));
+	for (i = 0; elements[i]; i++) {
+		mp->path.elements[i] = elements[i];
+	}
+	mp->path.elements[i] = NULL;
+
+	DLIST_ADD(reg_local->mountpoints, mp);
+
+	return WERR_OK;
+}

Modified: branches/4.0-regwrite/source/lib/registry/registry.h
===================================================================
--- branches/4.0-regwrite/source/lib/registry/registry.h	2007-08-04 18:16:25 UTC (rev 24219)
+++ branches/4.0-regwrite/source/lib/registry/registry.h	2007-08-04 18:16:33 UTC (rev 24220)
@@ -192,8 +192,6 @@
 
 _PUBLIC_ WERROR reg_open_wine(struct registry_context **ctx, const char *path);
 
-_PUBLIC_ int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, 
-							  uint32_t **hkeys);
 _PUBLIC_ const char *reg_get_predef_name(uint32_t hkey);
 _PUBLIC_ WERROR reg_get_predefined_key_by_name(struct registry_context *ctx, 
 											   const char *name, 
@@ -251,4 +249,9 @@
 WERROR reg_load_key(struct registry_context *ctx, struct registry_key *key, 
 					const char *name, const char *filename);
 
+WERROR reg_mount_hive(struct registry_context *rctx, 
+					  struct hive_key *hive_key,
+					  uint32_t key_id,
+					  const char **elements);
+
 #endif /* _REGISTRY_H */

Modified: branches/4.0-regwrite/source/lib/registry/tests/generic.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/tests/generic.c	2007-08-04 18:16:25 UTC (rev 24219)
+++ branches/4.0-regwrite/source/lib/registry/tests/generic.c	2007-08-04 18:16:33 UTC (rev 24220)
@@ -27,6 +27,7 @@
 #include "librpc/gen_ndr/winreg.h"
 
 struct torture_suite *torture_registry_hive(TALLOC_CTX *mem_ctx);
+struct torture_suite *torture_registry_registry(TALLOC_CTX *mem_ctx);
 
 static bool test_str_regtype(struct torture_context *ctx)
 {
@@ -109,6 +110,7 @@
 	torture_suite_add_simple_test(suite, "reg_val_description null", test_reg_val_description_nullname);
 
 	torture_suite_add_suite(suite, torture_registry_hive(mem_ctx));
+	torture_suite_add_suite(suite, torture_registry_registry(mem_ctx));
 
 	return suite;
 }

Modified: branches/4.0-regwrite/source/lib/registry/tests/registry.c
===================================================================
--- branches/4.0-regwrite/source/lib/registry/tests/registry.c	2007-08-04 18:16:25 UTC (rev 24219)
+++ branches/4.0-regwrite/source/lib/registry/tests/registry.c	2007-08-04 18:16:33 UTC (rev 24220)
@@ -27,6 +27,9 @@
 #include "librpc/gen_ndr/winreg.h"
 #include "system/filesys.h"
 
+NTSTATUS torture_temp_dir(TALLOC_CTX *mem_ctx, const char *prefix, 
+								   const char **tempdir);
+
 static bool test_get_predefined(struct torture_context *tctx,
 								const void *_data)
 {
@@ -45,13 +48,34 @@
 {
 	struct registry_context *rctx;
 	WERROR error;
+	const char *tempdir;
+	NTSTATUS status;
+	struct hive_key *hive_key;
 
 	error = reg_open_local(tctx, &rctx, NULL, NULL);
 	if (!W_ERROR_IS_OK(error)) {
 		return false;
 	}
 
-	/* FIXME */
+	status = torture_temp_dir(tctx, "registry-local", &tempdir);
+	if (!NT_STATUS_IS_OK(status)) {
+		return false;
+	}
+
+	error = reg_open_ldb_file(tctx, 
+					  talloc_asprintf(tctx, "%s/classes_root.ldb", tempdir),
+					  NULL,
+					  NULL,
+					  &hive_key);
+	if (!W_ERROR_IS_OK(error)) {
+		return false;
+	}
+
+	error = reg_mount_hive(rctx, hive_key, HKEY_CLASSES_ROOT, NULL);
+	if (!W_ERROR_IS_OK(error)) {
+		return false;
+	}
+
 	return true;
 }
 



More information about the samba-cvs mailing list