X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=d9be4907e2064d5d1f3d8d76ff2f9632fa43c272;hb=f941e8bcd38698061804775a93a598bace0bfded;hp=fc68b969e017c9a82af5b66452f95cfdfae87408;hpb=f792554ed6d0b514dfb040097033417d8e41f420;p=yaffs2.git diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index fc68b96..d9be490 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -573,12 +573,21 @@ int yaffs_open(const YCHAR *path, int oflag, int mode) if(obj) obj = yaffs_GetEquivalentObject(obj); - if(obj && obj->variantType != YAFFS_OBJECT_TYPE_FILE) + if(obj && + obj->variantType != YAFFS_OBJECT_TYPE_FILE && + obj->variantType != YAFFS_OBJECT_TYPE_DIRECTORY) obj = NULL; if(obj){ - /* The file already exists */ + /* The file already exists or it might be a directory */ + + /* If it is a directory then we can't open it as a file */ + if(obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY){ + openDenied = 1; + yaffsfs_SetError(-EISDIR); + errorReported = 1; + } /* Open should fail if O_CREAT and O_EXCL are specified since * the file exists @@ -1651,6 +1660,14 @@ int yaffs_mkdir(const YCHAR *path, mode_t mode) return retVal; } +void * yaffs_getdev(const YCHAR *path) +{ + yaffs_Device *dev=NULL; + YCHAR *dummy; + dev = yaffsfs_FindDevice(path,&dummy); + return (void *)dev; +} + int yaffs_mount2(const YCHAR *path,int readOnly) { int retVal=-1; @@ -1702,7 +1719,7 @@ int yaffs_sync(const YCHAR *path) yaffs_FlushEntireDeviceCache(dev); yaffs_CheckpointSave(dev); - + retVal = 0; } else /* todo error - not mounted. */