Move regexpr for app directory aware to static 23/68623/1
authorKyungwook Tak <k.tak@samsung.com>
Mon, 9 May 2016 02:34:05 +0000 (11:34 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Mon, 9 May 2016 02:34:05 +0000 (11:34 +0900)
Change-Id: I482d57deb18981dffa21f068e1c67be5dc15f623
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/framework/service/file-system.cpp
src/framework/service/file-system.h

index 8d0fd8c..4f66087 100644 (file)
@@ -21,6 +21,7 @@
  */
 #include "service/file-system.h"
 
+#include <regex>
 #include <system_error>
 #include <cstdio>
 #include <cstring>
 
 namespace Csr {
 
-const char *APP_DIRS[4] = {
+namespace {
+
+inline std::regex makeRegexpr(const char *str)
+{
+       return std::regex(str, std::regex_constants::extended);
+}
+
+std::vector<std::regex> g_regexprs{
        // Tizen 2.4 app directories
-       "^(/usr/apps/([^/]+))",                      // /usr/apps/{pkgid}/
-       "^(/opt/usr/apps/([^/]+))",                  // /opt/usr/apps/{pkgid}/
-       "^(/sdcard/apps/([^/]+))",                   // /sdcard/apps/{pkgid}/
-       "^(/sdcard/app2sd/([^/]+))",                 // /sdcard/app2sd/{pkgid}/
+       makeRegexpr("^(/usr/apps/([^/]+))"),                   // /usr/apps/{pkgid}/
+       makeRegexpr("^(/opt/usr/apps/([^/]+))"),               // /opt/usr/apps/{pkgid}/
+       makeRegexpr("^(/sdcard/apps/([^/]+))"),                // /sdcard/apps/{pkgid}/
+       makeRegexpr("^(/sdcard/app2sd/([^/]+))"),              // /sdcard/app2sd/{pkgid}/
        // Tizen 3.0 app directories
-       //"^(/opt/usr/apps/([^/]+))",                  // /opt/usr/apps/{pkgid}/
-       //"^(/home/([^/]+)/apps_rw/([^/]+))",          // /home/{user}/apps_rw/{pkgid}/
-       //"^(/sdcard/app2sd/([^/]+)/([^/]+))",         // /sdcard/app2sd/{user}/{pkgid}/
-       //"^(/sdcard/app2sd/([^/]+))",                 // /sdcard/app2sd/{pkgid}/
-       //"^(/sdcard/apps/([^/]+)/apps_rw/([^/]+))"    // /sdcard/apps/{user}/apps_rw/{pkgid}/
+       //makeRegexpr("^(/opt/usr/apps/([^/]+))"),               // /opt/usr/apps/{pkgid}/
+       //makeRegexpr("^(/home/([^/]+)/apps_rw/([^/]+))"),       // /home/{user}/apps_rw/{pkgid}/
+       //makeRegexpr("^(/sdcard/app2sd/([^/]+)/([^/]+))"),      // /sdcard/app2sd/{user}/{pkgid}/
+       //makeRegexpr("^(/sdcard/app2sd/([^/]+))"),              // /sdcard/app2sd/{pkgid}/
+       //makeRegexpr("^(/sdcard/apps/([^/]+)/apps_rw/([^/]+))") // /sdcard/apps/{user}/apps_rw/{pkgid}/
 };
 
-std::vector<std::regex> File::m_regexprs;
+} // namespace anonymous
 
 File::File(const std::string &fpath) : m_path(fpath), m_inApp(false)
 {
-       if (m_regexprs.size() == 0)
-               initRegex();
-
        std::smatch matched;
 
-       for (const auto &rege : m_regexprs) {
+       for (const auto &rege : g_regexprs) {
                if (!std::regex_search(m_path, matched, rege))
                        continue;
 
@@ -100,14 +105,6 @@ const std::string &File::getAppPkgPath() const
        return m_appPkgPath;
 }
 
-void File::initRegex()
-{
-       for (unsigned int i = 0; i < sizeof(APP_DIRS) / sizeof(char *); i++) {
-               std::regex regexpr(APP_DIRS[i], std::regex_constants::extended);
-               m_regexprs.emplace_back(std::move(regexpr));
-       }
-}
-
 bool File::remove() const
 {
        if (m_inApp)
index 0910a47..a15e84e 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <string>
 #include <memory>
-#include <regex>
 #include <queue>
 
 #include <cstddef>
@@ -49,10 +48,6 @@ public:
        static FilePtr create(const std::string &fpath, time_t modifiedSince = -1);
 
 private:
-       static void initRegex();
-
-       static std::vector<std::regex> m_regexprs;
-
        File(const std::string &fpath);
 
        std::string m_path;