[prev in list] [next in list] [prev in thread] [next in thread] 

List:       haiku-commits
Subject:    [haiku-commits] haiku: hrev57711 - src/add-ons/kernel/file_systems/ramfs
From:       waddlesplash <waddlesplash () gmail ! com>
Date:       2024-04-24 19:56:32
Message-ID: 20240424195632.6CCCD4AB99 () turing ! freelists ! org
[Download RAW message or body]

hrev57711 adds 1 changeset to branch 'master'
old head: 28b96e105fa5930eabb80805402e8873711afc4f
new head: 9673f7b8bfcc04f652e2b13ea0b4df56afbb7d69
overview: https://git.haiku-os.org/haiku/log/?qt=range&q=9673f7b8bfcc+%5E28b96e105fa5

----------------------------------------------------------------------------

9673f7b8bfcc: ramfs: honor the O_DIRECTORY flag on open()
  
  by returning B_NOT_A_DIRECTORY on non-directory nodes, fix #18896.
  * like BFS, opening a directory read-write returns B_IS_A_DIRECTORY, instead of
  switching read-only.
  * fill st_blocks.
  
  Change-Id: I706dc13209299b95be3da04ae19a6a9397b50c37
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/7629
  Reviewed-by: waddlesplash <waddlesplash@gmail.com>
  Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
  Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>

                                   [ Jérôme Duval <jerome.duval@gmail.com> ]

----------------------------------------------------------------------------

Revision:    hrev57711
Commit:      9673f7b8bfcc04f652e2b13ea0b4df56afbb7d69
URL:         https://git.haiku-os.org/haiku/commit/?id=9673f7b8bfcc
Author:      Jérôme Duval <jerome.duval@gmail.com>
Date:        Wed Apr 24 14:03:36 2024 UTC
Committer:   waddlesplash <waddlesplash@gmail.com>
Commit-Date: Wed Apr 24 19:56:29 2024 UTC

Ticket:      https://dev.haiku-os.org/ticket/18896

----------------------------------------------------------------------------

1 file changed, 6 insertions(+), 2 deletions(-)
src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp | 8 ++++++--

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp \
b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp index \
                fb93fe9c2e..77569fdf87 100644
--- a/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
@@ -693,6 +693,7 @@ ramfs_read_stat(fs_volume* _volume, fs_vnode* _node, struct stat \
*st)  st->st_gid = node->GetGID();
 		st->st_size = node->GetSize();
 		st->st_blksize = kOptimalIOSize;
+		st->st_blocks = (st->st_size + st->st_blksize - 1) / st->st_blksize;
 		st->st_atime = node->GetATime();
 		st->st_mtime = node->GetMTime();
 		st->st_ctime = node->GetCTime();
@@ -883,8 +884,11 @@ ramfs_open(fs_volume* _volume, fs_vnode* _node, int openMode, \
void** _cookie)  status_t error = B_OK;
 	if (VolumeReadLocker locker = volume) {
 		// directory can be opened read-only
-		if (node->IsDirectory() && (openMode & O_RWMASK))
-			openMode &= ~O_RWMASK;
+		if (node->IsDirectory() && (openMode & O_RWMASK) != O_RDONLY)
+			error = B_IS_A_DIRECTORY;
+		if (error == B_OK && (openMode & O_DIRECTORY) != 0 && !node->IsDirectory())
+			error = B_NOT_A_DIRECTORY;
+
 		int accessMode = open_mode_to_access(openMode);
 		// truncating requires write permission
 		if (error == B_OK && (openMode & O_TRUNC))


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic