pre-allocate file size before write

This commit is contained in:
Nikita Smith
2025-02-25 14:41:34 -08:00
parent bbce89eada
commit d5ab121183
3 changed files with 18 additions and 0 deletions
+1
View File
@@ -209,6 +209,7 @@ internal FileProperties os_properties_from_file(OS_Handle file);
internal OS_FileID os_id_from_file(OS_Handle file);
internal B32 os_rename_file_by_handle(OS_Handle file, String8 new_name);
internal B32 os_rename_file(String8 orig_name, String8 new_name);
internal B32 os_file_reserve_size(OS_Handle file, U64 size);
internal B32 os_delete_file_at_path(String8 path);
internal B32 os_copy_file_path(String8 dst, String8 src);
internal String8 os_full_path_from_path(Arena *arena, String8 path);
+13
View File
@@ -494,6 +494,19 @@ os_rename_file_by_handle(OS_Handle file, String8 new_name)
return is_renamed;
}
internal B32
os_file_reserve_size(OS_Handle file, U64 size)
{
HANDLE handle = (HANDLE)file.u64[0];
FILE_ALLOCATION_INFO alloc_info = {0};
alloc_info.AllocationSize.LowPart = size & max_U32;
alloc_info.AllocationSize.HighPart = (size >> 32) & max_U32;
BOOL is_reserved = SetFileInformationByHandle(handle, FileAllocationInfo, &alloc_info, sizeof(alloc_info));
return is_reserved;
}
internal B32
os_delete_file_at_path(String8 path)
{