config: extract function to parse config pairs
The function `git_config_parse_parameter` is responsible for parsing a `foo.bar=baz`-formatted configuration key, sanitizing the key and then processing it via the given callback function. Given that we're about to add a second user which is going to process keys which already has keys and values separated, this commit extracts a function `config_parse_pair` which only does the sanitization and processing part as a preparatory step. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Patrick Steinhardt
					Patrick Steinhardt
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							13c44953fb
						
					
				
				
					commit
					b342ae61b3
				
			
							
								
								
									
										24
									
								
								config.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								config.c
									
									
									
									
									
								
							| @ -462,11 +462,26 @@ int git_config_key_is_valid(const char *key) | ||||
| 	return !git_config_parse_key_1(key, NULL, NULL, 1); | ||||
| } | ||||
|  | ||||
| static int config_parse_pair(const char *key, const char *value, | ||||
| 			  config_fn_t fn, void *data) | ||||
| { | ||||
| 	char *canonical_name; | ||||
| 	int ret; | ||||
|  | ||||
| 	if (!strlen(key)) | ||||
| 		return error(_("empty config key")); | ||||
| 	if (git_config_parse_key(key, &canonical_name, NULL)) | ||||
| 		return -1; | ||||
|  | ||||
| 	ret = (fn(canonical_name, value, data) < 0) ? -1 : 0; | ||||
| 	free(canonical_name); | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| int git_config_parse_parameter(const char *text, | ||||
| 			       config_fn_t fn, void *data) | ||||
| { | ||||
| 	const char *value; | ||||
| 	char *canonical_name; | ||||
| 	struct strbuf **pair; | ||||
| 	int ret; | ||||
|  | ||||
| @ -487,12 +502,7 @@ int git_config_parse_parameter(const char *text, | ||||
| 		return error(_("bogus config parameter: %s"), text); | ||||
| 	} | ||||
|  | ||||
| 	if (git_config_parse_key(pair[0]->buf, &canonical_name, NULL)) { | ||||
| 		ret = -1; | ||||
| 	} else { | ||||
| 		ret = (fn(canonical_name, value, data) < 0) ? -1 : 0; | ||||
| 		free(canonical_name); | ||||
| 	} | ||||
| 	ret = config_parse_pair(pair[0]->buf, value, fn, data); | ||||
| 	strbuf_list_free(pair); | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user