On 17/09/15 21:25 +0200, Andreas Schwab wrote:
Jonathan Wakely <jwak...@redhat.com> 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.