Re: [PATCH 1/2] relative_path should honor dos_drive_prefix
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:58:44
Johannes Sixt [off-list ref] writes:
Am 12.09.2013 16:13, schrieb Torsten Bögershausen:quoted
On 2013-09-12 11.12, Jiang Xin wrote:quoted
+static int have_same_root(const char *path1, const char *path2) +{ + int is_abs1, is_abs2; + + is_abs1 = is_absolute_path(path1); + is_abs2 = is_absolute_path(path2); + return (is_abs1 && is_abs2 && !strncasecmp(path1, path2, 1)) ||^^^^^^^^^^^ I wonder: should strncasecmp() be replaced with strncmp_icase() ?I don't think so: On POSIX, it is irrelevant, because the call will only compare a slash to a slash. On Windows, it compares the drive letters (or a slash); it is *always* case-insensitive, even if the volume mounted is NTFS with case-sensitivity enabled and core.ignorecase is false.
Ah, you are right, of course. We could even do tolower(path1[0]) == tolower(path2[0]) which might be more explicit. For systems that need POSIX escape hatch for Apollo Domain ;-), we would need a bit more work. When both path1 and path2 begin with a double-dash, we would need to check if they match up to the next slash, so that - //host1/usr/src and //host1/usr/lib share the same root and the former can be made to ../src relative to the latter; - //host1/usr/src and //host2/usr/lib are of separate roots. or something.