Fix check for open files when overwriting an existing file

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4019 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2011-10-04 22:07:45 +00:00
parent ee04a259db
commit 9c80d94163
1 changed files with 18 additions and 2 deletions

View File

@ -423,11 +423,27 @@ static inline int nxffs_wropen(FAR struct nxffs_volume_s *volume,
ret = nxffs_findinode(volume, name, &entry);
if (ret == OK)
{
/* It exists. It would be an error if we are asked to create it
FAR struct nxffs_ofile_s *ofile;
/* It exists. Is the file already open for reading? */
ofile = nxffs_findofile(volume, name);
if (ofile)
{
/* The file is already open.
* Limitation: Files cannot be open both for reading and writing.
*/
fdbg("File is open for reading\n");
ret = -ENOSYS;
goto errout_with_exclsem;
}
/* It would be an error if we are asked to create the file
* exclusively.
*/
if ((oflags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))
else if ((oflags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))
{
fdbg("File exists, can't create O_EXCL\n");
ret = -EEXIST;