diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-22 12:51:55 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-04-22 12:51:55 +0200 |
commit | 504d01b61eaa3e0d1af0a4cea866c18ecfc1395c (patch) | |
tree | 20086da672e04f63a91c945581b062ff20e97939 /drivers/unix/file_access_unix.cpp | |
parent | 0b89b8b64c60b7fb7e9f1c26bf20b2c7d7c0adac (diff) | |
parent | 88b3e68f93fad5681b27b11ddacc562b03d5ef45 (diff) | |
download | redot-engine-504d01b61eaa3e0d1af0a4cea866c18ecfc1395c.tar.gz |
Merge pull request #90403 from bruvzg/file_resize
[FileAccess] Implement `resize` method.
Diffstat (limited to 'drivers/unix/file_access_unix.cpp')
-rw-r--r-- | drivers/unix/file_access_unix.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp index a35d8bfdde..210507c2c6 100644 --- a/drivers/unix/file_access_unix.cpp +++ b/drivers/unix/file_access_unix.cpp @@ -286,6 +286,23 @@ Error FileAccessUnix::get_error() const { return last_error; } +Error FileAccessUnix::resize(int64_t p_length) { + ERR_FAIL_NULL_V_MSG(f, FAILED, "File must be opened before use."); + int res = ::ftruncate(fileno(f), p_length); + switch (res) { + case 0: + return OK; + case EBADF: + return ERR_FILE_CANT_OPEN; + case EFBIG: + return ERR_OUT_OF_MEMORY; + case EINVAL: + return ERR_INVALID_PARAMETER; + default: + return FAILED; + } +} + void FileAccessUnix::flush() { ERR_FAIL_NULL_MSG(f, "File must be opened before use."); fflush(f); |