summaryrefslogtreecommitdiffstats
path: root/drivers/unix/file_access_unix.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-22 12:51:55 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-22 12:51:55 +0200
commit504d01b61eaa3e0d1af0a4cea866c18ecfc1395c (patch)
tree20086da672e04f63a91c945581b062ff20e97939 /drivers/unix/file_access_unix.cpp
parent0b89b8b64c60b7fb7e9f1c26bf20b2c7d7c0adac (diff)
parent88b3e68f93fad5681b27b11ddacc562b03d5ef45 (diff)
downloadredot-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.cpp17
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);