Merge "Modified src about get/set func for 64bit-arch." into tizen
authorMyoungJune Park <mj2004.park@samsung.com>
Tue, 29 Nov 2016 04:32:54 +0000 (20:32 -0800)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 29 Nov 2016 04:32:54 +0000 (20:32 -0800)
1  2 
src/system_setting_platform.c
src/system_settings.c

@@@ -25,7 -25,6 +25,7 @@@
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <fcntl.h>
 +#include <aul.h>
  
  #include <regex.h>
  
  
  #include <fontconfig/fontconfig.h>
  
 -#include <alarm.h>
 -
  #include <pkgmgr-info.h>
  
  #include <system_settings.h>
  #include <system_settings_private.h>
 +#include <system_settings_ringtones.h>
 +#include <system_settings_json.h>
 +
  
  #include <tzplatform_config.h>
 +#include <alarm.h>
  
  #ifdef USE_EFL_ASSIST
  #include <efl_assist.h>
  #endif
  
 +
 +
  #define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
  #define SETTING_DEFAULT_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf"
  
  #define SETTING_TIME_SHARE_LOCAL_PATH "/usr/share/locale"
  #define SETTING_TZONE_SYMLINK_PATH            "/opt/etc/localtime"
  
 +
 +#define __FREE(del, arg) do { \
 +              if (arg) { \
 +                      del((void *)(arg)); /*cast any argument to (void*) to avoid build warring*/\
 +                      arg = NULL; \
 +              } \
 +      } while (0);
 +#define FREE(arg) __FREE(free, arg)
 +
  #ifdef SETTING_ARCH_64
  #define SETTING_UTILS_SO_FILE_PATH "/usr/lib64/libsystem-settings-util.so.0.1.0"
  #else
@@@ -166,11 -152,12 +166,12 @@@ int system_setting_get_font_size(system
  {
        SETTING_TRACE_BEGIN;
        int vconf_value;
+       int ** val = (int**)value;
  
        if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void *)vconf_value;
+       **val = vconf_value;
  
        return SYSTEM_SETTINGS_ERROR_NONE;
  }
@@@ -245,6 -232,7 +246,6 @@@ int system_setting_get_3g_data_network(
   *
   * @return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE raise exception if current lock type is 'password'
   */
 -/*  LCOV_EXCL_START */
  int system_setting_get_lockscreen_app(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
  {
        SETTING_TRACE_BEGIN;
        *value = pkg_name;
        return SYSTEM_SETTINGS_ERROR_NONE;
  }
 -/*  LCOV_EXCL_STOP */
  
  
  /*////////////////////////////////////////////////////////////////////////////////////////////////// */
@@@ -281,198 -270,6 +282,198 @@@ int _is_file_accessible(const char *pat
        }
  }
  
 +
 +
 +/*////////////////////////////////////////////////////////////////////////////////////////////////// */
 +// @todo move to CMake
 +#define DEF_RINGTONE_FILE_PATH "/opt/share/settings/Ringtones"
 +#define USR_RINGTONE_FILE_PATH "/home/owner/content/Sounds/Ringtones"
 +#define JSONFILE "/opt/home/owner/apps_rw/org.tizen.setting/data/.user-ringtones.json"
 +
 +#if 0
 +static char* _get_json_file_path()
 +{
 +      // for testing
 +      return JSONFILE;
 +}
 +#endif
 +
 +int system_setting_add_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
 +{
 +      SETTING_TRACE_BEGIN;
 +      char* pathval = (char*)value;
 +
 +#ifdef USE_JSONFILE
 +      // NOT IN USE
 +      JsonParser *parser = ss_json_ringtone_open_file(JSONFILE);
 +#else
 +      JsonParser *parser = ss_json_ringtone_load_from_data();
 +#endif
 +
 +      JsonNode *root = json_parser_get_root(parser);
 +
 +      // dirname
 +      // basename
 +      int ret = SYSTEM_SETTINGS_ERROR_NONE;
 +      if (false == ss_json_ringtone_contain(root, pathval)) {
 +              SETTING_TRACE("---> dirname is : %s ", dirname(strdup(pathval)));
 +              SETTING_TRACE("---> basename is : %s ", basename(strdup(pathval)));
 +              // @todo : MAKE SURE THE ACTUAL FILE IS THERE ON PATHVAL(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
 +              ss_json_ringtone_add(root, JSONFILE, pathval, pathval);
 +              SETTING_TRACE("pathval is : %s -- OK", pathval);
 +      } else {
 +              SETTING_TRACE("pathval is duplicated : %s", pathval);
 +              SETTING_TRACE("---> dirname is : %s ", dirname(strdup(pathval)));
 +              SETTING_TRACE("---> basename is : %s ", basename(strdup(pathval)));
 +              ret = SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      if (parser) {
 +              g_object_unref(parser);
 +              parser = NULL;
 +      }
 +
 +      return ret;
 +}
 +
 +int system_setting_del_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
 +{
 +      SETTING_TRACE_BEGIN;
 +      char* pathval = (char*)value;
 +#ifdef USE_JSONFILE
 +      // NOT IN USE
 +      JsonParser* parser = ss_json_ringtone_open_file(JSONFILE);
 +#else
 +      JsonParser* parser = ss_json_ringtone_load_from_data();
 +#endif
 +      JsonNode *root = json_parser_get_root(parser);
 +
 +      ss_json_ringtone_remove(root, JSONFILE, pathval);
 +      //void ss_json_ringtone_remove(JsonNode *root,  char* filename, char* path_to_del)
 +
 +      ss_json_ringtone_print(root);
 +      if (parser) {
 +              g_object_unref(parser);
 +              parser = NULL;
 +      }
 +
 +      return SYSTEM_SETTINGS_ERROR_NONE;
 +}
 +
 +
 +static int _compare_cb(const void *d1, const void *d2)
 +{
 +      fileNodeInfo *pNode1 = (fileNodeInfo *)d1;
 +      fileNodeInfo *pNode2 = (fileNodeInfo *)d2;
 +
 +      return strcmp(pNode1->media_name, pNode2->media_name);
 +}
 +
 +/*
 + * get the RINGTONE list
 + */
 +static void _get_default_ringtones(system_settings_key_e key, system_setting_data_type_e data_type,  system_settings_iter_cb callback, void *data)
 +{
 +      SETTING_TRACE_BEGIN;
 +      /*Get file list */
 +      Eina_List *filelist = NULL;
 +      Eina_List *l = NULL;
 +      fileNodeInfo *node = NULL;
 +      int idx = 0;
 +
 +      //-----------------------------------------------------------------------------------------------------------------
 +      // 1. get the default ringtone list
 +      //-----------------------------------------------------------------------------------------------------------------
 +      int ret = get_filelist_from_dir_path(DEF_RINGTONE_FILE_PATH, &filelist);
 +      if (ret != 0) {
 +              SETTING_TRACE("Failed to get filelist, ret = %d %s", ret, DEF_RINGTONE_FILE_PATH);
 +      }
 +      filelist = eina_list_sort(filelist, eina_list_count(filelist), _compare_cb);
 +
 +      EINA_LIST_FOREACH(filelist, l, node)
 +      {
 +              SETTING_TRACE("file path = (%d) : name:%s path:%s [%s]", ret, node->name, node->path, node->media_name);
 +              // @todo assert NULL check
 +              if (callback) {
 +                      char temp[1024];
 +                      snprintf(temp, 1024, "%s/%s", node->path, node->name);
 +                      char* path = strdup(temp);
 +                      bool ret = callback(idx, (void *)(path), data);
 +                      if (path) {
 +                              free(path);
 +                              path = NULL;
 +                      }
 +                      if (ret == false) {
 +                              SETTING_TRACE("quit the iteration by return value == false : %d", ret);
 +                              break;
 +                      }
 +
 +              } else {
 +                      SETTING_TRACE("--> system_setting_data_iterator is NULL");
 +              }
 +      }
 +
 +      l = NULL;
 +      node = NULL;
 +      EINA_LIST_FOREACH(filelist, l, node)
 +      {
 +              FREE(node->path);
 +              FREE(node->name);
 +              FREE(node->media_name);
 +              FREE(node);
 +      }
 +      eina_list_free(filelist);
 +      filelist = NULL;
 +
 +}
 +
 +static void _get_user_ringtones(system_settings_key_e key, system_setting_data_type_e data_type, system_settings_iter_cb callback, void *data)
 +{
 +      SETTING_TRACE_BEGIN;
 +
 +#ifdef USE_JSONFILE
 +      // NOT IN USE
 +      JsonParser* parser = ss_json_ringtone_open_file(JSONFILE);
 +#else
 +      JsonParser* parser = ss_json_ringtone_load_from_data();
 +#endif
 +
 +      JsonNode *root = json_parser_get_root(parser);
 +      int size = json_array_get_length(json_node_get_array(root));
 +
 +      int i = 0;
 +      for (i = 0; i < size ; i++) {
 +              JsonObject *ringtone = json_array_get_object_element(json_node_get_array(root), i);
 +              char *nameval = (char *)json_object_get_string_member(ringtone, "name");
 +              char *pathval = (char *)json_object_get_string_member(ringtone, "path");
 +              SETTING_TRACE("(%s) --- (%s) \n", nameval, pathval);
 +              if (callback) {
 +                      char* path = strdup(pathval);
 +                      bool ret = callback(i, (void *)(path), data);
 +                      if (ret == false) {
 +                              SETTING_TRACE("quit the iteration by return value == false : %d", ret);
 +                              break;
 +                      }
 +              } else {
 +                      SETTING_TRACE("--> callback is NULL");
 +              }
 +      }
 +}
 +
 +int system_setting_list_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, system_settings_iter_cb callback, void *data)
 +{
 +      SETTING_TRACE_BEGIN;
 +
 +      _get_default_ringtones(key, data_type, callback, data);
 +      //-----------------------------------------------------------------------------------------------------------------
 +      // 2. get the USER ringtone list
 +      //-----------------------------------------------------------------------------------------------------------------
 +      _get_user_ringtones(key, data_type, callback, data);
 +
 +      return SYSTEM_SETTINGS_ERROR_NONE;
 +}
 +
 +
  /*  LCOV_EXCL_START */
  int system_setting_set_incoming_call_ringtone(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
  {
@@@ -974,7 -771,7 +975,7 @@@ int system_setting_set_font_size(system
  {
        SETTING_TRACE_BEGIN;
        int *vconf_value;
-       vconf_value = (int *)value;
+       vconf_value = *(int **)value;
  
        if (*vconf_value < 0 || *vconf_value > SYSTEM_SETTINGS_FONT_SIZE_GIANT) {
                return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
@@@ -1612,8 -1409,9 +1613,9 @@@ int system_setting_get_time_changed(sys
  {
        SETTING_TRACE_BEGIN;
        time_t cur_tick;
+       int ** val = (int**)value;
        cur_tick = time(NULL);
-       *value = (void *)cur_tick;
+       **val = cur_tick;
        /* struct tm * localtime = time (cur_tick); */
        /* printf("%s\n", ctime(&cur_tick); */
        return SYSTEM_SETTINGS_ERROR_NONE;
@@@ -1829,11 -1627,12 +1831,12 @@@ int system_setting_get_screen_backlight
  {
        SETTING_TRACE_BEGIN;
        int vconf_value;
+       int ** val = (int**)value;
  
        if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void *)vconf_value;
+       **val = vconf_value;
  
        return SYSTEM_SETTINGS_ERROR_NONE;
  }
@@@ -1844,7 -1643,7 +1847,7 @@@ int system_setting_set_screen_backlight
  {
        SETTING_TRACE_BEGIN;
        int *vconf_value;
-       vconf_value = (int *)value;
+       vconf_value = *(int **)value;
  
        if (!(*vconf_value > 0 && *vconf_value < 600)) {
                SETTING_TRACE(" ERR Betweeny here  0 ~ 600");
@@@ -1918,12 -1717,13 +1921,13 @@@ int system_setting_unset_changed_callba
  int system_setting_get_notification_repetition_period(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
  {
        SETTING_TRACE_BEGIN;
+       int ** val = (int**)value;
        int vconf_value;
  
        if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void *)vconf_value;
+       **val = vconf_value;
  
        return SYSTEM_SETTINGS_ERROR_NONE;
  }
@@@ -1933,7 -1733,7 +1937,7 @@@ int system_setting_set_notification_rep
  {
        SETTING_TRACE_BEGIN;
        int *vconf_value;
-       vconf_value = (int *)value;
+       vconf_value = *(int **)value;
  
        if (system_setting_vconf_set_value_int(VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, *vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
@@@ -2049,11 -1849,12 +2053,12 @@@ int system_setting_unset_changed_callba
  int system_setting_get_lock_state(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
  {
        int vconf_value;
+       int ** val = (int**)value;
  
        if (system_setting_vconf_get_value_int(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, &vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
-       *value = (void *)vconf_value;
+       **val = vconf_value;
  
        return SYSTEM_SETTINGS_ERROR_NONE;
  }
@@@ -2064,7 -1865,7 +2069,7 @@@ int system_setting_set_lock_state(syste
  {
        SETTING_TRACE_BEGIN;
        int *vconf_value;
-       vconf_value = (int *)value;
+       vconf_value = *(int **)value;
  
        if (system_setting_vconf_set_value_int(VCONFKEY_IDLE_LOCK_STATE_READ_ONLY, *vconf_value)) {
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
diff --combined src/system_settings.c
@@@ -47,9 -47,6 +47,9 @@@ system_setting_s system_setting_table[
                system_setting_set_changed_callback_incoming_call_ringtone,
                system_setting_unset_changed_callback_incoming_call_ringtone,
                NULL,
 +              system_setting_add_incoming_call_ringtone,      /* ADD */
 +              system_setting_del_incoming_call_ringtone,      /* DEL */
 +              system_setting_list_incoming_call_ringtone,     /* LIST */
                NULL            /* user data */
        },
  
@@@ -61,9 -58,6 +61,9 @@@
                system_setting_set_changed_callback_wallpaper_home_screen,
                system_setting_unset_changed_callback_wallpaper_home_screen,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
  
@@@ -75,9 -69,6 +75,9 @@@
                system_setting_set_changed_callback_wallpaper_lock_screen,
                system_setting_unset_changed_callback_wallpaper_lock_screen,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
  
@@@ -89,9 -80,6 +89,9 @@@
                system_setting_set_changed_callback_font_size,
                system_setting_unset_changed_callback_font_size,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
  
                system_setting_set_changed_callback_font_type,
                system_setting_unset_changed_callback_font_type,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
  
                system_setting_set_changed_callback_motion_activation,
                system_setting_unset_changed_callback_motion_activation,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
  
                system_setting_set_changed_callback_email_alert_ringtone,
                system_setting_unset_changed_callback_email_alert_ringtone,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_usb_debugging_option,
                system_setting_unset_changed_callback_usb_debugging_option,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_3g_data_network,
                system_setting_unset_changed_callback_3g_data_network,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_lockscreen_app,
                system_setting_unset_changed_callback_lockscreen_app,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                NULL,
                NULL,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_locale_country,
                system_setting_unset_changed_callback_locale_country,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_locale_language,
                system_setting_unset_changed_callback_locale_language,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_locale_timeformat_24hour,
                system_setting_unset_changed_callback_locale_timeformat_24hour,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_locale_timezone,
                system_setting_unset_changed_callback_locale_timezone,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_time_changed,
                system_setting_unset_changed_callback_time_changed,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_sound_lock,
                system_setting_unset_changed_callback_sound_lock,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_sound_silent_mode,
                system_setting_unset_changed_callback_sound_silent_mode,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_sound_touch,
                system_setting_unset_changed_callback_sound_touch,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_auto_rotation_mode,
                system_setting_unset_changed_callback_auto_rotation_mode,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_screen_backlight_time,
                system_setting_unset_changed_callback_screen_backlight_time,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_sound_notification,
                system_setting_unset_changed_callback_sound_notification,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_notification_repetition_period,
                system_setting_unset_changed_callback_notification_repetition_period,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_device_name,
                system_setting_unset_changed_callback_device_name,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_motion_activation,
                system_setting_unset_changed_callback_motion_activation,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_network_flight_mode,
                system_setting_unset_changed_callback_network_flight_mode,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_network_wifi_notification,
                system_setting_unset_changed_callback_network_wifi_notification,
                NULL,
 +              NULL,           /* ADD */
 +              NULL,           /* DEL */
 +              NULL,           /* LIST */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_lock_state,
                system_setting_unset_changed_callback_lock_state,
                NULL,
 +              NULL,           /* add */
 +              NULL,           /* del */
 +              NULL,           /* list */
                NULL            /* user data */
        },
        {
                system_setting_set_changed_callback_ads_id,
                system_setting_unset_changed_callback_ads_id,
                NULL,
 +              NULL,           /* add */
 +              NULL,           /* del */
 +              NULL,           /* list */
                NULL            /* user data */
        },
 +
        {
                SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL
        }
@@@ -569,122 -481,6 +569,122 @@@ int system_settings_set_value(system_se
  }
  /*  LCOV_EXCL_STOP */
  
 +
 +
 +int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +
 +      system_setting_h system_setting_item;
 +      system_setting_add_value_cb     system_setting_adder;
 +
 +      int ret = system_settings_get_item(key, &system_setting_item);
 +
 +      if (0 != ret) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      /* type check */
 +      if (system_setting_item->data_type != data_type) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      system_setting_adder = system_setting_item->add_value_cb;
 +
 +      if (system_setting_adder == NULL) {
 +              LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      return system_setting_adder(key, system_setting_item->data_type, value);
 +}
 +
 +
 +int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +
 +      system_setting_h system_setting_item;
 +      system_setting_del_value_cb     system_setting_deler;
 +
 +      int ret = system_settings_get_item(key, &system_setting_item);
 +
 +      if (0 != ret) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      /* type check */
 +      if (system_setting_item->data_type != data_type) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      system_setting_deler = system_setting_item->del_value_cb;
 +
 +      if (system_setting_deler == NULL) {
 +              LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      return system_setting_deler(key, system_setting_item->data_type, value);
 +}
 +
 +
 +
 +
 +
 +//system_setting_list_value_cb list_changed_cb;
 +int system_settings_list_value(system_settings_key_e key, system_setting_data_type_e data_type, bool (*system_setting_data_iterator)(int, void *, void *), void *value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +
 +      system_setting_h system_setting_item;
 +      system_setting_list_value_cb    system_setting_lister;
 +
 +      int ret = system_settings_get_item(key, &system_setting_item);
 +
 +      if (0 != ret) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      /* type check */
 +      if (system_setting_item->data_type != data_type) {
 +              LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      //system_setting_list_value_cb list_changed_cb;
 +      system_setting_lister = system_setting_item->list_value_cb;
 +
 +      if (system_setting_lister == NULL) {
 +              LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
 +              return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
 +      }
 +
 +      return system_setting_lister(key, system_setting_item->data_type, system_setting_data_iterator, value);
 +}
 +
 +
 +
 +
 +
 +
  /*  LCOV_EXCL_START */
  int system_settings_set_value_int(system_settings_key_e key, int value)
  {
        }
  
        int *ptr = &value;
-       return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)ptr);
+       int **p_ptr = &ptr;
+       return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
  }
  /*  LCOV_EXCL_STOP */
  
@@@ -704,8 -501,13 +705,13 @@@ int system_settings_get_value_int(syste
        if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
                return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
        }
-       return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)value);
+       int value_int = 0;
+       int *ptr = &value_int;
+       int **p_ptr = &ptr;
+       int ret = 0;
+       ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
+       *value = value_int;
+       return ret;
  }
  
  /*  LCOV_EXCL_START */
@@@ -848,46 -650,3 +854,46 @@@ int system_settings_unset_changed_cb(sy
        return system_setting_unset_changed_cb(key);
  }
  
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +// list
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +
 +int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
 +}
 +
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +// add
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +
 +int system_settings_add_value_string(system_settings_key_e key, const char* value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
 +}
 +
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +// del
 +//////////////////////////////////////////////////////////////////////////////////////////////////
 +
 +int system_settings_delete_value_string(system_settings_key_e key, const char* value)
 +{
 +      LOGE("Enter [%s]", __FUNCTION__);
 +      if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
 +              return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
 +      }
 +
 +      return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
 +}
 +
 +