diff --git a/sysfs.cpp b/sysfs.cpp
index 09fc26b..7fdadd0 100644
--- a/sysfs.cpp
+++ b/sysfs.cpp
@@ -162,18 +162,11 @@
     return emptyString;
 }
 
-std::string findHwmonFromOFPath(std::string ofNode)
+std::string findHwmonFromOFPath(const std::string& ofNode)
 {
     static constexpr auto hwmonRoot = "/sys/class/hwmon";
 
-    // Can't append an absolute path
-    if (!ofNode.empty() && (ofNode.front() == '/'))
-    {
-        ofNode = ofNode.substr(1);
-    }
-
-    fs::path fullOfPath{ofRoot};
-    fullOfPath /= ofNode;
+    auto fullOfPath = fs::path(ofRoot) / fs::path(ofNode).relative_path();
 
     for (const auto& hwmonInst : fs::directory_iterator(hwmonRoot))
     {
@@ -209,16 +202,10 @@
     return emptyString;
 }
 
-std::string findHwmonFromDevPath(std::string devPath)
+std::string findHwmonFromDevPath(const std::string& devPath)
 {
-    // Can't append an absolute path
-    if (!devPath.empty() && devPath.front() == '/')
-    {
-        devPath = devPath.substr(1);
-    }
-
     fs::path p{"/sys"};
-    p /= devPath;
+    p /= fs::path(devPath).relative_path();
     p /= "hwmon";
 
     try
diff --git a/sysfs.hpp b/sysfs.hpp
index e93db65..c1799f6 100644
--- a/sysfs.hpp
+++ b/sysfs.hpp
@@ -50,7 +50,7 @@
  *  @returns[in] - The hwmon instance path or an empty
  *                 string if no match is found.
  */
-std::string findHwmonFromOFPath(std::string ofNode);
+std::string findHwmonFromOFPath(const std::string& ofNode);
 
 /** @brief Find hwmon instances from a device path
  *
@@ -63,7 +63,7 @@
  *  @return - The hwmon instance path or an empty
  *            string if no match is found.
  */
-std::string findHwmonFromDevPath(std::string devPath);
+std::string findHwmonFromDevPath(const std::string& devPath);
 
 /** @brief Return the path to use for a call out.
  *
