summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tree.c')
-rw-r--r--apps/tree.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/apps/tree.c b/apps/tree.c
index 9745f004fd..7cb57e7757 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -697,10 +697,10 @@ static int onplay_screen(char* dir, char* file)
697 struct entry* f = &dircache[dirstart + dircursor]; 697 struct entry* f = &dircache[dirstart + dircursor];
698 bool isdir = f->attr & ATTR_DIRECTORY; 698 bool isdir = f->attr & ATTR_DIRECTORY;
699 699
700 if ((dir[0]=='/') && (dir[1]==0)) 700 if (dir[1])
701 snprintf(buf, sizeof buf, "%s%s", dir, file);
702 else
703 snprintf(buf, sizeof buf, "%s/%s", dir, file); 701 snprintf(buf, sizeof buf, "%s/%s", dir, file);
702 else
703 snprintf(buf, sizeof buf, "/%s", file);
704 704
705 lcd_clear_display(); 705 lcd_clear_display();
706 706
@@ -850,11 +850,11 @@ static int onplay_screen(char* dir, char* file)
850 int m_handle; 850 int m_handle;
851 int selected; 851 int selected;
852 852
853 if ((dir[0]=='/') && (dir[1]==0)) 853 if (dir[1])
854 snprintf(buf, sizeof buf, "%s%s", dir, file);
855 else
856 snprintf(buf, sizeof buf, "%s/%s", dir, file); 854 snprintf(buf, sizeof buf, "%s/%s", dir, file);
857 855 else
856 snprintf(buf, sizeof buf, "/%s", dir, file);
857
858 if (playing) { 858 if (playing) {
859 items[lastitem].desc=str(LANG_QUEUE); 859 items[lastitem].desc=str(LANG_QUEUE);
860 ids[lastitem]=1; 860 ids[lastitem]=1;
@@ -1096,11 +1096,10 @@ bool dirbrowse(char *root)
1096#endif 1096#endif
1097 if ( !numentries ) 1097 if ( !numentries )
1098 break; 1098 break;
1099 if ((currdir[0]=='/') && (currdir[1]==0)) { 1099 if (currdir[1])
1100 snprintf(buf,sizeof(buf),"%s%s",currdir, file->name);
1101 } else {
1102 snprintf(buf,sizeof(buf),"%s/%s",currdir, file->name); 1100 snprintf(buf,sizeof(buf),"%s/%s",currdir, file->name);
1103 } 1101 else
1102 snprintf(buf,sizeof(buf),"/%s",file->name);
1104 1103
1105 if (file->attr & ATTR_DIRECTORY) { 1104 if (file->attr & ATTR_DIRECTORY) {
1106 memcpy(currdir,buf,sizeof(currdir)); 1105 memcpy(currdir,buf,sizeof(currdir));
@@ -1120,10 +1119,15 @@ bool dirbrowse(char *root)
1120 lcd_stop_scroll(); 1119 lcd_stop_scroll();
1121 switch ( file->attr & TREE_ATTR_MASK ) { 1120 switch ( file->attr & TREE_ATTR_MASK ) {
1122 case TREE_ATTR_M3U: 1121 case TREE_ATTR_M3U:
1123 if ( global_settings.resume ) 1122 if ( global_settings.resume ) {
1124 snprintf(global_settings.resume_file, 1123 if (currdir[1])
1125 MAX_PATH, "%s/%s", 1124 snprintf(global_settings.resume_file,
1126 currdir, file->name); 1125 MAX_PATH, "%s/%s",
1126 currdir, file->name);
1127 else
1128 snprintf(global_settings.resume_file,
1129 MAX_PATH, "/%s", file->name);
1130 }
1127 play_list(currdir, file->name, 0, false, 0, 1131 play_list(currdir, file->name, 0, false, 0,
1128 seed, 0, 0, -1); 1132 seed, 0, 0, -1);
1129 start_index = 0; 1133 start_index = 0;
@@ -1496,7 +1500,10 @@ static bool add_dir(char* dirname, int fd)
1496 if (!strcmp(entry->d_name, ".") || 1500 if (!strcmp(entry->d_name, ".") ||
1497 !strcmp(entry->d_name, "..")) 1501 !strcmp(entry->d_name, ".."))
1498 continue; 1502 continue;
1499 snprintf(buf, sizeof buf, "%s/%s", dirname, entry->d_name); 1503 if (dirname[1])
1504 snprintf(buf, sizeof buf, "%s/%s", dirname, entry->d_name);
1505 else
1506 snprintf(buf, sizeof buf, "/%s", entry->d_name);
1500 if (add_dir(buf,fd)) { 1507 if (add_dir(buf,fd)) {
1501 abort = true; 1508 abort = true;
1502 break; 1509 break;