Use lambda expressions for simple callback function 60/198860/2
authorSangyoon Jang <jeremy.jang@samsung.com>
Wed, 30 Jan 2019 10:39:54 +0000 (19:39 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Wed, 30 Jan 2019 10:44:23 +0000 (19:44 +0900)
Change-Id: I9295e905617326be56620909f01e6bfa54c03fd7
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/common/paths.cc
src/common/pkgmgr_query.cc
src/common/shared_dirs.cc

index 32690e0..71ce838 100644 (file)
@@ -30,19 +30,6 @@ boost::filesystem::path GetBackupPath(const boost::filesystem::path& pkg_path) {
   return backup_path;
 }
 
-bool DeviceSupportedCallback(int, storage_type_e type,
-    storage_state_e state, const char* path, void* user_data) {
-  if (type != STORAGE_TYPE_EXTENDED_INTERNAL)
-    return true;
-  if (state != STORAGE_STATE_MOUNTED)
-    return true;
-  bool* is_available = static_cast<bool*>(user_data);
-  if (bf::exists(path))
-    *is_available = true;
-  // Stop iteration
-  return false;
-}
-
 }  // namespace
 
 namespace common_installer {
@@ -140,7 +127,19 @@ boost::filesystem::path GetIconPath(const bf::path& base_path,
 
 bool IsExtendedStorageAvailable() {
   bool is_available = false;
-  int ret = storage_foreach_device_supported(DeviceSupportedCallback,
+  int ret = storage_foreach_device_supported(
+      [](int, storage_type_e type, storage_state_e state,
+          const char* path, void* user_data) -> bool {
+        if (type != STORAGE_TYPE_EXTENDED_INTERNAL)
+          return true;
+        if (state != STORAGE_STATE_MOUNTED)
+          return true;
+        bool* is_available = static_cast<bool*>(user_data);
+        if (bf::exists(path))
+          *is_available = true;
+        // Stop iteration
+        return false;
+      },
       &is_available);
   if (ret != STORAGE_ERROR_NONE) {
     LOG(ERROR) << "Failed to call storage_foreach_device_supported()";
index 9501d41..aff9eef 100644 (file)
@@ -14,23 +14,6 @@ namespace {
 
 const uid_t kGlobalUserUid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
 
-int PkgmgrForeachAppCallback(const pkgmgrinfo_appinfo_h handle,
-                              void *user_data) {
-  auto* data = static_cast<std::vector<std::string>*>(user_data);
-  char* app_id = nullptr;
-  if (pkgmgrinfo_appinfo_get_appid(handle, &app_id) != PMINFO_R_OK)
-    return PMINFO_R_ERROR;
-  data->emplace_back(app_id);
-  return PMINFO_R_OK;
-}
-
-int PkgmgrForeachPrivilegeCallback(const char* privilege_name,
-                                   void* user_data) {
-  auto* data = static_cast<std::vector<std::string>*>(user_data);
-  data->emplace_back(privilege_name);
-  return PMINFO_R_OK;
-}
-
 }  // namespace
 
 namespace common_installer {
@@ -226,7 +209,15 @@ bool PkgQueryInterface::AppidsForPkgId(std::vector<std::string>* result) {
   if (!IsValid())
     return false;
   error_ = pkgmgrinfo_appinfo_get_usr_list(handle_, PMINFO_ALL_APP,
-      &PkgmgrForeachAppCallback, result, uid_);
+      [](const pkgmgrinfo_appinfo_h handle, void* user_data) -> int {
+        auto* data = static_cast<std::vector<std::string>*>(user_data);
+        char* app_id = nullptr;
+        if (pkgmgrinfo_appinfo_get_appid(handle, &app_id) != PMINFO_R_OK)
+          return PMINFO_R_ERROR;
+        data->emplace_back(app_id);
+        return PMINFO_R_OK;
+      },
+      result, uid_);
   return error_ == PMINFO_R_OK;
 }
 
@@ -234,7 +225,12 @@ bool PkgQueryInterface::PrivilegesForPkgId(std::vector<std::string>* result) {
   if (!IsValid())
     return false;
   error_ = pkgmgrinfo_pkginfo_foreach_privilege(handle_,
-      &PkgmgrForeachPrivilegeCallback, result);
+      [](const char* privilege_name, void* user_data) -> int {
+        auto* data = static_cast<std::vector<std::string>*>(user_data);
+        data->emplace_back(privilege_name);
+        return PMINFO_R_OK;
+      },
+      result);
   return error_ == PMINFO_R_OK;
 }
 
index 795a3aa..c5da29b 100644 (file)
@@ -385,19 +385,6 @@ bool PerformExternalDirectoryCreationForAllUsers(const std::string& pkgid) {
   return true;
 }
 
-int PrivilegeCallback(const pkgmgrinfo_pkginfo_h handle, void* user_data) {
-  uid_t uid = static_cast<uid_t>(reinterpret_cast<uintptr_t>(user_data));
-  char* pkgid = nullptr;
-
-  int ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
-  if (ret != PMINFO_R_OK)
-    return -1;
-  if (!PerformExternalDirectoryCreationForUser(uid, pkgid))
-    return -1;
-
-  return 0;
-}
-
 bool PerformExternalDirectoryCreationForAllPkgs() {
   UserList list = ci::GetUserList();
   for (auto l  : list) {
@@ -414,7 +401,19 @@ bool PerformExternalDirectoryCreationForAllPkgs() {
     }
 
     ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(filter_handle,
-        PrivilegeCallback,
+        [](const pkgmgrinfo_pkginfo_h handle, void* user_data) -> int {
+          uid_t uid =
+              static_cast<uid_t>(reinterpret_cast<uintptr_t>(user_data));
+          char* pkgid = nullptr;
+
+          int ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
+          if (ret != PMINFO_R_OK)
+            return -1;
+          if (!PerformExternalDirectoryCreationForUser(uid, pkgid))
+            return -1;
+
+          return 0;
+        },
         reinterpret_cast<void*>(static_cast<uintptr_t>(uid)));
     if (ret != PMINFO_R_OK) {
       LOG(DEBUG) << "Failed to create external directoy";