aboutsummaryrefslogtreecommitdiffstats
path: root/dir.h
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2024-07-13 21:08:20 +0000
committerJunio C Hamano <gitster@pobox.com>2024-07-13 16:23:36 -0700
commit193eda7507d0ccb2fe6fd42b403c56ecc205e546 (patch)
tree78c49fc2f26f9fe7f04bf84222c0aa36b3d60af6 /dir.h
parentce68178a0ae222b71fe5f89f05dc7113267c079b (diff)
downloadgit-193eda7507d0ccb2fe6fd42b403c56ecc205e546.tar.gz
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>
Diffstat (limited to 'dir.h')
-rw-r--r--dir.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/dir.h b/dir.h
index 69a76d8bdd..a3a2f00f5d 100644
--- a/dir.h
+++ b/dir.h
@@ -541,9 +541,9 @@ int remove_dir_recursively(struct strbuf *path, int flag);
*/
int remove_path(const char *path);
-int fspathcmp(const char *a, const char *b);
+int git_fspathcmp(const char *a, const char *b);
int fspatheq(const char *a, const char *b);
-int fspathncmp(const char *a, const char *b, size_t count);
+int git_fspathncmp(const char *a, const char *b, size_t count);
unsigned int fspathhash(const char *str);
/*