dir: convert directory_exists_in_index to take index
Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Brandon Williams
					Brandon Williams
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							6f52b741a7
						
					
				
				
					commit
					ae520e3675
				
			
							
								
								
									
										22
									
								
								dir.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								dir.c
									
									
									
									
									
								
							| @ -1264,14 +1264,15 @@ enum exist_status { | |||||||
|  * the directory name; instead, use the case insensitive |  * the directory name; instead, use the case insensitive | ||||||
|  * directory hash. |  * directory hash. | ||||||
|  */ |  */ | ||||||
| static enum exist_status directory_exists_in_index_icase(const char *dirname, int len) | static enum exist_status directory_exists_in_index_icase(struct index_state *istate, | ||||||
|  | 							 const char *dirname, int len) | ||||||
| { | { | ||||||
| 	struct cache_entry *ce; | 	struct cache_entry *ce; | ||||||
|  |  | ||||||
| 	if (index_dir_exists(&the_index, dirname, len)) | 	if (index_dir_exists(istate, dirname, len)) | ||||||
| 		return index_directory; | 		return index_directory; | ||||||
|  |  | ||||||
| 	ce = index_file_exists(&the_index, dirname, len, ignore_case); | 	ce = index_file_exists(istate, dirname, len, ignore_case); | ||||||
| 	if (ce && S_ISGITLINK(ce->ce_mode)) | 	if (ce && S_ISGITLINK(ce->ce_mode)) | ||||||
| 		return index_gitdir; | 		return index_gitdir; | ||||||
|  |  | ||||||
| @ -1285,18 +1286,19 @@ static enum exist_status directory_exists_in_index_icase(const char *dirname, in | |||||||
|  * the files it contains) will sort with the '/' at the |  * the files it contains) will sort with the '/' at the | ||||||
|  * end. |  * end. | ||||||
|  */ |  */ | ||||||
| static enum exist_status directory_exists_in_index(const char *dirname, int len) | static enum exist_status directory_exists_in_index(struct index_state *istate, | ||||||
|  | 						   const char *dirname, int len) | ||||||
| { | { | ||||||
| 	int pos; | 	int pos; | ||||||
|  |  | ||||||
| 	if (ignore_case) | 	if (ignore_case) | ||||||
| 		return directory_exists_in_index_icase(dirname, len); | 		return directory_exists_in_index_icase(istate, dirname, len); | ||||||
|  |  | ||||||
| 	pos = index_name_pos(&the_index, dirname, len); | 	pos = index_name_pos(istate, dirname, len); | ||||||
| 	if (pos < 0) | 	if (pos < 0) | ||||||
| 		pos = -pos-1; | 		pos = -pos-1; | ||||||
| 	while (pos < the_index.cache_nr) { | 	while (pos < istate->cache_nr) { | ||||||
| 		const struct cache_entry *ce = the_index.cache[pos++]; | 		const struct cache_entry *ce = istate->cache[pos++]; | ||||||
| 		unsigned char endchar; | 		unsigned char endchar; | ||||||
|  |  | ||||||
| 		if (strncmp(ce->name, dirname, len)) | 		if (strncmp(ce->name, dirname, len)) | ||||||
| @ -1351,7 +1353,7 @@ static enum path_treatment treat_directory(struct dir_struct *dir, | |||||||
| 	const struct pathspec *pathspec) | 	const struct pathspec *pathspec) | ||||||
| { | { | ||||||
| 	/* The "len-1" is to strip the final '/' */ | 	/* The "len-1" is to strip the final '/' */ | ||||||
| 	switch (directory_exists_in_index(dirname, len-1)) { | 	switch (directory_exists_in_index(&the_index, dirname, len-1)) { | ||||||
| 	case index_directory: | 	case index_directory: | ||||||
| 		return path_recurse; | 		return path_recurse; | ||||||
|  |  | ||||||
| @ -1554,7 +1556,7 @@ static enum path_treatment treat_one_path(struct dir_struct *dir, | |||||||
| 	if ((dir->flags & DIR_COLLECT_KILLED_ONLY) && | 	if ((dir->flags & DIR_COLLECT_KILLED_ONLY) && | ||||||
| 	    (dtype == DT_DIR) && | 	    (dtype == DT_DIR) && | ||||||
| 	    !has_path_in_index && | 	    !has_path_in_index && | ||||||
| 	    (directory_exists_in_index(path->buf, path->len) == index_nonexistent)) | 	    (directory_exists_in_index(&the_index, path->buf, path->len) == index_nonexistent)) | ||||||
| 		return path_none; | 		return path_none; | ||||||
|  |  | ||||||
| 	exclude = is_excluded(dir, path->buf, &dtype); | 	exclude = is_excluded(dir, path->buf, &dtype); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user