summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2003-02-17 09:53:11 +0000
committerBjörn Stenberg <bjorn@haxx.se>2003-02-17 09:53:11 +0000
commitbda4ec10fcc5a02bf440cc5392f80c958cfd16bd (patch)
tree3751e54753283e004f09c9e54cc014df074a50d4 /apps/tree.c
parent5eb63848781842b09963017a2cae34d3b8c0f00c (diff)
downloadrockbox-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/tree.c')
-rw-r--r--apps/tree.c36
1 files changed, 8 insertions, 28 deletions
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
950static 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
970bool dirbrowse(char *root) 950bool 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;