summaryrefslogtreecommitdiff
path: root/apps/playlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playlist.c')
-rw-r--r--apps/playlist.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/apps/playlist.c b/apps/playlist.c
index 9d844e3b84..5a5313b736 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -1313,6 +1313,29 @@ static int get_next_dir(char *dir, bool is_forward, bool recursion)
1313 struct tree_context* tc = tree_get_context(); 1313 struct tree_context* tc = tree_get_context();
1314 int dirfilter = *(tc->dirfilter); 1314 int dirfilter = *(tc->dirfilter);
1315 1315
1316 if (global_settings.next_folder == FOLDER_ADVANCE_RANDOM)
1317 {
1318 int fd = open(ROCKBOX_DIR "/folder_advance_list.dat",O_RDONLY);
1319 char buffer[MAX_PATH];
1320 int folder_count = 0,i;
1321 srand(current_tick);
1322 if (fd >= 0)
1323 {
1324 read(fd,&folder_count,sizeof(int));
1325 while (!exit)
1326 {
1327 i = rand()%folder_count;
1328 lseek(fd,sizeof(int) + (MAX_PATH*i),SEEK_SET);
1329 read(fd,buffer,MAX_PATH);
1330 if (check_subdir_for_music(buffer,"") ==0)
1331 exit = true;
1332 }
1333 strcpy(dir,buffer);
1334 close(fd);
1335 return 0;
1336 }
1337 }
1338 /* not random folder advance */
1316 if (recursion){ 1339 if (recursion){
1317 /* start with root */ 1340 /* start with root */
1318 dir[0] = '\0'; 1341 dir[0] = '\0';