diff options
| -rw-r--r-- | repo-config.c | 50 | 
1 files changed, 26 insertions, 24 deletions
diff --git a/repo-config.c b/repo-config.c index 7e06d1a041..63eda1bb78 100644 --- a/repo-config.c +++ b/repo-config.c @@ -27,36 +27,38 @@ static int show_config(const char* key_, const char* value_)  {  	char value[256];  	const char *vptr = value; +	int dup_error = 0;  	if (value_ == NULL)  		value_ = ""; -	if ((use_key_regexp || !strcmp(key_, key)) && -			(!use_key_regexp || -			 !regexec(key_regexp, key_, 0, NULL, 0)) && -			(regexp == NULL || +	if (!use_key_regexp && strcmp(key_, key)) +		return 0; +	if (use_key_regexp && regexec(key_regexp, key_, 0, NULL, 0)) +		return 0; +	if (regexp != NULL &&  			 (do_not_match ^ -			  !regexec(regexp, value_, 0, NULL, 0)))) { -		int dup_error = 0; -		if (show_keys) -			printf("%s ", key_); -		if (seen && !do_all) -			dup_error = 1; -		if (type == T_INT) -			sprintf(value, "%d", git_config_int(key_, value_)); -		else if (type == T_BOOL) -			sprintf(value, "%s", git_config_bool(key_, value_) -					     ? "true" : "false"); -		else -			vptr = value_; -		seen++; -		if (dup_error) { -			error("More than one value for the key %s: %s", -			      key_, vptr); -		} -		else -			printf("%s\n", vptr); +			  regexec(regexp, value_, 0, NULL, 0))) +		return 0; + +	if (show_keys) +		printf("%s ", key_); +	if (seen && !do_all) +		dup_error = 1; +	if (type == T_INT) +		sprintf(value, "%d", git_config_int(key_, value_)); +	else if (type == T_BOOL) +		vptr = git_config_bool(key_, value_) ? "true" : "false"; +	else +		vptr = value_; +	seen++; +	if (dup_error) { +		error("More than one value for the key %s: %s", +				key_, vptr);  	} +	else +		printf("%s\n", vptr); +  	return 0;  }  | 
