return true;
}
+bool CheckPackageDisableFilter(const pkgmgrinfo_filter_x* filter,
+ const package_x* pkg_info) {
+ GSList* tmp_list = nullptr;
+ pkgmgrinfo_node_x* tmp_node = nullptr;
+ int property = -1;
+
+ property = _pminfo_pkginfo_convert_to_prop_bool(
+ PMINFO_PKGINFO_PROP_PACKAGE_DISABLE);
+ for (tmp_list = filter->list; tmp_list != nullptr;
+ tmp_list = g_slist_next(tmp_list)) {
+ tmp_node = reinterpret_cast<pkgmgrinfo_node_x*>(tmp_list->data);
+ if (property != tmp_node->prop)
+ continue;
+
+ if (strcasecmp(tmp_node->value, pkg_info->is_disabled) == 0)
+ return true;
+
+ if (strcasecmp(pkg_info->is_disabled, "true") == 0)
+ LOGW("The package [%s] is disabled", pkg_info->package);
+
+ return false;
+ }
+ return true;
+}
+
int DoGetPkgInfo(const tizen_base::Database& db, uid_t uid,
const std::string& locale, pkgmgrinfo_filter_x* filter, int flag,
std::map<std::string, std::shared_ptr<package_x>>& packages) {
static const char query_raw[] =
- "SELECT DISTINCT pi.package, pi.installed_storage, pi.external_path";
+ "SELECT DISTINCT pi.package, pi.installed_storage, pi.external_path, "
+ "pi.package_disable";
static const char query_basic[] =
", pi.package_version, pi.install_location, "
"pi.package_removable, pi.package_preload, pi.package_readonly, "
"pi.storeclient_id, pi.mainapp_id, pi.package_url, pi.root_path, "
"pi.csc_path, pi.package_nodisplay, pi.package_api_version, "
"pi.package_support_disable, pi.package_tep_name, "
- "pi.package_zip_mount_file, pi.package_support_mode, pi.package_disable, "
+ "pi.package_zip_mount_file, pi.package_support_mode, "
"pi.light_user_switch_mode";
static const char query_author[] =
", pi.author_name, pi.author_email, pi.author_href";
info->package = GetCString(idx++, rec);
info->installed_storage = GetCString(idx++, rec);
info->external_path = GetCString(idx++, rec);
+ info->is_disabled = GetCString(idx++, rec);
if (flag & PMINFO_APPINFO_GET_BASICINFO) {
info->version = GetCString(idx++, rec);
info->installlocation = GetCString(idx++, rec);
info->tep_name = GetCString(idx++, rec);
info->zip_mount_file = GetCString(idx++, rec);
info->support_mode = GetCString(idx++, rec);
- info->is_disabled = GetCString(idx++, rec);
info->light_user_switch_mode = GetCString(idx++, rec);
}
PMINFO_R_OK)
continue;
+ if (!CheckPackageDisableFilter(filter, info))
+ continue;
+
+ if (!(flag & PMINFO_APPINFO_GET_BASICINFO) && info->is_disabled) {
+ free(info->is_disabled);
+ info->is_disabled = nullptr;
+ }
+
packages[info->package] = std::move(pkg);
}