Add filestream_get_size/filestream_set_size

This commit is contained in:
twinaphex 2017-02-18 02:21:33 +01:00
parent e9524f1b95
commit e6ee2527e5
2 changed files with 27 additions and 0 deletions

View File

@ -47,6 +47,10 @@ enum
RFILE_HINT_MMAP = 1<<9 /* requires RFILE_MODE_READ */
};
long long int filestream_get_size(RFILE *stream);
void filestream_set_size(RFILE *stream);
const char *filestream_get_ext(RFILE *stream);
RFILE *filestream_open(const char *path, unsigned mode, ssize_t len);

View File

@ -69,6 +69,7 @@ struct RFILE
{
unsigned hints;
char *ext;
long long int size;
#if defined(PSP)
SceUID fd;
#else
@ -110,6 +111,26 @@ const char *filestream_get_ext(RFILE *stream)
return stream->ext;
}
long long int filestream_get_size(RFILE *stream)
{
if (!stream)
return 0;
return stream->size;
}
void filestream_set_size(RFILE *stream)
{
if (!stream)
return;
filestream_seek(stream, 0, SEEK_SET);
filestream_seek(stream, 0, SEEK_END);
stream->size = filestream_tell(stream);
filestream_seek(stream, 0, SEEK_SET);
}
RFILE *filestream_open(const char *path, unsigned mode, ssize_t len)
{
int flags = 0;
@ -249,6 +270,8 @@ RFILE *filestream_open(const char *path, unsigned mode, ssize_t len)
stream->ext = strdup(ld ? ld + 1 : "");
}
filestream_set_size(stream);
return stream;
error: