add pthred_unlock
[platform/core/uifw/libtdm.git] / src / tdm_config.c
index 4c66e07..9918fa4 100644 (file)
@@ -9,7 +9,7 @@
  *          Taeheon Kim <th908.kim@samsung.com>,
  *          YoungJun Cho <yj44.cho@samsung.com>,
  *          SooChan Lim <sc1.lim@samsung.com>,
- *          Boram Park <sc1.lim@samsung.com>
+ *          Boram Park <boram1288.park@samsung.com>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the
@@ -51,6 +51,7 @@
 
 static pthread_mutex_t g_dic_lock = PTHREAD_MUTEX_INITIALIZER;
 static dictionary *g_dic = NULL;
+static int init_dic = 0;
 
 static int
 _tdm_config_check_file_owner(const char *filepath)
@@ -122,19 +123,19 @@ _tdm_config_check_logs(void)
        pthread_mutex_lock(&g_dic_lock);
 }
 
-static unsigned int
+static void
 _tdm_config_check_init(void)
 {
-       if (g_dic)
-               return 1;
+       if (init_dic)
+               return;
+
+       init_dic = 1;
 
        g_dic = _tdm_config_load_file(TDM_DATA_PATH, TDM_CONFIG_FILENAME);
 
        _tdm_config_check_logs();
 
        TDM_INFO("tdm config init %s (%p)", (g_dic) ? "successed" : "failed", g_dic);
-
-       return (g_dic) ? 1 : 0;
 }
 
 INTERN void
@@ -149,6 +150,7 @@ tdm_config_deinit(void)
 
        iniparser_freedict(g_dic);
        g_dic = NULL;
+       init_dic = 0;
 
        TDM_INFO("tdm config deinit done");
 
@@ -190,7 +192,8 @@ tdm_config_get_int(const char *key, int default_value)
 
        pthread_mutex_lock(&g_dic_lock);
 
-       if (!_tdm_config_check_init()) {
+       _tdm_config_check_init();
+       if (!g_dic) {
                TDM_INFO("%s = %d: default", key, default_value);
                pthread_mutex_unlock(&g_dic_lock);
                return default_value;
@@ -220,7 +223,8 @@ tdm_config_get_string(const char *key, const char *default_value)
 
        pthread_mutex_lock(&g_dic_lock);
 
-       if (!_tdm_config_check_init()) {
+       _tdm_config_check_init();
+       if (!g_dic) {
                TDM_INFO("%s = %s: default", key, default_value);
                pthread_mutex_unlock(&g_dic_lock);
                return default_value;
@@ -246,7 +250,8 @@ tdm_config_set_int(const char *key, int value)
 
        pthread_mutex_lock(&g_dic_lock);
 
-       if (!_tdm_config_check_init()) {
+       _tdm_config_check_init();
+       if (!g_dic) {
                TDM_INFO("%s = %d set failed", key, value);
                pthread_mutex_unlock(&g_dic_lock);
                return TDM_ERROR_BAD_REQUEST;
@@ -254,8 +259,6 @@ tdm_config_set_int(const char *key, int value)
 
        ret = iniparser_set(g_dic, key, (const char*)temp);
 
-       _tdm_config_check_logs();
-
        pthread_mutex_unlock(&g_dic_lock);
 
        TDM_RETURN_VAL_IF_FAIL(ret == 0, TDM_ERROR_OPERATION_FAILED);
@@ -274,7 +277,8 @@ tdm_config_set_string(const char *key, const char *value)
 
        pthread_mutex_lock(&g_dic_lock);
 
-       if (!_tdm_config_check_init()) {
+       _tdm_config_check_init();
+       if (!g_dic) {
                TDM_INFO("%s = %s set failed", key, value);
                pthread_mutex_unlock(&g_dic_lock);
                return TDM_ERROR_BAD_REQUEST;
@@ -282,8 +286,6 @@ tdm_config_set_string(const char *key, const char *value)
 
        ret = iniparser_set(g_dic, key, value);
 
-       _tdm_config_check_logs();
-
        pthread_mutex_unlock(&g_dic_lock);
 
        TDM_RETURN_VAL_IF_FAIL(ret == 0, TDM_ERROR_OPERATION_FAILED);