mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-17 11:18:31 +01:00
cleanup: api tweaks
This commit is contained in:
parent
ea630eeead
commit
b0962ea354
@ -268,8 +268,7 @@ static void test_libsf_size(libvgmstream_streamfile_t* libsf) {
|
||||
static void test_libsf_name(libvgmstream_streamfile_t* libsf) {
|
||||
VGM_STEP();
|
||||
|
||||
char name[128];
|
||||
libsf->get_name(libsf->user_data, name, sizeof(name));
|
||||
const char* name = libsf->get_name(libsf->user_data);
|
||||
assert(strcmp(name, "api.bin") == 0);
|
||||
}
|
||||
|
||||
|
@ -42,9 +42,9 @@ typedef struct libvgmstream_streamfile_t {
|
||||
*/
|
||||
int64_t (*get_size)(void* user_data);
|
||||
|
||||
/* copy current filename to name buf
|
||||
/* get current filename
|
||||
*/
|
||||
void (*get_name)(void* user_data, char* name, int name_size); //TODO return char*?
|
||||
const char* (*get_name)(void* user_data);
|
||||
|
||||
/* open another streamfile from filename (may be some path/protocol, or same as current get_name = reopen)
|
||||
* - vgmstream mainly opens stuff based on current get_name (relative), so there shouldn't be need to transform this path
|
||||
|
@ -9,6 +9,7 @@ typedef struct {
|
||||
int64_t offset;
|
||||
int64_t size;
|
||||
STREAMFILE* inner_sf;
|
||||
char name[PATH_LIMIT];
|
||||
} libsf_data_t;
|
||||
|
||||
static int libsf_read(void* user_data, uint8_t* dst, int dst_size) {
|
||||
@ -58,16 +59,16 @@ static int64_t libsf_get_size(void* user_data) {
|
||||
return data->size;
|
||||
}
|
||||
|
||||
static void libsf_get_name(void* user_data, char* name, int name_size) {
|
||||
if (!name || !name_size)
|
||||
return;
|
||||
name[0] = '\0';
|
||||
|
||||
static const char* libsf_get_name(void* user_data) {
|
||||
libsf_data_t* data = user_data;
|
||||
if (!data)
|
||||
return;
|
||||
return NULL;
|
||||
|
||||
data->inner_sf->get_name(data->inner_sf, name, name_size); /* default */
|
||||
if (data->name[0] == '\0') {
|
||||
data->inner_sf->get_name(data->inner_sf, data->name, sizeof(data->name));
|
||||
}
|
||||
|
||||
return data->name;
|
||||
}
|
||||
|
||||
struct libvgmstream_streamfile_t* libsf_open(void* user_data, const char* filename) {
|
||||
|
@ -33,7 +33,16 @@ static offv_t api_get_offset(API_STREAMFILE* sf) {
|
||||
static void api_get_name(API_STREAMFILE* sf, char* name, size_t name_size) {
|
||||
void* user_data = sf->libsf->user_data;
|
||||
|
||||
sf->libsf->get_name(user_data, name, name_size);
|
||||
if (!name || !name_size)
|
||||
return;
|
||||
name[0] = '\0';
|
||||
|
||||
const char* external_name = sf->libsf->get_name(user_data);
|
||||
if (!external_name)
|
||||
return;
|
||||
|
||||
snprintf(name, name_size, "%s", external_name);
|
||||
name[name_size - 1] = '\0';
|
||||
}
|
||||
|
||||
static STREAMFILE* api_open(API_STREAMFILE* sf, const char* filename, size_t buf_size) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user