PEL: Taking regex calls out of PEL listing function

Taking out regex calls to improve time complexity

Change-Id: Id0ca32bf78b006b3c8e03ac95206c670f92d4002
Signed-off-by: Aatir <aatrapps@gmail.com>
diff --git a/extensions/openpower-pels/tools/peltool.cpp b/extensions/openpower-pels/tools/peltool.cpp
index 10646de..5c040ca 100644
--- a/extensions/openpower-pels/tools/peltool.cpp
+++ b/extensions/openpower-pels/tools/peltool.cpp
@@ -35,21 +35,6 @@
 namespace message = openpower::pels::message;
 namespace pv = openpower::pels::pel_values;
 
-std::string ltrim(const std::string& s)
-{
-    return std::regex_replace(s, std::regex("^\\s+"), std::string(""));
-}
-
-std::string rtrim(const std::string& s)
-{
-    return std::regex_replace(s, std::regex("\\s+$"), std::string(""));
-}
-
-std::string trim(const std::string& s)
-{
-    return ltrim(rtrim(s));
-}
-
 /**
  * @brief helper function to get PEL commit timestamp from file name
  * @retrun BCDTime - PEL commit timestamp
@@ -180,7 +165,7 @@
  * @param[in] std::string Name of file with raw PEL
  * @return std::vector<uint8_t> char vector read from raw PEL file.
  */
-std::vector<uint8_t> getFileData(std::string name)
+std::vector<uint8_t> getFileData(const std::string& name)
 {
     std::ifstream file(name, std::ifstream::in);
     if (file.good())
@@ -196,6 +181,21 @@
     }
 }
 
+/**
+ * @brief helper function to trim trailing whitespaces
+ * @return std::string - trimmed string
+ * @param[in] std::string - string to trim
+ */
+const char* ws = " \t\n\r\f\v";
+std::string trim(std::string s, const char* t = ws)
+{
+    if (s.find_last_not_of(t) != std::string::npos)
+    {
+        s.erase(s.find_last_not_of(t) + 1);
+    }
+    return s;
+}
+
 template <typename T>
 std::string genPELJSON(T itr, bool hidden)
 {
@@ -213,10 +213,8 @@
     try
     {
         std::vector<uint8_t> data = getFileData(fileName);
-
         if (!data.empty())
         {
-
             PEL pel{data};
             std::bitset<16> actionFlags{pel.userHeader().actionFlags()};
             if (pel.valid() && (hidden || !actionFlags.test(hiddenFlagBit)))
@@ -310,7 +308,6 @@
                          fileNameToTimestamp((*it).path().filename()));
         }
     }
-    std::string val;
     auto buildJSON = [&listStr, &hidden](const auto& i) {
         listStr += genPELJSON(i, hidden);
     };
@@ -349,7 +346,7 @@
     app.add_option("-f,--file", fileName,
                    "Display a PEL using its Raw PEL file");
     app.add_option("-i, --id", idPEL, "Display a PEL based on its ID");
-    app.add_flag("-l", listPEL, "List PELS");
+    app.add_flag("-l", listPEL, "List PELs");
     app.add_flag("-r", listPELDescOrd, "Reverse order of output");
     app.add_flag("-s", listPELShowHidden, "Show hidden PELs");
     CLI11_PARSE(app, argc, argv);