X-Git-Url: http://aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=8593cbe72d82bb1745396c43fdf5f8a3873009d0;hp=7647444699f56d7e8cdf88cac1f01b05df511b98;hb=5e0db4930940ade57ea3bf3dce0d3db0362a9f0e;hpb=c8f0255026354753fa51468c85346b4074af6c4f diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index 7647444..8593cbe 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -893,12 +893,14 @@ int yaffs_open_sharing_reldir(struct yaffs_obj *reldir, const YCHAR *path, is_dir = (obj->variant_type == YAFFS_OBJECT_TYPE_DIRECTORY); - /* A directory can't be opened except for read */ - if ( is_dir && - (writeRequested || !readRequested || rwflags != O_RDONLY)) { - openDenied = __LINE__; - yaffsfs_SetError(-EISDIR); - errorReported = __LINE__; + /* + * A directory can't be opened except for read, so we + * ignore other flags + */ + if (is_dir) { + writeRequested = 0; + readRequested = 1; + rwflags = O_RDONLY; } if(is_dir) { @@ -3635,7 +3637,7 @@ struct yaffs_dirent *yaffs_readdir_fd(int fd) yaffsfs_Lock(); f = yaffsfs_HandleToFileDes(fd); - if(f && f->isDir) + if(f && f->isDir && f->v.dir) ret = yaffsfs_readdir_no_lock(f->v.dir); yaffsfs_Unlock(); return ret;