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;
return -1;
}
- if (0 == strcmp(engine_id, engine_info->uuid)) {
+ if (NULL != engine_info->uuid && 0 == strcmp(engine_id, engine_info->uuid)) {
SLOG(LOG_DEBUG, tts_tag(), "Default engine is valid : %s", engine_id);
return 0;
}
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);
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);
if (false == is_valid_voice) {
/* Select first voice as default */
- if (NULL != g_config_info->language) {
- free(g_config_info->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;
+ memset(g_language, '\0', sizeof(g_language));
+ g_config_info->language = g_language;
- 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, tts_tag(), "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, tts_tag(), "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, tts_tag(), "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,
/* 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);
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;
if (NULL != before_lang) {
free(before_lang);
+ before_lang = NULL;
}
}
}
}
- 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 {
SLOG(LOG_ERROR, tts_tag(), "[ERROR] Undefined event");
}
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 */
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)",
g_config_info->language, g_config_info->type);
if (NULL != before_lang) {
free(before_lang);
+ before_lang = NULL;
}
} else {
/* Display language is not valid */
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;
int __tts_config_mgr_get_engine_info()
{
DIR *dp = NULL;
- int ret = -1;
- struct dirent entry;
struct dirent *dirp = NULL;
char filepath[512] = {'\0',};
SLOG(LOG_DEBUG, tts_tag(), "[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))
SLOG(LOG_DEBUG, tts_tag(), "[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))
} else {
SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] Saved default voice : lang(%s), type(%d)", g_config_info->language, g_config_info->type);
}
- if (NULL != temp_lang) free(temp_lang);
+ if (NULL != temp_lang) {
+ free(temp_lang);
+ temp_lang = NULL;
+ }
}
GSList *iter = NULL;
close(tmp->dir_fd);
free(tmp);
+ tmp = NULL;
}
g_ino_list = g_list_remove_link(g_ino_list, iter);
}
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");
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!!");
continue;
}
- 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 != engine_info->setting) {
- if (NULL != g_config_info->setting) {
- free(g_config_info->setting);
- g_config_info->setting = NULL;
- }
- 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*/
}
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;
}
}
}
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 {
}
/* 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, tts_tag(), "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;
}
if (NULL == language)
return false;
- if (NULL == g_config_info->engine_id) {
+ if (0 == strlen(g_config_info->engine_id)) {
SLOG(LOG_ERROR, tts_tag(), "[ERROR] Default engine id is NULL");
return false;
}
int ttsd_dbus_open_connection()
{
+ SLOG(LOG_DEBUG, tts_tag(), "=== start dbus open connection");
DBusError err;
dbus_error_init(&err);
g_service_object = (char*)calloc(strlen(TTS_SR_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
g_service_interface = (char*)calloc(strlen(TTS_SR_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
+ if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+ SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+ __ttsd_dbus_service_free();
+ __ttsd_dbus_connection_free();
+ return -1;
+ }
+
snprintf(g_service_name, strlen(TTS_SR_SERVER_SERVICE_NAME) + 1, "%s", TTS_SR_SERVER_SERVICE_NAME);
snprintf(g_service_object, strlen(TTS_SR_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_SR_SERVER_SERVICE_OBJECT_PATH);
snprintf(g_service_interface, strlen(TTS_SR_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_SR_SERVER_SERVICE_INTERFACE);
g_service_object = (char*)calloc(strlen(TTS_NOTI_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
g_service_interface = (char*)calloc(strlen(TTS_NOTI_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
+ if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+ SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+ __ttsd_dbus_service_free();
+ __ttsd_dbus_connection_free();
+ return -1;
+ }
+
snprintf(g_service_name, strlen(TTS_NOTI_SERVER_SERVICE_NAME) + 1, "%s", TTS_NOTI_SERVER_SERVICE_NAME);
snprintf(g_service_object, strlen(TTS_NOTI_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_NOTI_SERVER_SERVICE_OBJECT_PATH);
snprintf(g_service_interface, strlen(TTS_NOTI_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_NOTI_SERVER_SERVICE_INTERFACE);
g_service_object = (char*)calloc(strlen(TTS_SERVER_SERVICE_OBJECT_PATH) + 1, sizeof(char));
g_service_interface = (char*)calloc(strlen(TTS_SERVER_SERVICE_INTERFACE) + 1, sizeof(char));
+ if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
+ SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
+ __ttsd_dbus_service_free();
+ __ttsd_dbus_connection_free();
+ return -1;
+ }
+
snprintf(g_service_name, strlen(TTS_SERVER_SERVICE_NAME) + 1, "%s", TTS_SERVER_SERVICE_NAME);
snprintf(g_service_object, strlen(TTS_SERVER_SERVICE_OBJECT_PATH) + 1, "%s", TTS_SERVER_SERVICE_OBJECT_PATH);
snprintf(g_service_interface, strlen(TTS_SERVER_SERVICE_INTERFACE) + 1, "%s", TTS_SERVER_SERVICE_INTERFACE);
}
- if (NULL == g_service_name || NULL == g_service_object || NULL == g_service_interface) {
- SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to allocate memory");
- __ttsd_dbus_service_free();
- __ttsd_dbus_connection_free();
- return -1;
- }
-
/* request our name on the bus and check for errors */
ret = dbus_bus_request_name(g_conn_listener, g_service_name, DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
if (DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER != ret) {
return -1;
}
+ SLOG(LOG_DEBUG, tts_tag(), "===");
return 0;
}
int ttsd_dbus_close_connection()
{
+ SLOG(LOG_DEBUG, tts_tag(), "=== start dbus close connection");
DBusError err;
dbus_error_init(&err);
__ttsd_dbus_connection_free();
__ttsd_dbus_service_free();
+ SLOG(LOG_DEBUG, tts_tag(), "===");
+
return 0;
}
/* Current language is not available */
SLOG(LOG_WARN, tts_tag(), "[Server WARNING] Fail to set voice : lang(%s), type(%d)", str_param, int_param);
}
- if (NULL != out_lang) free(out_lang);
+ if (NULL != out_lang) {
+ free(out_lang);
+ out_lang = NULL;
+ }
break;
}
static void __read_proc()
{
DIR *dp = NULL;
- struct dirent entry;
struct dirent *dirp = NULL;
- int ret = -1;
int tmp;
GList *iter = NULL;
SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to open proc");
} else {
do {
- ret = readdir_r(dp, &entry, &dirp);
- if (0 != ret) {
- SLOG(LOG_ERROR, tts_tag(), "[ERROR] Fail to readdir");
- break;
- }
+ dirp = readdir(dp);
if (NULL != dirp) {
tmp = atoi(dirp->d_name);
int temp_type;
if (true != ttsd_engine_select_valid_voice((const char*)lang, voice_type, &temp_lang, &temp_type)) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to select valid voice");
- if (NULL != temp_lang) free(temp_lang);
+ if (NULL != temp_lang) {
+ free(temp_lang);
+ temp_lang = NULL;
+ }
return TTSD_ERROR_INVALID_VOICE;
}
speak_data = (speak_data_s*)calloc(1, sizeof(speak_data_s));
if (NULL == speak_data) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to allocate memory");
- if (NULL != temp_lang) free(temp_lang);
+ if (NULL != temp_lang) {
+ free(temp_lang);
+ temp_lang = NULL;
+ }
return TTSD_ERROR_OPERATION_FAILED;
}
SLOG(LOG_INFO, tts_tag(), "[Server] Add queue, lang(%s), vctype(%d), speed(%d), uttid(%d), credential(%s)", lang, voice_type, speed, utt_id, credential);
/* if state is APP_STATE_READY , APP_STATE_PAUSED , only need to add speak data to queue*/
- if (0 != ttsd_data_add_speak_data(uid, speak_data)) {
+ int ret = -1;
+ ret = ttsd_data_add_speak_data(uid, speak_data);
+ if (0 != ret) {
SLOG(LOG_ERROR, tts_tag(), "[Server ERROR] Fail to add speak data");
- if (NULL != temp_lang) free(temp_lang);
+ if (NULL != temp_lang) {
+ free(temp_lang);
+ temp_lang = NULL;
+ }
if (NULL != speak_data) {
if (NULL != speak_data->lang) free(speak_data->lang);
if (NULL != speak_data->text) free(speak_data->text);
speak_data = NULL;
}
- return TTSD_ERROR_OPERATION_FAILED;
+ return ret;
}
if (0 != ttsd_data_set_used_voice(uid, temp_lang, temp_type)) {
}
}
- if (NULL != temp_lang) free(temp_lang);
+ if (NULL != temp_lang) {
+ free(temp_lang);
+ temp_lang = NULL;
+ }
if (APP_STATE_PLAYING == state) {
/* check if engine use network */