Remove dependency of openssl
[platform/core/uifw/tts.git] / server / ttsd_config.c
1 /*
2 *  Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved 
3 *  Licensed under the Apache License, Version 2.0 (the "License");
4 *  you may not use this file except in compliance with the License.
5 *  You may obtain a copy of the License at
6 *  http://www.apache.org/licenses/LICENSE-2.0
7 *  Unless required by applicable law or agreed to in writing, software
8 *  distributed under the License is distributed on an "AS IS" BASIS,
9 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 *  See the License for the specific language governing permissions and
11 *  limitations under the License.
12 */
13
14 #include <Ecore_File.h>
15 #include "ttsd_main.h"
16 #include "ttsd_config.h"
17
18 #define CONFIG_FILE_PATH        BASE_DIRECTORY_DOWNLOAD"/ttsd.conf"
19 #define CONFIG_DEFAULT          BASE_DIRECTORY_DEFAULT"/ttsd.conf"
20
21 #define ENGINE_ID       "ENGINE_ID"
22 #define VOICE           "VOICE"
23 #define SPEED           "SPEED"
24
25
26 static char*    g_engine_id;
27 static char*    g_language;
28 static int      g_vc_type;
29 static int      g_speed;
30
31 int __ttsd_config_save()
32 {
33         if (0 != access(CONFIG_FILE_PATH, R_OK|W_OK)) {
34                 if (0 == ecore_file_mkpath(BASE_DIRECTORY_DOWNLOAD)) {
35                         SLOG(LOG_ERROR, TAG_TTSD, "[Config ERROR ] Fail to create directory (%s)", BASE_DIRECTORY_DOWNLOAD);
36                         return -1;
37                 }
38
39                 SLOG(LOG_WARN, TAG_TTSD, "[Config] Create directory (%s)", BASE_DIRECTORY_DOWNLOAD);
40         }
41
42         FILE* config_fp;
43         config_fp = fopen(CONFIG_FILE_PATH, "w+");
44
45         if (NULL == config_fp) {
46                 /* make file and file default */
47                 SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to open config (%s)", CONFIG_FILE_PATH);
48                 return -1;
49         }
50
51         SLOG(LOG_DEBUG, TAG_TTSD, "[Config] Rewrite config file");
52
53         /* Write engine id */
54         fprintf(config_fp, "%s %s\n", ENGINE_ID, g_engine_id);
55
56         /* Write voice */
57         fprintf(config_fp, "%s %s %d\n", VOICE, g_language, g_vc_type);
58
59         /* Read speed */
60         fprintf(config_fp, "%s %d\n", SPEED, g_speed);
61
62         fclose(config_fp);
63
64         return 0;
65 }
66
67
68 int __ttsd_config_load()
69 {
70         FILE* config_fp;
71         char buf_id[256] = {0};
72         char buf_param[256] = {0};
73         int int_param = 0;
74         bool is_default_open = false;
75
76         config_fp = fopen(CONFIG_FILE_PATH, "r");
77
78         if (NULL == config_fp) {
79                 SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Not open file(%s)", CONFIG_FILE_PATH);
80                 
81                 config_fp = fopen(CONFIG_DEFAULT, "r");
82                 if (NULL == config_fp) {
83                         SLOG(LOG_ERROR, TAG_TTSD, "[Config WARNING] Not open original config file(%s)", CONFIG_FILE_PATH);
84                         return -1;
85                 }
86                 is_default_open = true;
87         }
88
89         /* Read engine id */
90         fscanf(config_fp, "%s %s", buf_id, buf_param);
91         if (0 == strncmp(ENGINE_ID, buf_id, strlen(ENGINE_ID))) {
92                 g_engine_id = strdup(buf_param);
93         } else {
94                 fclose(config_fp);
95                 SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (engine id)");
96                 __ttsd_config_save();
97                 return -1;
98         }
99
100         /* Read voice */
101         fscanf(config_fp, "%s %s %d", buf_id, buf_param, &int_param);
102         if (0 == strncmp(VOICE, buf_id, strlen(VOICE))) {
103                 g_language = strdup(buf_param);
104                 g_vc_type = int_param;
105         } else {
106                 fclose(config_fp);
107                 SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (voice)");
108                 __ttsd_config_save();
109                 return -1;
110         }
111
112         /* Read speed */
113         fscanf(config_fp, "%s %d", buf_id, &int_param);
114         if (0 == strncmp(SPEED, buf_id, strlen(SPEED))) {
115                 g_speed = int_param;
116         } else {
117                 fclose(config_fp);
118                 SLOG(LOG_WARN, TAG_TTSD, "[Config WARNING] Fail to load config (speed)");
119                 __ttsd_config_save();
120                 return -1;
121         }
122
123         fclose(config_fp);
124
125         SLOG(LOG_DEBUG, TAG_TTSD, "[Config] Load config : engine(%s), voice(%s,%d), speed(%d)",
126                 g_engine_id, g_language, g_vc_type, g_speed);
127
128         if (true == is_default_open) {
129                 if(0 == __ttsd_config_save()) {
130                         SLOG(LOG_DEBUG, TAG_TTSD, "[Config] Create config(%s)", CONFIG_FILE_PATH);
131                 }
132         }
133
134         return 0;
135 }
136
137 int ttsd_config_initialize()
138 {
139         g_engine_id = NULL;
140         g_language = NULL;
141         g_vc_type = 1;
142         g_speed = 3;
143
144         __ttsd_config_load();
145
146         return 0;
147 }
148
149 int ttsd_config_finalize()
150 {
151         __ttsd_config_save();
152         return 0;
153 }
154
155 int ttsd_config_get_default_engine(char** engine_id)
156 {
157         if (NULL == engine_id)
158                 return -1;
159
160         *engine_id = strdup(g_engine_id);
161         return 0;
162 }
163
164 int ttsd_config_set_default_engine(const char* engine_id)
165 {
166         if (NULL == engine_id)
167                 return -1;
168
169         if (NULL != g_engine_id)
170                 free(g_engine_id);
171
172         g_engine_id = strdup(engine_id);
173         __ttsd_config_save();
174         return 0;
175 }
176
177 int ttsd_config_get_default_voice(char** language, int* type)
178 {
179         if (NULL == language || NULL == type)
180                 return -1;
181
182         *language = strdup(g_language);
183         *type = g_vc_type;
184
185         return 0;
186 }
187
188 int ttsd_config_set_default_voice(const char* language, int type)
189 {
190         if (NULL == language)
191                 return -1;
192
193         if (NULL != g_language)
194                 free(g_language);
195
196         g_language = strdup(language);
197         g_vc_type = type;
198
199         __ttsd_config_save();
200
201         return 0;
202 }
203
204 int ttsd_config_get_default_speed(int* speed)
205 {
206         if (NULL == speed)
207                 return -1;
208
209         *speed = g_speed;
210
211         return 0;
212 }
213
214 int ttsd_config_set_default_speed(int speed)
215 {
216         g_speed = speed;
217         __ttsd_config_save();
218         return 0;
219 }