diff options
author | Michael Sparmann <theseven@rockbox.org> | 2010-11-13 15:41:18 +0000 |
---|---|---|
committer | Michael Sparmann <theseven@rockbox.org> | 2010-11-13 15:41:18 +0000 |
commit | 79d26ed7f96537363ee752068d080e4416c14086 (patch) | |
tree | eb0f614d6039d4d6a469f8e6c1854bb9687c09cb /firmware/drivers | |
parent | 47bbd6a4662d122b00a95bbb7a2e3d80cc45648e (diff) |
Reduce the amount of stack space needed by fat_rename and mkdir_uncached.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28576 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/fat.c | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index c97772361e..c640e6e737 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -1967,7 +1967,7 @@ int fat_rename(struct fat_file* file, int attr) { int rc; - struct fat_dir olddir; + struct fat_file olddir_file; struct fat_file newfile = *file; unsigned char* entry = NULL; unsigned short* clusptr = NULL; @@ -1988,11 +1988,6 @@ int fat_rename(struct fat_file* file, return -2; } - /* create a temporary file handle */ - rc = fat_opendir(IF_MV2(file->volume,) &olddir, file->dircluster, NULL); - if (rc < 0) - return rc * 10 - 1; - /* create new name */ rc = add_dir_entry(dir, &newfile, newname, false, false); if (rc < 0) @@ -2016,18 +2011,17 @@ int fat_rename(struct fat_file* file, it points to its parent directory (we don't check if it was a move) */ if(FAT_ATTR_DIRECTORY == attr) { unsigned char buf[SECTOR_SIZE]; - /* open the dir that was renamed, we re-use the olddir struct */ - rc = fat_opendir(IF_MV2(file->volume,) &olddir, newfile.firstcluster, - NULL); + /* open the dir that was renamed, we re-use the olddir_file struct */ + rc = fat_open(IF_MV2(volume,) newfile.firstcluster, &olddir_file, NULL); if (rc < 0) return rc * 10 - 6; /* get the first sector of the dir */ - rc = fat_seek(&olddir.file, 0); + rc = fat_seek(&olddir_file, 0); if (rc < 0) return rc * 10 - 7; - rc = fat_readwrite(&olddir.file, 1, buf, false); + rc = fat_readwrite(&olddir_file, 1, buf, false); if (rc < 0) return rc * 10 - 8; @@ -2051,11 +2045,11 @@ int fat_rename(struct fat_file* file, *clusptr = htole16(parentcluster & 0xffff); /* write back this sector */ - rc = fat_seek(&olddir.file, 0); + rc = fat_seek(&olddir_file, 0); if (rc < 0) return rc * 10 - 7; - rc = fat_readwrite(&olddir.file, 1, buf, true); + rc = fat_readwrite(&olddir_file, 1, buf, true); if (rc < 1) return rc * 10 - 8; } |