On 17/09/15 21:25 +0200, Andreas Schwab wrote:
Jonathan Wakely <[email protected]> writes:+ p = "/dev/stdin"; + if (exists(p)) + { + auto p2 = canonical(p); + if (is_symlink(p)) + VERIFY( p != p2 ); + else + VERIFY( p == p2 ); + VERIFY( canonical(p2) == p2 );This fails if stdin is a pipe, which doesn't have a (real) name, so realpath fails. $ echo | ./canonical.exe terminate called after throwing an instance of 'std::experimental::filesystem::v1::__cxx11::filesystem_error' what(): filesystem error: cannot canonicalize: No such file or directory [/dev/stdin]
Ah, of course, the symlink exists but doesn't point to a real file. Thanks for the explanation. I'll re-add tests for symlinks when I come up with a proper method for testing the Filesystem code.
