From 60704c9198eadbf88593678eb8465cbaecfedc04 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 27 Jan 2015 18:07:46 -0700 Subject: [PATCH] Windows: fix reparsing with UNC targets --- racket/src/racket/src/file.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/racket/src/racket/src/file.c b/racket/src/racket/src/file.c index 3a7badb402..2c745f2d98 100644 --- a/racket/src/racket/src/file.c +++ b/racket/src/racket/src/file.c @@ -2306,6 +2306,14 @@ static char *UNC_readlink(const char *fn) memmove(lk, lk+4, len - 8); len -= 8; lk[len>>1] = 0; + + if ((lk[0] == 'U') && (lk[1] == 'N') && (lk[2] == 'C') && (lk[3] == '\\')) { + /* "UNC\" is a further prefix that means "UNC"; replace "UNC" with "\" */ + memmove(lk, lk+2, len - 4); + lk[0] = '\\'; + len -= 4; + lk[len>>1] = 0; + } } /* Make sure it's not empty, because that would form a bad path: */