summaryrefslogtreecommitdiff
path: root/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c49
1 files changed, 26 insertions, 23 deletions
diff --git a/menu.c b/menu.c
index c48c2363..81f7cf7b 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c,v 1.57.2.2 2009-06-06 13:21:27 phintuka Exp $
+ * $Id: menu.c,v 1.57.2.1 2009-02-12 11:04:03 phintuka Exp $
*
*/
@@ -92,7 +92,7 @@ static char *ParentDir(const char *dir)
static char *LastDir(const char *dir)
{
- const char *pt = strrchr(dir, '/');
+ char *pt = strrchr(dir, '/');
if(pt && pt[0] && pt[1])
return strdup(pt+1);
return NULL;
@@ -386,33 +386,36 @@ bool cMenuBrowseFiles::ScanDir(const char *DirName)
} else if(m_Mode == ShowImages && xc.IsImageFile(buffer)) {
Add(new cFileListItem(e->d_name, false));
- // DVD image (.iso)
- } else if (m_Mode == ShowFiles && xc.IsDvdImage(buffer)) {
- Add(new cFileListItem(e->d_name, false, false, false, true));
-
// video
} else if (m_Mode == ShowFiles && xc.IsVideoFile(buffer)) {
+ bool resume = false, subs = false, dvd = false;
+ char *pos = strrchr(e->d_name, '.');
cString subfile;
- cString resumefile;
-
- // separate subtitles ?
- cString basename = cString::sprintf("%s/%s", DirName, e->d_name);
- const char *p = strrchr(basename, '.');
- if (p)
- basename.Truncate(p - basename);
- int i;
- for(i=0; xc.s_subExts[i] && !*subfile; i++) {
- cString tmp = cString::sprintf("%s%s", *basename, xc.s_subExts[i]);
- if (stat(tmp, &st) == 0)
- subfile = tmp;
- }
+
+ if(pos) {
+ // .iso image -> dvd
+ if(pos && !strcasecmp(pos, ".iso"))
+ dvd = true;
+
+ // separate subtitles ?
+ subfile = cString::sprintf("%s/%s____", DirName, e->d_name);
+ char *p = strrchr(subfile, '.');
+ if( p ) {
+ int i;
+ for(i=0; xc.s_subExts[i] && !subs; i++) {
+ strcpy(p, xc.s_subExts[i]);
+ if (stat(subfile, &st) == 0)
+ subs = true;
+ }
+ }
+ }
// resume file ?
- resumefile = cString::sprintf("%s/%s.resume", DirName, e->d_name);
- if (stat(resumefile, &st) != 0)
- resumefile = NULL;
+ buffer = cString::sprintf("%s/%s.resume", DirName, e->d_name);
+ if (stat(buffer, &st) == 0)
+ resume = true;
- Add(new cFileListItem(e->d_name, false, *resumefile, subfile));
+ Add(new cFileListItem(e->d_name, false, resume, subs?*subfile:NULL, dvd));
}
}
}