projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
yaffs Fixed some tests in direct/timothy_tests/quick_tests
[yaffs2.git]
/
direct
/
yaffsfs.c
diff --git
a/direct/yaffsfs.c
b/direct/yaffsfs.c
index c7937b075a04aa7f22410cef1139084446caf0bc..e212d0b4d50735f3641a5aa51f3e0b8933ec024e 100644
(file)
--- a/
direct/yaffsfs.c
+++ b/
direct/yaffsfs.c
@@
-756,6
+756,13
@@
int yaffs_open_sharing(const YCHAR *path, int oflag, int mode, int sharing)
if( writeRequested && !(obj->yst_mode & S_IWRITE))
openDenied = 1;
if( writeRequested && !(obj->yst_mode & S_IWRITE))
openDenied = 1;
+ if( !errorReported && writeRequested &&
+ obj->my_dev->read_only){
+ openDenied = 1;
+ yaffsfs_SetError(-EROFS);
+ errorReported = 1;
+ }
+
if(openDenied && !errorReported ) {
/* Error if the file exists but permissions are refused. */
yaffsfs_SetError(-EACCES);
if(openDenied && !errorReported ) {
/* Error if the file exists but permissions are refused. */
yaffsfs_SetError(-EACCES);
@@
-820,7
+827,7
@@
int yaffs_open_sharing(const YCHAR *path, int oflag, int mode, int sharing)
if(!obj && dir && !errorReported && (oflag & O_CREAT)) {
/* Let's see if we can create this file if it does not exist. */
if(dir->my_dev->read_only){
if(!obj && dir && !errorReported && (oflag & O_CREAT)) {
/* Let's see if we can create this file if it does not exist. */
if(dir->my_dev->read_only){
- yaffsfs_SetError(-E
INVAL
);
+ yaffsfs_SetError(-E
ROFS
);
errorReported = 1;
} else
obj = yaffs_create_file(dir,name,mode,0,0);
errorReported = 1;
} else
obj = yaffs_create_file(dir,name,mode,0,0);
@@
-881,19
+888,23
@@
int yaffs_open(const YCHAR *path, int oflag, int mode)
int yaffs_Dofsync(int fd,int datasync)
{
yaffsfs_Handle *h = NULL;
int yaffs_Dofsync(int fd,int datasync)
{
yaffsfs_Handle *h = NULL;
- int retVal =
0
;
+ int retVal =
-1
;
yaffsfs_Lock();
h = yaffsfs_GetHandlePointer(fd);
yaffsfs_Lock();
h = yaffsfs_GetHandlePointer(fd);
- if(h && h->useCount > 0)
- /* flush the file */
- yaffs_flush_file(yaffsfs_inode[h->inodeId].iObj,1,datasync);
- else {
- /* bad handle */
+ if(!h || h->useCount < 1)
yaffsfs_SetError(-EBADF);
yaffsfs_SetError(-EBADF);
- retVal = -1;
+ else {
+ struct yaffs_obj * obj;
+ obj = yaffsfs_inode[h->inodeId].iObj;
+ if(obj->my_dev->read_only)
+ yaffsfs_SetError(-EROFS);
+ else {
+ yaffs_flush_file(yaffsfs_inode[h->inodeId].iObj,1,datasync);
+ retVal = 0;
+ }
}
yaffsfs_Unlock();
}
yaffsfs_Unlock();
@@
-1191,6
+1202,8
@@
int yaffs_truncate(const YCHAR *path,off_t new_size)
yaffsfs_SetError(-ELOOP);
else if(!dir || !obj)
yaffsfs_SetError(-ENOENT);
yaffsfs_SetError(-ELOOP);
else if(!dir || !obj)
yaffsfs_SetError(-ENOENT);
+ else if(obj->my_dev->read_only)
+ yaffsfs_SetError(-EROFS);
else if(obj->variant_type != YAFFS_OBJECT_TYPE_FILE)
yaffsfs_SetError(-EISDIR);
else if(obj->my_dev->read_only)
else if(obj->variant_type != YAFFS_OBJECT_TYPE_FILE)
yaffsfs_SetError(-EISDIR);
else if(obj->my_dev->read_only)
@@
-1219,7
+1232,7
@@
int yaffs_ftruncate(int fd, off_t new_size)
/* bad handle */
yaffsfs_SetError(-EBADF);
else if(obj->my_dev->read_only)
/* bad handle */
yaffsfs_SetError(-EBADF);
else if(obj->my_dev->read_only)
- yaffsfs_SetError(-E
ACCE
S);
+ yaffsfs_SetError(-E
ROF
S);
else if( new_size < 0 || new_size > YAFFS_MAX_FILE_SIZE)
yaffsfs_SetError(-EINVAL);
else
else if( new_size < 0 || new_size > YAFFS_MAX_FILE_SIZE)
yaffsfs_SetError(-EINVAL);
else
@@
-2194,15
+2207,17
@@
int yaffs_sync(const YCHAR *path)
yaffsfs_Lock();
dev = yaffsfs_FindDevice(path,&dummy);
if(dev){
yaffsfs_Lock();
dev = yaffsfs_FindDevice(path,&dummy);
if(dev){
- if(dev->is_mounted){
+ if(!dev->is_mounted)
+ yaffsfs_SetError(-EINVAL);
+ else if(dev->read_only)
+ yaffsfs_SetError(-EROFS);
+ else {
yaffs_flush_whole_cache(dev);
yaffs_checkpoint_save(dev);
retVal = 0;
yaffs_flush_whole_cache(dev);
yaffs_checkpoint_save(dev);
retVal = 0;
- } else
- yaffsfs_SetError(-EINVAL);
-
+ }
}else
yaffsfs_SetError(-ENODEV);
}else
yaffsfs_SetError(-ENODEV);
@@
-2708,7
+2723,7
@@
int yaffs_link(const YCHAR *oldpath, const YCHAR *linkpath)
else if(!obj_dir || !lnk_dir || !obj)
yaffsfs_SetError(-ENOENT);
else if(obj->my_dev->read_only)
else if(!obj_dir || !lnk_dir || !obj)
yaffsfs_SetError(-ENOENT);
else if(obj->my_dev->read_only)
- yaffsfs_SetError(-E
INVAL
);
+ yaffsfs_SetError(-E
ROFS
);
else if(lnk)
yaffsfs_SetError(-EEXIST);
else if(lnk_dir->my_dev != obj->my_dev)
else if(lnk)
yaffsfs_SetError(-EEXIST);
else if(lnk_dir->my_dev != obj->my_dev)