X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fpkgmgrinfo_private.c;h=68f6f36dc70248f232047d6aed88bfbf37d5ca00;hb=9c016615e5b5612c8359b1394cf955221d695fe8;hp=21b4840dd175e493d236d9152ff1624ca2060b68;hpb=296b836f2187cedf267ad21b78aea105d6ba6e7e;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git diff --git a/src/pkgmgrinfo_private.c b/src/pkgmgrinfo_private.c index 21b4840..68f6f36 100644 --- a/src/pkgmgrinfo_private.c +++ b/src/pkgmgrinfo_private.c @@ -78,7 +78,8 @@ static struct _pkginfo_bool_map_t pkginfo_bool_prop_map[] = { {E_PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING, PMINFO_PKGINFO_PROP_PACKAGE_NODISPLAY_SETTING}, {E_PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE, PMINFO_PKGINFO_PROP_PACKAGE_SUPPORT_DISABLE}, {E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE, PMINFO_PKGINFO_PROP_PACKAGE_DISABLE}, - {E_PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE, PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE} + {E_PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE, PMINFO_PKGINFO_PROP_PACKAGE_CHECK_STORAGE}, + {E_PMINFO_PKGINFO_PROP_PACKAGE_SYSTEM, PMINFO_PKGINFO_PROP_PACKAGE_SYSTEM} }; struct _appinfo_str_map_t { @@ -99,7 +100,8 @@ static struct _appinfo_str_map_t appinfo_str_prop_map[] = { {E_PMINFO_APPINFO_PROP_APP_HWACCELERATION, PMINFO_APPINFO_PROP_APP_HWACCELERATION}, {E_PMINFO_APPINFO_PROP_APP_SCREENREADER, PMINFO_APPINFO_PROP_APP_SCREENREADER}, {E_PMINFO_APPINFO_PROP_APP_PACKAGE, PMINFO_APPINFO_PROP_APP_PACKAGE}, - {E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE, PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE} + {E_PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE, PMINFO_APPINFO_PROP_APP_INSTALLED_STORAGE}, + {E_PMINFO_APPINFO_PROP_PRIVILEGE, PMINFO_APPINFO_PROP_PRIVILEGE} }; struct _appinfo_int_map_t { @@ -126,7 +128,8 @@ static struct _appinfo_bool_map_t appinfo_bool_prop_map[] = { {E_PMINFO_APPINFO_PROP_APP_UI_GADGET, PMINFO_APPINFO_PROP_APP_UI_GADGET}, {E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE, PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE}, {E_PMINFO_APPINFO_PROP_APP_DISABLE, PMINFO_APPINFO_PROP_APP_DISABLE}, - {E_PMINFO_APPINFO_PROP_APP_CHECK_STORAGE, PMINFO_APPINFO_PROP_APP_CHECK_STORAGE} + {E_PMINFO_APPINFO_PROP_APP_CHECK_STORAGE, PMINFO_APPINFO_PROP_APP_CHECK_STORAGE}, + {E_PMINFO_APPINFO_PROP_PKG_DISABLE, PMINFO_APPINFO_PROP_PKG_DISABLE} }; inline pkgmgrinfo_pkginfo_filter_prop_str _pminfo_pkginfo_convert_to_prop_str(const char *property) @@ -245,7 +248,6 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p char *value; char *ptr = NULL; char *saveptr = NULL; - size_t len = 0; switch (node->prop) { case E_PMINFO_PKGINFO_PROP_PACKAGE_ID: @@ -303,6 +305,9 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p case E_PMINFO_PKGINFO_PROP_PACKAGE_DISABLE: snprintf(buf, sizeof(buf), "pi.package_disable=? COLLATE NOCASE"); break; + case E_PMINFO_PKGINFO_PROP_PACKAGE_SYSTEM: + snprintf(buf, sizeof(buf), "pi.package_system=? COLLATE NOCASE"); + break; case E_PMINFO_APPINFO_PROP_APP_ID: snprintf(buf, sizeof(buf), "ai.app_id=?"); @@ -344,16 +349,13 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p free(value); return 0; } - strncat(buf, "?", MAX_QUERY_LEN - len - 1); - len += strlen("?"); + strncat(buf, "?", sizeof(buf) - strlen(buf) - 1); *params = g_list_append(*params, strdup(ptr)); while ((ptr = strtok_r(NULL, ",", &saveptr))) { - strncat(buf, ", ?", MAX_QUERY_LEN - len - 1); - len += strlen(", ?"); + strncat(buf, ", ?", sizeof(buf) - strlen(buf) - 1); *params = g_list_append(*params, strdup(ptr)); } - strncat(buf, ")", MAX_QUERY_LEN - len - 1); - len += strlen("?"); + strncat(buf, ")", sizeof(buf) - strlen(buf) - 1); *condition = strdup(buf); flag = E_PMINFO_APPINFO_JOIN_CATEGORY; free(value); @@ -404,6 +406,11 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p 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_PKG_DISABLE: + snprintf(buf, MAX_QUERY_LEN, + "ai.package IN (SELECT package FROM " \ + "package_info WHERE package_disable=?)"); + break; case E_PMINFO_APPINFO_PROP_APP_SUPPORT_MODE: snprintf(buf, sizeof(buf), "ai.app_support_mode=?"); break; @@ -411,6 +418,10 @@ int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **p case E_PMINFO_APPINFO_PROP_APP_CHECK_STORAGE: *condition = NULL; return 0; + case E_PMINFO_APPINFO_PROP_PRIVILEGE: + snprintf(buf, sizeof(buf), "package_privilege_info.privilege=?"); + flag = E_PMINFO_APPINFO_JOIN_PRIVILEGE; + break; default: _LOGE("Invalid Property Type\n"); *condition = NULL; @@ -426,17 +437,12 @@ int __get_metadata_filter_condition(gpointer data, char **condition, { pkgmgrinfo_metadata_node_x *node = (pkgmgrinfo_metadata_node_x *)data; char buf[MAX_QUERY_LEN]; - size_t len = 0; snprintf(buf, sizeof(buf), "(package_app_app_metadata.md_key=?"); - len += strlen("(package_app_app_metadata.md_key=?"); - if (node->value) { + if (node->value) strncat(buf, " AND package_app_app_metadata.md_value=?", - sizeof(buf) - len - 1); - len += strlen(" AND package_app_app_metadata.md_value=?"); - } - strncat(buf, ")", sizeof(buf) - len - 1); - len += strlen(")"); + sizeof(buf) - strlen(buf) - 1); + strncat(buf, ")", sizeof(buf) - strlen(buf) - 1); *condition = strdup(buf); *params = g_list_append(*params, strdup(node->key)); @@ -457,7 +463,7 @@ int _add_icon_info_into_list(const char *locale, char *value, GList **icon) } info->text = value; info->lang = strdup(locale); - *icon = g_list_append(*icon, info); + *icon = g_list_prepend(*icon, info); return PMINFO_R_OK; } @@ -473,7 +479,7 @@ int _add_label_info_into_list(const char *locale, char *value, GList **label) } info->text = value; info->lang = strdup(locale); - *label = g_list_append(*label, info); + *label = g_list_prepend(*label, info); return PMINFO_R_OK; } @@ -550,7 +556,7 @@ int __appinfo_check_installed_storage(application_x *appinfo) } #define BUSY_WAITING_USEC (1000000 / 10 / 2) /* 0.05 sec */ -#define BUSY_WAITING_MAX 20 /* wait for max 1 sec */ +#define BUSY_WAITING_MAX 100 /* wait for max 5 sec */ static int __db_busy_handler(void *data, int count) { if (count < BUSY_WAITING_MAX) { @@ -567,8 +573,10 @@ int __open_db(const char *path, sqlite3 **db, int flags) int ret; ret = sqlite3_open_v2(path, db, flags, NULL); - if (ret != SQLITE_OK) + if (ret != SQLITE_OK) { + sqlite3_close_v2(*db); return ret; + } ret = sqlite3_busy_handler(*db, __db_busy_handler, NULL); if (ret != SQLITE_OK) {