#pragma once #include "../backing.h" #include "../range.h" #include "file.h" AL_IGNORE_WARNING("-Wunused-function") static off_t file_backing_get_size_if_known(struct cch_backing *backing) { struct cch_backing_file *file = (struct cch_backing_file *)backing; nn_mutex_lock(&file->mutex); off_t size = file->backing.size; nn_mutex_unlock(&file->mutex); return size; } static void file_backing_finalize(struct cch_backing *backing) { struct cch_backing_file *file = (struct cch_backing_file *)backing; nn_mutex_lock(&file->mutex); file->backing.size = file->file.size; nn_mutex_unlock(&file->mutex); } static bool file_open_internal(struct cch_backing_file *file, str *path, size_t size) { s32 flags = (size != 0) ? NNWT_FILE_CREATE : NNWT_FILE_READONLY; if (!nn_file_open(&file->file, path, flags)) return false; size_t filesize = file->file.size; if (!size) { file->backing.size = filesize; cch_backing_fill_range(&file->backing, 0, filesize); } else if (filesize < size) { nn_file_truncate(&file->file, size); } return true; } AL_IGNORE_WARNING_END