Prechádzať zdrojové kódy

Merge pull request #1294 from Kelimion/fix_dir_walk

Fix os.walk for UNC paths.
Jeroen van Rijn 3 rokov pred
rodič
commit
615efc7c86
1 zmenil súbory, kde vykonal 10 pridanie a 6 odobranie
  1. 10 6
      core/os/stat_windows.odin

+ 10 - 6
core/os/stat_windows.odin

@@ -115,12 +115,16 @@ cleanpath_strip_prefix :: proc(buf: []u16) -> []u16 {
 	}
 	}
 	buf = buf[:N]
 	buf = buf[:N]
 
 
-	if len(buf) >= 4 {
-		if buf[0] == '\\' &&
-		   buf[1] == '\\' &&
-		   buf[2] == '?'  &&
-		   buf[3] == '\\' {
-			buf = buf[4:]
+	if len(buf) >= 4 && buf[0] == '\\' && buf[1] == '\\' && buf[2] == '?' && buf[3] == '\\' {
+		buf = buf[4:]
+
+		/*
+			NOTE(Jeroen): Properly handle UNC paths.
+			We need to turn `\\?\UNC\synology.local` into `\\synology.local`.
+		*/
+		if len(buf) >= 3 && buf[0] == 'U' && buf[1] == 'N' && buf[2] == 'C' {
+			buf = buf[2:]
+			buf[0] = '\\'
 		}
 		}
 	}
 	}
 	return buf
 	return buf