From a6b656e2ec808ffab1b5f46babcdc5f7b49b7a46 Mon Sep 17 00:00:00 2001 From: Charles Manning Date: Tue, 16 Nov 2010 15:25:58 +1300 Subject: [PATCH] yaffs direct: Fix yaffs_mkdir error paths Fix error hndling for yaffs_mkdir. Signed-off-by: Charles Manning --- direct/yaffsfs.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index 8822cda..3745f61 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -1865,25 +1865,21 @@ int yaffs_mkdir(const YCHAR *path, mode_t mode) yaffsfs_Lock(); parent = yaffsfs_FindDirectory(NULL,path,&name,0); - if(parent && yaffs_strnlen(name,5) == 0){ + if(!parent) + yaffsfs_SetError(-ENOTDIR); + else if(parent && yaffs_strnlen(name,5) == 0){ /* Trying to make the root itself */ yaffsfs_SetError(-EEXIST); - } else if(parent && parent->my_dev->read_only){ - yaffsfs_SetError(-EINVAL); - } else { - if(parent) - dir = yaffs_create_dir(parent,name,mode,0,0); + } else if(parent && parent->my_dev->read_only) + yaffsfs_SetError(-EROFS); + else { + dir = yaffs_create_dir(parent,name,mode,0,0); if(dir) retVal = 0; - else { - if(!parent) - yaffsfs_SetError(-ENOENT); /* missing path */ - else if (yaffs_find_by_name(parent,name)) - yaffsfs_SetError(-EEXIST); /* the name already exists */ - else - yaffsfs_SetError(-ENOSPC); /* just assume no space */ - retVal = -1; - } + else if (yaffs_find_by_name(parent,name)) + yaffsfs_SetError(-EEXIST); /* the name already exists */ + else + yaffsfs_SetError(-ENOSPC); /* just assume no space */ } yaffsfs_Unlock(); -- 2.30.2