diff --git a/pcie_i2c.cpp b/pcie_i2c.cpp
index c0e7fc7..88eb66c 100644
--- a/pcie_i2c.cpp
+++ b/pcie_i2c.cpp
@@ -17,6 +17,7 @@
 #include "pcie_i2c.hpp"
 
 #include "main.hpp"
+#include "util.hpp"
 
 #include <cstdint>
 #include <cstring>
@@ -43,36 +44,6 @@
 
 std::vector<std::tuple<uint32_t, std::string>> pcie_i2c_map;
 
-std::string read_file(const std::string& file_name)
-{
-    std::ifstream ifs(file_name);
-    std::string file_content;
-    if (!ifs.is_open())
-    {
-        std::fprintf(stderr, "Unable to open file %s.\n", file_name.c_str());
-    }
-    else
-    {
-        if (ifs >> file_content)
-        {
-            // If the last character is a null terminator; remove it.
-            if (!file_content.empty())
-            {
-                char const& back = file_content.back();
-                if (back == '\0')
-                    file_content.pop_back();
-            }
-            return file_content;
-        }
-        else
-        {
-            std::fprintf(stderr, "Unable to read file %s.\n",
-                         file_name.c_str());
-        }
-    }
-    return "";
-}
-
 } // namespace
 
 struct PcieSlotCountRequest
@@ -128,7 +99,7 @@
             std::string pcie_slot_path = i2c_dev_path + "/of_node/pcie-slot";
             std::string pcie_slot;
             // Read the "pcie-slot" name from the "pcie-slot" file.
-            pcie_slot = read_file(pcie_slot_path);
+            pcie_slot = readPropertyFile(pcie_slot_path);
             if (pcie_slot.empty())
             {
                 continue;
@@ -140,7 +111,7 @@
             pcie_slot_full_path.append(pcie_slot);
             // Read the "label" which contains the pcie slot name.
             pcie_slot_full_path.append("/label");
-            pcie_slot_name = read_file(pcie_slot_full_path);
+            pcie_slot_name = readPropertyFile(pcie_slot_full_path);
             if (pcie_slot_name.empty())
             {
                 continue;
diff --git a/util.cpp b/util.cpp
index 02dab83..34b0f9b 100644
--- a/util.cpp
+++ b/util.cpp
@@ -1,5 +1,6 @@
 #include "util.hpp"
 
+#include <cstdio>
 #include <fstream>
 #include <nlohmann/json.hpp>
 #include <phosphor-logging/elog-errors.hpp>
@@ -34,5 +35,37 @@
     return data;
 }
 
+std::string readPropertyFile(const std::string& fileName)
+{
+    std::ifstream ifs(fileName);
+    std::string contents;
+
+    if (!ifs.is_open())
+    {
+        std::fprintf(stderr, "Unable to open file %s.\n", fileName.c_str());
+    }
+    else
+    {
+        if (ifs >> contents)
+        {
+            // If the last character is a null terminator; remove it.
+            if (!contents.empty())
+            {
+                char const& back = contents.back();
+                if (back == '\0')
+                    contents.pop_back();
+            }
+
+            return contents;
+        }
+        else
+        {
+            std::fprintf(stderr, "Unable to read file %s.\n", fileName.c_str());
+        }
+    }
+
+    return "";
+}
+
 } // namespace ipmi
 } // namespace google
diff --git a/util.hpp b/util.hpp
index d98a6cc..760a1b2 100644
--- a/util.hpp
+++ b/util.hpp
@@ -17,5 +17,13 @@
  */
 nlohmann::json parseConfig(const std::string& file);
 
+/**
+ * Read a dts property file and return the contents.
+ *
+ * @param[in] file - the path to the file to parse.
+ * @return the property value or an empty string on failure.
+ */
+std::string readPropertyFile(const std::string& fileName);
+
 } // namespace ipmi
 } // namespace google
