The following logic:
|
let wide_final = if wide.starts_with(&['\\' as u16, '\\' as _, '?' as _, '\\' as _]) { |
|
&wide[4..] |
|
} else { |
|
&wide |
|
}; |
completely breaks DOS device UNC paths such as:
\\?\UNC\server\share\bar.exe
which would have to be translated to:
in addition to that, other DOS device paths such as:
\\?\Volume{b75e2c83-0000-0000-0000-602f00000000}\Test\Foo.txt
get completely ruined.
There also is a lack of \\.\ handling. I'm also not sure why this gets stripped in the first place, join can handle these paths just fine.
The following logic:
cap-std/cap-primitives/src/windows/fs/get_path.rs
Lines 18 to 22 in 72fdc30
completely breaks DOS device UNC paths such as:
which would have to be translated to:
in addition to that, other DOS device paths such as:
get completely ruined.
There also is a lack of
\\.\handling. I'm also not sure why this gets stripped in the first place,joincan handle these paths just fine.