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

Michael Adam ma at sernet.de
Sun Dec 23 03:17:38 GMT 2007


Hi Günther,

I have started some restructuring of the conf part of the libnet
library you started. My reasoning ist that the functions that
should be exported, are the functions that reflect the api of
the current "net conf" command line tool. The whole registry
stuff should be hidden from callers.

So I have also taken such logic from your libnet_join code and
replaced it by calls to the correspoinding libnet_conf functions.
Now there is no "registry_key" any more in libnet_join. :-)

I will carry on like this, until all logic of utils/net_conf.c
is in libnet/libnet_conf.c.
Currently, there are still quite some d_printfs in libnet_conf.c
that should of course vanish. But as of now these functions are
only called from gui or command line tools if I am  not mistaken,
so this should not be too bad now, if it is fixed soon.

Cheers, Michael

Michael Adam wrote:
> 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


-- 
Michael Adam <ma at sernet.de>
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.SerNet.DE, mailto: Info @ SerNet.DE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 206 bytes
Desc: not available
Url : http://lists.samba.org/archive/samba-technical/attachments/20071223/4a219ec7/attachment.bin


More information about the samba-technical mailing list