summaryrefslogtreecommitdiff
path: root/firmware/common
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-11-14 15:50:07 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-11-14 15:50:07 +0000
commit4cde17d1ca7571055b0586fee78bf71765ab32ff (patch)
treeb3ae564beda0984c057e5f38b08dc3079ec9faf2 /firmware/common
parentdc9cdc40edffad60b17434c2d9769e242edc3397 (diff)
downloadrockbox-4cde17d1ca7571055b0586fee78bf71765ab32ff.tar.gz
rockbox-4cde17d1ca7571055b0586fee78bf71765ab32ff.zip
Flush sector cache before truncating.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2849 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/common')
-rw-r--r--firmware/common/file.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/firmware/common/file.c b/firmware/common/file.c
index 504273fd67..01a0ebf890 100644
--- a/firmware/common/file.c
+++ b/firmware/common/file.c
@@ -174,18 +174,18 @@ int close(int fd)
174 return -2; 174 return -2;
175 } 175 }
176 if (file->write) { 176 if (file->write) {
177 /* truncate? */
178 if (file->trunc) {
179 if (ftruncate(fd, file->fileoffset) < 0)
180 return -1;
181 }
182
183 /* flush sector cache */ 177 /* flush sector cache */
184 if ( file->dirty ) { 178 if ( file->dirty ) {
185 if (flush_cache(fd) < 0) 179 if (flush_cache(fd) < 0)
186 return -2; 180 return -2;
187 } 181 }
188 182
183 /* truncate? */
184 if (file->trunc) {
185 if (ftruncate(fd, file->fileoffset) < 0)
186 return -1;
187 }
188
189 /* tie up all loose ends */ 189 /* tie up all loose ends */
190 if (fat_closewrite(&(file->fatfile), file->size) < 0) 190 if (fat_closewrite(&(file->fatfile), file->size) < 0)
191 return -3; 191 return -3;