mirror of
https://git.mirrors.martin98.com/https://github.com/gulrak/filesystem
synced 2025-06-04 11:13:58 +08:00
Fix build on GNU/Hurd
There is no path length limitation there, even via pathconf. But glibc provides a getcwd function that allocates the buffer dynamically so we can just leverage that.
This commit is contained in:
parent
cd6805e94d
commit
d3d968e583
@ -4199,6 +4199,13 @@ GHC_INLINE path current_path(std::error_code& ec)
|
|||||||
return path();
|
return path();
|
||||||
}
|
}
|
||||||
return path(std::wstring(buffer.get()), path::native_format);
|
return path(std::wstring(buffer.get()), path::native_format);
|
||||||
|
#elif defined(__GLIBC__)
|
||||||
|
std::unique_ptr<char, decltype(&std::free)> buffer { ::getcwd(NULL, 0), std::free };
|
||||||
|
if (buffer == nullptr) {
|
||||||
|
ec = detail::make_system_error();
|
||||||
|
return path();
|
||||||
|
}
|
||||||
|
return path(buffer.get());
|
||||||
#else
|
#else
|
||||||
size_t pathlen = static_cast<size_t>(std::max(int(::pathconf(".", _PC_PATH_MAX)), int(PATH_MAX)));
|
size_t pathlen = static_cast<size_t>(std::max(int(::pathconf(".", _PC_PATH_MAX)), int(PATH_MAX)));
|
||||||
std::unique_ptr<char[]> buffer(new char[pathlen + 1]);
|
std::unique_ptr<char[]> buffer(new char[pathlen + 1]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user