Rev 5321: delete key (or global directives, respectively),
before importing parameters from input file in
http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/
Michael Adam
ma at sernet.de
Mon Apr 2 14:20:30 GMT 2007
At http://samba.sernet.de/ma/bzr/SAMBA_3_0-registry.bzr/
------------------------------------------------------------
revno: 5321
revision-id: ma at sernet.de-20070402142027-aac781ee0bfba5e9
parent: ma at sernet.de-20070402135453-499ab678aad8a949
committer: Michael Adam <ma at sernet.de>
branch nick: SAMBA_3_0-registry.bzr
timestamp: Mon 2007-04-02 16:20:27 +0200
message:
delete key (or global directives, respectively), before importing parameters from input file
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 13:54:53 +0000
+++ b/source/utils/net_conf.c 2007-04-02 14:20:27 +0000
@@ -259,6 +259,44 @@
return werr;
}
+static WERROR delete_globals(TALLOC_CTX *ctx)
+{
+ WERROR werr = WERR_OK;
+ struct registry_key *key;
+ uint32 idx = 0;
+ struct registry_value *valvalue = NULL;
+ char *valname = NULL;
+
+ werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_WRITE,
+ get_root_nt_token(), &key);
+ if (!W_ERROR_IS_OK(werr)) {
+ goto done;
+ }
+
+ for (idx = 0;
+ W_ERROR_IS_OK(werr = reg_enumvalue(ctx, key, idx, &valname,
+ &valvalue));
+ idx++)
+ {
+ DEBUG(3, ("deleting global parameter %s", valname));
+ werr = reg_deletevalue(key, valname);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_fprintf(stderr, "Error deleting value '%s': %s.\n",
+ valname, dos_errstr(werr));
+ goto done;
+ }
+ }
+ if (!W_ERROR_EQUAL(WERR_NO_MORE_ITEMS, werr)) {
+ d_fprintf(stderr, "Error enumerating values: %s\n",
+ dos_errstr(werr));
+ goto done;
+ }
+ werr = WERR_OK;
+
+done:
+ return werr;
+}
+
static WERROR list_values(TALLOC_CTX *ctx, struct registry_key *key)
{
WERROR werr = WERR_OK;
@@ -304,6 +342,13 @@
}
else {
if (share->service == GLOBAL_SECTION_SNUM) {
+ werr = delete_globals(ctx);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_fprintf(stderr,
+ "Error deleting globals: %s\n",
+ dos_errstr(werr));
+ goto done;
+ }
werr = reg_open_path(ctx, KEY_SMBCONF, REG_KEY_WRITE,
get_root_nt_token(), &key);
if (!W_ERROR_IS_OK(werr)) {
@@ -314,6 +359,10 @@
}
}
else {
+ werr = reg_delkey_internal(ctx, servicename);
+ if (!W_ERROR_IS_OK(werr)) {
+ goto done;
+ }
werr = reg_createkey_internal(ctx, servicename, &key);
if (!W_ERROR_IS_OK(werr)) {
goto done;
More information about the samba-cvs
mailing list