From 3f31053904e5f1219705a17e1a271e74ecef2c96 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 14 Feb 2009 00:06:28 +0000 Subject: [PATCH] Skip our attribute directory when reading directories. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29191 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/overlay.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/fs/overlay.cpp b/src/system/kernel/fs/overlay.cpp index b8fc5ee604..a57936e635 100644 --- a/src/system/kernel/fs/overlay.cpp +++ b/src/system/kernel/fs/overlay.cpp @@ -819,7 +819,23 @@ static status_t overlay_read_dir(fs_volume *volume, fs_vnode *vnode, void *cookie, struct dirent *buffer, size_t bufferSize, uint32 *num) { - OVERLAY_CALL(read_dir, cookie, buffer, bufferSize, num) + OverlayInode *node = (OverlayInode *)vnode->private_node; + fs_vnode *superVnode = node->SuperVnode(); + if (superVnode->ops->read_dir != NULL) { + status_t result = superVnode->ops->read_dir(volume, superVnode, cookie, + buffer, bufferSize, num); + + // TODO: handle multiple records + if (result == B_OK && strcmp(buffer->d_name, + ATTRIBUTE_OVERLAY_ATTRIBUTE_DIR_NAME) == 0) { + // skip over the attribute directory + return superVnode->ops->read_dir(volume, superVnode, cookie, + buffer, bufferSize, num); + } + + return result; + } + return B_UNSUPPORTED; }