Fix Prevent and remove compile warning messages
[platform/core/appfw/ail.git] / tool / src / syncdb.c
index 247602b..231de08 100644 (file)
  *
  */
 
-
-
+#define _GNU_SOURCE
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <dirent.h>
 #include <unistd.h>
 #include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
 #include <errno.h>
 #include <sys/smack.h>
 
 #ifdef _E
 #undef _E
 #endif
-#define _E(fmt, arg...) fprintf(stderr, "[AIL_INITDB][E][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg);
+#define _E(fmt, arg...) fprintf(stderr, "[AIL_INITDB][E][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg)
 
 #ifdef _D
 #undef _D
 #endif
-#define _D(fmt, arg...) fprintf(stderr, "[AIL_INITDB][D][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg);
+#define _D(fmt, arg...) fprintf(stderr, "[AIL_INITDB][D][%s,%d] "fmt"\n", __FUNCTION__, __LINE__, ##arg)
 
 #define SET_DEFAULT_LABEL(x) \
-       if(smack_setlabel((x), "*", SMACK_LABEL_ACCESS)) _E("failed chsmack -a \"*\" %s", x) \
-       else _D("chsmack -a \"*\" %s", x)
-
-static int syncdb_count_app(void)
-{
-       ail_filter_h filter;
-       ail_error_e ret;
-       int total = 0;
-
-       ret = ail_filter_new(&filter);
-       if (ret != AIL_ERROR_OK) {
-               return -1;
-       }
-
-       ret = ail_filter_add_bool(filter, AIL_PROP_NODISPLAY_BOOL, false);
-       if (ret != AIL_ERROR_OK) {
-               ail_filter_destroy(filter);
-               return -1;
-       }
-       ret = ail_filter_count_appinfo(filter, &total);
-       if (ret != AIL_ERROR_OK) {
-               ail_filter_destroy(filter);
-               return -1;
-       }
-
-       ail_filter_destroy(filter);
-
-       return total;
-}
-
-
+       do { \
+               if (smack_setlabel((x), "*", SMACK_LABEL_ACCESS)) \
+                       _E("failed chsmack -a \"*\" %s", x); \
+               else \
+                       _D("chsmack -a \"*\" %s", x); \
+       } while (0)
 
 char* _desktop_to_package(const char* desktop)
 {
@@ -90,7 +66,7 @@ char* _desktop_to_package(const char* desktop)
        retv_if(!package, NULL);
 
        tmp = strrchr(package, '.');
-       if(tmp == NULL) {
+       if (tmp == NULL) {
                _E("[%s] is not a desktop file", package);
                free(package);
                return NULL;
@@ -107,18 +83,16 @@ char* _desktop_to_package(const char* desktop)
        return package;
 }
 
-
-
 int syncdb_load_directory(const char *directory)
 {
        DIR *dir;
        struct dirent entry, *result;
-       int len, ret;
+       int ret;
        char buf[BUFSZE];
        int total_cnt = 0;
        int ok_cnt = 0;
 
-       // desktop file
+       /* desktop file */
        dir = opendir(directory);
        if (!dir) {
                if (strerror_r(errno, buf, sizeof(buf)) == 0)
@@ -126,7 +100,6 @@ int syncdb_load_directory(const char *directory)
                return AIL_ERROR_FAIL;
        }
 
-       len = strlen(directory) + 1;
        _D("Loading desktop files from %s", directory);
 
        for (ret = readdir_r(dir, &entry, &result);
@@ -142,11 +115,10 @@ int syncdb_load_directory(const char *directory)
                        continue;
                }
 
-               if (ail_desktop_add(package) != AIL_ERROR_OK) {
+               if (ail_desktop_add(package) != AIL_ERROR_OK)
                        _E("Failed to add a package[%s]", package);
-               } else {
+               else
                        ok_cnt++;
-               }
                free(package);
        }
 
@@ -156,50 +128,12 @@ int syncdb_load_directory(const char *directory)
        return AIL_ERROR_OK;
 }
 
-
-
-static int syncdb_change_perm(const char *db_file)
-{
-       char buf[BUFSZE];
-       char journal_file[BUFSZE];
-       char *files[3];
-       int ret, i;
-
-       files[0] = (char *)db_file;
-       files[1] = journal_file;
-       files[2] = NULL;
-
-       retv_if(!db_file, AIL_ERROR_FAIL);
-
-       snprintf(journal_file, sizeof(journal_file), "%s%s", db_file, "-journal");
-
-       for (i = 0; files[i]; i++) {
-               ret = chown(files[i], GLOBAL_USER, OWNER_ROOT);
-               if (ret == -1) {
-                       strerror_r(errno, buf, sizeof(buf));
-                       _E("FAIL : chown %s %d.%d, because %s", db_file, OWNER_ROOT, OWNER_ROOT, buf);
-                       return AIL_ERROR_FAIL;
-               }
-
-               ret = chmod(files[i], S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
-               if (ret == -1) {
-                       strerror_r(errno, buf, sizeof(buf));
-                       _E("FAIL : chmod %s 0664, because %s", db_file, buf);
-                       return AIL_ERROR_FAIL;
-               }
-       }
-
-       return AIL_ERROR_OK;
-}
-
-
-static int __is_authorized()
+static int __is_authorized(void)
 {
        /* ail_init db should be called by as root privilege. */
-
        uid_t uid = getuid();
-       uid_t euid = geteuid();
-       //euid need to be root to allow smack label changes during initialization
+       /* euid need to be root to allow smack label changes during initialization */
+       /* uid_t euid = geteuid(); */
        if ((uid_t) OWNER_ROOT == uid)
                return 1;
        else
@@ -248,26 +182,26 @@ int main(int argc, char *argv[])
                _D("You are not root user!\n");
                return -1;
        }
+
        if (access(APP_INFO_DB_FILE, F_OK)) {
                fprintf(stderr, "Application database %s is missing, please use ail_createdb to create one before\n", APP_INFO_DB_FILE);
                return AIL_ERROR_FAIL;
        }
+
        ret = setenv("AIL_INITDB", "1", 1);
        _D("AIL_INITDB : %d", ret);
-       setresuid(GLOBAL_USER, GLOBAL_USER, OWNER_ROOT);
+
+       if (setresuid(GLOBAL_USER, GLOBAL_USER, OWNER_ROOT) != 0)
+               _E("setresuid() is failed.");
 
        if (db_open(DB_OPEN_RW, GLOBAL_USER) != AIL_ERROR_OK) {
                _E("Fail to create system databases");
                return AIL_ERROR_DB_FAILED;
        }
+
        ret = syncdb_load_directory(USR_DESKTOP_DIRECTORY);
-       if (ret == AIL_ERROR_FAIL) {
+       if (ret == AIL_ERROR_FAIL)
                _E("cannot load usr desktop directory.");
-       }
 
        return AIL_ERROR_OK;
 }
-
-
-
-// END