VFS: Make VFile.truncate work growing files on PSV (fixes #885)

This commit is contained in:
Vicki Pfau 2017-09-24 11:56:26 -07:00
parent 5dfa036fa5
commit a8f2990614
2 changed files with 15 additions and 1 deletions

View File

@ -56,6 +56,7 @@ Misc:
- GBA: Detect hardware for Pokémon FireRed ROM hacks
- CMake: Fix CPack dependencies for libpng 1.6
- Qt: Allow overrides to be saved before a game is loaded
- VFS: Make VFile.truncate work growing files on PSV (fixes mgba.io/i/885)
0.6.0: (2017-07-16)
Features:

View File

@ -120,7 +120,20 @@ static void _vfsceUnmap(struct VFile* vf, void* memory, size_t size) {
static void _vfsceTruncate(struct VFile* vf, size_t size) {
struct VFileSce* vfsce = (struct VFileSce*) vf;
// TODO
SceOff cur = sceIoLseek(vfsce->fd, 0, SEEK_CUR);
SceOff end = sceIoLseek(vfsce->fd, 0, SEEK_END);
if (end < size) {
uint8_t buffer[2048] = {};
size_t write = size - end;
while (write >= sizeof(buffer)) {
sceIoWrite(vfsce->fd, buffer, sizeof(buffer));
write -= sizeof(buffer);
}
if (write) {
sceIoWrite(vfsce->fd, buffer, write);
}
} // TODO: Else
sceIoLseek(vfsce->fd, cur, SEEK_SET);
}
ssize_t _vfsceSize(struct VFile* vf) {