mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-25 19:04:58 +00:00
Kernel: Implement FIFOs/named pipes
This commit is contained in:
committed by
Andreas Kling
parent
76e34968fa
commit
d01eba6fa3
@@ -292,6 +292,23 @@ KResultOr<NonnullRefPtr<FileDescription>> VFS::open(StringView path, int options
|
||||
if (auto preopen_fd = inode.preopen_fd())
|
||||
return *preopen_fd;
|
||||
|
||||
if (metadata.is_fifo()) {
|
||||
if (options & O_WRONLY) {
|
||||
auto description = inode.fifo().open_direction_blocking(FIFO::Direction::Writer);
|
||||
description->set_rw_mode(options);
|
||||
description->set_file_flags(options);
|
||||
description->set_original_inode({}, inode);
|
||||
return description;
|
||||
} else if (options & O_RDONLY) {
|
||||
auto description = inode.fifo().open_direction_blocking(FIFO::Direction::Reader);
|
||||
description->set_rw_mode(options);
|
||||
description->set_file_flags(options);
|
||||
description->set_original_inode({}, inode);
|
||||
return description;
|
||||
}
|
||||
return KResult(-EINVAL);
|
||||
}
|
||||
|
||||
if (metadata.is_device()) {
|
||||
if (custody.mount_flags() & MS_NODEV)
|
||||
return KResult(-EACCES);
|
||||
|
||||
Reference in New Issue
Block a user