[haiku-commits] Change in haiku[master]: ufs2: Reading symbolic links

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 23 Aug 2020 09:02:41 +0000

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

Other related posts:

  • » [haiku-commits] Change in haiku[master]: ufs2: Reading symbolic links - Gerrit