From cdd79a35d40b314a723752cd40eb03ece79620b9 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Tue, 18 Jan 2005 22:50:47 +0000 Subject: Repaired broken resume git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5596 a1c6a512-1295-4272-9138-f99709370657 --- apps/filetree.c | 9 +++++++-- apps/filetree.h | 2 +- apps/playlist.c | 6 ++---- apps/tree.c | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) (limited to 'apps') diff --git a/apps/filetree.c b/apps/filetree.c index a46ffbb2bc..324266e64f 100644 --- a/apps/filetree.c +++ b/apps/filetree.c @@ -184,11 +184,16 @@ static int compare(const void* p1, const void* p2) } /* load and sort directory into dircache. returns NULL on failure. */ -int ft_load(struct tree_context* c) +int ft_load(struct tree_context* c, const char* tempdir) { int i; int name_buffer_used = 0; - DIR *dir = opendir(c->currdir); + DIR *dir; + + if (tempdir) + dir = opendir(tempdir); + else + dir = opendir(c->currdir); if(!dir) return -1; /* not a directory */ diff --git a/apps/filetree.h b/apps/filetree.h index 143b75ad66..cdcdfca261 100644 --- a/apps/filetree.h +++ b/apps/filetree.h @@ -20,7 +20,7 @@ #define FILETREE_H #include "tree.h" -int ft_load(struct tree_context* c); +int ft_load(struct tree_context* c, const char* tempdir); int ft_play_filenumber(int pos, int attr); int ft_play_dirname(int start_index); void ft_play_filename(char *dir, char *file); diff --git a/apps/playlist.c b/apps/playlist.c index 4506ec5f54..651a5afeea 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -544,8 +544,7 @@ static int add_directory_to_playlist(struct playlist_info* playlist, /* use the tree browser dircache to load files */ global_settings.dirfilter = SHOW_ALL; - strncpy(tc->currdir, dirname, sizeof(tc->currdir)); - num_files = ft_load(tc); + num_files = ft_load(tc, dirname); files = (struct entry*) tc->dircache; if(!num_files) @@ -584,8 +583,7 @@ static int add_directory_to_playlist(struct playlist_info* playlist, break; /* we now need to reload our current directory */ - strncpy(tc->currdir, dirname, sizeof(tc->currdir)); - num_files = ft_load(tc); + num_files = ft_load(tc, dirname); files = (struct entry*) tc->dircache; if (!num_files) { diff --git a/apps/tree.c b/apps/tree.c index 2ba4585047..e4c6110040 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -279,7 +279,7 @@ static int showdir(void) } else { if (strncmp(tc.currdir, lastdir, sizeof(lastdir)) || reload_dir) { - if (ft_load(&tc) < 0) + if (ft_load(&tc, NULL) < 0) return -1; strcpy(lastdir, tc.currdir); newdir = true; @@ -499,7 +499,7 @@ static bool ask_resume(bool ask_once) void resume_directory(const char *dir) { strcpy(tc.currdir, dir); - if (!ft_load(&tc)) + if (ft_load(&tc, NULL) < 0) return; lastdir[0] = 0; @@ -602,7 +602,7 @@ static bool check_changed_id3mode(bool currmode) db_load(&tc); } else - ft_load(&tc); + ft_load(&tc, NULL); } return currmode; } -- cgit v1.2.3