namespace {
-gboolean _move_func(gpointer key, gpointer value, gpointer user_data) {
- package_x* info = static_cast<package_x*>(value);
- std::vector<std::shared_ptr<package_x>>* app_list =
- static_cast<std::vector<std::shared_ptr<package_x>>*>(user_data);
- app_list->emplace_back(info, pkgmgrinfo_basic_free_package);
-
- return true;
-}
-
uid_t globaluser_uid = -1;
uid_t GetGlobalUID() {
return PMINFO_R_ERROR;
}
- std::vector<std::pair<sqlite3*, uid_t>> conn_list = GetConnection();
- GHashTable* list =
- g_hash_table_new_full(g_str_hash, g_str_equal, nullptr, nullptr);
+ const auto& conn_list = GetConnection();
int ret = PMINFO_R_OK;
- for (auto& conn : conn_list) {
- ret = pkginfo_internal_filter_get_list(conn.first, filter_, conn.second,
- GetLocale().c_str(), list);
+ std::map<std::string, std::shared_ptr<package_x>> pkgs;
+ for (const auto& [db, uid] : conn_list) {
+ ret = internal::GetPkgInfo(db, filter_, uid, GetLocale(), pkgs);
if (ret == PMINFO_R_ERROR) {
LOG(ERROR) << "Failed to pkginfo_internal_filter_get_list : " << ret;
break;
}
}
- if (g_hash_table_size(list) == 0)
- ret = PMINFO_R_ENOENT;
-
- if (ret == PMINFO_R_OK)
- g_hash_table_foreach_steal(list, _move_func, &handle_list_);
+ if (pkgs.empty())
+ return PMINFO_R_ENOENT;
- g_hash_table_destroy(list);
+ for (auto& [key, val] : pkgs)
+ handle_list_.push_back(std::move(val));
- return ret;
+ return PMINFO_R_OK;
}
void PkgGetDBHandler::GetPackageFromCache(uid_t uid,