win32: override fspathcmp() with a directory separator-aware version
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>
This commit is contained in:
committed by
Junio C Hamano
parent
ce68178a0a
commit
193eda7507
@@ -506,6 +506,14 @@ static inline int git_offset_1st_component(const char *path)
|
||||
#define offset_1st_component git_offset_1st_component
|
||||
#endif
|
||||
|
||||
#ifndef fspathcmp
|
||||
#define fspathcmp git_fspathcmp
|
||||
#endif
|
||||
|
||||
#ifndef fspathncmp
|
||||
#define fspathncmp git_fspathncmp
|
||||
#endif
|
||||
|
||||
#ifndef is_valid_path
|
||||
#define is_valid_path(path) 1
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user