diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-11-14 15:50:07 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-11-14 15:50:07 +0000 |
commit | 4cde17d1ca7571055b0586fee78bf71765ab32ff (patch) | |
tree | b3ae564beda0984c057e5f38b08dc3079ec9faf2 /firmware/common/file.c | |
parent | dc9cdc40edffad60b17434c2d9769e242edc3397 (diff) | |
download | rockbox-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/file.c')
-rw-r--r-- | firmware/common/file.c | 12 |
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; |