From dd88104a81a7ec9adaf14dc7f21839bbee30cd2d Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 10 Nov 2021 14:59:54 +0100 Subject: [PATCH] Fix os.walk for UNC paths. --- core/os/stat_windows.odin | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/os/stat_windows.odin b/core/os/stat_windows.odin index 132cad155..2d9f98fd4 100644 --- a/core/os/stat_windows.odin +++ b/core/os/stat_windows.odin @@ -115,12 +115,16 @@ cleanpath_strip_prefix :: proc(buf: []u16) -> []u16 { } 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