From c0ca505fb01498e5ec56d42270971662266692c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 2 May 2007 19:04:06 +0000 Subject: [PATCH] devfs now accepts to create directories is scanning needed here ? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20982 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/devfs.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/fs/devfs.cpp b/src/system/kernel/fs/devfs.cpp index aa1b91228b..b1ee95332a 100644 --- a/src/system/kernel/fs/devfs.cpp +++ b/src/system/kernel/fs/devfs.cpp @@ -1422,7 +1422,29 @@ static status_t devfs_create_dir(fs_volume _fs, fs_vnode _dir, const char *name, int perms, vnode_id *_newVnodeID) { - return EROFS; + struct devfs *fs = (struct devfs *)_fs; + struct devfs_vnode *dir = (struct devfs_vnode *)_dir; + + struct devfs_vnode *vnode = devfs_find_in_dir(dir, name); + if (vnode != NULL) { + return EEXIST; + } + + vnode = devfs_create_vnode(fs, dir, name); + if (vnode == NULL) { + return B_NO_MEMORY; + } + + // set up the new directory + vnode->stream.type = S_IFDIR | perms; + vnode->stream.u.dir.dir_head = NULL; + list_init(&vnode->stream.u.dir.cookies); + + hash_insert(sDeviceFileSystem->vnode_hash, vnode); + devfs_insert_in_dir(dir, vnode); + + *_newVnodeID = vnode->id; + return B_OK; }