From Suhel Mehta <suhelmehta@xxxxxxxxxxx>:
Suhel Mehta has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/3171 ;)
Change subject: ufs2: Reading symbolic links
......................................................................
ufs2: Reading symbolic links
Symbolic links are now showing path and relative path can be tested.
---
M src/add-ons/kernel/file_systems/ufs2/Inode.cpp
M src/add-ons/kernel/file_systems/ufs2/Inode.h
M src/add-ons/kernel/file_systems/ufs2/kernel_interface.cpp
3 files changed, 16 insertions(+), 1 deletion(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/71/3171/1
diff --git a/src/add-ons/kernel/file_systems/ufs2/Inode.cpp
b/src/add-ons/kernel/file_systems/ufs2/Inode.cpp
index bf9ac16..dcc3ac1 100644
--- a/src/add-ons/kernel/file_systems/ufs2/Inode.cpp
+++ b/src/add-ons/kernel/file_systems/ufs2/Inode.cpp
@@ -44,6 +44,9 @@
if (read_pos(fd, offset, (void*)&fNode, sizeof(fNode)) != sizeof(fNode))
ERROR("Inode::Inode(): IO Error\n");
+ if (IsSymLink()) {
+ read_pos(fd, offset + 112, (void*)&symlinkdata, 120);
+ }
}
@@ -216,3 +219,11 @@
return direct_block * fragment_size + block_offset;
}
}
+
+
+status_t
+Inode::ReadLink(char* buffer, size_t *_bufferSize)
+{
+ strlcpy(buffer, symlinkdata, *_bufferSize);
+ return B_OK;
+}
diff --git a/src/add-ons/kernel/file_systems/ufs2/Inode.h
b/src/add-ons/kernel/file_systems/ufs2/Inode.h
index eedd031..4e7248f 100644
--- a/src/add-ons/kernel/file_systems/ufs2/Inode.h
+++ b/src/add-ons/kernel/file_systems/ufs2/Inode.h
@@ -123,6 +123,7 @@
off_t FindBlock(off_t block_number, off_t
block_offset);
status_t ReadAt(off_t pos, uint8* buffer,
size_t* length);
+ status_t ReadLink(char* buffer, size_t
*_bufferSize);
// status_t FillGapWithZeros(off_t start, off_t
end);
void* FileCache() const { return fCache; }
@@ -145,6 +146,7 @@
void* fMap;
status_t fInitStatus;
ufs2_inode fNode;
+ char symlinkdata[256];
};
#endif // INODE_H
diff --git a/src/add-ons/kernel/file_systems/ufs2/kernel_interface.cpp
b/src/add-ons/kernel/file_systems/ufs2/kernel_interface.cpp
index fb71f73..5e46824 100644
--- a/src/add-ons/kernel/file_systems/ufs2/kernel_interface.cpp
+++ b/src/add-ons/kernel/file_systems/ufs2/kernel_interface.cpp
@@ -312,7 +312,9 @@
ufs2_read_link(fs_volume *_volume, fs_vnode *_node, char *buffer,
size_t *_bufferSize)
{
- return B_NOT_SUPPORTED;
+ Inode* inode = (Inode*)_node->private_node;
+
+ return inode->ReadLink(buffer, _bufferSize);
}
--
To view, visit https://review.haiku-os.org/c/haiku/+/3171
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I47820a475d78d8090c02564f698e72dd8fbaa3a1
Gerrit-Change-Number: 3171
Gerrit-PatchSet: 1
Gerrit-Owner: Suhel Mehta <suhelmehta@xxxxxxxxxxx>
Gerrit-MessageType: newchange