Mercurial > repos > blastem
comparison config.c @ 2378:af3075c1e421
Add media player file extensions to file browser config
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 18 Nov 2023 11:34:33 -0800 |
parents | 62f316b76e9a |
children | 64cf80e683aa |
comparison
equal
deleted
inserted
replaced
2377:30e59954eab9 | 2378:af3075c1e421 |
---|---|
314 val.ptrval = tern_insert_node(val.ptrval, "axes", axes); | 314 val.ptrval = tern_insert_node(val.ptrval, "axes", axes); |
315 } | 315 } |
316 *pads = tern_insert_node(*pads, key, val.ptrval); | 316 *pads = tern_insert_node(*pads, key, val.ptrval); |
317 } | 317 } |
318 | 318 |
319 #define CONFIG_VERSION 7 | 319 #define CONFIG_VERSION 8 |
320 static tern_node *migrate_config(tern_node *config, int from_version) | 320 static tern_node *migrate_config(tern_node *config, int from_version) |
321 { | 321 { |
322 tern_node *def_config = parse_bundled_config("default.cfg"); | 322 tern_node *def_config = parse_bundled_config("default.cfg"); |
323 switch(from_version) | 323 switch(from_version) |
324 { | 324 { |
406 if (pad_bindings) { | 406 if (pad_bindings) { |
407 tern_foreach(pad_bindings, update_pad_menu_binding, &pad_bindings); | 407 tern_foreach(pad_bindings, update_pad_menu_binding, &pad_bindings); |
408 config = tern_insert_path(config, "bindings\0pads\0", (tern_val){.ptrval = pad_bindings}, TVAL_NODE); | 408 config = tern_insert_path(config, "bindings\0pads\0", (tern_val){.ptrval = pad_bindings}, TVAL_NODE); |
409 } | 409 } |
410 } | 410 } |
411 case 7: { | |
412 uint32_t num_exts; | |
413 char **exts = get_extension_list(config, &num_exts); | |
414 char *need_add[] = {"vgm", "vgz", "flac", "wav"}; | |
415 uint32_t num_need_add = sizeof(need_add)/sizeof(*need_add); | |
416 for (uint32_t i = 0; i < num_exts && num_need_add; i++) | |
417 { | |
418 for (uint32_t j = 0; j < num_need_add; j++) | |
419 { | |
420 if (!strcmp(exts[i], need_add[j])) { | |
421 num_need_add--; | |
422 need_add[j] = need_add[num_need_add]; | |
423 break; | |
424 } | |
425 } | |
426 } | |
427 if (num_need_add) { | |
428 const char **parts = calloc(2 * (num_exts + num_need_add) - 1, sizeof(char*)); | |
429 uint32_t dest = 0; | |
430 for (uint32_t i = 0; i < num_exts; i++) | |
431 { | |
432 parts[dest++] = exts[i]; | |
433 parts[dest++] = " "; | |
434 } | |
435 for (uint32_t i = 0; i < num_need_add - 1; i++) | |
436 { | |
437 parts[dest++] = need_add[i]; | |
438 parts[dest++] = " "; | |
439 } | |
440 parts[dest++] = need_add[num_need_add - 1]; | |
441 config = tern_insert_path(config, "ui\0extensions\0", (tern_val){.ptrval = alloc_concat_m(dest, parts)}, TVAL_PTR); | |
442 free(parts); | |
443 } | |
444 free(exts[0]);//All extensions in this list share an allocation, first one is a pointer to the buffer | |
445 free(exts); | |
446 } | |
411 } | 447 } |
412 char buffer[16]; | 448 char buffer[16]; |
413 sprintf(buffer, "%d", CONFIG_VERSION); | 449 sprintf(buffer, "%d", CONFIG_VERSION); |
414 return tern_insert_ptr(config, "version", strdup(buffer)); | 450 return tern_insert_ptr(config, "version", strdup(buffer)); |
415 } | 451 } |
481 delete_custom_config_at("blastem.cfg"); | 517 delete_custom_config_at("blastem.cfg"); |
482 } | 518 } |
483 | 519 |
484 char **get_extension_list(tern_node *config, uint32_t *num_exts_out) | 520 char **get_extension_list(tern_node *config, uint32_t *num_exts_out) |
485 { | 521 { |
486 char *ext_filter = strdup(tern_find_path_default(config, "ui\0extensions\0", (tern_val){.ptrval = "bin gen md smd sms gg cue iso"}, TVAL_PTR).ptrval); | 522 char *ext_filter = strdup(tern_find_path_default(config, "ui\0extensions\0", (tern_val){.ptrval = "bin gen md smd sms gg zip gz cue iso vgm vgz flac wav"}, TVAL_PTR).ptrval); |
487 uint32_t num_exts = 0, ext_storage = 5; | 523 uint32_t num_exts = 0, ext_storage = 5; |
488 char **ext_list = malloc(sizeof(char *) * ext_storage); | 524 char **ext_list = malloc(sizeof(char *) * ext_storage); |
489 char *cur_filter = ext_filter; | 525 char *cur_filter = ext_filter; |
490 while (*cur_filter) | 526 while (*cur_filter) |
491 { | 527 { |