X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=common%2Ftts_config_mgr.c;h=a5d4e7bc8702931b1301bccf332a90f8244698dc;hb=60289108d257c1e6620f97663eff41cc3e789a86;hp=3d7e18cc7b33273f2e4936576a6c6b1881618d81;hpb=856ab8e5169294b9389ccfe3565528de6e1804e4;p=platform%2Fcore%2Fuifw%2Ftts.git diff --git a/common/tts_config_mgr.c b/common/tts_config_mgr.c old mode 100755 new mode 100644 index 3d7e18c..a5d4e7b --- a/common/tts_config_mgr.c +++ b/common/tts_config_mgr.c @@ -36,13 +36,14 @@ typedef struct { void* user_data; } tts_config_client_s; -extern char* tts_tag(); - static GSList* g_engine_list = NULL; static GSList* g_config_client_list = NULL; static tts_config_s* g_config_info = NULL; +extern char g_engine_id[128]; +extern char g_setting[128]; +extern char g_language[128]; static Ecore_Fd_Handler* g_config_fd_handler_noti = NULL; static int g_config_fd_noti; @@ -64,7 +65,7 @@ static int __tts_config_mgr_unregister_engine_config_updated_event(); int __tts_config_mgr_check_engine_is_valid(const char* engine_id) { if (NULL == engine_id) { - SLOG(LOG_ERROR, tts_tag(), "Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Input parameter is NULL"); return -1; } @@ -72,7 +73,7 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no engine!!"); return -1; } @@ -83,12 +84,12 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); return -1; } - if (0 == strcmp(engine_id, engine_info->uuid)) { - SLOG(LOG_DEBUG, tts_tag(), "Default engine is valid : %s", engine_id); + if (NULL != engine_info->uuid && 0 == strcmp(engine_id, engine_info->uuid)) { + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default engine is valid : %s", engine_id); return 0; } @@ -98,23 +99,28 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) /* Change default engine */ iter = g_slist_nth(g_engine_list, 0); if (NULL == iter) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] No engine in list"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] No engine in list"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } engine_info = iter->data; if (NULL == g_config_info) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Invalid engine info in list"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Invalid engine info in list"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } - if (NULL != g_config_info->engine_id) free(g_config_info->engine_id); - if (NULL != g_config_info->setting) free(g_config_info->setting); - - g_config_info->engine_id = strdup(engine_info->uuid); - g_config_info->setting = strdup(engine_info->setting); + if (NULL != engine_info->uuid) { + memset(g_engine_id, '\0', sizeof(g_engine_id)); + g_config_info->engine_id = g_engine_id; + strncpy(g_config_info->engine_id, engine_info->uuid, sizeof(g_engine_id) - 1); + } + if (NULL != engine_info->setting) { + memset(g_setting, '\0', sizeof(g_setting)); + g_config_info->setting = g_setting; + strncpy(g_config_info->setting, engine_info->setting, sizeof(g_setting) - 1); + } - SLOG(LOG_DEBUG, tts_tag(), "Default engine is changed : %s", g_config_info->engine_id); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default engine is changed : %s", g_config_info->engine_id); /* Change is default voice */ GSList *iter_voice = NULL; @@ -129,17 +135,19 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) voice = iter_voice->data; if (NULL != voice) { - if (NULL != voice->language && NULL != g_config_info->language) { + if (NULL != voice->language) { if (0 == strcmp(voice->language, g_config_info->language)) { if (voice->type == g_config_info->type) { /* language is valid */ is_valid_voice = true; - free(g_config_info->language); - g_config_info->language = strdup(voice->language); + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1); + g_config_info->type = voice->type; - SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); break; } } @@ -151,30 +159,28 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) if (false == is_valid_voice) { /* Select first voice as default */ - if (NULL != g_config_info->language) { - free(g_config_info->language); + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; - iter_voice = g_slist_nth(engine_info->voices, 0); - if (NULL == iter_voice) { - SLOG(LOG_ERROR, tts_tag(), "Fail to get voice list"); - return TTS_CONFIG_ERROR_OPERATION_FAILED; - } - voice = iter_voice->data; - - if (NULL == voice || NULL == voice->language) { - SLOG(LOG_ERROR, tts_tag(), "Fail to get voice info from list"); - return TTS_CONFIG_ERROR_OPERATION_FAILED; - } + iter_voice = g_slist_nth(engine_info->voices, 0); + if (NULL == iter_voice) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to get voice list"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } + voice = iter_voice->data; - g_config_info->language = strdup(voice->language); - g_config_info->type = voice->type; - SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); + if (NULL == voice || NULL == voice->language) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to get voice info from list"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; } + strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1); + + g_config_info->type = voice->type; + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type); } - if (0 != tts_parser_set_engine(g_config_info->engine_id, g_config_info->setting, - g_config_info->language, g_config_info->type)) { - SLOG(LOG_ERROR, tts_tag(), " Fail to save config"); + if (0 != tts_parser_set_engine(g_config_info->engine_id, g_config_info->setting, g_config_info->language, g_config_info->type)) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, " Fail to save config"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -184,7 +190,7 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id) bool __tts_config_mgr_check_lang_is_valid(const char* engine_id, const char* language, int type) { if (NULL == engine_id || NULL == language) { - SLOG(LOG_ERROR, tts_tag(), "Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Input parameter is NULL"); return false; } @@ -192,7 +198,7 @@ bool __tts_config_mgr_check_lang_is_valid(const char* engine_id, const char* lan tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no engine!!"); return false; } @@ -203,7 +209,7 @@ bool __tts_config_mgr_check_lang_is_valid(const char* engine_id, const char* lan engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); return false; } @@ -216,7 +222,7 @@ bool __tts_config_mgr_check_lang_is_valid(const char* engine_id, const char* lan tts_config_voice_s* voice = NULL; if (g_slist_length(engine_info->voices) <= 0) { - SLOG(LOG_ERROR, tts_tag(), "There is no voice : %s", engine_info->uuid); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no voice : %s", engine_info->uuid); iter = g_slist_next(iter); return false; } @@ -251,7 +257,7 @@ bool __tts_config_mgr_check_lang_is_valid(const char* engine_id, const char* lan int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* type) { if (NULL == engine_id || NULL == language) { - SLOG(LOG_ERROR, tts_tag(), "Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Input parameter is NULL"); return false; } @@ -259,7 +265,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no engine!!"); return false; } @@ -270,7 +276,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); return false; } @@ -283,7 +289,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty tts_config_voice_s* voice = NULL; if (g_slist_length(engine_info->voices) <= 0) { - SLOG(LOG_ERROR, tts_tag(), "There is no voice : %s", engine_info->uuid); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no voice : %s", engine_info->uuid); return -1; } @@ -298,7 +304,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty *language = strdup(voice->language); *type = voice->type; - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Selected language(%s) type(%d)", *language, *type); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Selected language(%s) type(%d)", *language, *type); return 0; } } @@ -310,7 +316,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty *language = strdup(voice->language); *type = voice->type; - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Selected language(%s) type(%d)", *language, *type); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Selected language(%s) type(%d)", *language, *type); return 0; } break; @@ -321,7 +327,7 @@ int __tts_config_mgr_select_lang(const char* engine_id, char** language, int* ty Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handler) { - SLOG(LOG_DEBUG, tts_tag(), "===== Config changed callback event"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@ Config changed callback event"); int length; struct inotify_event event; @@ -329,9 +335,8 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl length = read(g_config_fd_noti, &event, sizeof(struct inotify_event)); if (0 > length) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Empty Inotify event"); - SLOG(LOG_DEBUG, tts_tag(), "====="); - SLOG(LOG_DEBUG, tts_tag(), " "); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Empty Inotify event"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@"); return ECORE_CALLBACK_DONE; } @@ -354,19 +359,17 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl /* engine changed */ if (NULL != engine || NULL != setting) { if (NULL != engine) { - if (NULL != g_config_info->engine_id) - free(g_config_info->engine_id); - - g_config_info->engine_id = strdup(engine); + memset(g_engine_id, '\0', sizeof(g_engine_id)); + g_config_info->engine_id = g_engine_id; + strncpy(g_config_info->engine_id, engine, sizeof(g_engine_id) - 1); } if (NULL != setting) { - if (NULL != g_config_info->setting) - free(g_config_info->setting); - - g_config_info->setting = strdup(setting); + memset(g_setting, '\0', sizeof(g_setting)); + g_config_info->setting = g_setting; + strncpy(g_config_info->setting, setting, sizeof(g_setting) - 1); } - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine change(%s)", g_config_info->engine_id); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Engine change(%s)", g_config_info->engine_id); /* Call all callbacks of client*/ iter = g_slist_nth(g_config_client_list, 0); @@ -376,7 +379,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (NULL != temp_client) { if (NULL != temp_client->engine_cb) { - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine changed callback : uid(%d)", temp_client->uid); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Engine changed callback : uid(%d)", temp_client->uid); temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting, g_config_info->language, g_config_info->type, g_config_info->auto_voice, g_config_info->credential, temp_client->user_data); @@ -399,16 +402,15 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl before_type = g_config_info->type; if (NULL != lang) { - if (NULL != g_config_info->language) - free(g_config_info->language); - - g_config_info->language = strdup(lang); + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, lang, sizeof(g_language) - 1); } if (-1 != voice_type) { g_config_info->type = voice_type; } - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Voice change(%s, %d)", g_config_info->language, g_config_info->type); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Voice change(%s, %d)", g_config_info->language, g_config_info->type); /* Call all callbacks of client*/ iter = g_slist_nth(g_config_client_list, 0); @@ -418,7 +420,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (NULL != temp_client) { if (NULL != temp_client->voice_cb) { - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Voice changed callback : uid(%d)", temp_client->uid); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Voice changed callback : uid(%d)", temp_client->uid); temp_client->voice_cb(before_lang, before_type, g_config_info->language, g_config_info->type, g_config_info->auto_voice, temp_client->user_data); @@ -430,13 +432,14 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (NULL != before_lang) { free(before_lang); + before_lang = NULL; } } if (-1 != speech_rate) { g_config_info->speech_rate = speech_rate; - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Speech rate change(%d)", g_config_info->speech_rate); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Speech rate change(%d)", g_config_info->speech_rate); /* Call all callbacks of client*/ iter = g_slist_nth(g_config_client_list, 0); @@ -446,7 +449,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (NULL != temp_client) { if (NULL != temp_client->speech_cb) { - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Speech rate changed callback : uid(%d)", temp_client->uid); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Speech rate changed callback : uid(%d)", temp_client->uid); temp_client->speech_cb(g_config_info->speech_rate, temp_client->user_data); } } @@ -458,7 +461,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (-1 != pitch) { g_config_info->pitch = pitch; - SECURE_SLOG(LOG_DEBUG, tts_tag(), "pitch change(%d)", g_config_info->pitch); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "pitch change(%d)", g_config_info->pitch); /* Call all callbacks of client*/ iter = g_slist_nth(g_config_client_list, 0); @@ -468,7 +471,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl if (NULL != temp_client) { if (NULL != temp_client->pitch_cb) { - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Pitch changed callback : uid(%d)", temp_client->uid); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Pitch changed callback : uid(%d)", temp_client->uid); temp_client->pitch_cb(g_config_info->pitch, temp_client->user_data); } } @@ -477,15 +480,29 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl } } - if (NULL != engine) free(engine); - if (NULL != setting) free(setting); - if (NULL != lang) free(lang); + if (NULL != engine) { + free(engine); + engine = NULL; + } + if (NULL != setting) { + free(setting); + setting = NULL; + } + if (NULL != lang) { + free(lang); + lang = NULL; + } + } else if (IN_DELETE_SELF == event.mask) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] IN_DELETE_SELF event"); + + tts_parser_unload_config(g_config_info); + tts_parser_reset(); + tts_parser_load_config(&g_config_info); } else { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Undefined event"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Undefined event (0x%x)", event.mask); } - SLOG(LOG_DEBUG, tts_tag(), "====="); - SLOG(LOG_DEBUG, tts_tag(), " "); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@"); return ECORE_CALLBACK_PASS_ON; } @@ -498,18 +515,18 @@ int __tts_config_mgr_register_config_event() fd = inotify_init(); if (fd < 0) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail get inotify fd"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail get inotify fd"); return -1; } g_config_fd_noti = fd; - wd = inotify_add_watch(fd, TTS_CONFIG, IN_CLOSE_WRITE); + wd = inotify_add_watch(fd, TTS_CONFIG, IN_CLOSE_WRITE|IN_DELETE_SELF); g_config_wd_noti = wd; g_config_fd_handler_noti = ecore_main_fd_handler_add(fd, ECORE_FD_READ, (Ecore_Fd_Cb)tts_config_mgr_inotify_event_cb, NULL, NULL, NULL); if (NULL == g_config_fd_handler_noti) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get handler_noti"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get handler_noti"); return -1; } @@ -519,7 +536,7 @@ int __tts_config_mgr_register_config_event() value |= O_NONBLOCK; if (0 > fcntl(fd, F_SETFL, value)) { - SLOG(LOG_WARN, tts_tag(), "[WARNING] Fail to set non-block mode"); + SLOG(LOG_WARN, TAG_TTSCONFIG, "[WARNING] Fail to set non-block mode"); } return 0; @@ -540,18 +557,19 @@ int __tts_config_set_auto_language() char* value = NULL; value = vconf_get_str(TTS_LANGSET_KEY); if (NULL == value) { - SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get display language"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[Config ERROR] Fail to get display language"); return -1; } char temp_lang[6] = {'\0', }; strncpy(temp_lang, value, 5); free(value); + value = NULL; if (true == __tts_config_mgr_check_lang_is_valid(g_config_info->engine_id, temp_lang, g_config_info->type)) { /* tts default voice change */ if (NULL == g_config_info->language) { - SLOG(LOG_ERROR, tts_tag(), "Current config language is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Current config language is NULL"); return -1; } @@ -559,17 +577,18 @@ int __tts_config_set_auto_language() int before_type; if (0 != tts_parser_set_voice(temp_lang, g_config_info->type)) { - SLOG(LOG_ERROR, tts_tag(), "Fail to save default voice"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to save default voice"); return -1; } before_lang = strdup(g_config_info->language); before_type = g_config_info->type; - free(g_config_info->language); - g_config_info->language = strdup(temp_lang); + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, temp_lang, sizeof(g_language) - 1); - SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Config] Default voice : lang(%s) type(%d)", + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Default voice : lang(%s) type(%d)", g_config_info->language, g_config_info->type); GSList *iter = NULL; @@ -594,27 +613,28 @@ int __tts_config_set_auto_language() if (NULL != before_lang) { free(before_lang); + before_lang = NULL; } } else { /* Display language is not valid */ char* tmp_language = NULL; int tmp_type = -1; if (0 != __tts_config_mgr_select_lang(g_config_info->engine_id, &tmp_language, &tmp_type)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to select language"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to select language"); return -1; } if (NULL == tmp_language) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] language is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] language is NULL"); return -1; } if (0 != tts_parser_set_voice(tmp_language, tmp_type)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to save config"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to save config"); return -1; } - SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Config] Default voice : lang(%s) type(%d)", + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Default voice : lang(%s) type(%d)", tmp_language, tmp_type); GSList *iter = NULL; @@ -636,14 +656,15 @@ int __tts_config_set_auto_language() iter = g_slist_next(iter); } - if (NULL != g_config_info->language) { - free(g_config_info->language); - g_config_info->language = strdup(tmp_language); - } + + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, tmp_language, sizeof(g_language) - 1); g_config_info->type = tmp_type; free(tmp_language); + tmp_language = NULL; } return 0; @@ -651,6 +672,11 @@ int __tts_config_set_auto_language() void __tts_config_display_language_changed_cb(keynode_t *key, void *data) { + if (NULL == g_config_info) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Current config info is invalid."); + return; + } + if (true == g_config_info->auto_voice) { __tts_config_set_auto_language(); } @@ -664,7 +690,7 @@ void __tts_config_screen_reader_changed_cb(keynode_t *key, void *data) int screen_reader; ret = vconf_get_bool(TTS_ACCESSIBILITY_KEY, &screen_reader); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Fail to get screen reader"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[Config ERROR] Fail to get screen reader"); return; } @@ -712,7 +738,7 @@ int __tts_config_release_client(int uid) } } - SLOG(LOG_DEBUG, tts_tag(), "Client count (%d)", g_slist_length(g_config_client_list)); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Client count (%d)", g_slist_length(g_config_client_list)); return g_slist_length(g_config_client_list); } @@ -746,8 +772,6 @@ void __tts_config_release_engine() int __tts_config_mgr_get_engine_info() { DIR *dp = NULL; - int ret = -1; - struct dirent entry; struct dirent *dirp = NULL; char filepath[512] = {'\0',}; @@ -761,14 +785,10 @@ int __tts_config_mgr_get_engine_info() /* Copy default info directory to download directory */ dp = opendir(TTS_DEFAULT_ENGINE_INFO); if (NULL == dp) { - SLOG(LOG_DEBUG, tts_tag(), "[CONFIG] No default directory : %s", TTS_DEFAULT_ENGINE_INFO); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[CONFIG] No default directory : %s", TTS_DEFAULT_ENGINE_INFO); } else { do { - ret = readdir_r(dp, &entry, &dirp); - if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[CONFIG] Fail to read directory"); - break; - } + dirp = readdir(dp); if (NULL != dirp) { if (!strcmp(".", dirp->d_name) || !strcmp("..", dirp->d_name)) @@ -776,7 +796,7 @@ int __tts_config_mgr_get_engine_info() filesize = strlen(TTS_DEFAULT_ENGINE_INFO) + strlen(dirp->d_name) + 2; if (filesize >= 512) { - SECURE_SLOG(LOG_ERROR, tts_tag(), "[CONFIG ERROR] File path is too long : %s", dirp->d_name); + SECURE_SLOG(LOG_ERROR, TAG_TTSCONFIG, "[CONFIG ERROR] File path is too long : %s", dirp->d_name); closedir(dp); return -1; } @@ -784,14 +804,14 @@ int __tts_config_mgr_get_engine_info() memset(filepath, '\0', 512); snprintf(filepath, 512, "%s/%s", TTS_DEFAULT_ENGINE_INFO, dirp->d_name); - SECURE_SLOG(LOG_DEBUG, tts_tag(), "[CONFIG] Filepath(%s)", filepath); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[CONFIG] Filepath(%s)", filepath); char dest[512] = {'\0',}; snprintf(dest, 512, "%s/%s", TTS_DOWNLOAD_ENGINE_INFO, dirp->d_name); if (0 != access(dest, F_OK)) { if (0 != tts_parser_copy_xml(filepath, dest)) { - SLOG(LOG_ERROR, tts_tag(), "[CONFIG ERROR] Fail to copy engine info"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[CONFIG ERROR] Fail to copy engine info"); } } } @@ -803,14 +823,10 @@ int __tts_config_mgr_get_engine_info() /* Get engine info from default engine directory */ dp = opendir(TTS_DOWNLOAD_ENGINE_INFO); if (NULL == dp) { - SLOG(LOG_DEBUG, tts_tag(), "[CONFIG] No downloadable directory : %s", TTS_DOWNLOAD_ENGINE_INFO); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[CONFIG] No downloadable directory : %s", TTS_DOWNLOAD_ENGINE_INFO); } else { do { - ret = readdir_r(dp, &entry, &dirp); - if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[CONFIG] Fail to read directory"); - break; - } + dirp = readdir(dp); if (NULL != dirp) { if (!strcmp(".", dirp->d_name) || !strcmp("..", dirp->d_name)) @@ -818,7 +834,7 @@ int __tts_config_mgr_get_engine_info() filesize = strlen(TTS_DOWNLOAD_ENGINE_INFO) + strlen(dirp->d_name) + 2; if (filesize >= 512) { - SECURE_SLOG(LOG_ERROR, tts_tag(), "[CONFIG ERROR] File path is too long : %s", dirp->d_name); + SECURE_SLOG(LOG_ERROR, TAG_TTSCONFIG, "[CONFIG ERROR] File path is too long : %s", dirp->d_name); closedir(dp); return -1; } @@ -826,12 +842,12 @@ int __tts_config_mgr_get_engine_info() memset(filepath, '\0', 512); snprintf(filepath, 512, "%s/%s", TTS_DOWNLOAD_ENGINE_INFO, dirp->d_name); - SECURE_SLOG(LOG_DEBUG, tts_tag(), "[CONFIG] Filepath(%s)", filepath); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[CONFIG] Filepath(%s)", filepath); if (0 == tts_parser_get_engine_info(filepath, &info)) { g_engine_list = g_slist_append(g_engine_list, info); if (0 != __tts_config_mgr_register_engine_config_updated_event(filepath)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to register engine config updated event"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to register engine config updated event"); } } } @@ -841,7 +857,7 @@ int __tts_config_mgr_get_engine_info() } if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] No engine"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] No engine"); return -1; } @@ -850,7 +866,7 @@ int __tts_config_mgr_get_engine_info() static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* data, Ecore_Fd_Handler *fd_handler) { - SLOG(LOG_DEBUG, tts_tag(), "===== Engine config updated callback event"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@ Engine config updated callback event"); tts_engine_inotify_s *ino = (tts_engine_inotify_s *)data; int dir_fd = ino->dir_fd; @@ -861,35 +877,37 @@ static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* dat length = read(dir_fd, &event, sizeof(struct inotify_event)); if (0 > length) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Empty Inotify event"); - SLOG(LOG_DEBUG, tts_tag(), "====="); - SLOG(LOG_DEBUG, tts_tag(), " "); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Empty Inotify event"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@"); return ECORE_CALLBACK_DONE; } if (IN_CLOSE_WRITE == event.mask) { int ret = __tts_config_mgr_get_engine_info(); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get engine info when config updated"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get engine info when config updated"); } __tts_config_mgr_print_engine_info(); bool support = tts_config_check_default_voice_is_valid(g_config_info->language, g_config_info->type); if (false == support) { - SLOG(LOG_DEBUG, tts_tag(), "[ERROR] Default voice is valid"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[ERROR] Default voice is valid"); char* temp_lang = NULL; int temp_type; ret = __tts_config_mgr_select_lang(g_config_info->engine_id, &temp_lang, &temp_type); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get voice"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get voice"); } ret = tts_config_mgr_set_voice(temp_lang, temp_type); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to set voice"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to set voice"); } else { - SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] Saved default voice : lang(%s), type(%d)", g_config_info->language, g_config_info->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DEBUG] Saved default voice : lang(%s), type(%d)", g_config_info->language, g_config_info->type); + } + if (NULL != temp_lang) { + free(temp_lang); + temp_lang = NULL; } - if (NULL != temp_lang) free(temp_lang); } GSList *iter = NULL; @@ -902,7 +920,7 @@ static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* dat if (NULL != temp_client) { if (NULL != temp_client->engine_cb) { - SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine changed callback : uid(%d)", temp_client->uid); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Engine changed callback : uid(%d)", temp_client->uid); temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting, g_config_info->language, g_config_info->type, g_config_info->auto_voice, g_config_info->credential, temp_client->user_data); @@ -912,11 +930,10 @@ static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* dat iter = g_slist_next(iter); } } else { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Undefined event"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Undefined event"); } - SLOG(LOG_DEBUG, tts_tag(), "====="); - SLOG(LOG_DEBUG, tts_tag(), " "); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@"); return ECORE_CALLBACK_PASS_ON; } @@ -924,20 +941,20 @@ static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* dat static int __tts_config_mgr_register_engine_config_updated_event(const char* path) { if (NULL == path) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Path is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Path is NULL"); return -1; } /* For engine directory monitoring */ tts_engine_inotify_s *ino = (tts_engine_inotify_s *)calloc(1, sizeof(tts_engine_inotify_s)); if (NULL == ino) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory"); return -1; } ino->dir_fd = inotify_init(); if (ino->dir_fd < 0) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to init inotify"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to init inotify"); free(ino); ino = NULL; @@ -945,9 +962,9 @@ static int __tts_config_mgr_register_engine_config_updated_event(const char* pat } ino->dir_wd = inotify_add_watch(ino->dir_fd, path, IN_CLOSE_WRITE); - SLOG(LOG_DEBUG, tts_tag(), "Add inotify watch(%s)", path); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Add inotify watch(%s)", path); if (ino->dir_wd < 0) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to add watch"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to add watch"); free(ino); ino = NULL; return -1; @@ -955,7 +972,7 @@ static int __tts_config_mgr_register_engine_config_updated_event(const char* pat ino->dir_fd_handler = ecore_main_fd_handler_add(ino->dir_fd, ECORE_FD_READ, (Ecore_Fd_Cb)__tts_config_mgr_engine_config_inotify_event_callback, (void *)ino, NULL, NULL); if (NULL == ino->dir_fd_handler) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to add fd handler"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to add fd handler"); free(ino); ino = NULL; return -1; @@ -967,7 +984,7 @@ static int __tts_config_mgr_register_engine_config_updated_event(const char* pat value |= O_NONBLOCK; if (0 > fcntl(ino->dir_fd, F_SETFL, value)) { - SLOG(LOG_WARN, tts_tag(), "[WARNING] Fail to set non-block mode"); + SLOG(LOG_WARN, TAG_TTSCONFIG, "[WARNING] Fail to set non-block mode"); } g_ino_list = g_list_append(g_ino_list, ino); @@ -991,6 +1008,7 @@ static int __tts_config_mgr_unregister_engine_config_updated_event() close(tmp->dir_fd); free(tmp); + tmp = NULL; } g_ino_list = g_list_remove_link(g_ino_list, iter); @@ -1017,7 +1035,7 @@ int tts_config_mgr_initialize(int uid) get_uid = iter->data; if (uid == *get_uid) { - SECURE_SLOG(LOG_WARN, tts_tag(), "[CONFIG] uid(%d) has already registered", uid); + SECURE_SLOG(LOG_WARN, TAG_TTSCONFIG, "[CONFIG] uid(%d) has already registered", uid); return 0; } @@ -1026,68 +1044,80 @@ int tts_config_mgr_initialize(int uid) temp_client = (tts_config_client_s*)calloc(1, sizeof(tts_config_client_s)); if (NULL == temp_client) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory"); return TTS_CONFIG_ERROR_OUT_OF_MEMORY; } temp_client->uid = uid; + temp_client->engine_cb = NULL; + temp_client->voice_cb = NULL; + temp_client->speech_cb = NULL; + temp_client->pitch_cb = NULL; + temp_client->screen_cb = NULL; + temp_client->user_data = NULL; g_config_client_list = g_slist_append(g_config_client_list, temp_client); - SECURE_SLOG(LOG_WARN, tts_tag(), "[CONFIG] Add uid(%d) but config has already initialized", uid); + SECURE_SLOG(LOG_WARN, TAG_TTSCONFIG, "[CONFIG] Add uid(%d) but config has already initialized", uid); return 0; } else { temp_client = (tts_config_client_s*)calloc(1, sizeof(tts_config_client_s)); if (NULL == temp_client) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to allocate memory"); return TTS_CONFIG_ERROR_OUT_OF_MEMORY; } temp_client->uid = uid; + temp_client->engine_cb = NULL; + temp_client->voice_cb = NULL; + temp_client->speech_cb = NULL; + temp_client->pitch_cb = NULL; + temp_client->screen_cb = NULL; + temp_client->user_data = NULL; g_config_client_list = g_slist_append(g_config_client_list, temp_client); } if (0 != access(TTS_CONFIG_BASE, F_OK)) { if (0 != mkdir(TTS_CONFIG_BASE, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to make directory : %s", TTS_CONFIG_BASE); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to make directory : %s", TTS_CONFIG_BASE); __tts_config_release_client(uid); return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "Success to make directory : %s", TTS_CONFIG_BASE); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Success to make directory : %s", TTS_CONFIG_BASE); } } if (0 != access(TTS_HOME, F_OK)) { if (0 != mkdir(TTS_HOME, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to make directory : %s", TTS_HOME); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to make directory : %s", TTS_HOME); __tts_config_release_client(uid); return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "Success to make directory : %s", TTS_HOME); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Success to make directory : %s", TTS_HOME); } } if (0 != access(TTS_DOWNLOAD_BASE, F_OK)) { if (0 != mkdir(TTS_DOWNLOAD_BASE, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to make directory : %s", TTS_DOWNLOAD_BASE); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to make directory : %s", TTS_DOWNLOAD_BASE); __tts_config_release_client(uid); return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "Success to make directory : %s", TTS_DOWNLOAD_BASE); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Success to make directory : %s", TTS_DOWNLOAD_BASE); } } if (0 != access(TTS_DOWNLOAD_ENGINE_INFO, F_OK)) { if (0 != mkdir(TTS_DOWNLOAD_ENGINE_INFO, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to make directory : %s", TTS_DOWNLOAD_ENGINE_INFO); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to make directory : %s", TTS_DOWNLOAD_ENGINE_INFO); __tts_config_release_client(uid); return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "Success to make directory : %s", TTS_DOWNLOAD_ENGINE_INFO); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "Success to make directory : %s", TTS_DOWNLOAD_ENGINE_INFO); } } if (0 != __tts_config_mgr_get_engine_info()) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get engine info"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get engine info"); __tts_config_release_client(uid); __tts_config_release_engine(); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; @@ -1096,7 +1126,7 @@ int tts_config_mgr_initialize(int uid) __tts_config_mgr_print_engine_info(); if (0 != tts_parser_load_config(&g_config_info)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to parse configure information"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to parse configure information"); __tts_config_release_client(uid); __tts_config_release_engine(); return TTS_CONFIG_ERROR_OPERATION_FAILED; @@ -1104,10 +1134,11 @@ int tts_config_mgr_initialize(int uid) /* Check whether engine id is valid */ if (0 != __tts_config_mgr_check_engine_is_valid(g_config_info->engine_id)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to get default engine"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to get default engine"); __tts_config_release_client(uid); __tts_config_release_engine(); tts_parser_unload_config(g_config_info); + g_config_info = NULL; return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1120,28 +1151,30 @@ int tts_config_mgr_initialize(int uid) char* tmp_language = NULL; int tmp_type = -1; if (0 != __tts_config_mgr_select_lang(g_config_info->engine_id, &tmp_language, &tmp_type)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to select language"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to select language"); __tts_config_release_client(uid); __tts_config_release_engine(); tts_parser_unload_config(g_config_info); + g_config_info = NULL; return TTS_CONFIG_ERROR_OPERATION_FAILED; } if (NULL != tmp_language) { - if (NULL != g_config_info->language) { - free(g_config_info->language); - g_config_info->language = strdup(tmp_language); - } + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, tmp_language, sizeof(g_language) - 1); g_config_info->type = tmp_type; free(tmp_language); + tmp_language = NULL; if (0 != tts_parser_set_voice(g_config_info->language, g_config_info->type)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to save config"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to save config"); __tts_config_release_client(uid); __tts_config_release_engine(); tts_parser_unload_config(g_config_info); + g_config_info = NULL; return TTS_CONFIG_ERROR_OPERATION_FAILED; } } @@ -1149,21 +1182,22 @@ int tts_config_mgr_initialize(int uid) } /* print daemon config */ - SLOG(LOG_DEBUG, tts_tag(), "== TTS config =="); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " engine : %s", g_config_info->engine_id); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " setting : %s", g_config_info->setting); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " auto voice : %s", g_config_info->auto_voice ? "on" : "off"); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " language : %s", g_config_info->language); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " voice type : %d", g_config_info->type); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " speech rate : %d", g_config_info->speech_rate); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " pitch : %d", g_config_info->pitch); - SLOG(LOG_DEBUG, tts_tag(), "================="); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@ TTS config @@@"); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " engine : %s", g_config_info->engine_id); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " setting : %s", g_config_info->setting); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " auto voice : %s", g_config_info->auto_voice ? "on" : "off"); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " language : %s", g_config_info->language); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " voice type : %d", g_config_info->type); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " speech rate : %d", g_config_info->speech_rate); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " pitch : %d", g_config_info->pitch); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "@@@@@"); if (0 != __tts_config_mgr_register_config_event()) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to register config event"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to register config event"); __tts_config_release_client(uid); __tts_config_release_engine(); tts_parser_unload_config(g_config_info); + g_config_info = NULL; return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1173,7 +1207,7 @@ int tts_config_mgr_initialize(int uid) /* For engine directory monitoring */ //if (0 != __tts_config_mgr_register_engine_config_updated_event()) { - // SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to register engine config updated event"); + // SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Fail to register engine config updated event"); // __tts_config_release_client(uid); // __tts_config_release_engine(); // tts_parser_unload_config(g_config_info); @@ -1195,6 +1229,7 @@ int tts_config_mgr_finalize(int uid) __tts_config_release_engine(); tts_parser_unload_config(g_config_info); + g_config_info = NULL; __tts_config_mgr_unregister_engine_config_updated_event(); @@ -1267,7 +1302,7 @@ int tts_config_mgr_unset_callback(int uid) int tts_config_set_screen_reader_callback(int uid, tts_config_screen_reader_changed_cb callback) { if (NULL == callback) { - SLOG(LOG_ERROR, tts_tag(), "Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Input parameter is NULL"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } @@ -1317,7 +1352,7 @@ int tts_config_unset_screen_reader_callback(int uid) int tts_config_mgr_get_engine_list(tts_config_supported_engine_cb callback, void* user_data) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_STATE; } @@ -1325,7 +1360,7 @@ int tts_config_mgr_get_engine_list(tts_config_supported_engine_cb callback, void tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "There is no engine!!"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1350,12 +1385,12 @@ int tts_config_mgr_get_engine_list(tts_config_supported_engine_cb callback, void int tts_config_mgr_get_engine(char** engine) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_STATE; } if (NULL == engine) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Input parameter is NULL"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } @@ -1365,7 +1400,7 @@ int tts_config_mgr_get_engine(char** engine) tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1384,9 +1419,9 @@ int tts_config_mgr_get_engine(char** engine) iter = g_slist_next(iter); } - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Current engine id is not valid"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Current engine id is not valid"); } else { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Engine id is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Engine id is NULL"); } return TTS_CONFIG_ERROR_OPERATION_FAILED; @@ -1401,28 +1436,28 @@ int __tts_set_buxtonkey(const char* engine) int ret = buxton_open(&bux_cli, NULL, NULL); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[DBUS-BUXTON2] buxton_open failed!! (%d)", ret); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DBUS-BUXTON2] buxton_open failed!! (%d)", ret); return TTS_CONFIG_ERROR_OPERATION_FAILED; } bux_layer = buxton_create_layer("system"); if (NULL == bux_layer) { - SLOG(LOG_ERROR, tts_tag(), "[DBUS-BUXTON2] buxton_create_layer FAIL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DBUS-BUXTON2] buxton_create_layer FAIL"); buxton_close(bux_cli); return TTS_CONFIG_ERROR_OPERATION_FAILED; } bux_val = buxton_value_create_string(engine); if (NULL == bux_val) { - SLOG(LOG_ERROR, tts_tag(), "[DBUS-BUXTON2] buxton_value_create_string FAIL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DBUS-BUXTON2] buxton_value_create_string FAIL"); buxton_free_layer(bux_layer); buxton_close(bux_cli); return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "[DBUS-BUXTON2] layer: %s", buxton_layer_get_name(bux_layer)); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DBUS-BUXTON2] layer: %s", buxton_layer_get_name(bux_layer)); } ret = buxton_set_value_sync(bux_cli, bux_layer, TTS_ENGINE_DB_DEFAULT, bux_val); if (0 != ret) { - SLOG(LOG_ERROR, tts_tag(), "[DBUS-BUXTON2] buxton_set_value_sync failed!! (%d)", ret); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DBUS-BUXTON2] buxton_set_value_sync failed!! (%d)", ret); buxton_value_free(bux_val); buxton_free_layer(bux_layer); buxton_close(bux_cli); @@ -1433,7 +1468,7 @@ int __tts_set_buxtonkey(const char* engine) return TTS_CONFIG_ERROR_OPERATION_FAILED; } else { - SLOG(LOG_DEBUG, tts_tag(), "[DBUS-BUXTON2] buxton_set_value_sync: %d, %s", ret, TTS_ENGINE_DB_DEFAULT); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DBUS-BUXTON2] buxton_set_value_sync: %d, %s", ret, TTS_ENGINE_DB_DEFAULT); } buxton_value_free(bux_val); @@ -1450,7 +1485,7 @@ int __tts_set_buxtonkey(const char* engine) int tts_config_mgr_set_engine(const char* engine) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_STATE; } @@ -1458,21 +1493,19 @@ int tts_config_mgr_set_engine(const char* engine) return TTS_CONFIG_ERROR_INVALID_PARAMETER; /* Check current engine id with new engine id */ - if (NULL != g_config_info->engine_id) { - if (0 == strcmp(g_config_info->engine_id, engine)) - return 0; - } + if (0 == strcmp(g_config_info->engine_id, engine)) + return 0; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } - SLOG(LOG_DEBUG, tts_tag(), "New engine id : %s", engine); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "New engine id : %s", engine); int ret = __tts_set_buxtonkey(engine); if (0 != ret) { - SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] set_buxtonkey Fail!!"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DEBUG] set_buxtonkey Fail!!"); return ret; } @@ -1487,7 +1520,7 @@ int tts_config_mgr_set_engine(const char* engine) engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Engine info is NULL"); iter = g_slist_next(iter); continue; } @@ -1498,18 +1531,14 @@ int tts_config_mgr_set_engine(const char* engine) continue; } - if (NULL != g_config_info->engine_id) - free(g_config_info->engine_id); - - g_config_info->engine_id = strdup(engine); - - if (NULL != g_config_info->setting) { - free(g_config_info->setting); - g_config_info->setting = NULL; - } + memset(g_engine_id, '\0', sizeof(g_engine_id)); + g_config_info->engine_id = g_engine_id; + strncpy(g_config_info->engine_id, engine, sizeof(g_engine_id) - 1); if (NULL != engine_info->setting) { - g_config_info->setting = strdup(engine_info->setting); + memset(g_setting, '\0', sizeof(g_setting)); + g_config_info->setting = g_setting; + strncpy(g_config_info->setting, engine_info->setting, sizeof(g_setting) - 1); } /* Engine is valid*/ @@ -1527,7 +1556,7 @@ int tts_config_mgr_set_engine(const char* engine) if (NULL != voice) { if (NULL == voice->language) continue; - SLOG(LOG_DEBUG, tts_tag(), " lang(%s) type(%d)", voice->language, voice->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " lang(%s) type(%d)", voice->language, voice->type); if (0 == strcmp(voice->language, g_config_info->language)) { if (voice->type == g_config_info->type) { @@ -1544,17 +1573,17 @@ int tts_config_mgr_set_engine(const char* engine) } if (false == is_valid_voice) { - if (NULL != g_config_info->language) { - free(g_config_info->language); - - iter_voice = g_slist_nth(engine_info->voices, 0); - if (NULL != iter_voice) { - voice = iter_voice->data; - if (NULL != voice) { - if (NULL != voice->language) - g_config_info->language = strdup(voice->language); - g_config_info->type = voice->type; - } + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + + iter_voice = g_slist_nth(engine_info->voices, 0); + if (NULL != iter_voice) { + voice = iter_voice->data; + if (NULL != voice) { + if (NULL != voice->language) + strncpy(g_config_info->language, voice->language, sizeof(g_language) - 1); + + g_config_info->type = voice->type; } } } @@ -1564,19 +1593,19 @@ int tts_config_mgr_set_engine(const char* engine) } if (true == is_valid_engine) { - SLOG(LOG_DEBUG, tts_tag(), "[Config] Engine changed"); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " Engine : %s", g_config_info->engine_id); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " Setting : %s", g_config_info->setting); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " Language : %s", g_config_info->language); - SECURE_SLOG(LOG_DEBUG, tts_tag(), " Type : %d", g_config_info->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Engine changed"); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Engine : %s", g_config_info->engine_id); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Setting : %s", g_config_info->setting); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Language : %s", g_config_info->language); + SECURE_SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Type : %d", g_config_info->type); if (0 != tts_parser_set_engine(g_config_info->engine_id, g_config_info->setting, g_config_info->language, g_config_info->type)) { - SLOG(LOG_ERROR, tts_tag(), " Fail to save config"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, " Fail to save config"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } } else { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Engine id is not valid"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Engine id is not valid"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1586,12 +1615,12 @@ int tts_config_mgr_set_engine(const char* engine) int tts_config_mgr_get_voice_list(const char* engine_id, tts_config_supported_voice_cb callback, void* user_data) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_STATE; } if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1605,7 +1634,7 @@ int tts_config_mgr_get_voice_list(const char* engine_id, tts_config_supported_vo engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] engine info is NULL"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1624,7 +1653,7 @@ int tts_config_mgr_get_voice_list(const char* engine_id, tts_config_supported_vo /*Get handle data from list*/ voice = iter_voice->data; - SLOG(LOG_DEBUG, tts_tag(), " lang(%s) type(%d)", voice->language, voice->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " lang(%s) type(%d)", voice->language, voice->type); if (NULL != voice->language) { if (false == callback(engine_info->uuid, voice->language, voice->type, user_data)) break; @@ -1642,23 +1671,23 @@ int tts_config_mgr_get_voice_list(const char* engine_id, tts_config_supported_vo int tts_config_mgr_get_voice(char** language, int* type) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } if (NULL == language || NULL == type) return TTS_CONFIG_ERROR_INVALID_PARAMETER; - if (NULL != g_config_info->language) { + if (0 != strlen(g_config_info->language)) { *language = strdup(g_config_info->language); *type = g_config_info->type; } else { - SLOG(LOG_ERROR, tts_tag(), "language is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "language is NULL"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1668,34 +1697,30 @@ int tts_config_mgr_get_voice(char** language, int* type) int tts_config_mgr_set_voice(const char* language, int type) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } if (NULL == language) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Input parameter is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Input parameter is NULL"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } /* Check language is valid */ - if (NULL != g_config_info->language) { - if (0 != tts_parser_set_voice(language, type)) { - SLOG(LOG_ERROR, tts_tag(), "Fail to save default voice"); - return TTS_CONFIG_ERROR_OPERATION_FAILED; - } - free(g_config_info->language); - g_config_info->language = strdup(language); - g_config_info->type = type; - - } else { - SLOG(LOG_ERROR, tts_tag(), "language is NULL"); + if (0 != tts_parser_set_voice(language, type)) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to save default voice"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } + memset(g_language, '\0', sizeof(g_language)); + g_config_info->language = g_language; + strncpy(g_config_info->language, language, sizeof(g_language) - 1); + + g_config_info->type = type; return 0; } @@ -1703,7 +1728,7 @@ int tts_config_mgr_set_voice(const char* language, int type) int tts_config_mgr_get_auto_voice(bool* value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } @@ -1718,14 +1743,14 @@ int tts_config_mgr_get_auto_voice(bool* value) int tts_config_mgr_set_auto_voice(bool value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } if (g_config_info->auto_voice != value) { /* Check language is valid */ if (0 != tts_parser_set_auto_voice(value)) { - SLOG(LOG_ERROR, tts_tag(), "Fail to save auto voice option"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to save auto voice option"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } g_config_info->auto_voice = value; @@ -1741,7 +1766,7 @@ int tts_config_mgr_set_auto_voice(bool value) int tts_config_mgr_get_speech_rate(int* value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } @@ -1757,20 +1782,20 @@ int tts_config_mgr_get_speech_rate(int* value) int tts_config_mgr_set_speech_rate(int value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } if (TTS_CONFIG_SPEED_MIN <= value && value <= TTS_CONFIG_SPEED_MAX) { - SLOG(LOG_DEBUG, tts_tag(), "[Config] Set speech rate : %d", value); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[Config] Set speech rate : %d", value); if (0 != tts_parser_set_speech_rate(value)) { - SLOG(LOG_ERROR, tts_tag(), "Fail to save speech rate"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to save speech rate"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } g_config_info->speech_rate = value; } else { - SLOG(LOG_ERROR, tts_tag(), "[Config ERROR] Speech rate is invalid : %d", value); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[Config ERROR] Speech rate is invalid : %d", value); } return 0; @@ -1779,7 +1804,7 @@ int tts_config_mgr_set_speech_rate(int value) int tts_config_mgr_get_pitch(int* value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return TTS_CONFIG_ERROR_INVALID_PARAMETER; } @@ -1791,7 +1816,7 @@ int tts_config_mgr_get_pitch(int* value) tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1802,7 +1827,7 @@ int tts_config_mgr_get_pitch(int* value) engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1826,7 +1851,7 @@ int tts_config_mgr_get_pitch(int* value) int tts_config_mgr_set_pitch(int value) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return -1; } @@ -1834,7 +1859,7 @@ int tts_config_mgr_set_pitch(int value) tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] There is no engine!!"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!"); return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; } @@ -1845,7 +1870,7 @@ int tts_config_mgr_set_pitch(int value) engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1862,7 +1887,7 @@ int tts_config_mgr_set_pitch(int value) } if (0 != tts_parser_set_pitch(value)) { - SLOG(LOG_ERROR, tts_tag(), "Fail to save speech rate"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Fail to save speech rate"); return TTS_CONFIG_ERROR_OPERATION_FAILED; } @@ -1874,7 +1899,7 @@ int tts_config_mgr_set_pitch(int value) bool tts_config_check_default_engine_is_valid(const char* engine) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return -1; } @@ -1907,15 +1932,15 @@ bool tts_config_check_default_engine_is_valid(const char* engine) bool tts_config_check_default_voice_is_valid(const char* language, int type) { if (0 >= g_slist_length(g_config_client_list)) { - SLOG(LOG_ERROR, tts_tag(), "Not initialized"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); return -1; } if (NULL == language) return false; - if (NULL == g_config_info->engine_id) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Default engine id is NULL"); + if (0 == strlen(g_config_info->engine_id)) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Default engine id is NULL"); return false; } @@ -1932,7 +1957,7 @@ bool tts_config_check_default_voice_is_valid(const char* language, int type) engine_info = iter->data; if (NULL == engine_info) { - SLOG(LOG_ERROR, tts_tag(), "[ERROR] Engine info is NULL"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] Engine info is NULL"); iter = g_slist_next(iter); continue; } @@ -1971,27 +1996,27 @@ int __tts_config_mgr_print_engine_info() tts_engine_info_s *engine_info = NULL; if (0 >= g_slist_length(g_engine_list)) { - SLOG(LOG_DEBUG, tts_tag(), "-------------- engine list -----------------"); - SLOG(LOG_DEBUG, tts_tag(), " No Engine in engine directory"); - SLOG(LOG_DEBUG, tts_tag(), "--------------------------------------------"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "-------------- engine list -----------------"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " No Engine in engine directory"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "--------------------------------------------"); return 0; } /* Get a first item */ iter = g_slist_nth(g_engine_list, 0); - SLOG(LOG_DEBUG, tts_tag(), "--------------- engine list -----------------"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "--------------- engine list -----------------"); int i = 1; while (NULL != iter) { engine_info = iter->data; - SLOG(LOG_DEBUG, tts_tag(), "[%dth]", i); - SLOG(LOG_DEBUG, tts_tag(), " name : %s", engine_info->name); - SLOG(LOG_DEBUG, tts_tag(), " id : %s", engine_info->uuid); - SLOG(LOG_DEBUG, tts_tag(), " setting : %s", engine_info->setting); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[%dth]", i); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " name : %s", engine_info->name); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " id : %s", engine_info->uuid); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " setting : %s", engine_info->setting); - SLOG(LOG_DEBUG, tts_tag(), " Voices"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " Voices"); GSList *iter_voice = NULL; tts_config_voice_s* voice = NULL; @@ -2004,19 +2029,68 @@ int __tts_config_mgr_print_engine_info() /*Get handle data from list*/ voice = iter_voice->data; - SLOG(LOG_DEBUG, tts_tag(), " [%dth] lang(%s) type(%d)", j, voice->language, voice->type); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, " [%dth] lang(%s) type(%d)", j, voice->language, voice->type); /*Get next item*/ iter_voice = g_slist_next(iter_voice); j++; } } else { - SLOG(LOG_ERROR, tts_tag(), " Voice is NONE"); + SLOG(LOG_ERROR, TAG_TTSCONFIG, " Voice is NONE"); } iter = g_slist_next(iter); i++; } - SLOG(LOG_DEBUG, tts_tag(), "--------------------------------------------"); + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "--------------------------------------------"); + + return 0; +} + +int tts_config_mgr_get_max_text_size(unsigned int* size) +{ + if (0 >= g_slist_length(g_config_client_list)) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "Not initialized"); + return TTS_CONFIG_ERROR_INVALID_PARAMETER; + } + + if (NULL == size) { + return TTS_CONFIG_ERROR_INVALID_PARAMETER; + } + + GSList *iter = NULL; + tts_engine_info_s *engine_info = NULL; + + if (0 >= g_slist_length(g_engine_list)) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] There is no engine!!"); + return TTS_CONFIG_ERROR_ENGINE_NOT_FOUND; + } + + /* Get a first item */ + iter = g_slist_nth(g_engine_list, 0); + + while (NULL != iter) { + engine_info = iter->data; + + if (NULL == engine_info) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } + + if (0 != strcmp(g_config_info->engine_id, engine_info->uuid)) { + iter = g_slist_next(iter); + continue; + } + + break; + } + + if (NULL == engine_info) { + SLOG(LOG_ERROR, TAG_TTSCONFIG, "engine info is NULL"); + return TTS_CONFIG_ERROR_OPERATION_FAILED; + } + + *size = engine_info->text_size; + SLOG(LOG_DEBUG, TAG_TTSCONFIG, "[DEBUG] Max text size is %d.", *size); return 0; }