X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=3745f6189011c60bd14e63b9184c8212f9b36351;hp=8822cda25083a0ed51f8ad6449787fdaef93ea63;hb=a6b656e2ec808ffab1b5f46babcdc5f7b49b7a46;hpb=24f00634ca4584100b60d7b68675c1c9c4646ee8 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();