From 193eda7507d0ccb2fe6fd42b403c56ecc205e546 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 13 Jul 2024 21:08:20 +0000 Subject: 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 Signed-off-by: Junio C Hamano --- dir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index b7a6625ebd..5a23376bda 100644 --- a/dir.c +++ b/dir.c @@ -95,7 +95,7 @@ int count_slashes(const char *s) return cnt; } -int fspathcmp(const char *a, const char *b) +int git_fspathcmp(const char *a, const char *b) { return ignore_case ? strcasecmp(a, b) : strcmp(a, b); } @@ -105,7 +105,7 @@ int fspatheq(const char *a, const char *b) return !fspathcmp(a, b); } -int fspathncmp(const char *a, const char *b, size_t count) +int git_fspathncmp(const char *a, const char *b, size_t count) { return ignore_case ? strncasecmp(a, b, count) : strncmp(a, b, count); } -- cgit v1.3-5-g9baa