Permalink
Browse files

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

  • Loading branch information...
endrift committed Sep 24, 2017
1 parent baa937b commit 8ffc716249fc579f009fab120c013f44dfcabcfc
Showing with 15 additions and 1 deletion.
  1. +1 −0 CHANGES
  2. +14 −1 src/platform/psp2/sce-vfs.c
View
@@ -35,6 +35,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:
@@ -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) {

0 comments on commit 8ffc716

Please sign in to comment.