diff --git a/src/add-ons/kernel/file_systems/bfs/ToDo b/src/add-ons/kernel/file_systems/bfs/ToDo index c3adb15d1a..7426532709 100644 --- a/src/add-ons/kernel/file_systems/bfs/ToDo +++ b/src/add-ons/kernel/file_systems/bfs/ToDo @@ -66,7 +66,7 @@ Volume kernel_interface - - missing functions, maybe they are not really needed: bfs_rename_attr(), bfs_rename_index(), bfs_initialize(), bfs_setflags(), bfs_link() + - missing functions, maybe they are not really needed: bfs_rename_attr(), bfs_rename_index(), bfs_initialize(), bfs_link() - bfs_rename() currently doesn't respect any permissions diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index efc4c95f21..d104be36ab 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -692,13 +692,18 @@ bfs_ioctl(void *_ns, void *_node, void *_cookie, int cmd, void *buffer, size_t b } +/** Sets the open-mode flags for the open file cookie - only + * supports O_APPEND currently, but that should be sufficient + * for a file system. + */ + int -bfs_setflags(void *ns, void *node, void *cookie, int flags) +bfs_setflags(void *_ns, void *_node, void *_cookie, int flags) { FUNCTION_START(("node = %p, flags = %d", node, flags)); - // ToDo: implement bfs_setflags()! - INFORM(("setflags not yet implemented...\n")); + file_cookie *cookie = (file_cookie *)_cookie; + cookie->open_mode = (cookie->open_mode & ~O_APPEND) | (flags & O_APPEND); return B_OK; }