 193eda7507
			
		
	
	193eda7507
	
	
	
		
			
			On Windows, the backslash is the directory separator, even if the forward slash can be used, too, at least since Windows NT. This means that the paths `a/b` and `a\b` are equivalent, and `fspathcmp()` needs to be made aware of that fact. Note that we have to override both `fspathcmp()` and `fspathncmp()`, and the former cannot be a mere pre-processor constant that transforms calls to `fspathcmp(a, b)` into `fspathncmp(a, b, (size_t)-1)` because the function `report_collided_checkout()` in `unpack-trees.c` wants to assign `list.cmp = fspathcmp`. Also note that `fspatheq()` does _not_ need to be overridden because it calls `fspathcmp()` internally. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef WIN32_PATH_UTILS_H
 | |
| #define WIN32_PATH_UTILS_H
 | |
| 
 | |
| int win32_has_dos_drive_prefix(const char *path);
 | |
| #define has_dos_drive_prefix win32_has_dos_drive_prefix
 | |
| 
 | |
| int win32_skip_dos_drive_prefix(char **path);
 | |
| #define skip_dos_drive_prefix win32_skip_dos_drive_prefix
 | |
| #define is_dir_sep is_xplatform_dir_sep
 | |
| static inline char *win32_find_last_dir_sep(const char *path)
 | |
| {
 | |
| 	char *ret = NULL;
 | |
| 	for (; *path; ++path)
 | |
| 		if (is_dir_sep(*path))
 | |
| 			ret = (char *)path;
 | |
| 	return ret;
 | |
| }
 | |
| #define find_last_dir_sep win32_find_last_dir_sep
 | |
| static inline int win32_has_dir_sep(const char *path)
 | |
| {
 | |
| 	/*
 | |
| 	 * See how long the non-separator part of the given path is, and
 | |
| 	 * if and only if it covers the whole path (i.e. path[len] is NUL),
 | |
| 	 * there is no separator in the path---otherwise there is a separator.
 | |
| 	 */
 | |
| 	size_t len = strcspn(path, "/\\");
 | |
| 	return !!path[len];
 | |
| }
 | |
| #define has_dir_sep(path) win32_has_dir_sep(path)
 | |
| int win32_offset_1st_component(const char *path);
 | |
| #define offset_1st_component win32_offset_1st_component
 | |
| int win32_fspathcmp(const char *a, const char *b);
 | |
| #define fspathcmp win32_fspathcmp
 | |
| int win32_fspathncmp(const char *a, const char *b, size_t count);
 | |
| #define fspathncmp win32_fspathncmp
 | |
| 
 | |
| #endif
 |