mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
filesystems: fix checks for file existance
This commit is contained in:
+4
-1
@@ -98,6 +98,9 @@ void devfs_init(){
|
||||
|
||||
int devfs_newdevice(char* name, int type, dev_t dev, mode_t mode){
|
||||
|
||||
if(hashtable_get(&devnodes, name))
|
||||
return EEXIST;
|
||||
|
||||
vnode_t* node = vfs_newnode(name, fs, 0);
|
||||
if(!node)
|
||||
return ENOMEM;
|
||||
@@ -106,7 +109,7 @@ int devfs_newdevice(char* name, int type, dev_t dev, mode_t mode){
|
||||
vfs_destroynode(node);
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
node->st.st_rdev = dev;
|
||||
node->st.st_mode = MAKETYPE(type) | mode;
|
||||
node->st.st_ino = fs->data;
|
||||
|
||||
+11
-8
@@ -239,15 +239,16 @@ int vfs_create(dirnode_t* ref, char* path, mode_t mode){
|
||||
|
||||
int result = vfs_resolvepath(&buff, &parent, ref, path, name);
|
||||
|
||||
if(buff){
|
||||
spinlock_release(&lock);
|
||||
return EEXIST;
|
||||
}
|
||||
|
||||
if(!parent){
|
||||
spinlock_release(&lock);
|
||||
return result;
|
||||
}
|
||||
|
||||
if(buff){
|
||||
spinlock_release(&lock);
|
||||
return EEXIST;
|
||||
}
|
||||
result = parent->vnode.fs->calls->create(parent, name, mode);
|
||||
|
||||
spinlock_release(&lock);
|
||||
@@ -268,14 +269,16 @@ int vfs_mkdir(dirnode_t* ref, char* path, mode_t mode){
|
||||
|
||||
int result = vfs_resolvepath(&buff, &parent, ref, path, name);
|
||||
|
||||
if(!parent){
|
||||
spinlock_release(&lock);
|
||||
return result;
|
||||
}
|
||||
if(buff){
|
||||
spinlock_release(&lock);
|
||||
return EEXIST;
|
||||
}
|
||||
|
||||
if(!parent){
|
||||
spinlock_release(&lock);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
result = parent->vnode.fs->calls->mkdir(parent, name, mode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user