return 0;
}
-API int pkgmgr_parser_initialize_parser_db(uid_t uid)
-{
- int ret;
- const char *dbpath;
- sqlite3 *db;
-
- dbpath = __get_parser_db_path(uid);
- if (access(dbpath, F_OK) != -1) {
- _LOGE("Manifest db for user %d is already exists", uid);
- return PM_PARSER_R_ERROR;
- }
-
- ret = sqlite3_open_v2(dbpath, &db,
- SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
- if (ret != SQLITE_OK) {
- _LOGE("open db failed: %d", ret);
- return PM_PARSER_R_ERROR;
- }
-
- if (__initialize_db(db, dbpath, uid)) {
- sqlite3_close_v2(db);
- return PM_PARSER_R_ERROR;
- }
- sqlite3_close_v2(db);
-
- return PM_PARSER_R_OK;
-}
-
-API int pkgmgr_parser_initialize_cert_db(void)
-{
- int ret;
- const char *dbpath;
- sqlite3 *db;
-
- dbpath = __get_cert_db_path();
- if (access(dbpath, F_OK) != -1) {
- _LOGE("Cert db is already exists");
- return PM_PARSER_R_ERROR;
- }
-
- ret = sqlite3_open_v2(dbpath, &db,
- SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
- if (ret != SQLITE_OK) {
- _LOGE("open db failed: %d", ret);
- return PM_PARSER_R_ERROR;
- }
-
- if (__initialize_db(db, dbpath, GLOBAL_USER)) {
- sqlite3_close_v2(db);
- return PM_PARSER_R_ERROR;
- }
- sqlite3_close_v2(db);
-
- return PM_PARSER_R_OK;
-}
-
-API int pkgmgr_parser_create_and_initialize_db(uid_t uid)
-{
- int ret;
- struct passwd pwd;
- struct passwd *result;
- char buf[BUFSIZE];
-
- ret = getpwnam_r(APPFW_USER, &pwd, buf, sizeof(buf), &result);
- if (result == NULL) {
- if (ret == 0)
- _LOGE("no such user: %s", APPFW_USER);
- else
- _LOGE("getpwnam_r failed: %d", errno);
- return PM_PARSER_R_ERROR;
- }
-
- if (getuid() != OWNER_ROOT && getuid() != pwd.pw_uid) {
- _LOGE("Only root or app_fw user is allowed");
- return PM_PARSER_R_EINVAL;
- }
-
- if (pkgmgr_parser_initialize_parser_db(uid))
- return PM_PARSER_R_ERROR;
-
- if (uid == OWNER_ROOT || uid == GLOBAL_USER)
- if (pkgmgr_parser_initialize_cert_db())
- return PM_PARSER_R_ERROR;
-
- return PM_PARSER_R_OK;
-}
-
#define RESOURCED_BUS_NAME "org.tizen.resourced"
#define RESOURCED_PROC_PATH "/Org/Tizen/ResourceD/Process"
#define RESOURCED_PROC_INTERFACE "org.tizen.resourced.process"
}
}
+API int pkgmgr_parser_initialize_parser_db(uid_t uid)
+{
+ int ret;
+ const char *dbpath;
+ sqlite3 *db;
+
+ dbpath = __get_parser_db_path(uid);
+ if (access(dbpath, F_OK) != -1) {
+ _LOGE("Manifest db for user %d is already exists", uid);
+ return PM_PARSER_R_ERROR;
+ }
+
+ ret = sqlite3_open_v2(dbpath, &db,
+ SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("open db failed: %d", ret);
+ return PM_PARSER_R_ERROR;
+ }
+
+ ret = sqlite3_busy_handler(db, __db_busy_handler, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("failed to register busy handler: %s",
+ sqlite3_errmsg(db));
+ sqlite3_close_v2(db);
+ return ret;
+ }
+
+ if (__initialize_db(db, dbpath, uid)) {
+ sqlite3_close_v2(db);
+ return PM_PARSER_R_ERROR;
+ }
+ sqlite3_close_v2(db);
+
+ return PM_PARSER_R_OK;
+}
+
+API int pkgmgr_parser_initialize_cert_db(void)
+{
+ int ret;
+ const char *dbpath;
+ sqlite3 *db;
+
+ dbpath = __get_cert_db_path();
+ if (access(dbpath, F_OK) != -1) {
+ _LOGE("Cert db is already exists");
+ return PM_PARSER_R_ERROR;
+ }
+
+ ret = sqlite3_open_v2(dbpath, &db,
+ SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("open db failed: %d", ret);
+ return PM_PARSER_R_ERROR;
+ }
+
+ ret = sqlite3_busy_handler(db, __db_busy_handler, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("failed to register busy handler: %s",
+ sqlite3_errmsg(db));
+ sqlite3_close_v2(db);
+ return ret;
+ }
+
+ if (__initialize_db(db, dbpath, GLOBAL_USER)) {
+ sqlite3_close_v2(db);
+ return PM_PARSER_R_ERROR;
+ }
+ sqlite3_close_v2(db);
+
+ return PM_PARSER_R_OK;
+}
+
+API int pkgmgr_parser_create_and_initialize_db(uid_t uid)
+{
+ int ret;
+ struct passwd pwd;
+ struct passwd *result;
+ char buf[BUFSIZE];
+
+ ret = getpwnam_r(APPFW_USER, &pwd, buf, sizeof(buf), &result);
+ if (result == NULL) {
+ if (ret == 0)
+ _LOGE("no such user: %s", APPFW_USER);
+ else
+ _LOGE("getpwnam_r failed: %d", errno);
+ return PM_PARSER_R_ERROR;
+ }
+
+ if (getuid() != OWNER_ROOT && getuid() != pwd.pw_uid) {
+ _LOGE("Only root or app_fw user is allowed");
+ return PM_PARSER_R_EINVAL;
+ }
+
+ if (pkgmgr_parser_initialize_parser_db(uid))
+ return PM_PARSER_R_ERROR;
+
+ if (uid == OWNER_ROOT || uid == GLOBAL_USER)
+ if (pkgmgr_parser_initialize_cert_db())
+ return PM_PARSER_R_ERROR;
+
+ return PM_PARSER_R_OK;
+}
+
static int __open_db(uid_t uid, const char *path, sqlite3 **db, int flags)
{
int ret;