summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2022-11-30 12:19:09 +0000
committerAidan MacDonald <amachronic@protonmail.com>2022-12-04 10:46:02 -0500
commit4ff97ae07c9b7beed4c8c9bf965e2ba679d05a20 (patch)
tree0da71115777e19d64138c2221afa15d99a96c440 /apps
parent08aa09e15d11f260f8c0fc6c10cb38b83e369d33 (diff)
downloadrockbox-4ff97ae07c9b7beed4c8c9bf965e2ba679d05a20.tar.gz
rockbox-4ff97ae07c9b7beed4c8c9bf965e2ba679d05a20.zip
settings: More settings ID to pointer conversions
Convert cfg_int_to_string(), cfg_to_string(), settings_write_config(). Change-Id: Icb72d2ff874cf90ffe5fe14878aece0a53f6bd18
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/option_select.c4
-rw-r--r--apps/gui/skin_engine/skin_tokens.c2
-rw-r--r--apps/settings.c81
-rw-r--r--apps/settings.h4
4 files changed, 39 insertions, 52 deletions
diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c
index 4687367fba..afd97e418b 100644
--- a/apps/gui/option_select.c
+++ b/apps/gui/option_select.c
@@ -117,7 +117,6 @@ const char *option_get_valuestring(const struct settings_list *setting,
117 { 117 {
118 if (setting->flags & F_CHOICETALKS) 118 if (setting->flags & F_CHOICETALKS)
119 { 119 {
120 int setting_id;
121 const struct choice_setting *info = setting->choice_setting; 120 const struct choice_setting *info = setting->choice_setting;
122 if (info->talks[(int)temp_var] < LANG_LAST_INDEX_IN_ARRAY) 121 if (info->talks[(int)temp_var] < LANG_LAST_INDEX_IN_ARRAY)
123 { 122 {
@@ -125,8 +124,7 @@ const char *option_get_valuestring(const struct settings_list *setting,
125 } 124 }
126 else 125 else
127 { 126 {
128 find_setting(setting->setting, &setting_id); 127 cfg_int_to_string(setting, (int)temp_var, buffer, buf_len);
129 cfg_int_to_string(setting_id, (int)temp_var, buffer, buf_len);
130 } 128 }
131 } 129 }
132 else 130 else
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index 874eff3809..39f1e3b4db 100644
--- a/apps/gui/skin_engine/skin_tokens.c
+++ b/apps/gui/skin_engine/skin_tokens.c
@@ -1442,7 +1442,7 @@ const char *get_token_value(struct gui_wps *gwps,
1442 goto gtv_ret_numeric_tag_info; 1442 goto gtv_ret_numeric_tag_info;
1443 } 1443 }
1444 } 1444 }
1445 cfg_to_string(token->value.i,buf,buf_size); 1445 cfg_to_string(s, buf, buf_size);
1446 numeric_buf = buf; 1446 numeric_buf = buf;
1447 goto gtv_ret_numeric_tag_info; 1447 goto gtv_ret_numeric_tag_info;
1448 } 1448 }
diff --git a/apps/settings.c b/apps/settings.c
index d8e4af1460..256c71267c 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -401,17 +401,16 @@ bool settings_load_config(const char* file, bool apply)
401 401
402/** Writing to a config file and saving settings **/ 402/** Writing to a config file and saving settings **/
403 403
404bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len) 404bool cfg_int_to_string(const struct settings_list *setting, int val, char* buf, int buf_len)
405{ 405{
406 int flags = settings[setting_id].flags; 406 const char* start = setting->cfg_vals;
407 const char* start = settings[setting_id].cfg_vals;
408 char* end = NULL; 407 char* end = NULL;
409 int count = 0; 408 int count = 0;
410 409
411 if ((flags&F_T_MASK)==F_T_INT && 410 if ((setting->flags & F_T_MASK) == F_T_INT &&
412 flags&F_TABLE_SETTING) 411 (setting->flags & F_TABLE_SETTING))
413 { 412 {
414 const int *value = settings[setting_id].table_setting->values; 413 const int *value = setting->table_setting->values;
415 while (start) 414 while (start)
416 { 415 {
417 end = strchr(start,','); 416 end = strchr(start,',');
@@ -455,20 +454,19 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len)
455 return true; 454 return true;
456} 455}
457 456
458bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len) 457void cfg_to_string(const struct settings_list *setting, char* buf, int buf_len)
459{ 458{
460 switch (settings[i].flags&F_T_MASK) 459 switch (setting->flags & F_T_MASK)
461 { 460 {
462 case F_T_CUSTOM: 461 case F_T_CUSTOM:
463 settings[i].custom_setting->write_to_cfg(settings[i].setting, 462 setting->custom_setting->write_to_cfg(setting->setting, buf, buf_len);
464 buf, buf_len);
465 break; 463 break;
466 case F_T_INT: 464 case F_T_INT:
467 case F_T_UINT: 465 case F_T_UINT:
468#ifdef HAVE_LCD_COLOR 466#ifdef HAVE_LCD_COLOR
469 if (settings[i].flags&F_RGB) 467 if (setting->flags & F_RGB)
470 { 468 {
471 int colour = *(int*)settings[i].setting; 469 int colour = *(int*)setting->setting;
472 snprintf(buf,buf_len,"%02x%02x%02x", 470 snprintf(buf,buf_len,"%02x%02x%02x",
473 (int)RGB_UNPACK_RED(colour), 471 (int)RGB_UNPACK_RED(colour),
474 (int)RGB_UNPACK_GREEN(colour), 472 (int)RGB_UNPACK_GREEN(colour),
@@ -476,57 +474,50 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
476 } 474 }
477 else 475 else
478#endif 476#endif
479 if (settings[i].cfg_vals == NULL) 477 if (setting->cfg_vals == NULL)
480 { 478 {
481 snprintf(buf,buf_len,"%d",*(int*)settings[i].setting); 479 snprintf(buf, buf_len, "%d", *(int*)setting->setting);
482 } 480 }
483 else 481 else
484 { 482 {
485 if (cfg_int_to_string(i, *(int*)settings[i].setting, 483 if (!cfg_int_to_string(setting, *(int*)setting->setting,
486 buf, buf_len) == false) 484 buf, buf_len))
487 { 485 snprintf(buf, buf_len, "%d", *(int*)setting->setting);
488 snprintf(buf,buf_len,"%d",*(int*)settings[i].setting);
489 }
490 else
491 return false;
492 } 486 }
493 break; 487 break;
494 case F_T_BOOL: 488 case F_T_BOOL:
495 cfg_int_to_string(i, 489 cfg_int_to_string(setting, *(bool*)setting->setting, buf, buf_len);
496 *(bool*)settings[i].setting==false?0:1, buf, buf_len);
497 break; 490 break;
498 case F_T_CHARPTR: 491 case F_T_CHARPTR:
499 case F_T_UCHARPTR: 492 case F_T_UCHARPTR:
500 if (((char*)settings[i].setting)[0] 493 {
501 && settings[i].filename_setting->prefix) 494 char *value = setting->setting;
495 const struct filename_setting *fs = setting->filename_setting;
496 if (value[0] && fs->prefix)
502 { 497 {
503 if (((char*)settings[i].setting)[0] == '-') 498 if (value[0] == '-')
504 { 499 {
505 buf[0] = '-'; 500 buf[0] = '-';
506 buf[1] = '\0'; 501 buf[1] = '\0';
507 } 502 }
508 else 503 else
509 { 504 {
510 snprintf(buf,buf_len,"%s%s%s", 505 snprintf(buf, buf_len, "%s%s%s",
511 settings[i].filename_setting->prefix, 506 fs->prefix, value, fs->suffix);
512 (char*)settings[i].setting,
513 settings[i].filename_setting->suffix);
514 } 507 }
515 } 508 }
516 else 509 else
517 { 510 {
518 int len = MIN(buf_len, settings[i].filename_setting->max_len); 511 strmemccpy(buf, value, buf_len);
519 strmemccpy(buf,(char*)settings[i].setting,len);
520 } 512 }
521 break; 513 break;
514 }
522 } /* switch () */ 515 } /* switch () */
523 return true;
524} 516}
525 517
526 518
527static bool is_changed(int setting_id) 519static bool is_changed(const struct settings_list *setting)
528{ 520{
529 const struct settings_list *setting = &settings[setting_id];
530 switch (setting->flags&F_T_MASK) 521 switch (setting->flags&F_T_MASK)
531 { 522 {
532 case F_T_CUSTOM: 523 case F_T_CUSTOM:
@@ -574,40 +565,38 @@ static bool settings_write_config(const char* filename, int options)
574 "http://www.rockbox.org\r\n\r\n", rbversion); 565 "http://www.rockbox.org\r\n\r\n", rbversion);
575 for(i=0; i<nb_settings; i++) 566 for(i=0; i<nb_settings; i++)
576 { 567 {
577 if (settings[i].cfg_name == NULL) 568 const struct settings_list *setting = &settings[i];
578 continue; 569 if (!setting->cfg_name || (setting->flags & F_DEPRECATED))
579 value[0] = '\0';
580 if (settings[i].flags & F_DEPRECATED)
581 continue; 570 continue;
582 571
583 switch (options) 572 switch (options)
584 { 573 {
585 case SETTINGS_SAVE_CHANGED: 574 case SETTINGS_SAVE_CHANGED:
586 if (!is_changed(i)) 575 if (!is_changed(setting))
587 continue; 576 continue;
588 break; 577 break;
589 case SETTINGS_SAVE_SOUND: 578 case SETTINGS_SAVE_SOUND:
590 if ((settings[i].flags&F_SOUNDSETTING) == 0) 579 if (!(setting->flags & F_SOUNDSETTING))
591 continue; 580 continue;
592 break; 581 break;
593 case SETTINGS_SAVE_THEME: 582 case SETTINGS_SAVE_THEME:
594 if ((settings[i].flags&F_THEMESETTING) == 0) 583 if (!(setting->flags & F_THEMESETTING))
595 continue; 584 continue;
596 break; 585 break;
597#ifdef HAVE_RECORDING 586#ifdef HAVE_RECORDING
598 case SETTINGS_SAVE_RECPRESETS: 587 case SETTINGS_SAVE_RECPRESETS:
599 if ((settings[i].flags&F_RECSETTING) == 0) 588 if (!(setting->flags & F_RECSETTING))
600 continue; 589 continue;
601 break; 590 break;
602#endif 591#endif
603 case SETTINGS_SAVE_EQPRESET: 592 case SETTINGS_SAVE_EQPRESET:
604 if ((settings[i].flags&F_EQSETTING) == 0) 593 if (!(setting->flags & F_EQSETTING))
605 continue; 594 continue;
606 break; 595 break;
607 } 596 }
608 597
609 cfg_to_string(i, value, MAX_PATH); 598 cfg_to_string(setting, value, MAX_PATH);
610 fdprintf(fd,"%s: %s\r\n",settings[i].cfg_name,value); 599 fdprintf(fd,"%s: %s\r\n",setting->cfg_name,value);
611 } /* for(...) */ 600 } /* for(...) */
612 close(fd); 601 close(fd);
613 return true; 602 return true;
diff --git a/apps/settings.h b/apps/settings.h
index 5d1237b1a5..75a346e223 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -265,9 +265,9 @@ enum optiontype { INT, BOOL };
265 265
266const struct settings_list* find_setting(const void* variable, int *id); 266const struct settings_list* find_setting(const void* variable, int *id);
267const struct settings_list* find_setting_by_cfgname(const char* name, int *id); 267const struct settings_list* find_setting_by_cfgname(const char* name, int *id);
268bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len); 268bool cfg_int_to_string(const struct settings_list *setting, int val, char* buf, int buf_len);
269bool cfg_string_to_int(const struct settings_list *setting, int* out, const char* str); 269bool cfg_string_to_int(const struct settings_list *setting, int* out, const char* str);
270bool cfg_to_string(int setting_id, char* buf, int buf_len); 270void cfg_to_string(const struct settings_list *setting, char* buf, int buf_len);
271bool copy_filename_setting(char *buf, size_t buflen, const char *input, 271bool copy_filename_setting(char *buf, size_t buflen, const char *input,
272 const struct filename_setting *fs); 272 const struct filename_setting *fs);
273bool set_bool_options(const char* string, const bool* variable, 273bool set_bool_options(const char* string, const bool* variable,