(libretro-common) Add intfstream_open

This commit is contained in:
twinaphex 2016-04-07 01:58:54 +02:00
parent 5eb3bb05f7
commit 554ca4f087
2 changed files with 31 additions and 0 deletions

View File

@ -53,4 +53,7 @@ void *intfstream_init(intfstream_info_t *info);
bool intfstream_resize(intfstream_internal_t *intf,
intfstream_info_t *info);
bool intfstream_open(intfstream_internal_t *intf,
const char *path, unsigned mode, ssize_t len);
#endif

View File

@ -8,6 +8,11 @@ struct intfstream_internal
{
enum intfstream_type type;
struct
{
RFILE *fp;
} file;
struct
{
struct
@ -15,6 +20,7 @@ struct intfstream_internal
uint8_t *data;
unsigned size;
} buf;
memstream_t *fp;
} memory;
};
@ -39,6 +45,28 @@ bool intfstream_resize(intfstream_internal_t *intf, intfstream_info_t *info)
return true;
}
bool intfstream_open(intfstream_internal_t *intf, const char *path, unsigned mode, ssize_t len)
{
if (!intf)
return false;
switch (intf->type)
{
case INTFSTREAM_FILE:
intf->file.fp = filestream_open(path, mode, len);
if (!intf->file.fp)
return false;
break;
case INTFSTREAM_MEMORY:
intf->memory.fp = memstream_open();
if (!intf->memory.fp)
return false;
break;
}
return true;
}
void *intfstream_init(intfstream_info_t *info)
{
intfstream_internal_t *intf = NULL;