diff --git a/libretro-common/include/streams/interface_stream.h b/libretro-common/include/streams/interface_stream.h index b62552f219..4970259335 100644 --- a/libretro-common/include/streams/interface_stream.h +++ b/libretro-common/include/streams/interface_stream.h @@ -88,6 +88,9 @@ int intfstream_getc(intfstream_internal_t *intf); int64_t intfstream_seek(intfstream_internal_t *intf, int64_t offset, int whence); +int64_t intfstream_truncate(intfstream_internal_t *intf, + uint64_t len); + void intfstream_rewind(intfstream_internal_t *intf); int64_t intfstream_tell(intfstream_internal_t *intf); diff --git a/libretro-common/streams/interface_stream.c b/libretro-common/streams/interface_stream.c index 5f65c491aa..ea9b00f174 100644 --- a/libretro-common/streams/interface_stream.c +++ b/libretro-common/streams/interface_stream.c @@ -309,6 +309,34 @@ int64_t intfstream_seek( return -1; } +int64_t intfstream_truncate(intfstream_internal_t *intf, uint64_t len) +{ + if (!intf) + return 0; + + switch (intf->type) + { + case INTFSTREAM_FILE: + return filestream_truncate(intf->file.fp, len); + case INTFSTREAM_MEMORY: + break; + case INTFSTREAM_CHD: +#ifdef HAVE_CHD + break; +#else + break; +#endif + case INTFSTREAM_RZIP: +#if defined(HAVE_ZLIB) + break; +#else + break; +#endif + } + + return 0; +} + int64_t intfstream_read(intfstream_internal_t *intf, void *s, uint64_t len) { if (!intf)