diff options
Diffstat (limited to 'src/libultra_code_O2/pfsreadwritefile.c')
| -rw-r--r-- | src/libultra_code_O2/pfsreadwritefile.c | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/libultra_code_O2/pfsreadwritefile.c b/src/libultra_code_O2/pfsreadwritefile.c index 4a6d7755c..9b99c08d2 100644 --- a/src/libultra_code_O2/pfsreadwritefile.c +++ b/src/libultra_code_O2/pfsreadwritefile.c @@ -50,37 +50,29 @@ s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8 if (!(pfs->status & PFS_INITIALIZED)) { return PFS_ERR_INVALID; } - if (__osCheckId(pfs) == PFS_ERR_NEW_PACK) { return PFS_ERR_NEW_PACK; } - - if (pfs->activebank != 0) { - if ((ret = __osPfsSelectBank(pfs, 0)) != 0) { - return ret; - } + if (pfs->activebank != 0 && (ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; } - if ((ret = __osContRamRead(pfs->queue, pfs->channel, pfs->dir_table + fileNo, &dir)) != 0) { + if ((ret = __osContRamRead(pfs->queue, pfs->channel, pfs->dir_table + fileNo, (u8*)&dir)) != 0) { return ret; } - if ((dir.company_code == 0) || (dir.game_code == 0)) { return PFS_ERR_INVALID; } - if (!CHECK_IPAGE(dir.start_page, *pfs)) { if (dir.start_page.ipage == PFS_EOF) { return PFS_ERR_INVALID; } return PFS_ERR_INCONSISTENT; } - if ((flag == PFS_READ) && ((dir.status & PFS_WRITTEN) == 0)) { return PFS_ERR_BAD_DATA; } bank = 255; - curBlock = offset / BLOCKSIZE; curPage = dir.start_page; @@ -101,11 +93,8 @@ s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8 } curBlock = 0; } - - if (pfs->activebank != curPage.inode_t.bank) { - if ((ret = __osPfsSelectBank(pfs, curPage.inode_t.bank)) != 0) { - return ret; - } + if (pfs->activebank != curPage.inode_t.bank && (ret = __osPfsSelectBank(pfs, curPage.inode_t.bank)) != 0) { + return ret; } blockno = curPage.inode_t.page * PFS_ONE_PAGE + curBlock; @@ -125,16 +114,13 @@ s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8 if (flag == PFS_WRITE && !(dir.status & PFS_WRITTEN)) { dir.status |= PFS_WRITTEN; - if (pfs->activebank != 0) { - if ((ret = __osPfsSelectBank(pfs, 0)) != 0) { - return ret; - } + if (pfs->activebank != 0 && (ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; } - if ((ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + fileNo, &dir, 0)) != 0) { + if ((ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + fileNo, (u8*)&dir, 0)) != 0) { return ret; } } - ret = __osPfsGetStatus(pfs->queue, pfs->channel); - return ret; + return __osPfsGetStatus(pfs->queue, pfs->channel); } |
