_LOGD("chsmack -a %s %s", DB_LABEL, x); \
} while (0)
+#define DB_VERSION_PATH SYSCONFDIR "/package-manager/pkg_db_version.txt"
+
static const char *__get_cert_db_path(void)
{
return tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db");
return 0;
}
+static int __set_db_version(sqlite3 *db) {
+ static const char query_raw[] = "PRAGMA user_version=%Q";
+ int ret;
+ FILE *fp = NULL;
+ sqlite3_stmt *stmt;
+ char version[PKG_STRING_LEN_MAX] = { 0 };
+ char *query = NULL;
+
+ fp = fopen(DB_VERSION_PATH, "r");
+ if (fp == NULL) {
+ _LOGE("Failed to open db version file");
+ return -1;
+ }
+
+ if (fgets(version, sizeof(version), fp) == NULL) {
+ _LOGE("Failed to get version information");
+ fclose(fp);
+ return -1;
+ }
+ fclose(fp);
+
+ query = sqlite3_mprintf(query_raw, version);
+ if (!query) {
+ _LOGE("Out of memory");
+ return -1;
+ }
+
+ ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
+ sqlite3_free(query);
+ if (ret != SQLITE_OK) {
+ _LOGE("prepare failed: %s", sqlite3_errmsg(db));
+ return -1;
+ }
+
+ ret = sqlite3_step(stmt);
+ if (ret != SQLITE_DONE) {
+ _LOGE("sqlite3_step failed: %d", ret);
+ sqlite3_finalize(stmt);
+ return -1;
+ }
+
+ sqlite3_finalize(stmt);
+
+ return 0;
+}
+
static int __create_tables(sqlite3 *db, const char **queries)
{
int ret;
{
const char **queries;
+ if (__set_db_version(db))
+ return -1;
+
if (strstr(dbpath, ".pkgmgr_parser.db")) {
queries = PARSER_INIT_QUERIES;
} else if (strstr(dbpath, ".pkgmgr_cert.db")) {