From: "Torsten Bögershausen" <tboegi@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Jiang Xin" <worldhello.net@gmail.com>,
"Git List" <git@vger.kernel.org>, Tvangeste <i.4m.l33t@yandex.ru>,
"Johannes Sixt" <j6t@kdbg.org>,
"Karsten Blees" <karsten.blees@gmail.com>,
"Torsten Bögershausen" <tboegi@web.de>
Subject: Re: [PATCH v3 2/3] relative_path should honor DOS and UNC paths
Date: Wed, 18 Sep 2013 17:09:59 +0200 [thread overview]
Message-ID: <5239C247.4030909@web.de> (raw)
In-Reply-To: <5239BA98.9000205@gmail.com>
On 2013-09-18 16.37, Torsten Bögershausen wrote:
> On 2013-09-17 18.12, Junio C Hamano wrote:
>> Jiang Xin <worldhello.net@gmail.com> writes:
>>
>>> diff --git a/compat/mingw.h b/compat/mingw.h
>>> index bd0a88b..06e9f49 100644
>>> --- a/compat/mingw.h
>>> +++ b/compat/mingw.h
>>> @@ -311,6 +311,15 @@ int winansi_fprintf(FILE *stream, const char *format, ...) __attribute__((format
>>>
>>> #define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
>>> #define is_dir_sep(c) ((c) == '/' || (c) == '\\')
>>> +static inline int is_unc_path(const char *path)
>>> +{
>>> + if (!is_dir_sep(*path) || !is_dir_sep(*(path+1)) || is_dir_sep(*(path+2)))
>>> + return 0;
>>
>> If path[1] == '\0', it would be !is_dir_sep() and we end up
>> inspecting past the end of the string?
Yes
(If there was a previous mail, it was incomplete, sorry)
I think we want to catch "2 (back)slashes followed by a letter"
<http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx>
#define is_unc_path(path) ((is_dir_sep(path)[0]) && is_dir_sep((path)[1]) && isalpha((path[2])))
Then we need
#define is_relative_path(path) (((path)[0]) && !is_dir_sep((path)[1]))
And may be like this:
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);
if (is_abs1 && is_abs2) {
if (is_unc_path(path1) && !is_relative_path(path2))
return 0;
if (!is_relative_path(path1) && is_unc_path(path2))
return 0;
return tolower(path1[0]) == tolower(path2[0]);
} else {
return !is_abs1 && !is_abs2;
}
}
Could that work?
next prev parent reply other threads:[~2013-09-18 15:10 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-10 13:14 Regression in e02ca72: git svn rebase is broken on Windows Tvangeste
2013-09-10 16:13 ` Johannes Schindelin
2013-09-10 17:43 ` Tvangeste
2013-09-10 18:02 ` Johannes Schindelin
2013-09-10 20:53 ` Tvangeste
2013-09-10 16:52 ` Johannes Sixt
2013-09-10 17:44 ` Tvangeste
2013-09-10 17:06 ` Junio C Hamano
2013-09-10 22:17 ` Karsten Blees
2013-09-11 4:41 ` Jiang Xin
2013-09-11 3:19 ` Jiang Xin
2013-09-11 5:43 ` Johannes Sixt
2013-09-12 9:12 ` [PATCH 1/2] relative_path should honor dos_drive_prefix Jiang Xin
2013-09-12 9:32 ` Tvangeste
2013-09-12 14:13 ` Torsten Bögershausen
2013-09-12 15:48 ` Junio C Hamano
2013-09-12 17:22 ` Johannes Sixt
2013-09-12 19:11 ` Junio C Hamano
2013-09-13 4:55 ` Jiang Xin
2013-09-13 5:53 ` Junio C Hamano
2013-09-17 8:24 ` Jiang Xin
2013-09-17 8:30 ` [PATCH v3 1/3] test: use unambigous leading path (/foo) for mingw Jiang Xin
2013-09-17 8:30 ` [PATCH v3 2/3] relative_path should honor DOS and UNC paths Jiang Xin
2013-09-17 16:12 ` Junio C Hamano
2013-09-18 9:02 ` Jiang Xin
2013-09-18 16:00 ` Junio C Hamano
[not found] ` <5239BA98.9000205@gmail.com>
2013-09-18 15:09 ` Torsten Bögershausen [this message]
2013-09-17 8:30 ` [PATCH v3 3/3] Use simpler relative_path when set_git_dir Jiang Xin
2013-09-17 19:32 ` [PATCH 1/2] relative_path should honor dos_drive_prefix Johannes Sixt
2013-09-18 14:29 ` Torsten Bögershausen
2013-09-20 1:26 ` Jiang Xin
2013-09-20 2:38 ` [PATCH v4 0/3] relative path regression fix Jiang Xin
2013-09-20 2:38 ` [PATCH v4 1/3] test: use unambigous leading path (/foo) for mingw Jiang Xin
2013-10-10 20:32 ` Sebastian Schuberth
2013-10-14 1:33 ` Jiang Xin
2013-10-14 2:29 ` [PATCH v5 0/3] relative path regression fix Jiang Xin
2013-10-14 2:29 ` [PATCH v5 1/3] test: use unambigous leading path (/foo) for MSYS Jiang Xin
2013-10-14 6:50 ` Sebastian Schuberth
2013-10-14 19:40 ` Eric Sunshine
2013-10-14 2:29 ` [PATCH v5 2/3] relative_path should honor dos-drive-prefix Jiang Xin
2013-10-14 2:29 ` [PATCH v5 3/3] Use simpler relative_path when set_git_dir Jiang Xin
2013-09-20 2:38 ` [PATCH v4 2/3] relative_path should honor dos-driver-prefix Jiang Xin
2013-10-10 20:34 ` Sebastian Schuberth
2013-09-20 2:38 ` [PATCH v4 3/3] Use simpler relative_path when set_git_dir Jiang Xin
2013-09-13 13:59 ` [PATCH 1/2] relative_path should honor dos_drive_prefix Torsten Bögershausen
2013-09-12 15:45 ` Karsten Blees
2013-09-12 9:12 ` [PATCH 2/2] Use simpler relative_path when set_git_dir Jiang Xin
2013-09-12 17:36 ` Johannes Sixt
2013-09-13 5:08 ` [PATCH v2 0/3] fixes for relative_path Jiang Xin
2013-09-13 5:08 ` [PATCH v2 1/3] test: use unambigous leading path (/foo) for mingw Jiang Xin
2013-09-13 19:51 ` Junio C Hamano
2013-09-14 6:52 ` Torsten Bögershausen
2013-09-17 16:19 ` Junio C Hamano
2013-09-13 5:08 ` [PATCH v2 2/3] relative_path should honor dos_drive_prefix Jiang Xin
2013-09-14 6:11 ` Torsten Bögershausen
2013-09-13 5:08 ` [PATCH v2 3/3] Use simpler relative_path when set_git_dir Jiang Xin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5239C247.4030909@web.de \
--to=tboegi@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=i.4m.l33t@yandex.ru \
--cc=j6t@kdbg.org \
--cc=karsten.blees@gmail.com \
--cc=worldhello.net@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.