X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b8a1bcad75628f9add4590db2bb9b8e418ee8eb..92f6e64a6da763c45ff9f4ab5eafcab3d8766dcb:/lunaix-os/kernel/fs/vfs.c diff --git a/lunaix-os/kernel/fs/vfs.c b/lunaix-os/kernel/fs/vfs.c index 80d2036..4ec74b4 100644 --- a/lunaix-os/kernel/fs/vfs.c +++ b/lunaix-os/kernel/fs/vfs.c @@ -860,7 +860,7 @@ vfs_readlink(struct v_dnode* dnode, char* buf, size_t size) int vfs_get_dtype(int itype) { - if ((itype & VFS_IFSYMLINK)) { + if ((itype & VFS_IFSYMLINK) == VFS_IFSYMLINK) { return DT_SYMLINK; } else if (!(itype & VFS_IFFILE)) { return DT_DIR; @@ -1003,6 +1003,11 @@ __DEFINE_LXSYSCALL1(int, mkdir, const char*, path) goto done; } + if (!(errno = vfs_walk(parent, name_value, &dir, NULL, 0))) { + errno = EEXIST; + goto done; + } + if ((errno = vfs_check_writable(parent))) { goto done; }