diff options
author | Johannes Sixt <johannes.sixt@telecom.at> | 2007-11-30 22:51:10 +0100 |
---|---|---|
committer | Johannes Sixt <johannes.sixt@telecom.at> | 2008-06-26 08:45:08 +0200 |
commit | be501813d25bedc1a441940f349fb91bd9fa4ef6 (patch) | |
tree | 7a4da16af830119e98fcd0ed52a5e3502d68bd30 | |
parent | 6ed807f8432c558ef102c94cb2e8ae4e03c48d4e (diff) | |
download | git-be501813d25bedc1a441940f349fb91bd9fa4ef6.tar.gz |
Windows: Disambiguate DOS style paths from SSH URLs.
If on Windows a path is specified as C:/path, then this is also a valid
SSH URL. To disambiguate between the two interpretations we take an URL
that looks like a path with a drive letter as a local URL.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
-rw-r--r-- | connect.c | 2 | ||||
-rw-r--r-- | transport.c | 3 |
2 files changed, 3 insertions, 2 deletions
@@ -529,7 +529,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig, end = host; path = strchr(end, c); - if (path) { + if (path && !has_dos_drive_prefix(end)) { if (c == ':') { protocol = PROTO_SSH; *path++ = '\0'; diff --git a/transport.c b/transport.c index 3ff851935f..4145eed979 100644 --- a/transport.c +++ b/transport.c @@ -709,7 +709,8 @@ static int is_local(const char *url) { const char *colon = strchr(url, ':'); const char *slash = strchr(url, '/'); - return !colon || (slash && slash < colon); + return !colon || (slash && slash < colon) || + has_dos_drive_prefix(url); } static int is_file(const char *url) |