]> git.ipfire.org Git - thirdparty/git.git/commit
win32: override `fspathcmp()` with a directory separator-aware version
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 13 Jul 2024 21:08:20 +0000 (21:08 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sat, 13 Jul 2024 23:23:36 +0000 (16:23 -0700)
commit193eda7507d0ccb2fe6fd42b403c56ecc205e546
tree78c49fc2f26f9fe7f04bf84222c0aa36b3d60af6
parentce68178a0ae222b71fe5f89f05dc7113267c079b
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>
compat/win32/path-utils.c
compat/win32/path-utils.h
dir.c
dir.h
git-compat-util.h