}
-static void __get_splash_screen_display(sqlite3 *db, const char *appid, uid_t uid, char **value)
+static int __get_appinfo_for_uid(sqlite3 *db, application_x *info, uid_t uid)
{
static const char query_raw[] =
- "SELECT is_splash_screen_enabled FROM package_app_info_for_uid "
- "WHERE app_id='%s' AND uid='%d'";
+ "SELECT is_splash_screen_enabled, is_disabled "
+ "FROM package_app_info_for_uid WHERE app_id='%s' AND uid='%d'";
int ret;
char *query;
+ char *is_disabled = NULL;
sqlite3_stmt *stmt;
- query = sqlite3_mprintf(query_raw, appid, uid);
+ query = sqlite3_mprintf(query_raw, info->appid, uid);
if (query == NULL) {
LOGE("out of memory");
- return;
+ return PMINFO_R_ERROR;
}
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
sqlite3_free(query);
if (ret != SQLITE_OK) {
LOGE("sqlite3_prepare_v2() failed: %s", sqlite3_errmsg(db));
- return;
+ return PMINFO_R_ERROR;
}
while (sqlite3_step(stmt) == SQLITE_ROW) {
- if (*value)
- free(*value);
- _save_column_str(stmt, 0, value);
+ if (info->splash_screen_display)
+ free(info->splash_screen_display);
+ _save_column_str(stmt, 0, &info->splash_screen_display);
+ if (strcasecmp(info->is_disabled, "false") == 0) {
+ _save_column_str(stmt, 1, &is_disabled);
+ if (strcasecmp(is_disabled, "true") == 0)
+ ret = PMINFO_R_ERROR;
+ free(is_disabled);
+ }
}
sqlite3_finalize(stmt);
+ return ret;
}
static void __free_applications(gpointer data)
info->for_all_users =
strdup((db_uid != GLOBAL_USER) ? "false" : "true");
- if (db_uid == GLOBAL_USER)
- __get_splash_screen_display(db, info->appid, db_uid,
- &info->splash_screen_display);
+ if (db_uid == GLOBAL_USER) {
+ ret = __get_appinfo_for_uid(db, info, uid);
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_basic_free_application(info);
+ info = NULL;
+ continue;
+ }
+ }
info->background_category = __get_background_category(
bg_category_str);
return PMINFO_R_ERROR;
}
- if (__check_disable_filter_exist(filter) == false)
+ if (__check_disable_filter_exist(filter) == false) {
pkgmgrinfo_appinfo_filter_add_bool(filter,
PMINFO_APPINFO_PROP_APP_DISABLE, false);
+ }
ret = _appinfo_get_applications(uid, uid, locale, filter, flag, list);
if (ret == PMINFO_R_OK && uid != GLOBAL_USER)
return PMINFO_R_ERROR;
}
- if (uid == GLOBAL_USER) {
- if (pkgmgrinfo_appinfo_filter_add_int(filter,
- PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER,
- (int)getuid())) {
- pkgmgrinfo_appinfo_filter_destroy(filter);
- return PMINFO_R_ERROR;
- }
- }
-
comp_str = __appcomponent_str(component);
if (comp_str) {
return PMINFO_R_ERROR;
}
- if (uid == GLOBAL_USER) {
- if (pkgmgrinfo_appinfo_filter_add_int(filter,
- PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER,
- (int)getuid())) {
- pkgmgrinfo_appinfo_filter_destroy(filter);
- return PMINFO_R_ERROR;
- }
- }
-
ret = _appinfo_get_filtered_foreach_appinfo(uid, filter, flag, app_func,
user_data);
};
static struct _appinfo_int_map_t appinfo_int_prop_map[] = {
- {E_PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER, PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER},
{E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE, PMINFO_APPINFO_PROP_APP_SUPPORT_MODE}
};
case E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE:
snprintf(buf, MAX_QUERY_LEN, "ai.app_support_disable=? COLLATE NOCASE");
break;
- case E_PMINFO_APPINFO_PROP_APP_DISABLE_FOR_USER:
- snprintf(buf, MAX_QUERY_LEN, "ai.app_id NOT IN "
- "(SELECT app_id from package_app_info_for_uid WHERE uid=? " \
- "AND is_disabled='true' COLLATE NOCASE)");
- break;
case E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE:
snprintf(buf, sizeof(buf), "ai.app_support_mode=?");
break;