diff options
| author | Amaury Pouly <pamaury@rockbox.org> | 2010-03-10 08:56:27 +0000 |
|---|---|---|
| committer | Amaury Pouly <pamaury@rockbox.org> | 2010-03-10 08:56:27 +0000 |
| commit | 56069476be65da87604d7b006aee7008445b965f (patch) | |
| tree | 94804f1423d229b3370fb4c72d6585c601e875e2 /firmware | |
| parent | 0be28e819face17564a75a11745c29d33317fcb0 (diff) | |
| download | rockbox-56069476be65da87604d7b006aee7008445b965f.zip rockbox-56069476be65da87604d7b006aee7008445b965f.tar.gz rockbox-56069476be65da87604d7b006aee7008445b965f.tar.bz2 rockbox-56069476be65da87604d7b006aee7008445b965f.tar.xz | |
Get rid of the parent_dir field in dir_uncached.c by using the same FAT trick as in dircache. This should save ~20KB on 512B/sector targets and ~80KB on 2K/sector ones.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25105 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/common/dir_uncached.c | 9 | ||||
| -rw-r--r-- | firmware/include/dir_uncached.h | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/firmware/common/dir_uncached.c b/firmware/common/dir_uncached.c index 2052503..c6f3a6f 100644 --- a/firmware/common/dir_uncached.c +++ b/firmware/common/dir_uncached.c @@ -114,11 +114,16 @@ DIR_UNCACHED* opendir_uncached(const char* name) } if ( (entry.attr & FAT_ATTR_DIRECTORY) && (!strcasecmp(part, entry.name)) ) { - pdir->parent_dir = pdir->fatdir; + /* in reality, the parent_dir parameter of fat_opendir is + * useless because it's sole purpose it to have a way to + * update the file metadata, but here we are only reading + * a directory so there's no need for that kind of stuff. + * Consequently, we can safely pass NULL of it because + * fat_opendir and fat_open are NULL-protected. */ if ( fat_opendir(IF_MV2(volume,) &pdir->fatdir, entry.firstcluster, - &pdir->parent_dir) < 0 ) { + NULL) < 0 ) { DEBUGF("Failed opening dir '%s' (%ld)\n", part, entry.firstcluster); pdir->busy = false; diff --git a/firmware/include/dir_uncached.h b/firmware/include/dir_uncached.h index e198833..4e5acf3 100644 --- a/firmware/include/dir_uncached.h +++ b/firmware/include/dir_uncached.h @@ -61,7 +61,6 @@ typedef struct { bool busy; long startcluster; struct fat_dir fatdir; - struct fat_dir parent_dir; struct dirent_uncached theent; #ifdef HAVE_MULTIVOLUME int volumecounter; /* running counter for faked volume entries */ |