Bugfix: recursive directory properties could not be aborted

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11751 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Peter D'Hoye 2006-12-13 19:52:08 +00:00
parent 20338ca60d
commit 1936f7c460

View file

@ -134,7 +134,7 @@ static bool _dir_properties(DPS* dps)
struct dirent* entry;
#endif
result = 0;
result = true;
dirlen = rb->strlen(dps->dirname);
#ifdef HAVE_DIRCACHE
dir = rb->opendir_cached(dps->dirname);
@ -146,9 +146,9 @@ static bool _dir_properties(DPS* dps)
/* walk through the directory content */
#ifdef HAVE_DIRCACHE
while((!result) && (0 != (entry = rb->readdir_cached(dir))))
while(result && (0 != (entry = rb->readdir_cached(dir))))
#else
while((!result) && (0 != (entry = rb->readdir(dir))))
while(result && (0 != (entry = rb->readdir(dir))))
#endif
{
/* append name to current directory */
@ -178,14 +178,14 @@ static bool _dir_properties(DPS* dps)
#endif
/* recursion */
result = _dir_properties(dps);
if(rb->get_action(CONTEXT_TREE,TIMEOUT_NOBLOCK))
result = false;
}
else
{
dps->fc++; /* new file */
dps->bc += entry->size;
}
if(ACTION_STD_CANCEL == rb->get_action(CONTEXT_STD,TIMEOUT_NOBLOCK))
result = false;
rb->yield();
}
#ifdef HAVE_DIRCACHE
@ -194,8 +194,6 @@ static bool _dir_properties(DPS* dps)
rb->closedir(dir);
#endif
if(rb->action_userabort(0)) result = false;
return result;
}
@ -208,8 +206,8 @@ static bool dir_properties(char* selected_file)
dps.dc = 0;
dps.fc = 0;
dps.bc = 0;
if(_dir_properties(&dps))
return true;
if(false == _dir_properties(&dps))
return false;
rb->snprintf(str_dirname, MAX_PATH, selected_file);
rb->snprintf(str_dircount, sizeof str_dircount, "Subdirs: %d", dps.dc);