diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-03-13 07:33:30 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-03-13 07:33:30 +0000 |
| commit | 25efd331e82ef49da700bbd567195d80fffb33eb (patch) | |
| tree | 56d8ecc0513643f1e9c09f0dbf2201ea384cb839 /apps/filetypes.c | |
| parent | e8a0506583c5e401ea753ff30a3c717e837dffb8 (diff) | |
| download | rockbox-25efd331e82ef49da700bbd567195d80fffb33eb.zip rockbox-25efd331e82ef49da700bbd567195d80fffb33eb.tar.gz rockbox-25efd331e82ef49da700bbd567195d80fffb33eb.tar.bz2 rockbox-25efd331e82ef49da700bbd567195d80fffb33eb.tar.xz | |
Patch #4791 by Jonathan Gordon - Remove duplicates from the Open-with menu, and allow regular rocks to be loaded as viewers. Also allow all file types in the Open-with menu, not only the registered ones.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9025 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/filetypes.c')
| -rw-r--r-- | apps/filetypes.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/apps/filetypes.c b/apps/filetypes.c index 4e88f81..0f9f0c7 100644 --- a/apps/filetypes.c +++ b/apps/filetypes.c @@ -246,6 +246,13 @@ int filetype_load_menu(struct menu_item* menu,int max_items) { if (filetypes[i].plugin) { + int j; + for (j=0;j<cnt;j++) /* check if the plugin is in the list yet */ + { + if (!strcmp(menu[j].desc,filetypes[i].plugin)) + break; + } + if (j<cnt) continue; /* it is so grab the next plugin */ cp=strrchr(filetypes[i].plugin,'/'); if (cp) cp++; else cp=filetypes[i].plugin; @@ -261,9 +268,25 @@ int filetype_load_menu(struct menu_item* menu,int max_items) /* start a plugin with an argument (called from onplay.c) */ int filetype_load_plugin(const char* plugin, char* file) { + int fd; snprintf(plugin_name,sizeof(plugin_name),"%s/%s.rock", VIEWERS_DIR,plugin); - return plugin_load(plugin_name,file); + if ((fd = open(plugin_name,O_RDONLY))>=0) + { + close(fd); + return plugin_load(plugin_name,file); + } + else + { + snprintf(plugin_name,sizeof(plugin_name),"%s/%s.rock", + PLUGIN_DIR,plugin); + if ((fd = open(plugin_name,O_RDONLY))>=0) + { + close(fd); + return plugin_load(plugin_name,file); + } + } + return PLUGIN_ERROR; } /* get index to filetypes[] from the file attribute */ |