mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-22 03:03:43 +00:00
If posix_fallocate returns EOPNOTSUPP, fallback to ftruncate.
This can happen at least on NetBSD. llvm-svn: 302263
This commit is contained in:
parent
f0aeee01c3
commit
ecfb876eac
@ -421,14 +421,15 @@ std::error_code resize_file(int FD, uint64_t Size) {
|
||||
#if defined(HAVE_POSIX_FALLOCATE)
|
||||
// If we have posix_fallocate use it. Unlike ftruncate it always allocates
|
||||
// space, so we get an error if the disk is full.
|
||||
if (int Err = ::posix_fallocate(FD, 0, Size))
|
||||
return std::error_code(Err, std::generic_category());
|
||||
#else
|
||||
if (int Err = ::posix_fallocate(FD, 0, Size)) {
|
||||
if (Err != EOPNOTSUPP)
|
||||
return std::error_code(Err, std::generic_category());
|
||||
}
|
||||
#endif
|
||||
// Use ftruncate as a fallback. It may or may not allocate space. At least on
|
||||
// OS X with HFS+ it does.
|
||||
if (::ftruncate(FD, Size) == -1)
|
||||
return std::error_code(errno, std::generic_category());
|
||||
#endif
|
||||
|
||||
return std::error_code();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user