pathspec: create parse_short_magic function
Factor out the logic responsible for parsing short magic into its own function. Signed-off-by: Brandon Williams <bmwill@google.com> Reviewed-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									db7e85988f
								
							
						
					
					
						commit
						b4bebdce83
					
				
							
								
								
									
										54
									
								
								pathspec.c
								
								
								
								
							
							
						
						
									
										54
									
								
								pathspec.c
								
								
								
								
							|  | @ -156,6 +156,41 @@ static int get_global_magic(int element_magic) | |||
| 	return global_magic; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Parse the pathspec element looking for short magic | ||||
|  * | ||||
|  * saves all magic in 'magic' | ||||
|  * returns the position in 'elem' after all magic has been parsed | ||||
|  */ | ||||
| static const char *parse_short_magic(unsigned *magic, const char *elem) | ||||
| { | ||||
| 	const char *pos; | ||||
|  | ||||
| 	for (pos = elem + 1; *pos && *pos != ':'; pos++) { | ||||
| 		char ch = *pos; | ||||
| 		int i; | ||||
|  | ||||
| 		if (!is_pathspec_magic(ch)) | ||||
| 			break; | ||||
|  | ||||
| 		for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++) { | ||||
| 			if (pathspec_magic[i].mnemonic == ch) { | ||||
| 				*magic |= pathspec_magic[i].bit; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if (ARRAY_SIZE(pathspec_magic) <= i) | ||||
| 			die(_("Unimplemented pathspec magic '%c' in '%s'"), | ||||
| 			    ch, elem); | ||||
| 	} | ||||
|  | ||||
| 	if (*pos == ':') | ||||
| 		pos++; | ||||
|  | ||||
| 	return pos; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Take an element of a pathspec and check for magic signatures. | ||||
|  * Append the result to the prefix. Return the magic bitmap. | ||||
|  | @ -220,24 +255,7 @@ static unsigned prefix_pathspec(struct pathspec_item *item, unsigned flags, | |||
| 		copyfrom++; | ||||
| 	} else { | ||||
| 		/* shorthand */ | ||||
| 		for (copyfrom = elt + 1; | ||||
| 		     *copyfrom && *copyfrom != ':'; | ||||
| 		     copyfrom++) { | ||||
| 			char ch = *copyfrom; | ||||
|  | ||||
| 			if (!is_pathspec_magic(ch)) | ||||
| 				break; | ||||
| 			for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++) | ||||
| 				if (pathspec_magic[i].mnemonic == ch) { | ||||
| 					element_magic |= pathspec_magic[i].bit; | ||||
| 					break; | ||||
| 				} | ||||
| 			if (ARRAY_SIZE(pathspec_magic) <= i) | ||||
| 				die(_("Unimplemented pathspec magic '%c' in '%s'"), | ||||
| 				    ch, elt); | ||||
| 		} | ||||
| 		if (*copyfrom == ':') | ||||
| 			copyfrom++; | ||||
| 		copyfrom = parse_short_magic(&element_magic, elt); | ||||
| 	} | ||||
|  | ||||
| 	magic |= element_magic; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Brandon Williams
						Brandon Williams