X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=5194dd483f0c25e9568ce1913da20c9af1e86164;hp=e212d0b4d50735f3641a5aa51f3e0b8933ec024e;hb=53c341c494a5420f1b057b35810321b4e272eecd;hpb=17f7d8f4d601b9685221c6899f30cfb43babf32c diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index e212d0b..5194dd4 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -1092,9 +1092,12 @@ int yaffsfs_do_write(int fd, const void *vbuf, unsigned int nbyte, int isPwrite, /* bad handle */ yaffsfs_SetError(-EBADF); totalWritten = -1; - } else if( h && obj && (!h->writing || obj->my_dev->read_only)){ + } else if(!h->writing){ yaffsfs_SetError(-EINVAL); totalWritten=-1; + } else if(obj->my_dev->read_only){ + yaffsfs_SetError(-EROFS); + totalWritten=-1; } else { if(h->append) startPos = yaffs_get_obj_length(obj); @@ -1207,7 +1210,7 @@ int yaffs_truncate(const YCHAR *path,off_t new_size) else if(obj->variant_type != YAFFS_OBJECT_TYPE_FILE) yaffsfs_SetError(-EISDIR); else if(obj->my_dev->read_only) - yaffsfs_SetError(-EACCES); + yaffsfs_SetError(-EROFS); else if(new_size < 0 || new_size > YAFFS_MAX_FILE_SIZE) yaffsfs_SetError(-EINVAL); else @@ -1231,6 +1234,8 @@ int yaffs_ftruncate(int fd, off_t new_size) if(!h || !obj) /* bad handle */ yaffsfs_SetError(-EBADF); + else if(!h->writing) + yaffsfs_SetError(-EINVAL); else if(obj->my_dev->read_only) yaffsfs_SetError(-EROFS); else if( new_size < 0 || new_size > YAFFS_MAX_FILE_SIZE) @@ -1316,7 +1321,7 @@ int yaffsfs_DoUnlink(const YCHAR *path,int isDirectory) else if(!obj) yaffsfs_SetError(-ENOENT); else if(obj->my_dev->read_only) - yaffsfs_SetError(-EINVAL); + yaffsfs_SetError(-EROFS); else if(!isDirectory && obj->variant_type == YAFFS_OBJECT_TYPE_DIRECTORY) yaffsfs_SetError(-EISDIR); else if(isDirectory && obj->variant_type != YAFFS_OBJECT_TYPE_DIRECTORY)