grant 'x' permission to app_root directory 27/103227/2 accepted/tizen/3.0/common/20161209.094815 accepted/tizen/3.0/ivi/20161209.001943 accepted/tizen/3.0/mobile/20161209.001849 accepted/tizen/3.0/tv/20161209.001920 accepted/tizen/3.0/wearable/20161209.001931 submit/tizen_3.0/20161208.065808
authorjongmyeongko <jongmyeong.ko@samsung.com>
Wed, 7 Dec 2016 15:46:13 +0000 (00:46 +0900)
committerjongmyeong ko <jongmyeong.ko@samsung.com>
Thu, 8 Dec 2016 02:42:46 +0000 (18:42 -0800)
Change-Id: Id4785d68cfd12398b61110093fa308217f2875d2
Signed-off-by: jongmyeongko <jongmyeong.ko@samsung.com>
src/tpk/step/filesystem/step_grant_permission.cc

index fee73ae..580bf6b 100644 (file)
@@ -17,6 +17,33 @@ namespace bf = boost::filesystem;
 namespace bs = boost::system;
 namespace ci = common_installer;
 
+namespace {
+
+bool GrantPermission755(const bf::path& path) {
+  auto permission = bf::perms::owner_all |
+      bf::perms::group_read | bf::perms::group_exe |
+      bf::perms::others_read | bf::perms::others_exe;
+  if (!ci::SetDirPermissions(path, permission)) {
+    LOG(ERROR) << "Grant permission error" << " path: " << path
+               << " permission: " << permission;
+    return false;
+  }
+  return true;
+}
+
+bool GrantPermission644(const bf::path& path) {
+  auto permission = bf::perms::owner_read | bf::perms::owner_write |
+      bf::perms::group_read | bf::perms::others_read;
+  if (!ci::SetDirPermissions(path, permission)) {
+    LOG(ERROR) << "Grant permission error" << " path: " << path
+               << " permission: " << permission;
+    return false;
+  }
+  return true;
+}
+
+}  // namespace
+
 namespace tpk {
 namespace filesystem {
 
@@ -34,6 +61,10 @@ ci::Step::Status StepTpkGrantPermission::process() {
       context_->root_application_path.get() / context_->pkgid.get());
 
   bf::path app_root = context_->pkg_path.get();
+  if (bf::is_directory(app_root)) {
+    if (!GrantPermission755(app_root))
+      return Status::GRANT_PERMISSION_ERROR;
+  }
   for (auto& entry :
       boost::make_iterator_range(bf::directory_iterator(app_root), {})) {
     auto path = entry.path();
@@ -59,73 +90,42 @@ ci::Step::Status StepTpkGrantPermission::process() {
     }
 
     if (bf::is_directory(path) && path.filename() == "bin") {
-      auto permission = bf::perms::owner_all |
-          bf::perms::group_read | bf::perms::group_exe |
-          bf::perms::others_read | bf::perms::others_exe;
-      if (!ci::SetDirPermissions(path, permission)) {
-        LOG(ERROR) << "Grant permission error" << " path: " << path
-            << " permission: " << permission;
+      if (!GrantPermission755(path))
         return Status::GRANT_PERMISSION_ERROR;
-      }
       for (auto& entry :
           boost::make_iterator_range(bf::directory_iterator(path), {})) {
         auto path = entry.path();
         if (bf::is_regular_file(path)) {
-          if (!ci::SetDirPermissions(path, permission)) {
-            LOG(ERROR) << "Grant permission error" << " path: " << path
-                << " permission: " << permission;
+          if (!GrantPermission755(path))
             return Status::GRANT_PERMISSION_ERROR;
-          }
         }
       }
       continue;
     }
 
     if (bf::is_directory(path) && path.filename() == "lib") {
-      auto permission = bf::perms::owner_all |
-          bf::perms::group_read | bf::perms::group_exe |
-          bf::perms::others_read | bf::perms::others_exe;
-      if (!ci::SetDirPermissions(path, permission)) {
-        LOG(ERROR) << "Grant permission error" << " path: " << path
-            << " permission: " << permission;
+      if (!GrantPermission755(path))
         return Status::GRANT_PERMISSION_ERROR;
-      }
       for (auto& entry :
           boost::make_iterator_range(bf::directory_iterator(path), {})) {
         auto path = entry.path();
         if (bf::is_regular_file(path)) {
-          auto permission = bf::perms::owner_read | bf::perms::owner_write |
-          bf::perms::group_read | bf::perms::others_read;
-          if (!ci::SetDirPermissions(path, permission)) {
-            LOG(ERROR) << "Grant permission error" << " path: " << path
-                << " permission: " << permission;
+          if (!GrantPermission644(path))
             return Status::GRANT_PERMISSION_ERROR;
-          }
         }
       }
       continue;
     }
 
     if (bf::is_directory(path)) {
-      auto permission = bf::perms::owner_all |
-          bf::perms::group_read | bf::perms::group_exe |
-          bf::perms::others_read | bf::perms::others_exe;
-      if (!ci::SetDirPermissions(path, permission)) {
-        LOG(ERROR) << "Grant permission error" << " path: " << path
-            << " permission: " << permission;
+      if (!GrantPermission755(path))
         return Status::GRANT_PERMISSION_ERROR;
-      }
       continue;
     }
 
     if (bf::is_regular_file(path)) {
-      auto permission = bf::perms::owner_read | bf::perms::owner_write |
-          bf::perms::group_read | bf::perms::others_read;
-      if (!ci::SetDirPermissions(path, permission)) {
-        LOG(ERROR) << "Grant permission error" << " path: " << path
-            << " permission: " << permission;
+      if (!GrantPermission644(path))
         return Status::GRANT_PERMISSION_ERROR;
-      }
       continue;
     }
   }