Create db if not exists 51/35451/2
authorSangyoon Jang <s89.jang@samsung.com>
Mon, 16 Feb 2015 04:11:19 +0000 (13:11 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Mon, 16 Feb 2015 04:14:03 +0000 (13:14 +0900)
Change-Id: I2b227cdc5e76c18ab908801715fdee8bbd9cea97
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
parser/pkgmgr_parser_db.c
parser/pkgmgr_parser_internal.h
src/pkgmgr-info.c

index 3295fee..5967355 100644 (file)
@@ -2087,7 +2087,7 @@ static int __update_preload_condition_in_db()
        return ret;
 }
 
-static int pkgmgr_parser_initialize_db(void)
+API int pkgmgr_parser_initialize_db(void)
 {
        int ret = -1;
        /*Manifest DB*/
@@ -2224,7 +2224,7 @@ static int parserdb_change_perm(const char *db_file, uid_t uid)
        return 0;
 }
 
-static int pkgmgr_parser_check_and_create_db(uid_t uid)
+API int pkgmgr_parser_check_and_create_db(uid_t uid)
 {
        int ret = -1;
        /*Manifest DB*/
index a891b0b..ee69d39 100644 (file)
@@ -31,5 +31,7 @@
 #define API __attribute__ ((visibility("default")))
 #endif
 
+int pkgmgr_parser_check_and_create_db(uid_t uid);
+int pkgmgr_parser_initialize_db(void);
 
 #endif                         /* __PKGMGR_PARSER_INTERNAL_H__ */
index ccd1689..9bd9b01 100644 (file)
@@ -50,6 +50,7 @@
 #include "pkgmgr-info-debug.h"
 #include "pkgmgr-info.h"
 #include "pkgmgr_parser_db.h"
+#include "pkgmgr_parser_internal.h"
 #include <dirent.h>
 #include <sys/stat.h>
 
@@ -803,18 +804,28 @@ static int __open_manifest_db(uid_t uid)
                return 0;
        }
        const char* user_pkg_parser = getUserPkgParserDBPathUID(uid);
-       if (access(user_pkg_parser, F_OK) == 0) {
-               ret = db_util_open_with_options(user_pkg_parser, &GET_DB(manifest_db),
-                                SQLITE_OPEN_READONLY, NULL);
-               retvm_if(ret != SQLITE_OK, -1, "connect db [%s] failed!\n", user_pkg_parser);
-               manifest_db.ref ++;
-               ret = __attach_and_create_view(GET_DB(manifest_db), MANIFEST_DB, parserdb_tables, uid);
-               retvm_if(ret != SQLITE_OK, -1, "attach db [%s] failed!\n", user_pkg_parser);
+       if (access(user_pkg_parser, F_OK) != 0) {
+               _LOGE("Manifest DB does not exists !! try to create\n");
 
-               return 0;
+               if (pkgmgr_parser_check_and_create_db(uid)) {
+                       _LOGE("create db failed");
+                       return -1;
+               }
+
+               if (pkgmgr_parser_initialize_db()) {
+                       _LOGE("initialize db failed");
+                       return -1;
+               }
        }
-       _LOGE("Manifest DB does not exists !!\n");
-       return -1;
+
+       ret = db_util_open_with_options(user_pkg_parser, &GET_DB(manifest_db),
+                       SQLITE_OPEN_READONLY, NULL);
+       retvm_if(ret != SQLITE_OK, -1, "connect db [%s] failed!\n", user_pkg_parser);
+       manifest_db.ref ++;
+       ret = __attach_and_create_view(GET_DB(manifest_db), MANIFEST_DB, parserdb_tables, uid);
+       retvm_if(ret != SQLITE_OK, -1, "attach db [%s] failed!\n", user_pkg_parser);
+
+       return 0;
 }
 
 static int __close_cert_db(void)