[SCM] Samba Shared Repository - branch v3-6-test updated
Michael Adam
obnox at samba.org
Thu Oct 28 15:34:27 MDT 2010
The branch, v3-6-test has been updated
via 6e7e7bb s3:registry: move regio.h from include/ to registry/
via 5727944 s3:registry: move the reg_db.h from include/ to registry/
via 70204f6 s3:registry: move prototype from reg_init_smbconf.c to its own header.
via a74b734 s3:registry: move prototype from reg_init_full.c to its own header.
via f0599af s3:registry: move prototypes from reg_init_basic.c to their own header.
via a64095c s3:registry: move reg_api_regf prototypes to their own header file.
via 378f481 s3:registry: move the reg_api prototypes to their own header.
via 9fcf1f0 s3:registry:reg_api: update (C)
via e45d0b7 s3:services_db: convert get_common_service_dispname() to talloc
via 020df4a s3:registry: regfio fix the build
via cca1ae4 s3:registry: remove now (finally) obsolete reg_util_registry.{c,h}
via 4260ef9 s3:services_db: does not need legacy registry code any more.
via 798e847 s3:services_db: rewrite svcctl_init_keys() to use reg_api calls instead of legacy
via 2f6ee60 s3:services_db: extract core of svcctl_set_secdesc to _internal version
via 08146db s3:services_db: create the "Security" subkey if it does not exist in svcctl_set_secdesc()
via 9407bbd s3:services_db: remove bogus comments
via f573c8a s3:services_db: remove unused legacy function svcctl_fetch_regvalues().
via 7d62c97 s3:rpc_server:ntsvcs: registry is not directly used an more.
via ad4d9a2 s3:rpc_server:ntsvcs: use svcctl_lookup_dispname instead of legacy svcctl in _PNP_GetDeviceRegProp
via 94d448d s3:rpc_server: registry is not direclty used in the svcctl server any more
via 0019d2c s3:srv_ntsvcs_nt: make fill_svc_config() use svcctl_get_string_value()
via 02c1ed2 s3:services_db: publish svcctl_get_string_value()
via 89255c0 s3:services_db: factor out common code of lookup_dispname and lookup_description
via c4b1f96 s3:services_db: change svcctl_lookup_description() to use reg_api functions
via e5c2593 s3:services_db: rewrite svcctl_lookup_description() to use a tmp talloc ctx
via 74b9ec1 s3:services_db: change svcctl_lookup_dispname() to use reg_api functions
via c671942 s3:services_db: make svcctl_lookup_dispname() use a temp talloc ctx
via 5e9df32 s3:services_db: change svcctl_get_secdesc() to use reg_api functions
via c05cf4c s3:services_db: use temp talloc ctx in svcctl_get_secdesc()
via 525bc57 s3:services_db: remove the TALLOC_CTX argument from svcctl_set_secdesc
via 3b03e66 s3:services_db: fix a debug message
via 3a2de89 s3:services_db: rewrite svcctl_set_secdesc to use tmp talloc ctx
via 275f5bf s3:services_db: rewrite svcctl_set_secdesc() using reg_api calls instead of legacy
via fa7abb8 s3:services_db: untanlge assignments from check in read_init_file().
via 97a9e13 s3:services_db: untangle assignments from check in construct_service_sd().
via 8f23cc8 s3:registry: move prototypes of unused hilvl functions to ret_api_util.h and comment them out
via 77fdb9c s3:registry: move (commented out) hilvl util functions to reg_api_util.c
via c299a3c s3:registry: move higher level function reg_open_path to new module reg_api_util
from 0e8b6f2 s3: Streamline regdb_normalize_keynames_fn a bit
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test
- Log -----------------------------------------------------------------
commit 6e7e7bbcf8ebbb742e52f9001b19db785c640f2e
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 09:08:33 2010 +0200
s3:registry: move regio.h from include/ to registry/
commit 57279442344edc6d9c42edd6f77627ee47f03550
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:53:49 2010 +0200
s3:registry: move the reg_db.h from include/ to registry/
commit 70204f6d24275e02b90ec1d13facd6476a02504d
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:50:54 2010 +0200
s3:registry: move prototype from reg_init_smbconf.c to its own header.
commit a74b73447dc49619a71904c4cadcc5a9b4e4082f
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:45:06 2010 +0200
s3:registry: move prototype from reg_init_full.c to its own header.
commit f0599afe42087766e7c7e571f3e1e849fce1772f
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:37:14 2010 +0200
s3:registry: move prototypes from reg_init_basic.c to their own header.
commit a64095c309de4cd0a251baf1cabdfa3594d4c436
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:23:20 2010 +0200
s3:registry: move reg_api_regf prototypes to their own header file.
These two calls are currently only used in the WINREG rpc server.
And this reqires linking in the regfio code.
commit 378f481962cea8899dee1b9167a634d7905f0b93
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 08:11:18 2010 +0200
s3:registry: move the reg_api prototypes to their own header.
commit 9fcf1f03309bcfcdced1e58f91e5f8c969681254
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 07:44:56 2010 +0200
s3:registry:reg_api: update (C)
commit e45d0b760dd7c12e13e6a76e3635915d233b1764
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 07:40:36 2010 +0200
s3:services_db: convert get_common_service_dispname() to talloc
commit 020df4a141e3ab28a943e2c03943f17fc520b18a
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 07:40:13 2010 +0200
s3:registry: regfio fix the build
commit cca1ae44b3749d7a7f5cd3b2a1f259061fb90e36
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 06:51:38 2010 +0200
s3:registry: remove now (finally) obsolete reg_util_registry.{c,h}
commit 4260ef920edabbfead16a2f2bdd531385e920192
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 06:49:40 2010 +0200
s3:services_db: does not need legacy registry code any more.
commit 798e84780e2e7fe470b8f6f97ed0c8e04122e5ee
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 06:48:19 2010 +0200
s3:services_db: rewrite svcctl_init_keys() to use reg_api calls instead of legacy
commit 2f6ee6007e20cab5b84f7fad2137c7725fd1a00a
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 03:11:43 2010 +0200
s3:services_db: extract core of svcctl_set_secdesc to _internal version
The internal version operates on an already opened key.
commit 08146db06993ec0718f15b36e3aac9d8c4568cb6
Author: Michael Adam <obnox at samba.org>
Date: Tue Sep 21 03:00:29 2010 +0200
s3:services_db: create the "Security" subkey if it does not exist in svcctl_set_secdesc()
Windows behaves like this. - Tests will follow.
commit 9407bbd2c82d809b183fafad7aa6daef711029b9
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 11:24:36 2010 +0200
s3:services_db: remove bogus comments
(from copy and paste probably...)
commit f573c8ae6d2e393a6565f099c1d564a136af5884
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 11:20:37 2010 +0200
s3:services_db: remove unused legacy function svcctl_fetch_regvalues().
commit 7d62c974664e4e7dca80095a94263e52adf6abe8
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 11:18:33 2010 +0200
s3:rpc_server:ntsvcs: registry is not directly used an more.
commit ad4d9a24edf87a408a3217b616db81aaf63b29fa
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 11:17:38 2010 +0200
s3:rpc_server:ntsvcs: use svcctl_lookup_dispname instead of legacy svcctl in _PNP_GetDeviceRegProp
commit 94d448dbf4d8ce33d51348afb5d27ecaded38c53
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 10:57:53 2010 +0200
s3:rpc_server: registry is not direclty used in the svcctl server any more
commit 0019d2c32c710804d21c8aa33a9524371336e689
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 10:30:30 2010 +0200
s3:srv_ntsvcs_nt: make fill_svc_config() use svcctl_get_string_value()
instead of using legacy svcctl_fetch_regvalues()
commit 02c1ed2cac15a2ce2f566b7617641da4ec8679e6
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 10:27:56 2010 +0200
s3:services_db: publish svcctl_get_string_value()
commit 89255c085ca23f942c4f88316f0726e7d6dcfbbf
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 08:06:30 2010 +0200
s3:services_db: factor out common code of lookup_dispname and lookup_description
into a new function svcctl_get_string_value()
commit c4b1f960d11007e6bd1ddd1795d7aed6aec00bda
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 06:19:57 2010 +0200
s3:services_db: change svcctl_lookup_description() to use reg_api functions
commit e5c2593abbb7944ae068383efb648a0c0d9ba720
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 06:03:58 2010 +0200
s3:services_db: rewrite svcctl_lookup_description() to use a tmp talloc ctx
Also remove a possible memory by tallocing the result string
also in a default case, where a string constant was returned before.
commit 74b9ec1f8b621db55919baa0866707bdd982e757
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 08:11:07 2010 +0200
s3:services_db: change svcctl_lookup_dispname() to use reg_api functions
commit c6719429100ded65bf35cd3ad9deb6a9c8a7ad52
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 04:58:27 2010 +0200
s3:services_db: make svcctl_lookup_dispname() use a temp talloc ctx
commit 5e9df32643ce79cd521cfda2b0d7b87e23f5e029
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 04:41:59 2010 +0200
s3:services_db: change svcctl_get_secdesc() to use reg_api functions
commit c05cf4cd495636dcd78b23e5aaecf1945a7e0eb8
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 04:12:42 2010 +0200
s3:services_db: use temp talloc ctx in svcctl_get_secdesc()
commit 525bc5715fd10db445d3cb6f76ec517b507259a6
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 03:38:45 2010 +0200
s3:services_db: remove the TALLOC_CTX argument from svcctl_set_secdesc
commit 3b03e6633ed9442b07df5a4063a6417756f6f76c
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 03:36:23 2010 +0200
s3:services_db: fix a debug message
commit 3a2de89e7c51109533554784e2b3ebfd1ad5b952
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 03:34:49 2010 +0200
s3:services_db: rewrite svcctl_set_secdesc to use tmp talloc ctx
and add a common exit point
commit 275f5bf73852b8c21d66195a7f629e148022e37d
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 02:43:33 2010 +0200
s3:services_db: rewrite svcctl_set_secdesc() using reg_api calls instead of legacy
commit fa7abb86f2d7efd633646e7df86ac00c51e11996
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 00:46:59 2010 +0200
s3:services_db: untanlge assignments from check in read_init_file().
commit 97a9e13b4aa637f1eeaa57ca350aa00c420e709d
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 00:40:44 2010 +0200
s3:services_db: untangle assignments from check in construct_service_sd().
commit 8f23cc8a2a33fae0d7048bf1a2abd2ca4a1874b1
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 19:32:28 2010 +0200
s3:registry: move prototypes of unused hilvl functions to ret_api_util.h and comment them out
commit 77fdb9c020c412e4cc39ff1886b6a491e5eee10a
Author: Michael Adam <obnox at samba.org>
Date: Mon Sep 20 19:30:58 2010 +0200
s3:registry: move (commented out) hilvl util functions to reg_api_util.c
commit c299a3ca3de2bb8c13fc968de9f136714b2754ae
Author: Michael Adam <obnox at samba.org>
Date: Thu Oct 28 23:10:50 2010 +0200
s3:registry: move higher level function reg_open_path to new module reg_api_util
The reg_api.c code should just export functions that direclty relate to winreg
api calls.
-----------------------------------------------------------------------
Summary of changes:
libgpo/gpext/gpext.c | 1 +
source3/Makefile.in | 4 +-
source3/include/proto.h | 7 +-
source3/include/regfio.h | 225 ------------
source3/include/registry.h | 76 ----
source3/lib/smbconf/smbconf_reg.c | 3 +
source3/libgpo/gpo_reg.c | 3 +
source3/registry/reg_api.c | 157 +---------
source3/registry/reg_api.h | 72 ++++
source3/registry/reg_api_regf.c | 1 +
source3/registry/reg_api_regf.h | 35 ++
source3/registry/reg_api_util.c | 182 ++++++++++
source3/registry/reg_api_util.h | 46 +++
source3/{include => registry}/reg_db.h | 0
source3/registry/reg_init_basic.c | 1 +
source3/registry/reg_init_basic.h | 26 ++
source3/registry/reg_init_full.c | 2 +
source3/registry/reg_init_full.h | 27 ++
source3/registry/reg_init_smbconf.c | 2 +
source3/registry/reg_init_smbconf.h | 27 ++
source3/registry/reg_util_legacy.c | 51 ---
source3/registry/reg_util_legacy.h | 45 ---
source3/registry/regfio.h | 226 ++++++++++++
source3/rpc_server/srv_eventlog_nt.c | 2 +
source3/rpc_server/srv_ntsvcs_nt.c | 32 +-
source3/rpc_server/srv_svcctl_nt.c | 31 +--
source3/rpc_server/srv_winreg_nt.c | 2 +
source3/services/services_db.c | 588 +++++++++++++++-----------------
source3/smbd/server.c | 1 +
source3/utils/net_registry.c | 2 +
source3/utils/net_rpc_registry.c | 2 +-
source3/utils/profiles.c | 2 +-
32 files changed, 969 insertions(+), 912 deletions(-)
delete mode 100644 source3/include/regfio.h
create mode 100644 source3/registry/reg_api.h
create mode 100644 source3/registry/reg_api_regf.h
create mode 100644 source3/registry/reg_api_util.c
create mode 100644 source3/registry/reg_api_util.h
rename source3/{include => registry}/reg_db.h (100%)
create mode 100644 source3/registry/reg_init_basic.h
create mode 100644 source3/registry/reg_init_full.h
create mode 100644 source3/registry/reg_init_smbconf.h
delete mode 100644 source3/registry/reg_util_legacy.c
delete mode 100644 source3/registry/reg_util_legacy.h
create mode 100644 source3/registry/regfio.h
Changeset truncated at 500 lines:
diff --git a/libgpo/gpext/gpext.c b/libgpo/gpext/gpext.c
index 9a09337..4dbf6fb 100644
--- a/libgpo/gpext/gpext.c
+++ b/libgpo/gpext/gpext.c
@@ -25,6 +25,7 @@
#if _SAMBA_BUILD_ == 3
#include "libgpo/gpo_proto.h"
#include "registry.h"
+#include "registry/reg_api.h"
#endif
static struct gp_extension *extensions = NULL;
diff --git a/source3/Makefile.in b/source3/Makefile.in
index d44bd6f..bbf3200 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -646,6 +646,7 @@ REG_BASE_OBJ = registry/reg_api.o \
REG_SMBCONF_OBJ = $(REG_BASE_OBJ) \
registry/reg_util_token.o \
+ registry/reg_api_util.o \
$(REG_BACKENDS_SMBCONF_OBJ) \
$(REG_INIT_SMBCONF_OBJ)
@@ -654,8 +655,7 @@ REG_FULL_OBJ = $(REG_SMBCONF_OBJ) \
$(REG_INIT_FULL_OBJ) \
registry/reg_eventlog.o \
registry/reg_perfcount.o \
- librpc/gen_ndr/ndr_perfcount.o \
- registry/reg_util_legacy.o
+ librpc/gen_ndr/ndr_perfcount.o
LIB_EVENTLOG_OBJ = lib/eventlog/eventlog.o
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f7f751c..4f38e1d 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4418,10 +4418,13 @@ bool init_service_op_table( void );
void svcctl_init_keys( void );
struct security_descriptor *svcctl_get_secdesc( TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
-bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, struct security_descriptor *sec_desc, NT_USER_TOKEN *token );
+bool svcctl_set_secdesc(const char *name, struct security_descriptor *sec_desc,
+ NT_USER_TOKEN *token );
+const char *svcctl_get_string_value(TALLOC_CTX *ctx, const char *key_name,
+ const char *value_name,
+ NT_USER_TOKEN *token);
const char *svcctl_lookup_dispname(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
const char *svcctl_lookup_description(TALLOC_CTX *ctx, const char *name, NT_USER_TOKEN *token );
-struct regval_ctr *svcctl_fetch_regvalues( const char *name, NT_USER_TOKEN *token );
/* The following definitions come from services/svc_netlogon.c */
diff --git a/source3/include/regfio.h b/source3/include/regfio.h
deleted file mode 100644
index f2d952b..0000000
--- a/source3/include/regfio.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * Windows NT registry I/O library
- * Copyright (c) Gerald (Jerry) Carter 2005
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-/************************************************************
- * Most of this information was obtained from
- * http://www.wednesday.demon.co.uk/dosreg.html
- * Thanks Nigel!
- ***********************************************************/
-
-#include "registry/reg_parse_prs.h"
-
-#ifndef _REGFIO_H
-#define _REGFIO_H
-
-struct regsubkey_ctr;
-
-/* Macros */
-
-#define REGF_BLOCKSIZE 0x1000
-#define REGF_ALLOC_BLOCK 0x1000
-
-/* header sizes for various records */
-
-#define REGF_HDR_SIZE 4
-#define HBIN_HDR_SIZE 4
-#define HBIN_HEADER_REC_SIZE 0x24
-#define REC_HDR_SIZE 2
-
-#define REGF_OFFSET_NONE 0xffffffff
-
-/* Flags for the vk records */
-
-#define VK_FLAG_NAME_PRESENT 0x0001
-#define VK_DATA_IN_OFFSET 0x80000000
-
-/* NK record macros */
-
-#define NK_TYPE_LINKKEY 0x0010
-#define NK_TYPE_NORMALKEY 0x0020
-#define NK_TYPE_ROOTKEY 0x002c
-
-#define HBIN_STORE_REF(x, y) { x->hbin = y; y->ref_count++ };
-#define HBIN_REMOVE_REF(x, y) { x->hbin = NULL; y->ref_count-- /* if the count == 0; we can clean up */ };
-
-
-/* HBIN block */
-struct regf_hbin;
-typedef struct regf_hbin {
- struct regf_hbin *prev, *next;
- uint32 file_off; /* my offset in the registry file */
- uint32 free_off; /* offset to free space within the hbin record */
- uint32 free_size; /* amount of data left in the block */
- int ref_count; /* how many active records are pointing to this block (not used currently) */
-
- char header[HBIN_HDR_SIZE]; /* "hbin" */
- uint32 first_hbin_off; /* offset from first hbin block */
- uint32 block_size; /* block size of this blockually a multiple of 4096Kb) */
-
- prs_struct ps; /* data */
-
- bool dirty; /* has this hbin block been modified? */
-} REGF_HBIN;
-
-/* ??? List -- list of key offsets and hashed names for consistency */
-
-typedef struct {
- uint32 nk_off;
- uint8 keycheck[sizeof(uint32)];
- char *fullname;
-} REGF_HASH_REC;
-
-typedef struct {
- REGF_HBIN *hbin; /* pointer to HBIN record (in memory) containing this nk record */
- uint32 hbin_off; /* offset from beginning of this hbin block */
- uint32 rec_size; /* ((start_offset - end_offset) & 0xfffffff8) */
-
- char header[REC_HDR_SIZE];
- uint16 num_keys;
- REGF_HASH_REC *hashes;
-} REGF_LF_REC;
-
-/* Key Value */
-
-typedef struct {
- REGF_HBIN *hbin; /* pointer to HBIN record (in memory) containing this nk record */
- uint32 hbin_off; /* offset from beginning of this hbin block */
- uint32 rec_size; /* ((start_offset - end_offset) & 0xfffffff8) */
- uint32 rec_off; /* offset stored in the value list */
-
- char header[REC_HDR_SIZE];
- char *valuename;
- uint32 data_size;
- uint32 data_off;
- uint8 *data;
- uint32 type;
- uint16 flag;
-} REGF_VK_REC;
-
-
-/* Key Security */
-struct _regf_sk_rec;
-
-typedef struct _regf_sk_rec {
- struct _regf_sk_rec *next, *prev;
- REGF_HBIN *hbin; /* pointer to HBIN record (in memory) containing this nk record */
- uint32 hbin_off; /* offset from beginning of this hbin block */
- uint32 rec_size; /* ((start_offset - end_offset) & 0xfffffff8) */
-
- uint32 sk_off; /* offset parsed from NK record used as a key
- to lookup reference to this SK record */
-
- char header[REC_HDR_SIZE];
- uint32 prev_sk_off;
- uint32 next_sk_off;
- uint32 ref_count;
- uint32 size;
- struct security_descriptor *sec_desc;
-} REGF_SK_REC;
-
-/* Key Name */
-
-typedef struct {
- REGF_HBIN *hbin; /* pointer to HBIN record (in memory) containing this nk record */
- uint32 hbin_off; /* offset from beginning of this hbin block */
- uint32 subkey_index; /* index to next subkey record to return */
- uint32 rec_size; /* ((start_offset - end_offset) & 0xfffffff8) */
-
- /* header information */
-
- char header[REC_HDR_SIZE];
- uint16 key_type;
- NTTIME mtime;
- uint32 parent_off; /* back pointer in registry hive */
- uint32 classname_off;
- char *classname;
- char *keyname;
-
- /* max lengths */
-
- uint32 max_bytes_subkeyname; /* max subkey name * 2 */
- uint32 max_bytes_subkeyclassname; /* max subkey classname length (as if) */
- uint32 max_bytes_valuename; /* max valuename * 2 */
- uint32 max_bytes_value; /* max value data size */
-
- /* unknowns */
-
- uint32 unk_index; /* nigel says run time index ? */
-
- /* children */
-
- uint32 num_subkeys;
- uint32 subkeys_off; /* hash records that point to NK records */
- uint32 num_values;
- uint32 values_off; /* value lists which point to VK records */
- uint32 sk_off; /* offset to SK record */
-
- /* link in the other records here */
-
- REGF_LF_REC subkeys;
- REGF_VK_REC *values;
- REGF_SK_REC *sec_desc;
-
-} REGF_NK_REC;
-
-/* REGF block */
-
-typedef struct {
- /* run time information */
-
- int fd; /* file descriptor */
- int open_flags; /* flags passed to the open() call */
- TALLOC_CTX *mem_ctx; /* memory context for run-time file access information */
- REGF_HBIN *block_list; /* list of open hbin blocks */
-
- /* file format information */
-
- char header[REGF_HDR_SIZE]; /* "regf" */
- uint32 data_offset; /* offset to record in the first (or any?) hbin block */
- uint32 last_block; /* offset to last hbin block in file */
- uint32 checksum; /* XOR of bytes 0x0000 - 0x01FB */
- NTTIME mtime;
-
- REGF_SK_REC *sec_desc_list; /* list of security descriptors referenced by NK records */
-
- /* unknowns used to simply writing */
-
- uint32 unknown1;
- uint32 unknown2;
- uint32 unknown3;
- uint32 unknown4;
- uint32 unknown5;
- uint32 unknown6;
-
-} REGF_FILE;
-
-/* Function Declarations */
-
-REGF_FILE* regfio_open( const char *filename, int flags, int mode );
-int regfio_close( REGF_FILE *r );
-
-REGF_NK_REC* regfio_rootkey( REGF_FILE *file );
-REGF_NK_REC* regfio_fetch_subkey( REGF_FILE *file, REGF_NK_REC *nk );
-REGF_NK_REC* regfio_write_key ( REGF_FILE *file, const char *name,
- struct regval_ctr *values, struct regsubkey_ctr *subkeys,
- struct security_descriptor *sec_desc, REGF_NK_REC *parent );
-
-
-#endif /* _REGFIO_H */
-
diff --git a/source3/include/registry.h b/source3/include/registry.h
index 7543ffb..975b00a 100644
--- a/source3/include/registry.h
+++ b/source3/include/registry.h
@@ -129,80 +129,4 @@ struct registry_key {
#define REG_KEY_HKPD 1
#define REG_KEY_HKPT 2
-
-/* The following definitions come from registry/reg_api.c */
-
-WERROR reg_openhive(TALLOC_CTX *mem_ctx, const char *hive,
- uint32 desired_access,
- const struct nt_user_token *token,
- struct registry_key **pkey);
-WERROR reg_openkey(TALLOC_CTX *mem_ctx, struct registry_key *parent,
- const char *name, uint32 desired_access,
- struct registry_key **pkey);
-WERROR reg_enumkey(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **name, NTTIME *last_write_time);
-WERROR reg_enumvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- uint32 idx, char **pname, struct registry_value **pval);
-WERROR reg_queryvalue(TALLOC_CTX *mem_ctx, struct registry_key *key,
- const char *name, struct registry_value **pval);
-WERROR reg_querymultiplevalues(TALLOC_CTX *mem_ctx,
- struct registry_key *key,
- uint32_t num_names,
- const char **names,
- uint32_t *pnum_vals,
- struct registry_value **pvals);
-WERROR reg_queryinfokey(struct registry_key *key, uint32_t *num_subkeys,
- uint32_t *max_subkeylen, uint32_t *max_subkeysize,
- uint32_t *num_values, uint32_t *max_valnamelen,
- uint32_t *max_valbufsize, uint32_t *secdescsize,
- NTTIME *last_changed_time);
-WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent,
- const char *subkeypath, uint32 desired_access,
- struct registry_key **pkey,
- enum winreg_CreateAction *paction);
-WERROR reg_deletekey(struct registry_key *parent, const char *path);
-WERROR reg_setvalue(struct registry_key *key, const char *name,
- const struct registry_value *val);
-WERROR reg_deletevalue(struct registry_key *key, const char *name);
-WERROR reg_getkeysecurity(TALLOC_CTX *mem_ctx, struct registry_key *key,
- struct security_descriptor **psecdesc);
-WERROR reg_setkeysecurity(struct registry_key *key,
- struct security_descriptor *psecdesc);
-WERROR reg_getversion(uint32_t *version);
-WERROR reg_deleteallvalues(struct registry_key *key);
-WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access, const struct nt_user_token *token,
- struct registry_key **pkey);
-WERROR reg_deletekey_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
- const char *path);
-WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
- struct registry_key *parent,
- const char *path);
-WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access,
- const struct nt_user_token *token,
- enum winreg_CreateAction *paction,
- struct registry_key **pkey);
-WERROR reg_delete_path(const struct nt_user_token *token,
- const char *orig_path);
-
-/* The following definitions come from registry/reg_api_regf.c */
-
-WERROR reg_restorekey(struct registry_key *key, const char *fname);
-WERROR reg_savekey(struct registry_key *key, const char *fname);
-
-/* The following definitions come from registry/reg_init_basic.c */
-
-WERROR registry_init_common(void);
-WERROR registry_init_basic(void);
-
-/* The following definitions come from registry/reg_init_full.c */
-
-WERROR registry_init_full(void);
-
-/* The following definitions come from registry/reg_init_smbconf.c */
-
-WERROR registry_init_smbconf(const char *keyname);
-
#endif /* _REGISTRY_H */
diff --git a/source3/lib/smbconf/smbconf_reg.c b/source3/lib/smbconf/smbconf_reg.c
index 08d559b..8ae6d5a 100644
--- a/source3/lib/smbconf/smbconf_reg.c
+++ b/source3/lib/smbconf/smbconf_reg.c
@@ -20,8 +20,11 @@
#include "includes.h"
#include "lib/smbconf/smbconf_private.h"
#include "registry.h"
+#include "registry/reg_api.h"
#include "registry/reg_backend_db.h"
#include "registry/reg_util_token.h"
+#include "registry/reg_api_util.h"
+#include "registry/reg_init_smbconf.h"
#include "lib/smbconf/smbconf_init.h"
#include "lib/smbconf/smbconf_reg.h"
diff --git a/source3/libgpo/gpo_reg.c b/source3/libgpo/gpo_reg.c
index 5b56ecd..e5bc643 100644
--- a/source3/libgpo/gpo_reg.c
+++ b/source3/libgpo/gpo_reg.c
@@ -21,7 +21,10 @@
#include "../libgpo/gpo.h"
#include "libgpo/gpo_proto.h"
#include "registry.h"
+#include "registry/reg_api.h"
#include "registry/reg_backend_db.h"
+#include "registry/reg_api_util.h"
+#include "registry/reg_init_basic.h"
/****************************************************************
diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c
index 7a6f10c..743e139 100644
--- a/source3/registry/reg_api.c
+++ b/source3/registry/reg_api.c
@@ -2,7 +2,7 @@
* Unix SMB/CIFS implementation.
* Virtual Windows Registry Layer
* Copyright (C) Volker Lendecke 2006
- * Copyright (C) Michael Adam 2007-2008
+ * Copyright (C) Michael Adam 2007-2010
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -64,6 +64,7 @@
#include "includes.h"
#include "registry.h"
+#include "reg_api.h"
#include "reg_cachehook.h"
#include "reg_util_internal.h"
#include "reg_backend_db.h"
@@ -779,62 +780,6 @@ WERROR reg_deleteallvalues(struct registry_key *key)
}
/*
- * Utility function to open a complete registry path including the hive prefix.
- */
-
-WERROR reg_open_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access, const struct nt_user_token *token,
- struct registry_key **pkey)
-{
- struct registry_key *hive, *key;
- char *path, *p;
- WERROR err;
-
- if (!(path = SMB_STRDUP(orig_path))) {
- return WERR_NOMEM;
- }
-
- p = strchr(path, '\\');
-
- if ((p == NULL) || (p[1] == '\0')) {
- /*
- * No key behind the hive, just return the hive
- */
-
- err = reg_openhive(mem_ctx, path, desired_access, token,
- &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
- }
- SAFE_FREE(path);
- *pkey = hive;
- return WERR_OK;
- }
-
- *p = '\0';
-
- err = reg_openhive(mem_ctx, path, KEY_ENUMERATE_SUB_KEYS, token,
- &hive);
- if (!W_ERROR_IS_OK(err)) {
- SAFE_FREE(path);
- return err;
- }
-
- err = reg_openkey(mem_ctx, hive, p+1, desired_access, &key);
-
- TALLOC_FREE(hive);
- SAFE_FREE(path);
-
- if (!W_ERROR_IS_OK(err)) {
- return err;
- }
-
- *pkey = key;
- return WERR_OK;
-}
-
-/*
* Utility function to delete a registry key with all its subkeys.
* Note that reg_deletekey returns ACCESS_DENIED when called on a
* key that has subkeys.
@@ -940,101 +885,3 @@ WERROR reg_deletesubkeys_recursive(TALLOC_CTX *ctx,
return reg_deletekey_recursive_trans(ctx, parent, path, false);
}
-#if 0
-/* these two functions are unused. */
-
-/**
- * Utility function to create a registry key without opening the hive
- * before. Assumes the hive already exists.
- */
-
-WERROR reg_create_path(TALLOC_CTX *mem_ctx, const char *orig_path,
- uint32 desired_access,
- const struct nt_user_token *token,
--
Samba Shared Repository
More information about the samba-cvs
mailing list