Truncated files are modified upon opening

This commit is contained in:
Michael Chisholm 2008-12-13 03:14:54 +00:00
parent 2a239bcd2b
commit 145e2cc9d3

View File

@ -111,6 +111,9 @@ int _FAT_open_r (struct _reent *r, void *fileStruct, const char *path, int flags
return -1; return -1;
} }
// We haven't modified the file yet
file->modified = false;
// If the file doesn't exist, create it if we're allowed to // If the file doesn't exist, create it if we're allowed to
if (!fileExists) { if (!fileExists) {
if (flags & O_CREAT) { if (flags & O_CREAT) {
@ -154,6 +157,9 @@ int _FAT_open_r (struct _reent *r, void *fileStruct, const char *path, int flags
r->_errno = ENOSPC; r->_errno = ENOSPC;
return -1; return -1;
} }
// File entry is modified
file->modified = true;
} else { } else {
// file doesn't exist, and we aren't creating it // file doesn't exist, and we aren't creating it
_FAT_unlock(&partition->lock); _FAT_unlock(&partition->lock);
@ -189,6 +195,8 @@ int _FAT_open_r (struct _reent *r, void *fileStruct, const char *path, int flags
_FAT_fat_clearLinks (partition, file->startCluster); _FAT_fat_clearLinks (partition, file->startCluster);
file->startCluster = CLUSTER_FREE; file->startCluster = CLUSTER_FREE;
file->filesize = 0; file->filesize = 0;
// File is modified since we just cut it all off
file->modified = true;
} }
// Remember the position of this file's directory entry // Remember the position of this file's directory entry
@ -221,8 +229,6 @@ int _FAT_open_r (struct _reent *r, void *fileStruct, const char *path, int flags
file->appendPosition = file->rwPosition; file->appendPosition = file->rwPosition;
} }
file->modified = false;
file->inUse = true; file->inUse = true;
// Insert this file into the double-linked list of open files // Insert this file into the double-linked list of open files