Browse Source

espeak-ng: display the underlying error on failure

master
Reece H. Dunn 9 years ago
parent
commit
c45e70142b
1 changed files with 19 additions and 18 deletions
  1. 19
    18
      src/espeak-ng.c

+ 19
- 18
src/espeak-ng.c View File

* along with this program; if not, see: <http://www.gnu.org/licenses/>. * along with this program; if not, see: <http://www.gnu.org/licenses/>.
*/ */


#include <errno.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
{ 0, 0, 0, 0 } { 0, 0, 0, 0 }
}; };


static const char *err_load = "Failed to read ";

FILE *f_text = NULL; FILE *f_text = NULL;
char *p_text = NULL; char *p_text = NULL;
FILE *f_phonemes_out = stdout; FILE *f_phonemes_out = stdout;
} }


if (result != ENS_OK) { if (result != ENS_OK) {
fprintf(stderr, "Initialization failed.\n");
exit(1);
espeak_ng_PrintStatusCodeMessage(result, stderr, NULL);
exit(EXIT_FAILURE);
} }


if (voicename[0] == 0) if (voicename[0] == 0)
strcpy(voicename, "default"); strcpy(voicename, "default");


if (espeak_SetVoiceByName(voicename) != EE_OK) {
result = espeak_ng_SetVoiceByName(voicename);
if (result != ENS_OK) {
memset(&voice_select, 0, sizeof(voice_select)); memset(&voice_select, 0, sizeof(voice_select));
voice_select.languages = voicename; voice_select.languages = voicename;
if (espeak_SetVoiceByProperties(&voice_select) != EE_OK) {
fprintf(stderr, "%svoice '%s'\n", err_load, voicename);
exit(2);
result = espeak_ng_SetVoiceByProperties(&voice_select);
if (result != ENS_OK) {
espeak_ng_PrintStatusCodeMessage(result, stderr, NULL);
exit(EXIT_FAILURE);
} }
} }


} else { } else {
filesize = GetFileLength(filename); filesize = GetFileLength(filename);
f_text = fopen(filename, "r"); f_text = fopen(filename, "r");
}

if ((f_text == NULL) && (p_text == NULL)) {
fprintf(stderr, "%sfile '%s'\n", err_load, filename);
exit(1);
if (f_text == NULL) {
fprintf(stderr, "Failed to read file '%s'\n", filename);
exit(EXIT_FAILURE);
}
} }


if (p_text != NULL) { if (p_text != NULL) {
} }
} else if (f_text != NULL) { } else if (f_text != NULL) {
if ((p_text = (char *)malloc(filesize+1)) == NULL) { if ((p_text = (char *)malloc(filesize+1)) == NULL) {
fprintf(stderr, "Failed to allocate memory %d bytes", filesize);
exit(3);
espeak_ng_PrintStatusCodeMessage(ENOMEM, stderr, NULL);
exit(EXIT_FAILURE);
} }


fread(p_text, 1, filesize, f_text); fread(p_text, 1, filesize, f_text);
fclose(f_text); fclose(f_text);
} }


if (espeak_Synchronize() != EE_OK) {
fprintf(stderr, "espeak_Synchronize() failed, maybe error when opening output device\n");
exit(4);
result = espeak_ng_Synchronize();
if (result != ENS_OK) {
espeak_ng_PrintStatusCodeMessage(result, stderr, NULL);
exit(EXIT_FAILURE);
} }


if (f_phonemes_out != stdout) if (f_phonemes_out != stdout)

Loading…
Cancel
Save