mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-01 05:46:19 +00:00
Use the error context API in espeak_ng_CompileDictionary.
This commit is contained in:
+8
-2
@@ -636,8 +636,14 @@ int main(int argc, char **argv)
|
||||
|
||||
if (flag_compile) {
|
||||
// This must be done after the voice is set
|
||||
return (espeak_ng_CompileDictionary("", NULL, stderr, flag_compile & 0x1) == ENS_OK)
|
||||
? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
espeak_ng_ERROR_CONTEXT context = NULL;
|
||||
espeak_ng_STATUS result = espeak_ng_CompileDictionary("", NULL, stderr, flag_compile & 0x1, &context);
|
||||
if (result != ENS_OK) {
|
||||
espeak_ng_PrintStatusCodeMessage(result, stderr, context);
|
||||
espeak_ng_ClearErrorContext(&context);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
// set any non-default values of parameters. This must be done after espeak_Initialize()
|
||||
|
||||
@@ -138,7 +138,8 @@ ESPEAK_NG_API espeak_ng_STATUS
|
||||
espeak_ng_CompileDictionary(const char *dsource,
|
||||
const char *dict_name,
|
||||
FILE *log,
|
||||
int flags);
|
||||
int flags,
|
||||
espeak_ng_ERROR_CONTEXT *context);
|
||||
|
||||
ESPEAK_NG_API espeak_ng_STATUS
|
||||
espeak_ng_CompileMbrolaVoice(const char *path,
|
||||
|
||||
@@ -1514,7 +1514,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
|
||||
}
|
||||
|
||||
#pragma GCC visibility push(default)
|
||||
ESPEAK_NG_API espeak_ng_STATUS espeak_ng_CompileDictionary(const char *dsource, const char *dict_name, FILE *log, int flags)
|
||||
ESPEAK_NG_API espeak_ng_STATUS espeak_ng_CompileDictionary(const char *dsource, const char *dict_name, FILE *log, int flags, espeak_ng_ERROR_CONTEXT *context)
|
||||
{
|
||||
if (!log) log = stderr;
|
||||
if (!dict_name) dict_name = dictionary_name;
|
||||
@@ -1549,15 +1549,15 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_CompileDictionary(const char *dsource,
|
||||
sprintf(fname_in, "%srules.txt", path);
|
||||
if ((f_in = fopen(fname_in, "r")) == NULL) {
|
||||
sprintf(fname_in, "%srules", path);
|
||||
if ((f_in = fopen_log(fname_in, "r")) == NULL)
|
||||
return errno;
|
||||
if ((f_in = fopen(fname_in, "r")) == NULL)
|
||||
return create_file_error_context(context, errno, fname_in);
|
||||
}
|
||||
|
||||
sprintf(fname_out, "%s%c%s_dict", path_home, PATHSEP, dict_name);
|
||||
if ((f_out = fopen_log(fname_out, "wb+")) == NULL) {
|
||||
if ((f_out = fopen(fname_out, "wb+")) == NULL) {
|
||||
int error = errno;
|
||||
fclose(f_in);
|
||||
return error;
|
||||
return create_file_error_context(context, errno, fname_out);
|
||||
}
|
||||
sprintf(fname_temp, "%s%ctemp", path_home, PATHSEP);
|
||||
|
||||
|
||||
@@ -149,7 +149,12 @@ ESPEAK_API espeak_ERROR espeak_Terminate(void)
|
||||
|
||||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags)
|
||||
{
|
||||
espeak_ng_CompileDictionary(path, dictionary_name, log, flags);
|
||||
espeak_ng_ERROR_CONTEXT context = NULL;
|
||||
espeak_ng_STATUS result = espeak_ng_CompileDictionary(path, dictionary_name, log, flags, &context);
|
||||
if (result != ENS_OK) {
|
||||
espeak_ng_PrintStatusCodeMessage(result, stderr, context);
|
||||
espeak_ng_ClearErrorContext(&context);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GCC visibility pop
|
||||
|
||||
+9
-3
@@ -596,17 +596,23 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (flag_compile) {
|
||||
espeak_ng_ERROR_CONTEXT context = NULL;
|
||||
#if defined(PLATFORM_DOS) || defined(PLATFORM_WINDOWS)
|
||||
char path_dsource[sizeof(path_home)+20];
|
||||
strcpy(path_dsource, path_home);
|
||||
path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end
|
||||
strcat(path_dsource, "dictsource\\");
|
||||
|
||||
espeak_ng_STATUS status = espeak_ng_CompileDictionary(path_dsource, dictionary_name, NULL, flag_compile & 0x1);
|
||||
espeak_ng_STATUS status = espeak_ng_CompileDictionary(path_dsource, dictionary_name, NULL, flag_compile & 0x1, &context);
|
||||
#else
|
||||
espeak_ng_STATUS status = espeak_ng_CompileDictionary(NULL, dictionary_name, NULL, flag_compile & 0x1);
|
||||
espeak_ng_STATUS status = espeak_ng_CompileDictionary(NULL, dictionary_name, NULL, flag_compile & 0x1, &context);
|
||||
#endif
|
||||
return (status == ENS_OK) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
if (status != ENS_OK) {
|
||||
espeak_ng_PrintStatusCodeMessage(status, stderr, context);
|
||||
espeak_ng_ClearErrorContext(&context);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
SetParameter(espeakRATE, speed, 0);
|
||||
|
||||
Reference in New Issue
Block a user