diff options
Diffstat (limited to 'apps/playlist.c')
-rw-r--r-- | apps/playlist.c | 23 |
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'; |