The branch, v3-6-test has been updated
       via  29db913 s3-amend: Don't overwrite existing values
      from  4f9a0a0 s3-selftest: move all skipped test to skiplist.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 29db91386cf2e639e7fa5dd683427e71a27cb7cd
Author: Volker Lendecke <[email protected]>
Date:   Tue Feb 15 18:16:43 2011 +0100

    s3-amend: Don't overwrite existing values
    
    This saves a ton of tdb transactions on smbd startup
    
    Andreas, Günther, please check!
    (cherry picked from commit f56432c348d0243b43a8cce42c0a438902854272)

-----------------------------------------------------------------------

Summary of changes:
 source3/registry/reg_api.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c
index acce7ab..7c2e01d 100644
--- a/source3/registry/reg_api.c
+++ b/source3/registry/reg_api.c
@@ -659,6 +659,7 @@ done:
 WERROR reg_setvalue(struct registry_key *key, const char *name,
                    const struct registry_value *val)
 {
+       struct regval_blob *existing;
        WERROR err;
        int res;
 
@@ -670,6 +671,15 @@ WERROR reg_setvalue(struct registry_key *key, const char 
*name,
                return err;
        }
 
+       existing = regval_ctr_getvalue(key->values, name);
+
+       if ((existing != NULL) &&
+           (regval_size(existing) == val->data.length) &&
+           (memcmp(regval_data_p(existing), val->data.data,
+                   val->data.length) == 0)) {
+               return WERR_OK;
+       }
+
        res = regval_ctr_addvalue(key->values, name, val->type,
                                  val->data.data, val->data.length);
 


-- 
Samba Shared Repository

Reply via email to