summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Sixt <johannes.sixt@telecom.at>2007-11-30 22:51:10 +0100
committerJohannes Sixt <johannes.sixt@telecom.at>2008-06-26 08:45:08 +0200
commitbe501813d25bedc1a441940f349fb91bd9fa4ef6 (patch)
tree7a4da16af830119e98fcd0ed52a5e3502d68bd30
parent6ed807f8432c558ef102c94cb2e8ae4e03c48d4e (diff)
downloadgit-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.c2
-rw-r--r--transport.c3
2 files changed, 3 insertions, 2 deletions
diff --git a/connect.c b/connect.c
index e92af29735..574f42fa47 100644
--- a/connect.c
+++ b/connect.c
@@ -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)