Add xmlSaveFormatFile() check routine
[platform/core/api/system-settings.git] / src / sst_font.c
index 409df27..e14f709 100644 (file)
  */
 #include "sst_font.h"
 
-#include <dlfcn.h>
 #include <libxml/tree.h>
 #include <vconf.h>
 #include "sst.h"
+#include "sst_utils_wrapper.h"
 
-static const char* const sst_utils_library = SETTING_UTILS_SO_FILE_PATH;
-
-static int dl_is_available_font(char *str)
-{
-       void *handle = NULL;
-       char *error;
-       int ret = 0;
-       int (*check_available_font)(char *font_name);
-
-       handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
-       if (NULL == handle) {
-               ERR("dlopen(%s) Fail", sst_utils_library);
-               return 0;
-       }
-
-       check_available_font = dlsym(handle, "sstu_is_available_font");
-       if ((error = dlerror()) != NULL) {
-               ERR("dlsym(sstu_is_available_font) Fail(%s)", error);
-               dlclose(handle);
-               return 0;
-       }
-       ret = check_available_font(str);
-       dlclose(handle);
-       return ret;
-}
-
-static void dl_font_size_set()
+int sst_font_set_size(sst_interface *iface, int value)
 {
-       void *handle = NULL;
-       char *error;
-       void(*set_font_size)();
-
-       handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
-       if (NULL == handle) {
-               ERR("dlopen(%s) Fail", sst_utils_library);
-               return;
-       }
+       RETVM_IF(value < 0 || SYSTEM_SETTINGS_FONT_SIZE_GIANT < value,
+               SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid size(%d)", value);
 
-       set_font_size = dlsym(handle, "sstu_set_font_size");
-       if ((error = dlerror()) != NULL) {
-               ERR("dlsym(sstu_set_font_size) Fail(%s)", error);
-               dlclose(handle);
-               return;
-       }
-       set_font_size();
-       dlclose(handle);
-       return;
-}
-
-static void dl_font_config_set_notification()
-{
-       void *handle = NULL;
-       char *error;
-       void (*set_font_nodification)();
-
-       handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
-       if (NULL == handle) {
-               ERR("dlopen(%s) Fail", sst_utils_library);
-               return;
-       }
-
-       set_font_nodification = dlsym(handle, "sstu_font_config_set_notification");
-       if ((error = dlerror()) != NULL) {
-               ERR("dlsym(sstu_font_config_set_notification) Fail(%s)", error);
-               dlclose(handle);
-               return;
-       }
-       set_font_nodification();
-       dlclose(handle);
-       return;
-}
-
-static bool dl_font_config_set(char *font_name)
-{
-       void *handle = NULL;
-       char *error;
-       bool ret = false;
-       bool (*check_font_type)(char *font_name);
-
-       handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
-       if (NULL == handle) {
-               ERR("dlopen(%s) Fail", sst_utils_library);
-               return false;
-       }
-
-       check_font_type = dlsym(handle, "sstu_set_font_config");
-       if ((error = dlerror()) != NULL) {
-               ERR("dlsym(sstu_set_font_config) Fail(%s)", error);
-               dlclose(handle);
-               return false;
-       }
-       ret = check_font_type(font_name);
-       dlclose(handle);
-       return ret;
-}
-
-static char *dl_get_default_font_info()
-{
-       void *handle = NULL;
-       char *error;
-       char *ret = NULL;
-       char *(*get_font_info)();
-
-       handle = dlopen(sst_utils_library, RTLD_LAZY | RTLD_GLOBAL);
-       if (NULL == handle) {
-               ERR("dlopen(%s) Fail", sst_utils_library);
-               return NULL;
-       }
-
-       get_font_info = dlsym(handle, "sstu_get_default_font");
-       if ((error = dlerror()) != NULL) {
-               ERR("dlsym(sstu_get_default_font) Fail(%s)", error);
-               dlclose(handle);
-               return NULL;
-       }
-       ret = get_font_info();
-       dlclose(handle);
-       return ret;
-}
-
-int sst_font_set_size(sst_interface *iface, void *value)
-{
-       int *vconf_value;
-       vconf_value = *(int **)value;
-
-       RETVM_IF(*vconf_value < 0 || SYSTEM_SETTINGS_FONT_SIZE_GIANT < *vconf_value,
-               SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid value(%d)", *vconf_value);
-
-       if (vconf_set_int(iface->vconf_key, *vconf_value)) {
-               ERR("vconf_set_int(%s) Fail", iface->vconf_key);
+       if (vconf_set_int(iface->vconf_key, value)) {
+               ERR("vconf_set_int(%s, %d) Fail", iface->vconf_key, value);
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
-       dl_font_size_set();
+       sstu_set_font_size();
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-static void* font_conf_doc_parse(char *doc_name, char *font_name)
+static void* font_conf_doc_parse(const char *doc_name, const char *font_name)
 {
        xmlDocPtr doc = NULL;
        xmlNodePtr cur = NULL;
@@ -166,9 +43,7 @@ static void* font_conf_doc_parse(char *doc_name, char *font_name)
        xmlChar *key = NULL;
 
        doc = xmlParseFile(doc_name);
-
        cur = xmlDocGetRootElement(doc);
-
        if (cur == NULL) {
                xmlFreeDoc(doc);
                doc = NULL;
@@ -252,53 +127,49 @@ static void* font_conf_doc_parse(char *doc_name, char *font_name)
        }
 }
 
-int sst_font_set_type(sst_interface *iface, void *value)
+int sst_font_set_type(sst_interface *iface, const char *font_name)
 {
-       char *font_name = NULL;
-       font_name = (char*)value;
-
        /* get current font list */
-       int is_found = dl_is_available_font(font_name);
-       if (is_found == 1) {
-               DBG("found font : %s ", font_name);
-       } else {
-               ERR(" NOT found font : %s ", font_name);
+       int is_found = sstu_is_available_font(font_name);
+       if (FALSE == is_found) {
+               ERR("NO font(%s)", font_name);
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
-       bool bsave = dl_font_config_set(font_name);
+       bool bsave = sstu_set_font_config(font_name);
        if (!bsave) {
-               ERR("dl_font_config_set() Fail");
+               ERR("sstu_set_font_config() Fail");
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
        xmlDocPtr doc = font_conf_doc_parse(SETTING_FONT_CONF_FILE, font_name);
        if (doc != NULL) {
-               xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
+               int ret = xmlSaveFormatFile(SETTING_FONT_CONF_FILE, doc, 0);
                xmlFreeDoc(doc);
-               doc = NULL;
+               if (ret <= -1) {
+                       ERR("xmlSaveFormatFile() Fail");
+                       return SYSTEM_SETTINGS_ERROR_IO_ERROR;
+               }
        }
 
-       dl_font_config_set_notification();
+       sstu_font_config_set_notification();
 
-       char *vconf_value;
-       vconf_value = (char*)value;
-       if (vconf_set_str(iface->vconf_key, vconf_value)) {
-               ERR("vconf_set_str(%s) Fail", iface->vconf_key);
+       if (vconf_set_str(iface->vconf_key, font_name)) {
+               ERR("vconf_set_str(%s, %s) Fail", iface->vconf_key, font_name);
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
        return SYSTEM_SETTINGS_ERROR_NONE;
 }
 
-int sst_font_get_default_type(sst_interface *iface, void **value)
+int sst_font_get_default_type(sst_interface *iface, char **value)
 {
-       char *font_name = dl_get_default_font_info();
+       char *font_name = sstu_get_default_font();
        if (NULL == font_name) {
-               ERR("dl_get_default_font_info() Fail");
+               ERR("sstu_get_default_font() Fail");
                return SYSTEM_SETTINGS_ERROR_IO_ERROR;
        }
 
-       *value = (void*)font_name;
+       *value = font_name;
        return SYSTEM_SETTINGS_ERROR_NONE;
 }