summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorHenrik Backe <henrik@backe.eu>2005-09-02 15:05:35 +0000
committerHenrik Backe <henrik@backe.eu>2005-09-02 15:05:35 +0000
commitb2473d58ab1a7ff0722bd27f08ce5a8856cd5502 (patch)
tree3eca1349052d07ddf975956bdd2ab8f4bce6e309 /apps
parentacf14e05693125d3768de80d99d7cfff6c2b164a (diff)
downloadrockbox-b2473d58ab1a7ff0722bd27f08ce5a8856cd5502.tar.gz
rockbox-b2473d58ab1a7ff0722bd27f08ce5a8856cd5502.zip
Fixed associate problem with file extensions (.info files matched .nfo extension)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7456 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/filetree.c2
-rw-r--r--apps/filetypes.c9
-rw-r--r--apps/filetypes.h2
-rw-r--r--apps/tree.c46
4 files changed, 30 insertions, 29 deletions
diff --git a/apps/filetree.c b/apps/filetree.c
index 691a6adee6..8ecdc0c93d 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -240,7 +240,7 @@ int ft_load(struct tree_context* c, const char* tempdir)
240 dptr->attr = entry->attribute; 240 dptr->attr = entry->attribute;
241 241
242 /* check for known file types */ 242 /* check for known file types */
243 if ( !(dptr->attr & ATTR_DIRECTORY) && (len > 4) ) 243 if ( !(dptr->attr & ATTR_DIRECTORY) )
244 dptr->attr |= filetype_get_attr(entry->d_name); 244 dptr->attr |= filetype_get_attr(entry->d_name);
245 245
246#ifdef BOOTFILE 246#ifdef BOOTFILE
diff --git a/apps/filetypes.c b/apps/filetypes.c
index ace89154fc..30ab2c34e5 100644
--- a/apps/filetypes.c
+++ b/apps/filetypes.c
@@ -209,17 +209,18 @@ bool filetype_supported(int attr)
209} 209}
210 210
211/* get the "dynamic" attribute for an extension */ 211/* get the "dynamic" attribute for an extension */
212int filetype_get_attr(const char* name) 212int filetype_get_attr(char* name)
213{ 213{
214 int i; 214 int i;
215 char *cp;
215 216
216 for (i=0; i < cnt_exttypes; i++) 217 for (i=0; i < cnt_exttypes; i++)
217 { 218 {
218 if (exttypes[i].extension) 219 if (exttypes[i].extension)
219 { 220 {
220 if (!strcasecmp(&name[strlen(name)- 221 cp=strrchr(name,'.');
221 strlen(exttypes[i].extension)], 222 if (cp) cp++;
222 exttypes[i].extension)) 223 if ((!strcasecmp(cp,exttypes[i].extension)) && (cp))
223 { 224 {
224 return ((((unsigned long)exttypes[i].type - 225 return ((((unsigned long)exttypes[i].type -
225 (unsigned long)&filetypes[0]) / 226 (unsigned long)&filetypes[0]) /
diff --git a/apps/filetypes.h b/apps/filetypes.h
index e72dd6ffd3..200d338039 100644
--- a/apps/filetypes.h
+++ b/apps/filetypes.h
@@ -23,7 +23,7 @@
23#include <tree.h> 23#include <tree.h>
24#include <menu.h> 24#include <menu.h>
25 25
26int filetype_get_attr(const char*); 26int filetype_get_attr(char*);
27#ifdef HAVE_LCD_BITMAP 27#ifdef HAVE_LCD_BITMAP
28const char* filetype_get_icon(int); 28const char* filetype_get_icon(int);
29#else 29#else
diff --git a/apps/tree.c b/apps/tree.c
index c42d18beab..eec71aeb93 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -68,30 +68,30 @@
68 68
69/* a table for the know file types */ 69/* a table for the know file types */
70const struct filetype filetypes[] = { 70const struct filetype filetypes[] = {
71 { ".mp3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 71 { "mp3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
72 { ".mp2", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 72 { "mp2", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
73 { ".mpa", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 73 { "mpa", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
74#if CONFIG_CODEC == SWCODEC 74#if CONFIG_CODEC == SWCODEC
75 /* Temporary hack to allow playlist creation */ 75 /* Temporary hack to allow playlist creation */
76 { ".mp1", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 76 { "mp1", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
77 { ".ogg", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 77 { "ogg", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
78 { ".wma", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 78 { "wma", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
79 { ".wav", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 79 { "wav", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
80 { ".flac", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 80 { "flac", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
81 { ".ac3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 81 { "ac3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
82 { ".a52", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 82 { "a52", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
83 { ".mpc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 83 { "mpc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
84 { ".wv", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA }, 84 { "wv", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
85#endif 85#endif
86 { ".m3u", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST }, 86 { "m3u", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST },
87 { ".cfg", TREE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG }, 87 { "cfg", TREE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG },
88 { ".wps", TREE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS }, 88 { "wps", TREE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS },
89 { ".lng", TREE_ATTR_LNG, Icon_Language, LANG_LANGUAGE }, 89 { "lng", TREE_ATTR_LNG, Icon_Language, LANG_LANGUAGE },
90 { ".rock",TREE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK }, 90 { "rock",TREE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK },
91#ifdef HAVE_LCD_BITMAP 91#ifdef HAVE_LCD_BITMAP
92 { ".fnt", TREE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT }, 92 { "fnt", TREE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT },
93#endif 93#endif
94 { ".bmark",TREE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK }, 94 { "bmark",TREE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK },
95#ifdef BOOTFILE_EXT 95#ifdef BOOTFILE_EXT
96 { BOOTFILE_EXT, TREE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ }, 96 { BOOTFILE_EXT, TREE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ },
97#endif /* #ifndef SIMULATOR */ 97#endif /* #ifndef SIMULATOR */
@@ -1375,15 +1375,15 @@ static bool add_dir(char* dirname, int len, int fd)
1375 } 1375 }
1376 else { 1376 else {
1377 int x = strlen(entry->d_name); 1377 int x = strlen(entry->d_name);
1378 int xl;
1379 unsigned int i; 1378 unsigned int i;
1379 char *cp;
1380 1380
1381 /* add all supported audio files to playlists */ 1381 /* add all supported audio files to playlists */
1382 for (i=0; i < sizeof(filetypes); i++) { 1382 for (i=0; i < sizeof(filetypes); i++) {
1383 if (filetypes[i].tree_attr == TREE_ATTR_MPA) { 1383 if (filetypes[i].tree_attr == TREE_ATTR_MPA) {
1384 xl=strlen(filetypes[i].extension); 1384 cp=strrchr(entry->d_name,'.');
1385 if (!strcasecmp(&entry->d_name[x-xl], 1385 if (cp) cp++;
1386 filetypes[i].extension)) 1386 if ((!strcasecmp(cp,filetypes[i].extension)) && (cp))
1387 { 1387 {
1388 char buf[8]; 1388 char buf[8];
1389 write(fd, dirname, strlen(dirname)); 1389 write(fd, dirname, strlen(dirname));