diff options
author | Björn Stenberg <bjorn@haxx.se> | 2003-02-17 09:53:11 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2003-02-17 09:53:11 +0000 |
commit | bda4ec10fcc5a02bf440cc5392f80c958cfd16bd (patch) | |
tree | 3751e54753283e004f09c9e54cc014df074a50d4 /apps | |
parent | 5eb63848781842b09963017a2cae34d3b8c0f00c (diff) | |
download | rockbox-bda4ec10fcc5a02bf440cc5392f80c958cfd16bd.tar.gz rockbox-bda4ec10fcc5a02bf440cc5392f80c958cfd16bd.zip |
Fixed a number of .cfg loader bugs
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3280 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/settings.c | 101 | ||||
-rw-r--r-- | apps/settings.h | 1 | ||||
-rw-r--r-- | apps/tree.c | 36 |
3 files changed, 81 insertions, 57 deletions
diff --git a/apps/settings.c b/apps/settings.c index 0a00fc71ad..40513bf4b3 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -762,6 +762,35 @@ static bool settings_parseline(char* line, char** name, char** value) | |||
762 | return true; | 762 | return true; |
763 | } | 763 | } |
764 | 764 | ||
765 | void set_file(char* filename, char* setting, int maxlen) | ||
766 | { | ||
767 | char* fptr = strrchr(filename,'/'); | ||
768 | int len; | ||
769 | int extlen = 0; | ||
770 | char* ptr; | ||
771 | |||
772 | if (!fptr) | ||
773 | return; | ||
774 | |||
775 | *fptr = 0; | ||
776 | fptr++; | ||
777 | |||
778 | len = strlen(fptr); | ||
779 | ptr = fptr + len; | ||
780 | while (*ptr != '.') { | ||
781 | extlen++; | ||
782 | ptr--; | ||
783 | } | ||
784 | |||
785 | if (strcmp(ROCKBOX_DIR, filename) || (len-extlen > maxlen)) | ||
786 | return; | ||
787 | |||
788 | strncpy(setting, fptr, len-extlen); | ||
789 | setting[len-extlen]=0; | ||
790 | |||
791 | settings_save(); | ||
792 | } | ||
793 | |||
765 | static void set_sound(char* value, int type, int* setting) | 794 | static void set_sound(char* value, int type, int* setting) |
766 | { | 795 | { |
767 | int num = atoi(value); | 796 | int num = atoi(value); |
@@ -842,12 +871,20 @@ bool settings_load_config(char* file) | |||
842 | set_sound(value, SOUND_TREBLE, &global_settings.treble); | 871 | set_sound(value, SOUND_TREBLE, &global_settings.treble); |
843 | else if (!strcasecmp(name, "balance")) | 872 | else if (!strcasecmp(name, "balance")) |
844 | set_sound(value, SOUND_BALANCE, &global_settings.balance); | 873 | set_sound(value, SOUND_BALANCE, &global_settings.balance); |
845 | else if (!strcasecmp(name, "channels")) | 874 | else if (!strcasecmp(name, "channels")) { |
846 | set_sound(value, SOUND_CHANNELS, &global_settings.channel_config); | 875 | static char* options[] = { |
847 | else if (!strcasecmp(name, "wps")) | 876 | "stereo","mono","mono left","mono right"}; |
848 | strncpy(global_settings.wps_file, value, MAX_FILENAME); | 877 | set_cfg_option(&global_settings.channel_config, value, |
849 | else if (!strcasecmp(name, "lang")) | 878 | options, 4); |
850 | strncpy(global_settings.lang_file, value, MAX_FILENAME); | 879 | } |
880 | else if (!strcasecmp(name, "wps")) { | ||
881 | if (wps_load(value,true)) | ||
882 | set_file(value, global_settings.wps_file, MAX_FILENAME); | ||
883 | } | ||
884 | else if (!strcasecmp(name, "lang")) { | ||
885 | if (!lang_load(value)) | ||
886 | set_file(value, global_settings.lang_file, MAX_FILENAME); | ||
887 | } | ||
851 | #ifdef HAVE_LCD_BITMAP | 888 | #ifdef HAVE_LCD_BITMAP |
852 | else if (!strcasecmp(name, "font")) | 889 | else if (!strcasecmp(name, "font")) |
853 | strncpy(global_settings.font_file, value, MAX_FILENAME); | 890 | strncpy(global_settings.font_file, value, MAX_FILENAME); |
@@ -884,6 +921,20 @@ bool settings_load_config(char* file) | |||
884 | set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); | 921 | set_cfg_int(&global_settings.peak_meter_max, value, 0, 100); |
885 | else if (!strcasecmp(name, "peak meter busy")) | 922 | else if (!strcasecmp(name, "peak meter busy")) |
886 | set_cfg_bool(&global_settings.peak_meter_performance, value); | 923 | set_cfg_bool(&global_settings.peak_meter_performance, value); |
924 | else if (!strcasecmp(name, "volume display")) { | ||
925 | static char* options[] = {"graphic", "numeric"}; | ||
926 | set_cfg_option(&global_settings.volume_type, value, options, 2); | ||
927 | } | ||
928 | else if (!strcasecmp(name, "battery display")) { | ||
929 | static char* options[] = {"graphic", "numeric"}; | ||
930 | set_cfg_option(&global_settings.battery_type, value, options, 2); | ||
931 | } | ||
932 | else if (!strcasecmp(name, "time format")) { | ||
933 | static char* options[] = {"24hour", "12hour"}; | ||
934 | set_cfg_option(&global_settings.timeformat, value, options, 2); | ||
935 | } | ||
936 | else if (!strcasecmp(name, "scrollbar")) | ||
937 | set_cfg_bool(&global_settings.scrollbar, value); | ||
887 | #endif | 938 | #endif |
888 | else if (!strcasecmp(name, "shuffle")) | 939 | else if (!strcasecmp(name, "shuffle")) |
889 | set_cfg_bool(&global_settings.playlist_shuffle, value); | 940 | set_cfg_bool(&global_settings.playlist_shuffle, value); |
@@ -891,45 +942,34 @@ bool settings_load_config(char* file) | |||
891 | static char* options[] = {"off", "all", "one"}; | 942 | static char* options[] = {"off", "all", "one"}; |
892 | set_cfg_option(&global_settings.repeat_mode, value, options, 3); | 943 | set_cfg_option(&global_settings.repeat_mode, value, options, 3); |
893 | } | 944 | } |
894 | else if (!strcasecmp(name, "resume")) | 945 | else if (!strcasecmp(name, "resume")) { |
895 | set_cfg_int(&global_settings.resume, value, 0, 3); | 946 | static char* options[] = {"off", "ask", "ask once", "on"}; |
947 | set_cfg_option(&global_settings.resume, value, options, 4); | ||
948 | } | ||
896 | else if (!strcasecmp(name, "sort case")) | 949 | else if (!strcasecmp(name, "sort case")) |
897 | set_cfg_bool(&global_settings.sort_case, value); | 950 | set_cfg_bool(&global_settings.sort_case, value); |
898 | else if (!strcasecmp(name, "show files")) { | 951 | else if (!strcasecmp(name, "show files")) { |
899 | static char* options[] = {"all", "supported","music"}; | 952 | static char* options[] = {"all", "supported","music", "playlists"}; |
900 | set_cfg_option(&global_settings.dirfilter, value, options, 3); | 953 | set_cfg_option(&global_settings.dirfilter, value, options, 4); |
901 | } | 954 | } |
902 | else if (!strcasecmp(name, "follow playlist")) | 955 | else if (!strcasecmp(name, "follow playlist")) |
903 | set_cfg_bool(&global_settings.browse_current, value); | 956 | set_cfg_bool(&global_settings.browse_current, value); |
904 | else if (!strcasecmp(name, "play selected")) | 957 | else if (!strcasecmp(name, "play selected")) |
905 | set_cfg_bool(&global_settings.play_selected, value); | 958 | set_cfg_bool(&global_settings.play_selected, value); |
906 | else if (!strcasecmp(name, "volume display")) { | ||
907 | static char* options[] = {"graphic", "numeric"}; | ||
908 | set_cfg_option(&global_settings.volume_type, value, options, 2); | ||
909 | } | ||
910 | else if (!strcasecmp(name, "battery display")) { | ||
911 | static char* options[] = {"graphic", "numeric"}; | ||
912 | set_cfg_option(&global_settings.battery_type, value, options, 2); | ||
913 | } | ||
914 | else if (!strcasecmp(name, "time format")) { | ||
915 | static char* options[] = {"24hour", "12hour"}; | ||
916 | set_cfg_option(&global_settings.timeformat, value, options, 2); | ||
917 | } | ||
918 | else if (!strcasecmp(name, "contrast")) | 959 | else if (!strcasecmp(name, "contrast")) |
919 | set_cfg_int(&global_settings.contrast, value, | 960 | set_cfg_int(&global_settings.contrast, value, |
920 | 0, MAX_CONTRAST_SETTING); | 961 | 0, MAX_CONTRAST_SETTING); |
921 | else if (!strcasecmp(name, "scrollbar")) | ||
922 | set_cfg_bool(&global_settings.scrollbar, value); | ||
923 | else if (!strcasecmp(name, "scroll speed")) | 962 | else if (!strcasecmp(name, "scroll speed")) |
924 | set_cfg_int(&global_settings.scroll_speed, value, 1, 10); | 963 | set_cfg_int(&global_settings.scroll_speed, value, 1, 10); |
925 | else if (!strcasecmp(name, "scan min step")) { | 964 | else if (!strcasecmp(name, "scan min step")) { |
926 | static char* options[] = | 965 | static char* options[] = |
927 | {"1","2","3","4","5","6","8","10","15","20","25"}; | 966 | {"1","2","3","4","5","6","8","10", |
967 | "15","20","25","30","45","60"}; | ||
928 | set_cfg_option(&global_settings.ff_rewind_min_step, value, | 968 | set_cfg_option(&global_settings.ff_rewind_min_step, value, |
929 | options, 11); | 969 | options, 14); |
930 | } | 970 | } |
931 | else if (!strcasecmp(name, "scan accel")) | 971 | else if (!strcasecmp(name, "scan accel")) |
932 | set_cfg_int(&global_settings.ff_rewind_min_step, value, 0, 15); | 972 | set_cfg_int(&global_settings.ff_rewind_accel, value, 0, 15); |
933 | else if (!strcasecmp(name, "scroll delay")) | 973 | else if (!strcasecmp(name, "scroll delay")) |
934 | set_cfg_int(&global_settings.scroll_delay, value, 0, 250); | 974 | set_cfg_int(&global_settings.scroll_delay, value, 0, 250); |
935 | else if (!strcasecmp(name, "backlight timeout")) { | 975 | else if (!strcasecmp(name, "backlight timeout")) { |
@@ -977,8 +1017,11 @@ bool settings_load_config(char* file) | |||
977 | set_cfg_option(&global_settings.rec_channels, value, options, 2); | 1017 | set_cfg_option(&global_settings.rec_channels, value, options, 2); |
978 | } | 1018 | } |
979 | #endif | 1019 | #endif |
980 | else if (!strcasecmp(name, "poweroff")) | 1020 | else if (!strcasecmp(name, "idle poweroff")) { |
981 | set_cfg_int(&global_settings.poweroff, value, 0, 15); | 1021 | static char* options[] = {"off","1","2","3","4","5","6","7","8", |
1022 | "9","10","15","30","45","60"}; | ||
1023 | set_cfg_option(&global_settings.poweroff, value, options, 15); | ||
1024 | } | ||
982 | else if (!strcasecmp(name, "battery capacity")) | 1025 | else if (!strcasecmp(name, "battery capacity")) |
983 | set_cfg_int(&global_settings.battery_capacity, value, | 1026 | set_cfg_int(&global_settings.battery_capacity, value, |
984 | 1500, BATTERY_CAPACITY_MAX); | 1027 | 1500, BATTERY_CAPACITY_MAX); |
diff --git a/apps/settings.h b/apps/settings.h index bfdf12b593..6f127e05dc 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -171,6 +171,7 @@ bool set_option(char* string, int* variable, char* options[], | |||
171 | bool set_int(char* string, char* unit, int* variable, | 171 | bool set_int(char* string, char* unit, int* variable, |
172 | void (*function)(int), int step, int min, int max ); | 172 | void (*function)(int), int step, int min, int max ); |
173 | bool set_time(char* string, int timedate[]); | 173 | bool set_time(char* string, int timedate[]); |
174 | void set_file(char* filename, char* setting, int maxlen); | ||
174 | 175 | ||
175 | /* global settings */ | 176 | /* global settings */ |
176 | extern struct user_settings global_settings; | 177 | extern struct user_settings global_settings; |
diff --git a/apps/tree.c b/apps/tree.c index d39c279763..d8ecfb243e 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -947,26 +947,6 @@ static bool handle_on(int* ds, int* dc, int numentries, int tree_max_on_screen) | |||
947 | return used; | 947 | return used; |
948 | } | 948 | } |
949 | 949 | ||
950 | static void storefile(char* filename, char* setting, int maxlen) | ||
951 | { | ||
952 | int len = strlen(filename); | ||
953 | int extlen = 0; | ||
954 | char* ptr = filename + len; | ||
955 | |||
956 | while (*ptr != '.') { | ||
957 | extlen++; | ||
958 | ptr--; | ||
959 | } | ||
960 | |||
961 | if (strcmp(ROCKBOX_DIR, currdir) || (len-extlen > maxlen)) | ||
962 | return; | ||
963 | |||
964 | strncpy(setting, filename, len-extlen); | ||
965 | setting[len-extlen]=0; | ||
966 | |||
967 | settings_save(); | ||
968 | } | ||
969 | |||
970 | bool dirbrowse(char *root) | 950 | bool dirbrowse(char *root) |
971 | { | 951 | { |
972 | int numentries=0; | 952 | int numentries=0; |
@@ -1117,8 +1097,8 @@ bool dirbrowse(char *root) | |||
1117 | /* wps config file */ | 1097 | /* wps config file */ |
1118 | case TREE_ATTR_WPS: | 1098 | case TREE_ATTR_WPS: |
1119 | wps_load(buf,true); | 1099 | wps_load(buf,true); |
1120 | storefile(file->name, global_settings.wps_file, | 1100 | set_file(buf, global_settings.wps_file, |
1121 | MAX_FILENAME); | 1101 | MAX_FILENAME); |
1122 | restore = true; | 1102 | restore = true; |
1123 | break; | 1103 | break; |
1124 | 1104 | ||
@@ -1152,10 +1132,10 @@ bool dirbrowse(char *root) | |||
1152 | 1132 | ||
1153 | case TREE_ATTR_LNG: | 1133 | case TREE_ATTR_LNG: |
1154 | if(!lang_load(buf)) { | 1134 | if(!lang_load(buf)) { |
1155 | storefile(file->name, | 1135 | set_file(file->name, |
1156 | global_settings.lang_file, | 1136 | global_settings.lang_file, |
1157 | MAX_FILENAME); | 1137 | MAX_FILENAME); |
1158 | 1138 | ||
1159 | lcd_clear_display(); | 1139 | lcd_clear_display(); |
1160 | #ifdef HAVE_LCD_CHARCELLS | 1140 | #ifdef HAVE_LCD_CHARCELLS |
1161 | lcd_puts(0, 0, str(LANG_LANGUAGE_LOADED)); | 1141 | lcd_puts(0, 0, str(LANG_LANGUAGE_LOADED)); |
@@ -1179,8 +1159,8 @@ bool dirbrowse(char *root) | |||
1179 | #ifdef HAVE_LCD_BITMAP | 1159 | #ifdef HAVE_LCD_BITMAP |
1180 | case TREE_ATTR_FONT: | 1160 | case TREE_ATTR_FONT: |
1181 | font_load(buf); | 1161 | font_load(buf); |
1182 | storefile(file->name, global_settings.font_file, | 1162 | set_file(file->name, global_settings.font_file, |
1183 | MAX_FILENAME); | 1163 | MAX_FILENAME); |
1184 | 1164 | ||
1185 | lcd_getstringsize("A", &fw, &fh); | 1165 | lcd_getstringsize("A", &fw, &fh); |
1186 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | 1166 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; |