summaryrefslogtreecommitdiffstats
path: root/vendor/dunce/README.md
blob: 40a9c10329f01b0a78d894de86a8bd2d418c1d55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Dunce (de-UNC)

In Windows the regular paths (`C:\foo`) are supported by all programs,
but have lots of bizarre restrictions for backwards compatibility with MS-DOS.
There are also Windows NT UNC paths (`\\?\C:\foo`), which are more robust and with fewer gotchas,
but are rarely supported by Windows programs. Even Microsoft's own!

This crate converts Windows UNC paths to the MS-DOS-compatible format whenever possible,
but leaves UNC paths as-is when they can't be unambiguously expressed in a simpler way.
This allows legacy programs to access all paths they can possibly access,
and doesn't break any paths for UNC-aware programs.

In Rust the worst UNC offender is the `fs::canonicalize()` function. This crate provides
a drop-in replacement for it that returns paths you'd expect.

On non-Windows platforms these functions leave paths unmodified, so it's safe to use them
unconditionally for all platforms.