From 2d005cca0896a78280c938b5eb0621ac0ab0400c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 3 Nov 2023 21:46:46 +0100 Subject: [PATCH] ext2: implement set_flags needed for fcntl(F_SETFL) Change-Id: I2e71bcf70d794f690985e8c26ae1b0be51a0e590 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7094 Reviewed-by: waddlesplash Tested-by: Commit checker robot --- .../file_systems/ext2/kernel_interface.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp index 27eae60494..8d4dba41c6 100644 --- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp @@ -561,6 +561,20 @@ ext2_ioctl(fs_volume* _volume, fs_vnode* _node, void* _cookie, uint32 cmd, } +/*! Sets the open-mode flags for the open file cookie - only + supports O_APPEND currently, but that should be sufficient + for a file system. +*/ +static status_t +ext2_set_flags(fs_volume* _volume, fs_vnode* _node, void* _cookie, int flags) +{ + file_cookie* cookie = (file_cookie*)_cookie; + cookie->open_mode = (cookie->open_mode & ~O_APPEND) | (flags & O_APPEND); + + return B_OK; +} + + static status_t ext2_fsync(fs_volume* _volume, fs_vnode* _node) { @@ -1680,7 +1694,7 @@ fs_vnode_ops gExt2VnodeOps = { &ext2_get_file_map, &ext2_ioctl, - NULL, + &ext2_set_flags, NULL, // fs_select NULL, // fs_deselect &ext2_fsync,