[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-863-g0e7f215

Michael Adam obnox at samba.org
Sun Dec 23 03:11:13 GMT 2007


The branch, v3-2-test has been updated
       via  0e7f215f54c68b2d40f65f90ed11c41e1a7ef5ed (commit)
       via  fa844866493ee270f31faa3eca77cdff16b26301 (commit)
       via  b9f22adfd3e67046b7d786b5b338e078b4cdc6df (commit)
       via  60f49b22b5aa125ff6cb358a258a1be99c378d7a (commit)
       via  7cb51a1d6d95704225d9ab22e88cc76fa910d38c (commit)
       via  81b9f1301d61f05f9153be61d62c13e82cecf7e2 (commit)
       via  415fc0a5261f4d941027e5d5305fcea882724aef (commit)
       via  0cff79e3552e91ba0b6bc054802d28afcf4e8da4 (commit)
       via  ba71c6844588f0342589163f514385911e7331e7 (commit)
       via  8cf8ed9de8c3f41588fa93bd102f61f5b8b493c4 (commit)
      from  120048d2f40cf1a0ace2ecde205cbc694d263d69 (commit)

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


- Log -----------------------------------------------------------------
commit 0e7f215f54c68b2d40f65f90ed11c41e1a7ef5ed
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 04:10:15 2007 +0100

    Rename libnet_reg_createkey_internal() to libnet_smbconf_reg_createkey_internal().
    
    Michael

commit fa844866493ee270f31faa3eca77cdff16b26301
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:52:00 2007 +0100

    Make libnet_smbconf_set_global_param() call libnet_smbconf_setparm().
    
    This not only removes duplicate logic, but also the use of
    libnet_smbconf_reg_setvalue_internal() instead of do_modify_val_config()
    which is removed, does add important tests and canonicalizations.
    
    Michael

commit b9f22adfd3e67046b7d786b5b338e078b4cdc6df
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:47:16 2007 +0100

    Reorder libnet_conf.c some, adding "section" comments.
    
    Michael

commit 60f49b22b5aa125ff6cb358a258a1be99c378d7a
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:41:55 2007 +0100

    Move net_conf_setparm() to libnet_conf.c
    
    renaming it to libnet_smbconf_setparm()
    
    Michael

commit 7cb51a1d6d95704225d9ab22e88cc76fa910d38c
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:34:36 2007 +0100

    Move reg_setvalue_internal() to libnet_conf.c
    
    renaming it to libnet_smbconf_setvalue_internal()
    
    Michael

commit 81b9f1301d61f05f9153be61d62c13e82cecf7e2
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:13:30 2007 +0100

    Remove occurrences of registry_key from libnet_join.c
    
    Replace duplicated logic by calls of libnet_smbconf_set_global_param()
    from libnet_conf.c, pushing logic from do_JoinConfig() and do_UnjoinConfig()
    to do_join_modify_vals_config() and do_unjoin_modify_vals_config()
    respectively.
    
    Only the net_conf api functions should be exported by libnet_conf.c, not
    the lower level registry access functions.
    
    Michael

commit 415fc0a5261f4d941027e5d5305fcea882724aef
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 03:02:19 2007 +0100

    Replace direct deletion of registry value by use of libnet_smbconf_delparm().
    
    Michael

commit 0cff79e3552e91ba0b6bc054802d28afcf4e8da4
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 02:55:25 2007 +0100

    Move logic of net_smbconf_delparm() to libnet/libnet_conf.c
    
    Logic in new function libnet_smbconf_delparm().
    
    Michael

commit ba71c6844588f0342589163f514385911e7331e7
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 02:44:29 2007 +0100

    Move smbconf_value_exists() to libnet/net_conf.c
    
    renaming it to libnet_smbconf_value_exists().
    
    Michael

commit 8cf8ed9de8c3f41588fa93bd102f61f5b8b493c4
Author: Michael Adam <obnox at samba.org>
Date:   Sun Dec 23 01:43:13 2007 +0100

    Make libnet_smbconf_open_path_q() static.
    
    Michael

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

Summary of changes:
 source/libnet/libnet_conf.c |  176 +++++++++++++++++++++++++++++++++++-------
 source/libnet/libnet_join.c |   84 +++++----------------
 source/utils/net_conf.c     |  136 ++++-----------------------------
 3 files changed, 181 insertions(+), 215 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libnet/libnet_conf.c b/source/libnet/libnet_conf.c
index 8bc5161..69a105f 100644
--- a/source/libnet/libnet_conf.c
+++ b/source/libnet/libnet_conf.c
@@ -20,13 +20,21 @@
 
 #include "includes.h"
 
+/**********************************************************************
+ *
+ * Helper functions (mostly registry related)
+ * TODO: These should be eventually static.
+
+ **********************************************************************/
+
 /*
  * Open a subkey of KEY_SMBCONF (i.e a service)
  * - variant without error output (q = quiet)-
  */
-WERROR libnet_smbconf_open_path_q(TALLOC_CTX *ctx, const char *subkeyname,
-				  uint32 desired_access,
-				  struct registry_key **key)
+static WERROR libnet_smbconf_open_path_q(TALLOC_CTX *ctx,
+					 const char *subkeyname,
+					 uint32 desired_access,
+					 struct registry_key **key)
 {
 	WERROR werr = WERR_OK;
 	char *path = NULL;
@@ -76,6 +84,23 @@ done:
 	return ret;
 }
 
+static bool libnet_smbconf_value_exists(TALLOC_CTX *ctx,
+					struct registry_key *key,
+					const char *param)
+{
+	bool ret = False;
+	WERROR werr = WERR_OK;
+	struct registry_value *value = NULL;
+
+	werr = reg_queryvalue(ctx, key, param, &value);
+	if (W_ERROR_IS_OK(werr)) {
+		ret = True;
+	}
+
+	TALLOC_FREE(value);
+	return ret;
+}
+
 /*
  * Open a subkey of KEY_SMBCONF (i.e a service)
  * - variant with error output -
@@ -109,9 +134,9 @@ WERROR libnet_smbconf_open_basepath(TALLOC_CTX *ctx, uint32 desired_access,
 /*
  * create a subkey of KEY_SMBCONF
  */
-WERROR libnet_reg_createkey_internal(TALLOC_CTX *ctx,
-				     const char * subkeyname,
-				     struct registry_key **newkey)
+WERROR libnet_smbconf_reg_createkey_internal(TALLOC_CTX *ctx,
+					     const char * subkeyname,
+					     struct registry_key **newkey)
 {
 	WERROR werr = WERR_OK;
 	struct registry_key *create_parent = NULL;
@@ -147,49 +172,140 @@ done:
 	return werr;
 }
 
-static WERROR do_modify_val_config(struct registry_key *key,
-				   const char *val_name,
-				   const char *val_data)
+/*
+ * add a value to a key.
+ */
+WERROR libnet_smbconf_reg_setvalue_internal(struct registry_key *key,
+						   const char *valname,
+						   const char *valstr)
 {
 	struct registry_value val;
+	WERROR werr = WERR_OK;
+	char *subkeyname;
+	const char *canon_valname;
+	const char *canon_valstr;
+
+	if (!lp_canonicalize_parameter_with_value(valname, valstr,
+						  &canon_valname,
+						  &canon_valstr))
+	{
+		if (canon_valname == NULL) {
+			d_fprintf(stderr, "invalid parameter '%s' given\n",
+				  valname);
+		} else {
+			d_fprintf(stderr, "invalid value '%s' given for "
+				  "parameter '%s'\n", valstr, valname);
+		}
+		werr = WERR_INVALID_PARAM;
+		goto done;
+	}
 
 	ZERO_STRUCT(val);
 
 	val.type = REG_SZ;
-	val.v.sz.str = CONST_DISCARD(char *, val_data);
-	val.v.sz.len = strlen(val_data) + 1;
+	val.v.sz.str = CONST_DISCARD(char *, canon_valstr);
+	val.v.sz.len = strlen(canon_valstr) + 1;
+
+	if (registry_smbconf_valname_forbidden(canon_valname)) {
+		d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
+			  canon_valname);
+		werr = WERR_INVALID_PARAM;
+		goto done;
+	}
+
+	subkeyname = strrchr_m(key->key->name, '\\');
+	if ((subkeyname == NULL) || (*(subkeyname +1) == '\0')) {
+		d_fprintf(stderr, "Invalid registry key '%s' given as "
+			  "smbconf section.\n", key->key->name);
+		werr = WERR_INVALID_PARAM;
+		goto done;
+	}
+	subkeyname++;
+	if (!strequal(subkeyname, GLOBAL_NAME) &&
+	    lp_parameter_is_global(valname))
+	{
+		d_fprintf(stderr, "Global paramter '%s' not allowed in "
+			  "service definition ('%s').\n", canon_valname,
+			  subkeyname);
+		werr = WERR_INVALID_PARAM;
+		goto done;
+	}
+
+	werr = reg_setvalue(key, canon_valname, &val);
+	if (!W_ERROR_IS_OK(werr)) {
+		d_fprintf(stderr,
+			  "Error adding value '%s' to "
+			  "key '%s': %s\n",
+			  canon_valname, key->key->name, dos_errstr(werr));
+	}
 
-	return reg_setvalue(key, val_name, &val);
+done:
+	return werr;
 }
 
-WERROR libnet_smbconf_set_global_param(TALLOC_CTX *mem_ctx,
-				       const char *param,
-				       const char *val)
+/**********************************************************************
+ *
+ * The actual net conf api functions, that are exported.
+ *
+ **********************************************************************/
+
+WERROR libnet_smbconf_setparm(TALLOC_CTX *mem_ctx,
+			      const char *service,
+			      const char *param,
+			      const char *valstr)
 {
 	WERROR werr;
 	struct registry_key *key = NULL;
 
-	if (!lp_include_registry_globals()) {
-		return WERR_NOT_SUPPORTED;
+	if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+		werr = libnet_smbconf_reg_createkey_internal(mem_ctx, service,
+							     &key);
+	} else {
+		werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_WRITE,
+						&key);
 	}
+	W_ERROR_NOT_OK_RETURN(werr);
 
-	if (!registry_init_regdb()) {
-		return WERR_REG_IO_FAILURE;
-	}
+	werr = libnet_smbconf_reg_setvalue_internal(key, param, valstr);
 
-	if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
-		werr = libnet_reg_createkey_internal(mem_ctx,
-						     GLOBAL_NAME, &key);
-	} else {
-		werr = libnet_smbconf_open_path(mem_ctx,
-						GLOBAL_NAME,
-						REG_KEY_WRITE, &key);
+	return werr;
+}
+
+WERROR libnet_smbconf_delparm(TALLOC_CTX *mem_ctx,
+			      const char *service,
+			      const char *param)
+{
+	struct registry_key *key = NULL;
+	WERROR werr = WERR_OK;
+
+	if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+		return WERR_NO_SUCH_SERVICE;
 	}
 
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
+	werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_READ, &key);
+	W_ERROR_NOT_OK_RETURN(werr);
+
+	if (!libnet_smbconf_value_exists(mem_ctx, key, param)) {
+		return WERR_INVALID_PARAM;
 	}
 
-	return do_modify_val_config(key, param, val);
+	werr = reg_deletevalue(key, param);
+	W_ERROR_NOT_OK_RETURN(werr);
+
+	return WERR_OK;
+}
+
+
+/**********************************************************************
+ *
+ * Convenience functions, that are also exportet.
+ *
+ **********************************************************************/
+
+WERROR libnet_smbconf_set_global_param(TALLOC_CTX *mem_ctx,
+				       const char *param,
+				       const char *val)
+{
+	return libnet_smbconf_setparm(mem_ctx, GLOBAL_NAME, param, val);
 }
 
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index 2994c3f..68244e5 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -331,35 +331,20 @@ done:
 	return status;
 }
 
-static WERROR do_modify_val_config(struct registry_key *key,
-				   const char *val_name,
-				   const char *val_data)
-{
-	struct registry_value val;
-
-	ZERO_STRUCT(val);
-
-	val.type = REG_SZ;
-	val.v.sz.str = CONST_DISCARD(char *, val_data);
-	val.v.sz.len = strlen(val_data) + 1;
-
-	return reg_setvalue(key, val_name, &val);
-}
-
 static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
-					 struct libnet_JoinCtx *r,
-					 struct registry_key *key)
+					 struct libnet_JoinCtx *r)
 {
 	WERROR werr;
 	bool is_ad = false;
 
 	if (!(r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE)) {
 
-		werr = do_modify_val_config(key, "security", "user");
+		werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+						       "user");
 		W_ERROR_NOT_OK_RETURN(werr);
 
-		werr = do_modify_val_config(key, "workgroup",
-					    r->in.domain_name);
+		werr = libnet_smbconf_set_global_param(mem_ctx, "workgroup",
+						       r->in.domain_name);
 		return werr;
 	}
 
@@ -367,19 +352,20 @@ static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
 		is_ad = true;
 	}
 
-	werr = do_modify_val_config(key, "security", "domain");
+	werr = libnet_smbconf_set_global_param(mem_ctx, "security", "domain");
 	W_ERROR_NOT_OK_RETURN(werr);
 
-	werr = do_modify_val_config(key, "workgroup",
-				    r->out.netbios_domain_name);
+	werr = libnet_smbconf_set_global_param(mem_ctx, "workgroup",
+					       r->out.netbios_domain_name);
 	W_ERROR_NOT_OK_RETURN(werr);
 
 	if (is_ad) {
-		werr = do_modify_val_config(key, "security", "ads");
+		werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+						       "ads");
 		W_ERROR_NOT_OK_RETURN(werr);
 
-		werr = do_modify_val_config(key, "realm",
-					    r->out.dns_domain_name);
+		werr = libnet_smbconf_set_global_param(mem_ctx, "realm",
+						       r->out.dns_domain_name);
 		W_ERROR_NOT_OK_RETURN(werr);
 	}
 
@@ -387,18 +373,18 @@ static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
 }
 
 static WERROR do_unjoin_modify_vals_config(TALLOC_CTX *mem_ctx,
-					   struct libnet_UnjoinCtx *r,
-					   struct registry_key *key)
+					   struct libnet_UnjoinCtx *r)
 {
 	WERROR werr = WERR_OK;
 
 	if (r->in.unjoin_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE) {
 
-		werr = do_modify_val_config(key, "security", "user");
+		werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+						       "user");
 		W_ERROR_NOT_OK_RETURN(werr);
 	}
 
-	reg_deletevalue(key, "realm");
+	werr = libnet_smbconf_delparm(mem_ctx, "GLOBAL", "realm");
 
 	return werr;
 }
@@ -408,7 +394,6 @@ static WERROR do_JoinConfig(TALLOC_CTX *mem_ctx,
 			    struct libnet_JoinCtx *r)
 {
 	WERROR werr;
-	struct registry_key *key = NULL;
 
 	if (!W_ERROR_IS_OK(r->out.result)) {
 		return r->out.result;
@@ -418,23 +403,7 @@ static WERROR do_JoinConfig(TALLOC_CTX *mem_ctx,
 		return WERR_OK;
 	}
 
-	if (!registry_init_regdb()) {
-		return WERR_REG_IO_FAILURE;
-	}
-
-	if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
-		werr = libnet_reg_createkey_internal(mem_ctx,
-						     GLOBAL_NAME, &key);
-	} else {
-		werr = libnet_smbconf_open_path(mem_ctx,
-						GLOBAL_NAME,
-						REG_KEY_WRITE, &key);
-	}
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	werr = do_join_modify_vals_config(mem_ctx, r, key);
+	werr = do_join_modify_vals_config(mem_ctx, r);
 	if (!W_ERROR_IS_OK(werr)) {
 		return werr;
 	}
@@ -449,7 +418,6 @@ static WERROR do_UnjoinConfig(TALLOC_CTX *mem_ctx,
 			      struct libnet_UnjoinCtx *r)
 {
 	WERROR werr;
-	struct registry_key *key = NULL;
 
 	if (!W_ERROR_IS_OK(r->out.result)) {
 		return r->out.result;
@@ -459,23 +427,7 @@ static WERROR do_UnjoinConfig(TALLOC_CTX *mem_ctx,
 		return WERR_OK;
 	}
 
-	if (!registry_init_regdb()) {
-		return WERR_REG_IO_FAILURE;
-	}
-
-	if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
-		werr = libnet_reg_createkey_internal(mem_ctx,
-						     GLOBAL_NAME, &key);
-	} else {
-		werr = libnet_smbconf_open_path(mem_ctx,
-						GLOBAL_NAME,
-						REG_KEY_WRITE, &key);
-	}
-	if (!W_ERROR_IS_OK(werr)) {
-		return werr;
-	}
-
-	werr = do_unjoin_modify_vals_config(mem_ctx, r, key);
+	werr = do_unjoin_modify_vals_config(mem_ctx, r);
 	if (!W_ERROR_IS_OK(werr)) {
 		return werr;
 	}
diff --git a/source/utils/net_conf.c b/source/utils/net_conf.c
index 808ba8d..673d373 100644
--- a/source/utils/net_conf.c
+++ b/source/utils/net_conf.c
@@ -144,77 +144,6 @@ static char *format_value(TALLOC_CTX *mem_ctx, struct registry_value *value)
 }
 
 /*
- * add a value to a key.
- */
-static WERROR reg_setvalue_internal(struct registry_key *key,
-				    const char *valname,
-				    const char *valstr)
-{
-	struct registry_value val;
-	WERROR werr = WERR_OK;
-	char *subkeyname;
-	const char *canon_valname;
-	const char *canon_valstr;
-
-	if (!lp_canonicalize_parameter_with_value(valname, valstr,
-						  &canon_valname,
-						  &canon_valstr))
-	{
-		if (canon_valname == NULL) {
-			d_fprintf(stderr, "invalid parameter '%s' given\n",
-			  	  valname);
-		} else {
-			d_fprintf(stderr, "invalid value '%s' given for "
-				  "parameter '%s'\n", valstr, valname);
-		}
-		werr = WERR_INVALID_PARAM;
-		goto done;
-	}
-
-	ZERO_STRUCT(val);
-
-	val.type = REG_SZ;
-	val.v.sz.str = CONST_DISCARD(char *, canon_valstr);
-	val.v.sz.len = strlen(canon_valstr) + 1;
-
-	if (registry_smbconf_valname_forbidden(canon_valname)) {
-		d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
-			  canon_valname);
-		werr = WERR_INVALID_PARAM;
-		goto done;
-	}
-
-	subkeyname = strrchr_m(key->key->name, '\\');
-	if ((subkeyname == NULL) || (*(subkeyname +1) == '\0')) {
-		d_fprintf(stderr, "Invalid registry key '%s' given as "
-			  "smbconf section.\n", key->key->name);
-		werr = WERR_INVALID_PARAM;
-		goto done;
-	}
-	subkeyname++;
-	if (!strequal(subkeyname, GLOBAL_NAME) &&
-	    lp_parameter_is_global(valname))
-	{
-		d_fprintf(stderr, "Global paramter '%s' not allowed in "
-			  "service definition ('%s').\n", canon_valname,
-			  subkeyname);
-		werr = WERR_INVALID_PARAM;
-		goto done;
-	}
-
-	werr = reg_setvalue(key, canon_valname, &val);
-	if (!W_ERROR_IS_OK(werr)) {
-		d_fprintf(stderr,
-			  "Error adding value '%s' to "
-			  "key '%s': %s\n",
-			  canon_valname, key->key->name, dos_errstr(werr));
-	}
-
-done:
-	return werr;
-}
-
-/*
  * delete a subkey of KEY_SMBCONF
  */
 static WERROR reg_delkey_internal(TALLOC_CTX *ctx, const char *keyname)
@@ -238,22 +167,6 @@ done:
 	return werr;
 }
 
-static bool smbconf_value_exists(TALLOC_CTX *ctx, struct registry_key *key,
-				 const char *param)
-{
-	bool ret = False;
-	WERROR werr = WERR_OK;
-	struct registry_value *value = NULL;
-
-	werr = reg_queryvalue(ctx, key, param, &value);
-	if (W_ERROR_IS_OK(werr)) {
-		ret = True;
-	}
-
-	TALLOC_FREE(value);
-	return ret;
-}
-
 static WERROR list_values(TALLOC_CTX *ctx, struct registry_key *key)
 {
 	WERROR werr = WERR_OK;
@@ -433,7 +346,7 @@ static int import_process_service(TALLOC_CTX *ctx,
 				goto done;
 			}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list