summaryrefslogtreecommitdiffstats
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)
dptr->attr = entry->attribute;
/* check for known file types */
- if ( !(dptr->attr & ATTR_DIRECTORY) && (len > 4) )
+ if ( !(dptr->attr & ATTR_DIRECTORY) )
dptr->attr |= filetype_get_attr(entry->d_name);
#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)
}
/* get the "dynamic" attribute for an extension */
-int filetype_get_attr(const char* name)
+int filetype_get_attr(char* name)
{
int i;
+ char *cp;
for (i=0; i < cnt_exttypes; i++)
{
if (exttypes[i].extension)
{
- if (!strcasecmp(&name[strlen(name)-
- strlen(exttypes[i].extension)],
- exttypes[i].extension))
+ cp=strrchr(name,'.');
+ if (cp) cp++;
+ if ((!strcasecmp(cp,exttypes[i].extension)) && (cp))
{
return ((((unsigned long)exttypes[i].type -
(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 @@
#include <tree.h>
#include <menu.h>
-int filetype_get_attr(const char*);
+int filetype_get_attr(char*);
#ifdef HAVE_LCD_BITMAP
const char* filetype_get_icon(int);
#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 @@
/* a table for the know file types */
const struct filetype filetypes[] = {
- { ".mp3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".mp2", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".mpa", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "mp3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "mp2", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "mpa", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
#if CONFIG_CODEC == SWCODEC
/* Temporary hack to allow playlist creation */
- { ".mp1", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".ogg", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".wma", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".wav", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".flac", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".ac3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".a52", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".mpc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
- { ".wv", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "mp1", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "ogg", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "wma", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "wav", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "flac", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "ac3", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "a52", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "mpc", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
+ { "wv", TREE_ATTR_MPA, Icon_Audio, VOICE_EXT_MPA },
#endif
- { ".m3u", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST },
- { ".cfg", TREE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG },
- { ".wps", TREE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS },
- { ".lng", TREE_ATTR_LNG, Icon_Language, LANG_LANGUAGE },
- { ".rock",TREE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK },
+ { "m3u", TREE_ATTR_M3U, Icon_Playlist, LANG_PLAYLIST },
+ { "cfg", TREE_ATTR_CFG, Icon_Config, VOICE_EXT_CFG },
+ { "wps", TREE_ATTR_WPS, Icon_Wps, VOICE_EXT_WPS },
+ { "lng", TREE_ATTR_LNG, Icon_Language, LANG_LANGUAGE },
+ { "rock",TREE_ATTR_ROCK,Icon_Plugin, VOICE_EXT_ROCK },
#ifdef HAVE_LCD_BITMAP
- { ".fnt", TREE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT },
+ { "fnt", TREE_ATTR_FONT,Icon_Font, VOICE_EXT_FONT },
#endif
- { ".bmark",TREE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK },
+ { "bmark",TREE_ATTR_BMARK, Icon_Bookmark, VOICE_EXT_BMARK },
#ifdef BOOTFILE_EXT
{ BOOTFILE_EXT, TREE_ATTR_MOD, Icon_Firmware, VOICE_EXT_AJZ },
#endif /* #ifndef SIMULATOR */
@@ -1375,15 +1375,15 @@ static bool add_dir(char* dirname, int len, int fd)
}
else {
int x = strlen(entry->d_name);
- int xl;
unsigned int i;
+ char *cp;
/* add all supported audio files to playlists */
for (i=0; i < sizeof(filetypes); i++) {
if (filetypes[i].tree_attr == TREE_ATTR_MPA) {
- xl=strlen(filetypes[i].extension);
- if (!strcasecmp(&entry->d_name[x-xl],
- filetypes[i].extension))
+ cp=strrchr(entry->d_name,'.');
+ if (cp) cp++;
+ if ((!strcasecmp(cp,filetypes[i].extension)) && (cp))
{
char buf[8];
write(fd, dirname, strlen(dirname));