feat: Add avs_fs_umount()
> only added for avs 2.17.3.0 > change `avs_fs_mount()` return type to avs_file_t (should be avs_handle_t to begin with) > related to #1
This commit is contained in:
@@ -38,6 +38,7 @@ namespace avs {
|
||||
AVS_FS_CLOSE_T avs_fs_close {};
|
||||
AVS_FS_DUMP_MOUNTPOINT_T avs_fs_dump_mountpoint {};
|
||||
AVS_FS_MOUNT_T avs_fs_mount {};
|
||||
AVS_FS_UMOUNT_T avs_fs_umount {};
|
||||
AVS_FS_COPY_T avs_fs_copy {};
|
||||
AVS_FS_FSTAT_T avs_fs_fstat {};
|
||||
AVS_FS_LSTAT_T avs_fs_lstat {};
|
||||
@@ -1015,6 +1016,7 @@ namespace avs {
|
||||
.avs_fs_close = "XCgsqzn0000055",
|
||||
.avs_fs_dump_mountpoint = "XCgsqzn0000068",
|
||||
.avs_fs_mount = "XCgsqzn000004b",
|
||||
.avs_fs_umount = "XCgsqzn000004d",
|
||||
.avs_fs_fstat = "XCgsqzn0000062",
|
||||
.avs_fs_lstat = "XCgsqzn0000063",
|
||||
.avs_fs_lseek = "XCgsqzn000004f",
|
||||
@@ -1583,6 +1585,8 @@ namespace avs {
|
||||
DLL_INSTANCE, IMPORTS[ver].avs_fs_dump_mountpoint);
|
||||
avs_fs_mount = libutils::try_proc<AVS_FS_MOUNT_T>(
|
||||
DLL_INSTANCE, IMPORTS[ver].avs_fs_mount);
|
||||
avs_fs_umount = libutils::try_proc<AVS_FS_UMOUNT_T>(
|
||||
DLL_INSTANCE, IMPORTS[ver].avs_fs_umount);
|
||||
avs_fs_lstat = libutils::try_proc<AVS_FS_LSTAT_T>(
|
||||
DLL_INSTANCE, IMPORTS[ver].avs_fs_lstat);
|
||||
|
||||
|
||||
+5
-1
@@ -337,6 +337,7 @@ namespace avs {
|
||||
const char *avs_fs_close = "?";
|
||||
const char *avs_fs_dump_mountpoint = "?";
|
||||
const char *avs_fs_mount = "?";
|
||||
const char *avs_fs_umount = "?";
|
||||
const char *avs_fs_fstat = "?";
|
||||
const char *avs_fs_lstat = "?";
|
||||
const char *avs_fs_lseek = "?";
|
||||
@@ -512,9 +513,12 @@ namespace avs {
|
||||
typedef int (*AVS_FS_DUMP_MOUNTPOINT_T)(void);
|
||||
extern AVS_FS_DUMP_MOUNTPOINT_T avs_fs_dump_mountpoint;
|
||||
|
||||
typedef int (*AVS_FS_MOUNT_T)(const char *mountpoint, const char *fsroot, const char *fstype, void *data);
|
||||
typedef avs_file_t (*AVS_FS_MOUNT_T)(const char *mountpoint, const char *fsroot, const char *fstype, void *data);
|
||||
extern AVS_FS_MOUNT_T avs_fs_mount;
|
||||
|
||||
typedef void (*AVS_FS_UMOUNT_T)(avs_file_t mount);
|
||||
extern AVS_FS_UMOUNT_T avs_fs_umount;
|
||||
|
||||
typedef int (*AVS_FS_COPY_T)(const char *sname, const char *dname);
|
||||
extern AVS_FS_COPY_T avs_fs_copy;
|
||||
|
||||
|
||||
+1
-1
@@ -171,7 +171,7 @@ static avs::core::avs_file_t avs_fs_opendir(const char *path) {
|
||||
return value;
|
||||
}
|
||||
|
||||
static int avs_fs_mount(const char *mountpoint, const char *fsroot, const char *fstype, void *data) {
|
||||
static avs::core::avs_file_t avs_fs_mount(const char *mountpoint, const char *fsroot, const char *fstype, void *data) {
|
||||
// avs redirection breaks ongaku paradise
|
||||
if (mountpoint == nullptr ||
|
||||
fsroot == nullptr ||
|
||||
|
||||
+6
-4
@@ -34,7 +34,7 @@ int on_avs_fs_lstat(const char *path, struct avs::core::avs_stat *stat)
|
||||
}
|
||||
|
||||
static avs::core::AVS_FS_MOUNT_T avs_fs_mount_;
|
||||
int on_avs_fs_mount(const char *mountpoint, const char *fsroot, const char *fstype, void *data)
|
||||
avs::core::avs_file_t on_avs_fs_mount(const char *mountpoint, const char *fsroot, const char *fstype, void *data)
|
||||
{
|
||||
if (strstr(fsroot, "29095"))
|
||||
{
|
||||
@@ -614,7 +614,8 @@ soundbank::~soundbank()
|
||||
}
|
||||
if (mnt_ != E_NOT_FOUND)
|
||||
{
|
||||
//_TODO: "XCgsqzn000004d(uint32_t)" avs_fs_umount(mnt_)
|
||||
log_info("hooks::bmsb", "{}::Bank[CACHE]::Purge mount(0x{:08x})", this->id, mnt_);
|
||||
avs::core::avs_fs_umount(mnt_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,7 +629,7 @@ soundbank *soundbank::get_bank(int id)
|
||||
soundbank *bank = new_instance(id);
|
||||
snprintf(bank->avspath, AVSPATHMAX, "data/sound/%05d", id);
|
||||
if (has_format(bank->avspath, ".ifs"))
|
||||
map_ifs(bank->avspath);
|
||||
bank->mnt_ = map_ifs(bank->avspath);
|
||||
snprintf(bank->avspath + strlen(bank->avspath), 7, "/%05d", id);
|
||||
if (!(has_format(bank->avspath, ".s3p") || has_format(bank->avspath, ".2dx")))
|
||||
{
|
||||
@@ -837,11 +838,12 @@ void run_tests()
|
||||
|
||||
char avspath[AVSPATHMAX] = "data/sound/29095";
|
||||
soundbank::has_format(avspath, ".ifs");
|
||||
soundbank::map_ifs(avspath);
|
||||
avs::core::avs_file_t mnt = soundbank::map_ifs(avspath);
|
||||
strcat(avspath, "/29095");
|
||||
soundbank::has_format(avspath, ".s3p");
|
||||
soundbank::has_format(avspath, ".2dx");
|
||||
soundbank::has_format(avspath, "_pre.2dx");
|
||||
avs::core::avs_fs_umount(mnt);
|
||||
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user