return tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db");
}
+#define DB_VERSION_PATH SYSCONFDIR "/package-manager/pkg_db_version.txt"
static int __set_db_version(sqlite3 *db)
{
- static const char query_raw[] = "PRAGMA user_version=";
- char query[BUFSIZE];
int ret;
+ FILE *fp = NULL;
+ char version[PKG_STRING_LEN_MAX] = { 0 };
+ char *query = NULL;
- snprintf(query, sizeof(query), "%s%d", query_raw, PKG_DB_VERSION);
+ fp = fopen(DB_VERSION_PATH, "r");
+ retvm_if(fp == NULL, -1, "Failed to open db version file");
+ if (fgets(version, sizeof(version), fp) == NULL) {
+ _LOGE("Failed to get version information");
+ fclose(fp);
+ return -1;
+ }
+ fclose(fp);
+
+ query = sqlite3_mprintf("PRAGMA user_version=%Q", version);
+ if (!query) {
+ _LOGE("Out of memory");
+ return -1;
+ }
ret = sqlite3_exec(db, query, NULL, NULL, NULL);
if (ret != SQLITE_OK) {
_LOGE("exec failed: %s", sqlite3_errmsg(db));
+ sqlite3_free(query);
return -1;
}
+ sqlite3_free(query);
return 0;
}
if (flags & SQLITE_OPEN_CREATE) {
ret = __initialize_db(*db, path, uid);
if (ret) {
- _LOGE("failed to initialize db: %s\n");
+ _LOGE("failed to initialize db: %s", path);
sqlite3_close_v2(*db);
return -1;
}
static int __insert_appcontrol_info(sqlite3 *db, application_x *app)
{
static const char query[] =
- "INSERT INTO package_app_app_control (app_id, app_control) "
- "VALUES (?, ?)";
+ "INSERT INTO package_app_app_control (app_id, app_control,"
+ " visibility) "
+ "VALUES (?, ?, ?)";
int ret;
sqlite3_stmt *stmt;
int idx;
ac->mime : "NULL") : "NULL");
__BIND_TEXT(db, stmt, idx++, app->appid);
__BIND_TEXT(db, stmt, idx++, app_control);
+ __BIND_TEXT(db, stmt, idx++, ac->visibility);
ret = sqlite3_step(stmt);
if (ret != SQLITE_DONE) {
GList *list = NULL;
splashscreen_x *ss;
+ if (splashscreens == NULL)
+ return NULL;
+
g_list_foreach(splashscreens,
__find_appcontrol_splashscreen_with_dpi, &list);
g_list_foreach(splashscreens,
return list;
}
-static int __insert_splashscreen_info(sqlite3 *db, application_x *app)
+static int __insert_splashscreen_info(sqlite3 *db, application_x *app,
+ GList *ss_list)
{
static const char query[] =
"INSERT INTO package_app_splash_screen (app_id, src, type,"
int idx;
GList *tmp;
splashscreen_x *ss;
- GList *ss_list;
if (app->splashscreens == NULL)
return 0;
- ss_list = __find_splashscreens(app->splashscreens);
if (ss_list == NULL)
return 0;
application_x *app;
int bg_category;
const char *effective_appid;
+ GList *ss_list;
ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
if (ret != SQLITE_OK) {
sqlite3_finalize(stmt);
return -1;
}
- if (__insert_splashscreen_info(db, app)) {
+ ss_list = __find_splashscreens(app->splashscreens);
+ if (__insert_splashscreen_info(db, app, ss_list)) {
+ g_list_free(ss_list);
sqlite3_finalize(stmt);
return -1;
}
+ g_list_free(ss_list);
if (__insert_app_localized_info(db, app)) {
sqlite3_finalize(stmt);
return -1;