| @@ -204,7 +204,7 @@ int OpenWavFile(char *path, int rate) | |||
| }; | |||
| if (path == NULL) | |||
| return (2); | |||
| return 2; | |||
| while (isspace(*path)) path++; | |||
| @@ -218,7 +218,7 @@ int OpenWavFile(char *path, int rate) | |||
| if (f_wavfile == NULL) { | |||
| fprintf(stderr, "Can't write to: '%s'\n", path); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -226,7 +226,7 @@ int OpenWavFile(char *path, int rate) | |||
| Write4Bytes(f_wavfile, rate); | |||
| Write4Bytes(f_wavfile, rate * 2); | |||
| fwrite(&wave_hdr[32], 1, 12, f_wavfile); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -257,11 +257,11 @@ static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
| { | |||
| char fname[210]; | |||
| if (quiet) return (0); // -q quiet mode | |||
| if (quiet) return 0; // -q quiet mode | |||
| if (wav == NULL) { | |||
| CloseWavFile(); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| while (events->type != 0) { | |||
| @@ -283,10 +283,10 @@ static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
| if (samples_split > 0) { | |||
| sprintf(fname, "%s_%.2d%s", wavefile, wavefile_count+1, filetype); | |||
| if (OpenWavFile(fname, samplerate) != 0) | |||
| return (1); | |||
| return 1; | |||
| } else { | |||
| if (OpenWavFile(wavefile, samplerate) != 0) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| @@ -294,7 +294,7 @@ static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
| samples_total += numsamples; | |||
| fwrite(wav, numsamples*2, 1, f_wavfile); | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -768,5 +768,5 @@ int main(int argc, char **argv) | |||
| if (f_phonemes_out != stdout) | |||
| fclose(f_phonemes_out); // needed for WinCE | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -439,11 +439,11 @@ static const char *KeyToMnem(keywtab_t *ktab, int type, int value) | |||
| while (ktab->mnem != NULL) { | |||
| if (ktab->data == value) { | |||
| if ((type == -1) || (type == ktab->type)) | |||
| return (ktab->mnem); | |||
| return ktab->mnem; | |||
| } | |||
| ktab++; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| static void DecompilePhoneme(FILE *f_out, PHONEME_TAB *ph, int compile_phoneme) | |||
| @@ -745,7 +745,7 @@ static int ref_sorter(char **a, char **b) | |||
| if (ix != 0) | |||
| return ix; | |||
| return (p1->ph_mnemonic - p2->ph_mnemonic); | |||
| return p1->ph_mnemonic - p2->ph_mnemonic; | |||
| } | |||
| @@ -855,7 +855,7 @@ static FILE *fopen_log(FILE *f_log, const char *fname, const char *access) | |||
| if (f_log != NULL) | |||
| fprintf(f_log, "Can't access (%s) file '%s'\n", access, fname); | |||
| } | |||
| return (f); | |||
| return f; | |||
| } | |||
| @@ -867,7 +867,7 @@ static unsigned int StringToWord(const char *string) | |||
| unsigned int word; | |||
| if (string == NULL) | |||
| return (0); | |||
| return 0; | |||
| word = 0; | |||
| for (ix = 0; ix < 4; ix++) { | |||
| @@ -875,7 +875,7 @@ static unsigned int StringToWord(const char *string) | |||
| c = string[ix]; | |||
| word |= (c << (ix*8)); | |||
| } | |||
| return (word); | |||
| return word; | |||
| } | |||
| @@ -948,7 +948,7 @@ static int LookupPhoneme(const char *string, int control) | |||
| unsigned int word; | |||
| if (strcmp(string, "NULL") == 0) | |||
| return (1); | |||
| return 1; | |||
| ix = strlen(string); | |||
| if ((ix == 0) || (ix > 4)) { | |||
| @@ -966,7 +966,7 @@ static int LookupPhoneme(const char *string, int control) | |||
| use = 0; | |||
| for (ix = start; ix < n_phcodes; ix++) { | |||
| if (phoneme_tab2[ix].mnemonic == word) | |||
| return (ix); | |||
| return ix; | |||
| if ((use == 0) && (phoneme_tab2[ix].mnemonic == 0)) { | |||
| use = ix; | |||
| @@ -975,9 +975,9 @@ static int LookupPhoneme(const char *string, int control) | |||
| if (use == 0) { | |||
| if (control == 0) | |||
| return (-1); | |||
| return -1; | |||
| if (n_phcodes >= N_PHONEME_TAB-1) | |||
| return (-1); // phoneme table is full | |||
| return -1; // phoneme table is full | |||
| use = n_phcodes++; | |||
| } | |||
| @@ -985,7 +985,7 @@ static int LookupPhoneme(const char *string, int control) | |||
| phoneme_tab2[use].mnemonic = word; | |||
| phoneme_tab2[use].type = phINVALID; | |||
| phoneme_tab2[use].program = linenum; // for error report if the phoneme remains undeclared | |||
| return (use); | |||
| return use; | |||
| } | |||
| @@ -996,7 +996,7 @@ static unsigned int get_char() | |||
| c = fgetc(f_in); | |||
| if (c == '\n') | |||
| linenum++; | |||
| return (c); | |||
| return c; | |||
| } | |||
| static void unget_char(unsigned int c) | |||
| @@ -1012,7 +1012,7 @@ int CheckNextChar() | |||
| int c; | |||
| while (((c = get_char()) == ' ') || (c == '\t')) ; | |||
| unget_char(c); | |||
| return (c); | |||
| return c; | |||
| } | |||
| @@ -1046,12 +1046,12 @@ static int NextItem(int type) | |||
| } | |||
| } | |||
| if (feof(f_in)) | |||
| return (-2); | |||
| return -2; | |||
| if (c == '(') { | |||
| if (type == tOPENBRACKET) | |||
| return (1); | |||
| return (-1); | |||
| return 1; | |||
| return -1; | |||
| } | |||
| ix = 0; | |||
| @@ -1082,7 +1082,7 @@ static int NextItem(int type) | |||
| unget_char(c); | |||
| if (type == tSTRING) { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((type == tNUMBER) || (type == tSIGNEDNUMBER)) { | |||
| @@ -1105,7 +1105,7 @@ static int NextItem(int type) | |||
| acc += (*p - '0'); | |||
| p++; | |||
| } | |||
| return (acc * sign); | |||
| return acc * sign; | |||
| } | |||
| @@ -1114,17 +1114,17 @@ static int NextItem(int type) | |||
| while (pk->mnem != NULL) { | |||
| if (strcmp(item_string, pk->mnem) == 0) { | |||
| item_type = pk->type; | |||
| return (pk->data); | |||
| return pk->data; | |||
| } | |||
| pk++; | |||
| } | |||
| item_type = -1; | |||
| return (-1); // keyword not found | |||
| return -1; // keyword not found | |||
| } | |||
| if (type == tPHONEMEMNEM) { | |||
| return (LookupPhoneme(item_string, 2)); | |||
| return LookupPhoneme(item_string, 2); | |||
| } | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| @@ -1141,7 +1141,7 @@ static int NextItemMax(int max) | |||
| error(msg, NULL); | |||
| value = max; | |||
| } | |||
| return (value); | |||
| return value; | |||
| } | |||
| @@ -1162,12 +1162,12 @@ static int NextItemBrackets(int type, int control) | |||
| value = NextItem(type); | |||
| if ((control & 2) && (item_terminator == ',')) | |||
| return (value); | |||
| return value; | |||
| if (item_terminator != ')') { | |||
| error("Expected ')'", NULL); | |||
| } | |||
| return (value); | |||
| return value; | |||
| } | |||
| @@ -1193,7 +1193,7 @@ static int Range(int value, int divide, int min, int max) | |||
| value = max; | |||
| if (value < min) | |||
| value = min; | |||
| return (value - min); | |||
| return value - min; | |||
| } | |||
| @@ -1300,7 +1300,7 @@ int CompileVowelTransition(int which) | |||
| prog_out[3] = word2; | |||
| prog_out += 4; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1331,7 +1331,7 @@ int LoadSpect(const char *path, int control) | |||
| spectseq = SpectSeqCreate(); | |||
| if (spectseq == NULL) { | |||
| Error("Failed to create SpectSeq"); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| snprintf(filename, sizeof(filename), "%s/../phsource/%s", path_home, path); | |||
| @@ -1340,7 +1340,7 @@ int LoadSpect(const char *path, int control) | |||
| if (spectseq->frames == NULL) { | |||
| error("Bad vowel file, no frames: '%s'", path); | |||
| SpectSeqDestroy(spectseq); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| // do we need additional klatt data ? | |||
| @@ -1481,7 +1481,7 @@ int LoadSpect(const char *path, int control) | |||
| } | |||
| SpectSeqDestroy(spectseq); | |||
| return (displ); | |||
| return displ; | |||
| } | |||
| @@ -1552,13 +1552,13 @@ static int LoadWavefile(FILE *f, const char *fname) | |||
| error("WAV file is not mono: %s", fname); | |||
| } | |||
| remove(fname_temp); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| f = fopen(fname_temp, "rb"); | |||
| if (f == NULL) { | |||
| error("Can't read temp file: %s", fname_temp); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (f_report != NULL) | |||
| fprintf(f_report, "resampled %s\n", fname); | |||
| @@ -1634,7 +1634,7 @@ static int LoadWavefile(FILE *f, const char *fname) | |||
| fclose(f); | |||
| remove(fname_temp); | |||
| } | |||
| return (displ | 0x800000); // set bit 23 to indicate a wave file rather than a spectrum | |||
| return displ | 0x800000; // set bit 23 to indicate a wave file rather than a spectrum | |||
| } | |||
| @@ -1658,7 +1658,7 @@ static int LoadEnvelope(FILE *f, const char *fname) | |||
| n_envelopes++; | |||
| } | |||
| return (displ); | |||
| return displ; | |||
| } | |||
| @@ -1677,7 +1677,7 @@ static int Hash8(const char *string) | |||
| chars++; | |||
| } | |||
| return ((hash+chars) & 0xff); | |||
| return (hash+chars) & 0xff; | |||
| } | |||
| @@ -1742,7 +1742,7 @@ static int LoadEnvelope2(FILE *f, const char *fname) | |||
| displ = ftell(f_phdata); | |||
| fwrite(env, 1, 128, f_phdata); | |||
| return (displ); | |||
| return displ; | |||
| } | |||
| static int LoadDataFile(const char *path, int control) | |||
| @@ -1759,9 +1759,9 @@ static int LoadDataFile(const char *path, int control) | |||
| char buf[sizeof(path_home)+150]; | |||
| if (strcmp(path, "NULL") == 0) | |||
| return (0); | |||
| return 0; | |||
| if (strcmp(path, "DFT") == 0) | |||
| return (1); | |||
| return 1; | |||
| count_references++; | |||
| @@ -1783,7 +1783,7 @@ static int LoadDataFile(const char *path, int control) | |||
| sprintf(buf, "%s/../phsource/%s.wav", path_home, path); | |||
| if ((f = fopen(buf, "rb")) == NULL) { | |||
| error("Can't read file: %s", path); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| @@ -1825,7 +1825,7 @@ static int LoadDataFile(const char *path, int control) | |||
| ref_hash_tab[hash] = p2; | |||
| } | |||
| return (addr); | |||
| return addr; | |||
| } | |||
| @@ -1866,7 +1866,7 @@ static int CompileToneSpec(void) | |||
| *prog_out++ = amp_env; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1904,7 +1904,7 @@ int CompileSound(int keyword, int isvowel) | |||
| *prog_out++ = sound_instns[keyword-kFMT] + ((value & 0xff) << 4) + ((addr >> 16) & 0xf); | |||
| *prog_out++ = addr & 0xffff; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1941,7 +1941,7 @@ int CompileIf(int elif) | |||
| word2 = 0; | |||
| if (prog_out >= prog_out_max) { | |||
| error("Phoneme program too large", NULL); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((key = NextItem(tCONDITION)) < 0) | |||
| @@ -1989,7 +1989,7 @@ int CompileIf(int elif) | |||
| error("Unexpected keyword '%s'", item_string); | |||
| if ((strcmp(item_string, "phoneme") == 0) || (strcmp(item_string, "endphoneme") == 0)) | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| // output the word | |||
| @@ -2031,7 +2031,7 @@ int CompileIf(int elif) | |||
| if_stack[if_level].p_then = prog_out; | |||
| *prog_out++ = i_JUMP_FALSE; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2072,7 +2072,7 @@ int CompileElse(void) | |||
| if (if_level < 1) { | |||
| error("ELSE not expected", NULL); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (if_stack[if_level].returned == 0) { | |||
| @@ -2091,7 +2091,7 @@ int CompileElse(void) | |||
| if_stack[if_level].p_else = ref; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2099,12 +2099,12 @@ int CompileElif(void) | |||
| { | |||
| if (if_level < 1) { | |||
| error("ELIF not expected", NULL); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| CompileElse(); | |||
| CompileIf(1); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2116,7 +2116,7 @@ int CompileEndif(void) | |||
| if (if_level < 1) { | |||
| error("ENDIF not expected", NULL); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| FillThen(0); | |||
| @@ -2136,7 +2136,7 @@ int CompileEndif(void) | |||
| } | |||
| if_level--; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2148,14 +2148,14 @@ static int CompileSwitch(int type) | |||
| if (type == 0) { | |||
| // check the instructions in the Switch | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (type == 1) | |||
| *prog_out++ = i_SWITCH_PREVVOWEL+6; | |||
| if (type == 2) | |||
| *prog_out++ = i_SWITCH_NEXTVOWEL+6; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2166,11 +2166,11 @@ static PHONEME_TAB_LIST *FindPhonemeTable(const char *string) | |||
| for (ix = 0; ix < n_phoneme_tabs; ix++) { | |||
| if (strcmp(phoneme_tab_list2[ix].name, string) == 0) { | |||
| return (&phoneme_tab_list2[ix]); | |||
| return &phoneme_tab_list2[ix]; | |||
| } | |||
| } | |||
| error("Unknown phoneme table: '%s'", string); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -2185,7 +2185,7 @@ static PHONEME_TAB *FindPhoneme(const char *string) | |||
| // is this the name of a phoneme which is in scope | |||
| if ((strlen(string) <= 4) && ((ix = LookupPhoneme(string, 0)) != -1)) { | |||
| return (&phoneme_tab2[ix]); | |||
| return &phoneme_tab2[ix]; | |||
| } | |||
| // no, treat the name as phonemetable/phoneme | |||
| @@ -2196,18 +2196,18 @@ static PHONEME_TAB *FindPhoneme(const char *string) | |||
| phtab = FindPhonemeTable(buf); | |||
| if (phtab == NULL) { | |||
| return (NULL); // phoneme table not found | |||
| return NULL; // phoneme table not found | |||
| } | |||
| mnem = StringToWord(phname); | |||
| for (ix = 1; ix < 256; ix++) { | |||
| if (mnem == phtab->phoneme_tab_ptr[ix].mnemonic) { | |||
| return (&phtab->phoneme_tab_ptr[ix]); | |||
| return &phtab->phoneme_tab_ptr[ix]; | |||
| } | |||
| } | |||
| error("Phoneme reference not found: '%s'", string); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -2316,13 +2316,13 @@ int CompilePhoneme(int compile_phoneme) | |||
| NextItem(tSTRING); | |||
| if (compile_phoneme) { | |||
| phcode = LookupPhoneme(item_string, 1); // declare phoneme if not already there | |||
| if (phcode == -1) return (0); | |||
| if (phcode == -1) return 0; | |||
| phoneme_out = &phoneme_tab2[phcode]; | |||
| } else { | |||
| // declare a procedure | |||
| if (n_procs >= N_PROCS) { | |||
| error("Too many procedures", NULL); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| strcpy(proc_names[n_procs], item_string); | |||
| phoneme_out = &phoneme_out2; | |||
| @@ -2666,7 +2666,7 @@ int CompilePhoneme(int compile_phoneme) | |||
| fwrite(prog_buf, sizeof(USHORT), prog_out - prog_buf, f_phindex); | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -3158,7 +3158,7 @@ MNEM_TAB envelope_names[] = { | |||
| int LookupEnvelopeName(const char *name) | |||
| { | |||
| return (LookupMnem(envelope_names, name)); | |||
| return LookupMnem(envelope_names, name); | |||
| } | |||
| @@ -168,8 +168,8 @@ int isspace2(unsigned int c) | |||
| int c2; | |||
| if (((c2 = (c & 0xff)) == 0) || (c > ' ')) | |||
| return (0); | |||
| return (1); | |||
| return 0; | |||
| return 1; | |||
| } | |||
| @@ -183,7 +183,7 @@ static FILE *fopen_log(const char *fname, const char *access) | |||
| if (f_log != NULL) | |||
| fprintf(f_log, "Can't access (%s) file '%s'\n", access, fname); | |||
| } | |||
| return (f); | |||
| return f; | |||
| } | |||
| @@ -192,10 +192,10 @@ const char *LookupMnemName(MNEM_TAB *table, const int value) | |||
| { | |||
| while (table->mnem != NULL) { | |||
| if (table->value == value) | |||
| return (table->mnem); | |||
| return table->mnem; | |||
| table++; | |||
| } | |||
| return (""); /* not found */ | |||
| return ""; /* not found */ | |||
| } | |||
| @@ -382,7 +382,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont | |||
| while (ix < 8) | |||
| output[ix++] = ' '; | |||
| output[ix] = 0; | |||
| return (output); | |||
| return output; | |||
| } | |||
| @@ -555,7 +555,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
| } | |||
| if (word[0] == 0) { | |||
| return (0); /* blank line */ | |||
| return 0; /* blank line */ | |||
| } | |||
| if (text_mode) | |||
| @@ -674,7 +674,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash) | |||
| dict_line[0] = length; | |||
| return (length); | |||
| return length; | |||
| } | |||
| @@ -750,7 +750,7 @@ static int compile_dictlist_file(const char *path, const char *filename) | |||
| if ((f_in = fopen(fname, "r")) == NULL) { | |||
| sprintf(fname, "%s%s", path, filename); | |||
| if ((f_in = fopen(fname, "r")) == NULL) | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| if (f_log != NULL) | |||
| @@ -784,7 +784,7 @@ static int compile_dictlist_file(const char *path, const char *filename) | |||
| if (f_log != NULL) | |||
| fprintf(f_log, "\t%d entries\n", count); | |||
| fclose(f_in); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -804,12 +804,12 @@ static int group3_ix; | |||
| int isHexDigit(int c) | |||
| { | |||
| if ((c >= '0') && (c <= '9')) | |||
| return (c - '0'); | |||
| return c - '0'; | |||
| if ((c >= 'a') && (c <= 'f')) | |||
| return (c - 'a' + 10); | |||
| return c - 'a' + 10; | |||
| if ((c >= 'A') && (c <= 'F')) | |||
| return (c - 'A' + 10); | |||
| return (-1); | |||
| return c - 'A' + 10; | |||
| return -1; | |||
| } | |||
| @@ -1143,7 +1143,7 @@ static char *compile_rule(char *input) | |||
| fprintf(f_log, "%5d: Syntax error\n", linenum); | |||
| error_count++; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| EncodePhonemes(rule_phonemes, buf, &bad_phoneme); | |||
| @@ -1216,7 +1216,7 @@ static char *compile_rule(char *input) | |||
| output[len++] = 0; | |||
| prule = (char *)malloc(len); | |||
| memcpy(prule, output, len); | |||
| return (prule); | |||
| return prule; | |||
| } | |||
| @@ -1226,10 +1226,10 @@ int __cdecl string_sorter(char **a, char **b) | |||
| int ix; | |||
| if ((ix = strcmp(pa = *a, pb = *b)) != 0) | |||
| return (ix); | |||
| return ix; | |||
| pa += (strlen(pa)+1); | |||
| pb += (strlen(pb)+1); | |||
| return (strcmp(pa, pb)); | |||
| return strcmp(pa, pb); | |||
| } | |||
| @@ -1238,10 +1238,10 @@ static int __cdecl rgroup_sorter(RGROUP *a, RGROUP *b) | |||
| // Sort long names before short names | |||
| int ix; | |||
| ix = strlen(b->name) - strlen(a->name); | |||
| if (ix != 0) return (ix); | |||
| if (ix != 0) return ix; | |||
| ix = strcmp(a->name, b->name); | |||
| if (ix != 0) return (ix); | |||
| return (a->start-b->start); | |||
| if (ix != 0) return ix; | |||
| return a->start-b->start; | |||
| } | |||
| @@ -1425,14 +1425,14 @@ static int compile_lettergroup(char *input, FILE *f_out) | |||
| if (!IsDigit09(p[0]) || !IsDigit09(p[1])) { | |||
| fprintf(f_log, "%5d: Expected 2 digits after '.L'\n", linenum); | |||
| error_count++; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| group = atoi(&p[0]); | |||
| if (group >= N_LETTER_GROUPS) { | |||
| fprintf(f_log, "%5d: lettergroup out of range (01-%.2d)\n", linenum, N_LETTER_GROUPS-1); | |||
| error_count++; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| while (!isspace2(*p)) p++; | |||
| @@ -1476,7 +1476,7 @@ static int compile_lettergroup(char *input, FILE *f_out) | |||
| fputc(RULE_GROUP_END, f_out); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1508,7 +1508,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
| group_name[0] = 0; | |||
| if ((f_temp = fopen_log(fname_temp, "wb")) == NULL) | |||
| return (1); | |||
| return 1; | |||
| for (;;) { | |||
| linenum++; | |||
| @@ -1655,7 +1655,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
| qsort((void *)rgroup, n_rgroups, sizeof(rgroup[0]), (int(__cdecl *)(const void *, const void *))rgroup_sorter); | |||
| if ((f_temp = fopen(fname_temp, "rb")) == NULL) | |||
| return (2); | |||
| return 2; | |||
| prev_rgroup_name = "\n"; | |||
| @@ -1693,7 +1693,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
| remove(fname_temp); | |||
| fprintf(f_log, "\t%d rules, %d groups (%d)\n\n", count, n_rgroups, n_groups3); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1733,7 +1733,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| if ((f_in = fopen_log(fname_in, "r")) == NULL) { | |||
| if (fname_err) | |||
| strcpy(fname_err, fname_in); | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| } | |||
| @@ -1742,7 +1742,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| if (fname_err) | |||
| strcpy(fname_err, fname_out); | |||
| fclose(f_in); | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| sprintf(fname_temp, "%s%ctemp", path_home, PATHSEP); | |||
| @@ -1778,5 +1778,5 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| LoadDictionary(translator, dict_name, 0); | |||
| return (error_count); | |||
| return error_count; | |||
| } | |||
| @@ -49,7 +49,7 @@ static unsigned int StringToWord(const char *string) | |||
| unsigned int word; | |||
| if (string == NULL) | |||
| return (0); | |||
| return 0; | |||
| word = 0; | |||
| for (ix = 0; ix < 4; ix++) { | |||
| @@ -57,7 +57,7 @@ static unsigned int StringToWord(const char *string) | |||
| c = string[ix]; | |||
| word |= (c << (ix*8)); | |||
| } | |||
| return (word); | |||
| return word; | |||
| } | |||
| #pragma GCC visibility push(default) | |||
| @@ -105,9 +105,9 @@ int Reverse4Bytes(int word) | |||
| word2 = word2 << 8; | |||
| word2 |= (word >> ix) & 0xff; | |||
| } | |||
| return (word2); | |||
| return word2; | |||
| #else | |||
| return (word); | |||
| return word; | |||
| #endif | |||
| } | |||
| @@ -116,10 +116,10 @@ int LookupMnem(MNEM_TAB *table, const char *string) | |||
| { | |||
| while (table->mnem != NULL) { | |||
| if (strcmp(string, table->mnem) == 0) | |||
| return (table->value); | |||
| return table->value; | |||
| table++; | |||
| } | |||
| return (table->value); | |||
| return table->value; | |||
| } | |||
| @@ -245,7 +245,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
| } | |||
| if (f != NULL) | |||
| fclose(f); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| tr->data_dictlist = Alloc(size); | |||
| @@ -258,13 +258,13 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
| if (size <= (N_HASH_DICT + sizeof(int)*2)) { | |||
| fprintf(stderr, "Empty _dict file: '%s\n", fname); | |||
| return (2); | |||
| return 2; | |||
| } | |||
| if ((Reverse4Bytes(pw[0]) != N_HASH_DICT) || | |||
| (length <= 0) || (length > 0x8000000)) { | |||
| fprintf(stderr, "Bad data: '%s' (%x length=%x)\n", fname, Reverse4Bytes(pw[0]), length); | |||
| return (2); | |||
| return 2; | |||
| } | |||
| tr->data_dictrules = &(tr->data_dictlist[length]); | |||
| @@ -286,7 +286,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error) | |||
| fprintf(stderr, "Full dictionary is not installed for '%s'\n", name); | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -305,7 +305,7 @@ int HashDictionary(const char *string) | |||
| chars++; | |||
| } | |||
| return ((hash+chars) & 0x3ff); // a 10 bit hash code | |||
| return (hash+chars) & 0x3ff; // a 10 bit hash code | |||
| } | |||
| @@ -383,7 +383,7 @@ const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme) | |||
| utf8_in(bad_phoneme, p); | |||
| } | |||
| *outptr++ = 0; | |||
| return (p+1); | |||
| return p+1; | |||
| } | |||
| if (max <= 0) | |||
| @@ -402,7 +402,7 @@ const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme) | |||
| if (c == 0) { | |||
| if (strcmp(p_lang, "en") == 0) { | |||
| *p_lang = 0; // don't need "en", it's assumed by default | |||
| return (p); | |||
| return p; | |||
| } | |||
| } else { | |||
| *outptr++ = '|'; // more phonemes follow, terminate language string with separator | |||
| @@ -413,7 +413,7 @@ const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme) | |||
| } | |||
| /* terminate the encoded string */ | |||
| *outptr = 0; | |||
| return (p); | |||
| return p; | |||
| } | |||
| @@ -483,14 +483,14 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| if (ph->code == phonEND_WORD) { | |||
| // ignore | |||
| phon_out[0] = 0; | |||
| return (phon_out); | |||
| return phon_out; | |||
| } | |||
| if (ph->code == phonSWITCH) { | |||
| // the tone_ph field contains a phoneme table number | |||
| p = phoneme_tab_list[plist->tone_ph].name; | |||
| sprintf(phon_out, "(%s)", p); | |||
| return (phon_out + strlen(phon_out)); | |||
| return phon_out + strlen(phon_out); | |||
| } | |||
| if (use_ipa) { | |||
| @@ -507,7 +507,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| if (*p == 0x20) { | |||
| // indicates no name for this phoneme | |||
| *phon_out = 0; | |||
| return (phon_out); | |||
| return phon_out; | |||
| } | |||
| if ((*p != 0) && ((*p & 0xff) < 0x20)) { | |||
| // name starts with a flags byte | |||
| @@ -521,7 +521,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| strcpy(phon_out, p); | |||
| phon_out += len; | |||
| *phon_out = 0; | |||
| return (phon_out); | |||
| return phon_out; | |||
| } | |||
| } | |||
| @@ -554,7 +554,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int | |||
| phon_out = &phon_out[ix]; | |||
| *phon_out = 0; | |||
| return (phon_out); | |||
| return phon_out; | |||
| } | |||
| @@ -593,7 +593,7 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) | |||
| phon_out_size = N_PHON_OUT; | |||
| if ((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL) { | |||
| phon_out_size = 0; | |||
| return (""); | |||
| return ""; | |||
| } | |||
| } | |||
| @@ -677,7 +677,7 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) | |||
| phon_out_size = phon_out_ix + len + N_PHON_OUT; | |||
| if ((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL) { | |||
| phon_out_size = 0; | |||
| return (""); | |||
| return ""; | |||
| } | |||
| } | |||
| @@ -687,11 +687,11 @@ const char *GetTranslatedPhonemeString(int phoneme_mode) | |||
| } | |||
| if (!phon_out_buf) | |||
| return (""); | |||
| return ""; | |||
| phon_out_buf[phon_out_ix] = 0; | |||
| return (phon_out_buf); | |||
| return phon_out_buf; | |||
| } | |||
| @@ -705,7 +705,7 @@ static int IsLetterGroup(Translator *tr, char *word, int group, int pre) | |||
| p = tr->letterGroups[group]; | |||
| if (p == NULL) | |||
| return (0); | |||
| return 0; | |||
| while (*p != RULE_GROUP_END) { | |||
| if (pre) { | |||
| @@ -720,13 +720,13 @@ static int IsLetterGroup(Translator *tr, char *word, int group, int pre) | |||
| } | |||
| if (*p == 0) { | |||
| if (pre) | |||
| return (len); | |||
| return (w-word); // matched a complete string | |||
| return len; | |||
| return w-word; // matched a complete string | |||
| } | |||
| while (*p++ != 0) ; // skip to end of string | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -736,33 +736,33 @@ static int IsLetter(Translator *tr, int letter, int group) | |||
| if (tr->letter_groups[group] != NULL) { | |||
| if (wcschr(tr->letter_groups[group], letter)) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| if (group > 7) | |||
| return (0); | |||
| return 0; | |||
| if (tr->letter_bits_offset > 0) { | |||
| if (((letter2 = (letter - tr->letter_bits_offset)) > 0) && (letter2 < 0x100)) | |||
| letter = letter2; | |||
| else | |||
| return (0); | |||
| return 0; | |||
| } else { | |||
| if ((letter >= 0xc0) && (letter < N_REMOVE_ACCENT)) | |||
| return (tr->letter_bits[remove_accent[letter-0xc0]] & (1L << group)); | |||
| return tr->letter_bits[remove_accent[letter-0xc0]] & (1L << group); | |||
| } | |||
| if ((letter >= 0) && (letter < 0x100)) | |||
| return (tr->letter_bits[letter] & (1L << group)); | |||
| return tr->letter_bits[letter] & (1L << group); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int IsVowel(Translator *tr, int letter) | |||
| { | |||
| return (IsLetter(tr, letter, LETTERGP_VOWEL2)); | |||
| return IsLetter(tr, letter, LETTERGP_VOWEL2); | |||
| } | |||
| @@ -780,8 +780,8 @@ static int Unpronouncable2(Translator *tr, char *word) | |||
| end_flags = TranslateRules(tr, word, ph_buf, sizeof(ph_buf), NULL, FLAG_UNPRON_TEST, NULL); | |||
| word[-1] = c; | |||
| if ((end_flags == 0) || (end_flags & SUFX_UNPRON)) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| @@ -803,19 +803,19 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
| utf8_in(&c, word); | |||
| if ((tr->letter_bits_offset > 0) && (c < 0x241)) { | |||
| // Latin characters for a language with a non-latin alphabet | |||
| return (0); // so we can re-translate the word as English | |||
| return 0; // so we can re-translate the word as English | |||
| } | |||
| if (((alphabet = AlphabetFromChar(c)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) { | |||
| // Character is not in our alphabet | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) | |||
| return (0); | |||
| return 0; | |||
| if (((c = *word) == ' ') || (c == 0) || (c == '\'')) | |||
| return (0); | |||
| return 0; | |||
| index = 0; | |||
| count = 0; | |||
| @@ -841,21 +841,21 @@ int Unpronouncable(Translator *tr, char *word, int posn) | |||
| } | |||
| if ((c != '\'') && !iswalpha2(c)) | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((vowel_posn > 2) && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 2)) { | |||
| // Lookup unpronounable rules in *_rules | |||
| return (Unpronouncable2(tr, word)); | |||
| return Unpronouncable2(tr, word); | |||
| } | |||
| if (c1 == tr->langopts.param[LOPT_UNPRONOUNCABLE]) | |||
| vowel_posn--; // disregard this as the initial letter when counting | |||
| if (vowel_posn > (tr->langopts.max_initial_consonants+1)) | |||
| return (1); // no vowel, or no vowel in first few letters | |||
| return 1; // no vowel, or no vowel in first few letters | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -969,7 +969,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char * | |||
| *stressed_syllable = primary_posn; | |||
| *vowel_count = count; | |||
| return (max_stress); | |||
| return max_stress; | |||
| } | |||
| @@ -2258,7 +2258,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| static const char str_pause[2] = { phonPAUSE_NOLINK, 0 }; | |||
| if (tr->data_dictrules == NULL) | |||
| return (0); | |||
| return 0; | |||
| if (dict_flags != NULL) | |||
| dict_flags0 = dict_flags[0]; | |||
| @@ -2367,7 +2367,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| // not a Latin alphabet, switch to the default Latin alphabet language | |||
| if ((letter <= 0x241) && iswalpha2(letter)) { | |||
| sprintf(phonemes, "%c%s", phonSWITCH, tr->langopts.ascii_language); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| @@ -2408,12 +2408,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| if (((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->offset != tr->letter_bits_offset)) { | |||
| if (tr->langopts.alt_alphabet == alphabet->offset) { | |||
| sprintf(phonemes, "%c%s", phonSWITCH, WordToString2(tr->langopts.alt_alphabet_lang)); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (alphabet->flags & AL_WORDS) { | |||
| // switch to the nominated language for this alphabet | |||
| sprintf(phonemes, "%c%s", phonSWITCH, WordToString2(alphabet->language)); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| } | |||
| @@ -2449,12 +2449,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| if (match1.points > 0) { | |||
| if (word_flags & FLAG_UNPRON_TEST) | |||
| return (match1.end_type | 1); | |||
| return match1.end_type | 1; | |||
| if ((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR) == 0)) { | |||
| // an instruction to switch language, return immediately so we can re-translate | |||
| strcpy(phonemes, match1.phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((option_phonemes & espeakPHONEMES_TRACE) && ((word_flags & FLAG_NO_TRACE) == 0)) { | |||
| @@ -2474,7 +2474,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| } | |||
| strcpy(end_phonemes, match1.phonemes); | |||
| memcpy(p_start, word_copy, strlen(word_copy)); | |||
| return (match1.end_type); | |||
| return match1.end_type; | |||
| } | |||
| } | |||
| if (match1.del_fwd != NULL) | |||
| @@ -2485,7 +2485,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c | |||
| memcpy(p_start, word_copy, strlen(word_copy)); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2607,9 +2607,9 @@ int TransposeAlphabet(Translator *tr, char *text) | |||
| *p2 = 0; | |||
| ix = p2 - buf; | |||
| memcpy(text, buf, ix); | |||
| return (ix | 0x40); // bit 6 indicates compressed characters | |||
| return ix | 0x40; // bit 6 indicates compressed characters | |||
| } else { | |||
| return (strlen(text)); | |||
| return strlen(text); | |||
| } | |||
| } | |||
| @@ -2670,7 +2670,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| if (p == NULL) { | |||
| if (flags != NULL) | |||
| *flags = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| // Find the first entry in the list for this hash value which matches. | |||
| @@ -2867,7 +2867,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf)); | |||
| fprintf(f_trans, "Flags: %s %s\n", word1, dict_flags_buf); | |||
| } | |||
| return (0); // no phoneme translation found here, only flags. So use rules | |||
| return 0; // no phoneme translation found here, only flags. So use rules | |||
| } | |||
| if (flags != NULL) | |||
| @@ -2904,10 +2904,10 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| if ((word[ix] == 0) && !IsAlpha(c)) { | |||
| flags[0] |= FLAG_MAX3; | |||
| } | |||
| return (word_end); | |||
| return word_end; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2953,7 +2953,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f | |||
| // set the skip words flag | |||
| flags[0] |= FLAG_SKIPWORDS; | |||
| dictionary_skipwords = length; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| @@ -3037,14 +3037,14 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f | |||
| } | |||
| ph_out[0] = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| ph_out[0] = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -3075,7 +3075,7 @@ int Lookup(Translator *tr, const char *word, char *ph_out) | |||
| strcpy(ph_out, word_phonemes); | |||
| option_sayas = say_as; | |||
| } | |||
| return (flags0); | |||
| return flags0; | |||
| } | |||
| @@ -3088,7 +3088,7 @@ int LookupFlags(Translator *tr, const char *word, unsigned int **flags_out) | |||
| flags[0] = flags[1] = 0; | |||
| LookupDictList(tr, &word1, buf, flags, 0, NULL); | |||
| *flags_out = flags; | |||
| return (flags[0]); | |||
| return flags[0]; | |||
| } | |||
| @@ -3214,5 +3214,5 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy) | |||
| if (ending[0] == '\'') | |||
| end_flags &= ~FLAG_SUFX; // don't consider 's as an added suffix | |||
| return (end_flags); | |||
| return end_flags; | |||
| } | |||
| @@ -395,7 +395,7 @@ static void *say_thread(void *p) | |||
| int fifo_is_command_enabled() | |||
| { | |||
| SHOW("ENTER fifo_is_command_enabled=%d\n", (int)(0 == my_stop_is_required)); | |||
| return (0 == my_stop_is_required); | |||
| return 0 == my_stop_is_required; | |||
| } | |||
| typedef struct t_node { | |||
| @@ -410,7 +410,7 @@ static int count_increments(int ix, int end_ix, int min_stress) | |||
| if (stress >= min_stress) | |||
| count++; | |||
| } | |||
| return (count); | |||
| return count; | |||
| } | |||
| @@ -452,7 +452,7 @@ static int CountUnstressed(int start, int end, int limit) | |||
| if (syllable_tab[ix].stress >= limit) | |||
| break; | |||
| } | |||
| return (ix - start); | |||
| return ix - start; | |||
| } | |||
| static int SetHeadIntonation(TUNE *tune, int syl_ix, int end_ix, int control) | |||
| @@ -569,7 +569,7 @@ static int SetHeadIntonation(TUNE *tune, int syl_ix, int end_ix, int control) | |||
| syl_ix++; | |||
| } | |||
| return (syl_ix); | |||
| return syl_ix; | |||
| } | |||
| @@ -668,7 +668,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t | |||
| ix++; | |||
| } | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| @@ -746,7 +746,7 @@ static int calc_pitches2(int start, int end, int tune_number) | |||
| ix = SetHeadIntonation(tune, ix, tone_posn, 0); | |||
| if (no_tonic) | |||
| return (0); | |||
| return 0; | |||
| /* tonic syllable */ | |||
| /******************/ | |||
| @@ -770,7 +770,7 @@ static int calc_pitches2(int start, int end, int tune_number) | |||
| SetPitchGradient(ix, end, tune->tail_start, tune->tail_end); | |||
| return (tone_pitch_env); | |||
| return tone_pitch_env; | |||
| } | |||
| @@ -785,7 +785,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) | |||
| int continuing = 0; | |||
| if (control == 0) { | |||
| return (calc_pitches2(start, end, tune_number)); | |||
| return calc_pitches2(start, end, tune_number); | |||
| } | |||
| if (start > 0) | |||
| @@ -810,7 +810,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) | |||
| ix = calc_pitch_segment(ix, tone_posn, th, tn, PRIMARY, continuing); | |||
| if (no_tonic) | |||
| return (0); | |||
| return 0; | |||
| /* tonic syllable */ | |||
| /******************/ | |||
| @@ -838,7 +838,7 @@ static int calc_pitches(int control, int start, int end, int tune_number) | |||
| SetPitchGradient(ix, end, tn->tail_start, tn->tail_end); | |||
| return (tone_pitch_env); | |||
| return tone_pitch_env; | |||
| } | |||
| @@ -243,7 +243,7 @@ static double sampled_source(int source_num) | |||
| } else { | |||
| result = 0; | |||
| } | |||
| return (result); | |||
| return result; | |||
| } | |||
| @@ -461,10 +461,10 @@ static int parwave(klatt_frame_ptr frame) | |||
| sample_count++; | |||
| if (out_ptr >= out_end) { | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -599,7 +599,7 @@ static double impulsive_source() | |||
| vwave = 0.0; | |||
| } | |||
| return (resonator(&(kt_globals.rsn[RGL]), vwave)); | |||
| return resonator(&(kt_globals.rsn[RGL]), vwave); | |||
| } | |||
| @@ -621,10 +621,10 @@ static double natural_source() | |||
| vwave += kt_globals.pulse_shape_a; | |||
| lgtemp = vwave * 0.028; | |||
| return (lgtemp); | |||
| return lgtemp; | |||
| } else { | |||
| vwave = 0.0; | |||
| return (0.0); | |||
| return 0.0; | |||
| } | |||
| } | |||
| @@ -876,7 +876,7 @@ static double gen_noise(double noise) | |||
| noise = kt_globals.nrand + (0.75 * nlast); | |||
| nlast = noise; | |||
| return (noise); | |||
| return noise; | |||
| } | |||
| @@ -914,10 +914,10 @@ static double DBtoLIN(long dB) | |||
| }; | |||
| if ((dB < 0) || (dB > 87)) { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| return ((double)(amptable[dB]) * 0.001); | |||
| return (double)(amptable[dB]) * 0.001; | |||
| } | |||
| @@ -1009,7 +1009,7 @@ int Wavegen_Klatt(int resume) | |||
| frame_init(&kt_frame); /* get parameters for next frame of speech */ | |||
| if (parwave(&kt_frame) == 1) { | |||
| return (1); // output buffer is full | |||
| return 1; // output buffer is full | |||
| } | |||
| } | |||
| @@ -1022,11 +1022,11 @@ int Wavegen_Klatt(int resume) | |||
| sample_count -= fade; | |||
| kt_globals.nspfr = fade; | |||
| if (parwave(&kt_frame) == 1) { | |||
| return (1); // output buffer is full | |||
| return 1; // output buffer is full | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1153,7 +1153,7 @@ int Wavegen_Klatt2(int length, int modulation, int resume, frame_t *fr1, frame_t | |||
| if (resume == 0) | |||
| SetSynth_Klatt(length, modulation, fr1, fr2, wvoice, 1); | |||
| return (Wavegen_Klatt(resume)); | |||
| return Wavegen_Klatt(resume); | |||
| } | |||
| @@ -381,7 +381,7 @@ static int mbrola_is_idle(void) | |||
| p = (char *)memchr(buffer, ')', sizeof(buffer)); | |||
| if (!p || (unsigned)(p - buffer) >= sizeof(buffer) - 2) | |||
| return 0; | |||
| return (p[1] == ' ' && p[2] == 'S'); | |||
| return p[1] == ' ' && p[2] == 'S'; | |||
| } | |||
| static ssize_t receive_from_mbrola(void *buffer, size_t bufsize) | |||
| @@ -413,7 +413,7 @@ static int LookupLetter2(Translator *tr, unsigned int letter, char *ph_buf) | |||
| TranslateRules(tr, &single_letter[2], ph_buf, 20, NULL, 0, NULL); | |||
| } | |||
| } | |||
| return (ph_buf[0]); | |||
| return ph_buf[0]; | |||
| } | |||
| @@ -582,9 +582,9 @@ int NonAsciiNumber(int letter) | |||
| if (letter < base) | |||
| break; // not found | |||
| if (letter < (base+10)) | |||
| return (letter-base+'0'); | |||
| return letter-base+'0'; | |||
| } | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| #define L_SUB 0x4000 // subscript | |||
| @@ -673,9 +673,9 @@ int IsSuperscript(int letter) | |||
| if (c > letter) | |||
| break; | |||
| if (c == letter) | |||
| return (derived_letters[ix+1]); | |||
| return derived_letters[ix+1]; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -756,7 +756,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| if (ph_buf[0] == phonSWITCH) { | |||
| strcpy(phonemes, ph_buf); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -925,7 +925,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| if ((len + strlen(ph_buf2)) < N_WORD_PHONEMES) { | |||
| strcpy(&phonemes[len], ph_buf2); | |||
| } | |||
| return (n_bytes); | |||
| return n_bytes; | |||
| } | |||
| @@ -1036,7 +1036,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB | |||
| } | |||
| } | |||
| } | |||
| return (ordinal); | |||
| return ordinal; | |||
| } | |||
| @@ -1046,14 +1046,14 @@ static int hu_number_e(const char *word, int thousandplex, int value) | |||
| if ((word[0] == 'a') || (word[0] == 'e')) { | |||
| if ((word[1] == ' ') || (word[1] == 'z') || ((word[1] == 't') && (word[2] == 't'))) | |||
| return (0); | |||
| return 0; | |||
| if (((thousandplex == 1) || ((value % 1000) == 0)) && (word[1] == 'l')) | |||
| return (0); // 1000-el | |||
| return 0; // 1000-el | |||
| return (1); | |||
| return 1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1086,39 +1086,39 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| flags[1] = 0; | |||
| if (((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2])) | |||
| return (0); // not '2xx' | |||
| return 0; // not '2xx' | |||
| if (word[1] == ' ') { | |||
| if ((tr->langopts.numbers & (NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL | NUM_ORDINAL_DOT)) && (wtab[0].flags & FLAG_HAS_DOT)) { | |||
| // allow single letter Roman ordinal followed by dot. | |||
| } else | |||
| return (0); // only one letter, don't speak as a Roman Number | |||
| return 0; // only one letter, don't speak as a Roman Number | |||
| } | |||
| word_start = word; | |||
| while ((c = *word++) != ' ') { | |||
| if ((p2 = strchr(roman_numbers, c)) == NULL) | |||
| return (0); | |||
| return 0; | |||
| value = roman_values[p2 - roman_numbers]; | |||
| if (value == prev) { | |||
| repeat++; | |||
| if (repeat >= 3) | |||
| return (0); | |||
| return 0; | |||
| } else | |||
| repeat = 0; | |||
| if ((prev > 1) && (prev != 10) && (prev != 100)) { | |||
| if (value >= prev) | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((prev != 0) && (prev < value)) { | |||
| if (((acc % 10) != 0) || ((prev*10) < value)) | |||
| return (0); | |||
| return 0; | |||
| subtract = prev; | |||
| value -= subtract; | |||
| } else if (value >= subtract) | |||
| return (0); | |||
| return 0; | |||
| else | |||
| acc += prev; | |||
| prev = value; | |||
| @@ -1126,14 +1126,14 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| } | |||
| if (IsDigit09(word[0])) | |||
| return (0); // eg. 'xx2' | |||
| return 0; // eg. 'xx2' | |||
| acc += prev; | |||
| if (acc < tr->langopts.min_roman) | |||
| return (0); | |||
| return 0; | |||
| if (acc > tr->langopts.max_roman) | |||
| return (0); | |||
| return 0; | |||
| Lookup(tr, "_roman", ph_roman); // precede by "roman" if _rom is defined in *_list | |||
| @@ -1148,7 +1148,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| if (word[0] == '.') { | |||
| // dot has not been removed. This implies that there was no space after it | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (CheckDotOrdinal(tr, word_start, word, wtab, 1)) | |||
| @@ -1161,7 +1161,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| // should use the 'e' form of the number | |||
| num_control |= 1; | |||
| } else | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } else { | |||
| wtab[0].flags |= FLAG_ORDINAL; | |||
| @@ -1175,7 +1175,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
| if (tr->langopts.numbers & NUM_ROMAN_AFTER) | |||
| strcat(ph_out, ph_roman); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -1192,36 +1192,36 @@ static const char *M_Variant(int value) | |||
| { | |||
| case 1: // lang=ru use singular for xx1 except for x11 | |||
| if ((teens == 0) && ((value % 10) == 1)) | |||
| return ("1M"); | |||
| return "1M"; | |||
| break; | |||
| case 2: // lang=cs,sk | |||
| if ((value >= 2) && (value <= 4)) | |||
| return ("0MA"); | |||
| return "0MA"; | |||
| break; | |||
| case 3: // lang=pl | |||
| if ((teens == 0) && (((value % 10) >= 2) && ((value % 10) <= 4))) | |||
| return ("0MA"); | |||
| return "0MA"; | |||
| break; | |||
| case 4: // lang=lt | |||
| if ((teens == 1) || ((value % 10) == 0)) | |||
| return ("0MB"); | |||
| return "0MB"; | |||
| if ((value % 10) == 1) | |||
| return ("0MA"); | |||
| return "0MA"; | |||
| break; | |||
| case 5: // lang=bs,hr,sr | |||
| if (teens == 0) { | |||
| if ((value % 10) == 1) | |||
| return ("1M"); | |||
| return "1M"; | |||
| if (((value % 10) >= 2) && ((value % 10) <= 4)) | |||
| return ("0MA"); | |||
| return "0MA"; | |||
| } | |||
| break; | |||
| } | |||
| return ("0M"); | |||
| return "0M"; | |||
| } | |||
| @@ -1310,9 +1310,9 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou | |||
| sprintf(ph_out, "%s%s", ph_of, ph_thousands); | |||
| if ((value == 1) && (thousandplex == 1) && (tr->langopts.numbers & NUM_OMIT_1_THOUSAND)) | |||
| return (1); | |||
| return 1; | |||
| return (found_value); | |||
| return found_value; | |||
| } | |||
| @@ -1561,7 +1561,7 @@ static int LookupNum2(Translator *tr, int value, int thousandplex, const int con | |||
| } | |||
| } | |||
| } | |||
| return (used_and); | |||
| return used_and; | |||
| } | |||
| @@ -1773,7 +1773,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null | |||
| sprintf(ph_out, "%s%s%c%s", buf1, ph_hundred_and, phonEND_WORD, buf2); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1783,13 +1783,13 @@ bool CheckThousandsGroup(char *word, int group_len) | |||
| int ix; | |||
| if (IsDigit09(word[group_len]) || IsDigit09(-1)) | |||
| return (false); | |||
| return false; | |||
| for (ix = 0; ix < group_len; ix++) { | |||
| if (!IsDigit09(word[ix])) | |||
| return (false); | |||
| return false; | |||
| } | |||
| return (true); | |||
| return true; | |||
| } | |||
| @@ -1915,7 +1915,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| } else { | |||
| if (n_digits > 3) { | |||
| flags[0] &= ~FLAG_SKIPWORDS; | |||
| return (0); // long number string with leading zero, speak as individual digits | |||
| return 0; // long number string with leading zero, speak as individual digits | |||
| } | |||
| // speak leading zeros | |||
| @@ -2017,7 +2017,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| // Look for special pronunciation for this number in isolation (LANG=kl) | |||
| sprintf(string, "_%dn", value); | |||
| if (Lookup(tr, string, ph_out)) { | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| @@ -2147,7 +2147,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| if (skipwords) | |||
| dictionary_skipwords = skipwords; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -2155,10 +2155,10 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control) | |||
| { | |||
| if ((option_sayas == SAYAS_DIGITS1) || (wtab[0].flags & FLAG_INDIVIDUAL_DIGITS)) | |||
| return (0); // speak digits individually | |||
| return 0; // speak digits individually | |||
| if (tr->langopts.numbers != 0) { | |||
| return (TranslateNumber_1(tr, word1, ph_out, flags, wtab, control)); | |||
| return TranslateNumber_1(tr, word1, ph_out, flags, wtab, control); | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -98,7 +98,7 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out) | |||
| plist_out[n_plist_out].type = plist_out[n_plist_out].ph->type; | |||
| n_plist_out++; | |||
| } | |||
| return (n_plist_out); | |||
| return n_plist_out; | |||
| } | |||
| @@ -291,26 +291,26 @@ static const short wchar_toupper[] = { | |||
| int iswalpha(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (isalpha(c)); | |||
| return isalpha(c); | |||
| if ((c > 0x3040) && (c <= 0xa700)) | |||
| return (1); // japanese, chinese characters | |||
| return 1; // japanese, chinese characters | |||
| if (c > MAX_WALPHA) | |||
| return (0); | |||
| return (walpha_tab[c-0x80]); | |||
| return 0; | |||
| return walpha_tab[c-0x80]; | |||
| } | |||
| int iswdigit(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (isdigit(c)); | |||
| return (0); | |||
| return isdigit(c); | |||
| return 0; | |||
| } | |||
| int iswalnum(int c) | |||
| { | |||
| if (iswdigit(c)) | |||
| return (1); | |||
| return (iswalpha(c)); | |||
| return 1; | |||
| return iswalpha(c); | |||
| } | |||
| int towlower(int c) | |||
| @@ -319,19 +319,19 @@ int towlower(int c) | |||
| int ix; | |||
| if (c < 0x80) | |||
| return (tolower(c)); | |||
| return tolower(c); | |||
| if ((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe)) | |||
| return (c); | |||
| return c; | |||
| if (x == 0xfd) { | |||
| // special cases, lookup translation table | |||
| for (ix = 0; wchar_tolower[ix] != 0; ix += 2) { | |||
| if (wchar_tolower[ix] == c) | |||
| return (wchar_tolower[ix+1]); | |||
| return wchar_tolower[ix+1]; | |||
| } | |||
| } | |||
| return (c + x); // convert to lower case | |||
| return c + x; // convert to lower case | |||
| } | |||
| int towupper(int c) | |||
| @@ -339,59 +339,59 @@ int towupper(int c) | |||
| int ix; | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if (towlower(c-32) == c) | |||
| return (c-32); // yes, use it | |||
| return c-32; // yes, use it | |||
| if (towlower(c-1) == c) | |||
| return (c-1); | |||
| return c-1; | |||
| for (ix = 0; wchar_toupper[ix] != 0; ix += 2) { | |||
| if (wchar_toupper[ix] == c) | |||
| return (wchar_toupper[ix+1]); | |||
| return wchar_toupper[ix+1]; | |||
| } | |||
| return (c); // no | |||
| return c; // no | |||
| } | |||
| int iswupper(int c) | |||
| { | |||
| int x; | |||
| if (c < 0x80) | |||
| return (isupper(c)); | |||
| return isupper(c); | |||
| if (((c > MAX_WALPHA) || (x = walpha_tab[c-0x80]) == 0) || (x == 0xff)) | |||
| return (0); | |||
| return (1); | |||
| return 0; | |||
| return 1; | |||
| } | |||
| int iswlower(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (islower(c)); | |||
| return islower(c); | |||
| if ((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff)) | |||
| return (0); | |||
| return (1); | |||
| return 0; | |||
| return 1; | |||
| } | |||
| int iswspace(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (isspace(c)); | |||
| return isspace(c); | |||
| if (c == 0xa0) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| int iswpunct(int c) | |||
| { | |||
| if (c < 0x100) | |||
| return (ispunct(c)); | |||
| return (0); | |||
| return ispunct(c); | |||
| return 0; | |||
| } | |||
| const wchar_t *wcschr(const wchar_t *str, int c) | |||
| { | |||
| while (*str != 0) { | |||
| if (*str == c) | |||
| return (str); | |||
| return str; | |||
| str++; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| #ifndef WINCE | |||
| @@ -403,7 +403,7 @@ const int wcslen(const wchar_t *str) | |||
| while (*str != 0) { | |||
| ix++; | |||
| } | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| #endif | |||
| @@ -418,7 +418,7 @@ float wcstod(const wchar_t *str, wchar_t **tailptr) | |||
| break; | |||
| } | |||
| *tailptr = (wchar_t *)&str[ix]; | |||
| return (atof(buf)); | |||
| return atof(buf); | |||
| } | |||
| #endif | |||
| @@ -428,35 +428,35 @@ float wcstod(const wchar_t *str, wchar_t **tailptr) | |||
| int iswalpha2(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (isalpha(c)); | |||
| return isalpha(c); | |||
| if ((c > 0x3040) && (c <= 0xa700)) | |||
| return (1); // japanese, chinese characters | |||
| return 1; // japanese, chinese characters | |||
| if (c > MAX_WALPHA) | |||
| return (iswalpha(c)); | |||
| return (walpha_tab[c-0x80]); | |||
| return iswalpha(c); | |||
| return walpha_tab[c-0x80]; | |||
| } | |||
| int iswlower2(int c) | |||
| { | |||
| if (c < 0x80) | |||
| return (islower(c)); | |||
| return islower(c); | |||
| if (c > MAX_WALPHA) | |||
| return (iswlower(c)); | |||
| return iswlower(c); | |||
| if (walpha_tab[c-0x80] == 0xff) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| int iswupper2(int c) | |||
| { | |||
| int x; | |||
| if (c < 0x80) | |||
| return (isupper(c)); | |||
| return isupper(c); | |||
| if (c > MAX_WALPHA) | |||
| return (iswupper(c)); | |||
| return iswupper(c); | |||
| if (((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe)) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| int towlower2(unsigned int c) | |||
| @@ -472,47 +472,47 @@ int towlower2(unsigned int c) | |||
| } | |||
| if (c < 0x80) | |||
| return (tolower(c)); | |||
| return tolower(c); | |||
| if (c > MAX_WALPHA) | |||
| return (towlower(c)); | |||
| return towlower(c); | |||
| if ((x = walpha_tab[c-0x80]) >= 0xfe) | |||
| return (c); // this is not an upper case letter | |||
| return c; // this is not an upper case letter | |||
| if (x == 0xfd) { | |||
| // special cases, lookup translation table | |||
| for (ix = 0; wchar_tolower[ix] != 0; ix += 2) { | |||
| if (wchar_tolower[ix] == (int)c) | |||
| return (wchar_tolower[ix+1]); | |||
| return wchar_tolower[ix+1]; | |||
| } | |||
| } | |||
| return (c + x); // convert to lower case | |||
| return c + x; // convert to lower case | |||
| } | |||
| int towupper2(unsigned int c) | |||
| { | |||
| int ix; | |||
| if (c > MAX_WALPHA) | |||
| return (towupper(c)); | |||
| return towupper(c); | |||
| // check whether a previous character code is the upper-case equivalent of this character | |||
| if (towlower2(c-32) == (int)c) | |||
| return (c-32); // yes, use it | |||
| return c-32; // yes, use it | |||
| if (towlower2(c-1) == (int)c) | |||
| return (c-1); | |||
| return c-1; | |||
| for (ix = 0; wchar_toupper[ix] != 0; ix += 2) { | |||
| if (wchar_toupper[ix] == (int)c) | |||
| return (wchar_toupper[ix+1]); | |||
| return wchar_toupper[ix+1]; | |||
| } | |||
| return (c); // no | |||
| return c; // no | |||
| } | |||
| static int IsRomanU(unsigned int c) | |||
| { | |||
| if ((c == 'I') || (c == 'V') || (c == 'X') || (c == 'L')) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| @@ -531,12 +531,12 @@ static void GetC_unget(int c) | |||
| int Eof(void) | |||
| { | |||
| if (ungot_char != 0) | |||
| return (0); | |||
| return 0; | |||
| if (f_input != 0) | |||
| return (feof(f_input)); | |||
| return feof(f_input); | |||
| return (end_of_input); | |||
| return end_of_input; | |||
| } | |||
| @@ -554,33 +554,33 @@ static int GetC_get(void) | |||
| if (feof(f_input)) c2 = 0; | |||
| c = c + (c2 << 8); | |||
| } | |||
| return (c); | |||
| return c; | |||
| } | |||
| if (option_multibyte == espeakCHARS_WCHAR) { | |||
| if (*p_wchar_input == 0) { | |||
| end_of_input = 1; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (!end_of_input) | |||
| return (*p_wchar_input++); | |||
| return *p_wchar_input++; | |||
| } else { | |||
| if (*p_textinput == 0) { | |||
| end_of_input = 1; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (!end_of_input) { | |||
| if (option_multibyte == espeakCHARS_16BIT) { | |||
| c = p_textinput[0] + (p_textinput[1] << 8); | |||
| p_textinput += 2; | |||
| return (c); | |||
| return c; | |||
| } | |||
| return (*p_textinput++ & 0xff); | |||
| return *p_textinput++ & 0xff; | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -600,7 +600,7 @@ static int GetC(void) | |||
| if ((c1 = ungot_char) != 0) { | |||
| ungot_char = 0; | |||
| return (c1); | |||
| return c1; | |||
| } | |||
| if (ungot2 != 0) { | |||
| @@ -612,7 +612,7 @@ static int GetC(void) | |||
| if ((option_multibyte == espeakCHARS_WCHAR) || (option_multibyte == espeakCHARS_16BIT)) { | |||
| count_characters++; | |||
| return (c1); // wchar_t text | |||
| return c1; // wchar_t text | |||
| } | |||
| if ((option_multibyte < 2) && (c1 & 0x80)) { | |||
| @@ -648,7 +648,7 @@ static int GetC(void) | |||
| } | |||
| if (ix == 0) { | |||
| count_characters++; | |||
| return (c); | |||
| return c; | |||
| } | |||
| } | |||
| // top-bit-set character is not utf8, drop through to 8bit charset case | |||
| @@ -659,8 +659,8 @@ static int GetC(void) | |||
| // 8 bit character set, convert to unicode if | |||
| count_characters++; | |||
| if (c1 >= 0xa0) | |||
| return (translator->charset_a0[c1-0xa0]); | |||
| return (c1); | |||
| return translator->charset_a0[c1-0xa0]; | |||
| return c1; | |||
| } | |||
| @@ -683,7 +683,7 @@ const char *WordToString2(unsigned int word) | |||
| p++; | |||
| } | |||
| *p = 0; | |||
| return (buf); | |||
| return buf; | |||
| } | |||
| @@ -699,9 +699,9 @@ static const char *LookupSpecial(Translator *tr, const char *string, char *text_ | |||
| SetWordStress(tr, phonemes, flags, -1, 0); | |||
| DecodePhonemes(phonemes, phonemes2); | |||
| sprintf(text_out, "[\002%s]]", phonemes2); | |||
| return (text_out); | |||
| return text_out; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -774,7 +774,7 @@ static const char *LookupCharName(Translator *tr, int c, int only) | |||
| strcpy(buf, "[\002(X1)(X1)(X1)]]"); | |||
| } | |||
| return (buf); | |||
| return buf; | |||
| } | |||
| int Read4Bytes(FILE *f) | |||
| @@ -788,7 +788,7 @@ int Read4Bytes(FILE *f) | |||
| c = fgetc(f) & 0xff; | |||
| acc += (c << (ix*8)); | |||
| } | |||
| return (acc); | |||
| return acc; | |||
| } | |||
| @@ -807,7 +807,7 @@ static int LoadSoundFile(const char *fname, int index) | |||
| } | |||
| if (fname == NULL) | |||
| return (1); | |||
| return 1; | |||
| if (fname[0] != '/') { | |||
| // a relative path, look in espeak-data/soundicons | |||
| @@ -848,7 +848,7 @@ static int LoadSoundFile(const char *fname, int index) | |||
| f = fopen(fname, "rb"); | |||
| if (f == NULL) { | |||
| fprintf(stderr, "Can't read temp file: %s\n", fname); | |||
| return (3); | |||
| return 3; | |||
| } | |||
| } | |||
| @@ -856,7 +856,7 @@ static int LoadSoundFile(const char *fname, int index) | |||
| fseek(f, 0, SEEK_SET); | |||
| if ((p = (char *)realloc(soundicon_tab[index].data, length)) == NULL) { | |||
| fclose(f); | |||
| return (4); | |||
| return 4; | |||
| } | |||
| length = fread(p, 1, length, f); | |||
| fclose(f); | |||
| @@ -865,7 +865,7 @@ static int LoadSoundFile(const char *fname, int index) | |||
| ip = (int *)(&p[40]); | |||
| soundicon_tab[index].length = (*ip) / 2; // length in samples | |||
| soundicon_tab[index].data = p; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -878,12 +878,12 @@ static int LookupSoundicon(int c) | |||
| if (soundicon_tab[ix].name == c) { | |||
| if (soundicon_tab[ix].length == 0) { | |||
| if (LoadSoundFile(NULL, ix) != 0) | |||
| return (-1); // sound file is not available | |||
| return -1; // sound file is not available | |||
| } | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| } | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| @@ -897,7 +897,7 @@ static int LoadSoundFile2(const char *fname) | |||
| for (ix = 0; ix < n_soundicon_tab; ix++) { | |||
| if (((soundicon_tab[ix].filename != NULL) && strcmp(fname, soundicon_tab[ix].filename) == 0)) | |||
| return (ix); // already loaded | |||
| return ix; // already loaded | |||
| } | |||
| // load the file into the next slot | |||
| @@ -906,11 +906,11 @@ static int LoadSoundFile2(const char *fname) | |||
| slot = 0; | |||
| if (LoadSoundFile(fname, slot) != 0) | |||
| return (-1); | |||
| return -1; | |||
| soundicon_tab[slot].filename = (char *)realloc(soundicon_tab[ix].filename, strlen(fname)+1); | |||
| strcpy(soundicon_tab[slot].filename, fname); | |||
| return (slot); | |||
| return slot; | |||
| } | |||
| @@ -951,7 +951,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output | |||
| } | |||
| if (punctname == NULL) | |||
| return (-1); | |||
| return -1; | |||
| if ((*bufix == 0) || (end_clause == 0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) { | |||
| punct_count = 1; | |||
| @@ -1003,10 +1003,10 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output | |||
| *bufix += len; | |||
| if (end_clause == 0) | |||
| return (-1); | |||
| return -1; | |||
| if (c1 == '-') | |||
| return (CLAUSE_NONE); // no pause | |||
| return CLAUSE_NONE; // no pause | |||
| attributes = punct_attributes[lookupwchar(punct_chars, c1)]; | |||
| @@ -1016,14 +1016,14 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output | |||
| if ((bufix1 > 0) && !(tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2)) { | |||
| if ((attributes & ~0x8000) == CLAUSE_SEMICOLON) | |||
| return (CLAUSE_SHORTFALL); | |||
| return (short_pause); | |||
| return CLAUSE_SHORTFALL; | |||
| return short_pause; | |||
| } | |||
| if (attributes & CLAUSE_BIT_SENTENCE) | |||
| return (attributes); | |||
| return attributes; | |||
| return (short_pause); | |||
| return short_pause; | |||
| } | |||
| #define SSML_SPEAK 1 | |||
| @@ -1153,15 +1153,15 @@ static const char *VoiceFromStack() | |||
| voice_select.languages = language; | |||
| v_id = SelectVoice(&voice_select, &voice_found); | |||
| if (v_id == NULL) | |||
| return ("default"); | |||
| return "default"; | |||
| if ((strchr(v_id, '+') == NULL) && ((voice_select.gender == 0) || (voice_select.gender == base_voice.gender)) && (base_voice_variant_name[0] != 0)) { | |||
| // a voice variant has not been selected, use the original voice variant | |||
| sprintf(buf, "%s+%s", v_id, base_voice_variant_name); | |||
| strncpy0(voice_name, buf, sizeof(voice_name)); | |||
| return (voice_name); | |||
| return voice_name; | |||
| } | |||
| return (v_id); | |||
| return v_id; | |||
| } | |||
| @@ -1231,7 +1231,7 @@ static PARAM_STACK *PushParamStack(int tag_type) | |||
| for (ix = 0; ix < N_SPEECH_PARAM; ix++) { | |||
| sp->parameter[ix] = -1; | |||
| } | |||
| return (sp); | |||
| return sp; | |||
| } | |||
| @@ -1277,14 +1277,14 @@ static wchar_t *GetSsmlAttribute(wchar_t *pw, const char *name) | |||
| if (*pw == '=') pw++; | |||
| while (iswspace(*pw)) pw++; | |||
| if ((*pw == '"') || (*pw == '\'')) // allow single-quotes ? | |||
| return (pw+1); | |||
| return pw+1; | |||
| else | |||
| return (empty); | |||
| return empty; | |||
| } | |||
| } | |||
| pw++; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -1293,13 +1293,13 @@ static int attrcmp(const wchar_t *string1, const char *string2) | |||
| int ix; | |||
| if (string1 == NULL) | |||
| return (1); | |||
| return 1; | |||
| for (ix = 0; (string1[ix] == string2[ix]) && (string1[ix] != 0); ix++) { | |||
| } | |||
| if (((string1[ix] == '"') || (string1[ix] == '\'')) && (string2[ix] == 0)) | |||
| return (0); | |||
| return (1); | |||
| return 0; | |||
| return 1; | |||
| } | |||
| @@ -1309,9 +1309,9 @@ static int attrlookup(const wchar_t *string1, const MNEM_TAB *mtab) | |||
| for (ix = 0; mtab[ix].mnem != NULL; ix++) { | |||
| if (attrcmp(string1, mtab[ix].mnem) == 0) | |||
| return (mtab[ix].value); | |||
| return mtab[ix].value; | |||
| } | |||
| return (mtab[ix].value); | |||
| return mtab[ix].value; | |||
| } | |||
| @@ -1320,7 +1320,7 @@ static int attrnumber(const wchar_t *pw, int default_value, int type) | |||
| int value = 0; | |||
| if ((pw == NULL) || !IsDigit09(*pw)) | |||
| return (default_value); | |||
| return default_value; | |||
| while (IsDigit09(*pw)) { | |||
| value = value*10 + *pw++ - '0'; | |||
| @@ -1329,7 +1329,7 @@ static int attrnumber(const wchar_t *pw, int default_value, int type) | |||
| // time: seconds rather than ms | |||
| value *= 1000; | |||
| } | |||
| return (value); | |||
| return value; | |||
| } | |||
| @@ -1352,7 +1352,7 @@ static int attrcopy_utf8(char *buf, const wchar_t *pw, int len) | |||
| } | |||
| } | |||
| buf[ix] = 0; | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| @@ -1376,14 +1376,14 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) | |||
| if (tail == pw) { | |||
| // failed to find a number, return 100% | |||
| *value_out = 100; | |||
| return (2); | |||
| return 2; | |||
| } | |||
| if (*tail == '%') { | |||
| if (sign != 0) | |||
| value = 100 + (sign * value); | |||
| *value_out = (int)value; | |||
| return (2); // percentage | |||
| return 2; // percentage | |||
| } | |||
| if ((tail[0] == 's') && (tail[1] == 't')) { | |||
| @@ -1395,7 +1395,7 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) | |||
| x = pow((double)2.0, (double)((value*sign)/12)) * 100; | |||
| *value_out = (int)x; | |||
| #endif | |||
| return (2); // percentage | |||
| return 2; // percentage | |||
| } | |||
| if (param_type == espeakRATE) { | |||
| @@ -1403,11 +1403,11 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) | |||
| *value_out = (int)(value * 100); | |||
| else | |||
| *value_out = 100 + (int)(sign * value * 100); | |||
| return (2); // percentage | |||
| return 2; // percentage | |||
| } | |||
| *value_out = (int)value; | |||
| return (sign); // -1, 0, or 1 | |||
| return sign; // -1, 0, or 1 | |||
| } | |||
| @@ -1429,7 +1429,7 @@ int AddNameData(const char *name, int wide) | |||
| if (namedata_ix+len >= n_namedata) { | |||
| // allocate more space for marker names | |||
| if ((vp = realloc(namedata, namedata_ix+len + 1000)) == NULL) | |||
| return (-1); // failed to allocate, original data is unchanged but ignore this new name | |||
| return -1; // failed to allocate, original data is unchanged but ignore this new name | |||
| // !!! Bug?? If the allocated data shifts position, then pointers given to user application will be invalid | |||
| namedata = (char *)vp; | |||
| @@ -1437,7 +1437,7 @@ int AddNameData(const char *name, int wide) | |||
| } | |||
| memcpy(&namedata[ix = namedata_ix], name, len); | |||
| namedata_ix += len; | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| @@ -1512,7 +1512,7 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type) | |||
| } | |||
| if ((tag_type != SSML_VOICE) && (lang == NULL)) | |||
| return (0); // <s> or <p> without language spec, nothing to do | |||
| return 0; // <s> or <p> without language spec, nothing to do | |||
| ssml_sp = &ssml_stack[n_ssml_stack++]; | |||
| @@ -1530,10 +1530,10 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type) | |||
| if (strcmp(new_voice_id, current_voice_id) != 0) { | |||
| // add an embedded command to change the voice | |||
| strcpy(current_voice_id, new_voice_id); | |||
| return (CLAUSE_BIT_VOICE); // change of voice | |||
| return CLAUSE_BIT_VOICE; // change of voice | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1627,9 +1627,9 @@ static int ReplaceKeyName(char *outbuf, int index, int *outix) | |||
| if ((letter = LookupMnem(keynames, p)) != 0) { | |||
| ix = utf8_out(letter, p); | |||
| *outix = index + ix; | |||
| return (letter); | |||
| return letter; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1737,7 +1737,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| } | |||
| if (self_closing && ignore_if_self_closing[tag_type]) | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1879,7 +1879,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| // This is the marker we are waiting for before starting to speak | |||
| clear_skipping_text = 1; | |||
| skip_marker[0] = 0; | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| } | |||
| if ((index = AddNameData(buf, 0)) >= 0) { | |||
| @@ -1928,12 +1928,12 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| PopParamStack(tag_type, outbuf, outix); | |||
| else | |||
| audio_text = 1; | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| case SSML_AUDIO + SSML_CLOSE: | |||
| PopParamStack(tag_type, outbuf, outix); | |||
| audio_text = 0; | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| case SSML_BREAK: | |||
| value = 21; | |||
| @@ -1970,7 +1970,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| value = 0xfff; | |||
| terminator |= CLAUSE_PAUSE_LONG; | |||
| } | |||
| return (terminator + value); | |||
| return terminator + value; | |||
| } | |||
| break; | |||
| @@ -1982,20 +1982,20 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| } | |||
| } | |||
| if (GetVoiceAttributes(px, tag_type) == 0) | |||
| return (0); // no voice change | |||
| return (CLAUSE_VOICE); | |||
| return 0; // no voice change | |||
| return CLAUSE_VOICE; | |||
| case SSML_VOICE: | |||
| if (GetVoiceAttributes(px, tag_type) == 0) | |||
| return (0); // no voice change | |||
| return (CLAUSE_VOICE); | |||
| return 0; // no voice change | |||
| return CLAUSE_VOICE; | |||
| case SSML_SPEAK + SSML_CLOSE: | |||
| // unwind stack until the previous <voice> or <speak> tag | |||
| while ((n_ssml_stack > 1) && (ssml_stack[n_ssml_stack-1].tag_type != SSML_SPEAK)) { | |||
| n_ssml_stack--; | |||
| } | |||
| return (CLAUSE_PERIOD + GetVoiceAttributes(px, tag_type)); | |||
| return CLAUSE_PERIOD + GetVoiceAttributes(px, tag_type); | |||
| case SSML_VOICE + SSML_CLOSE: | |||
| // unwind stack until the previous <voice> or <speak> tag | |||
| @@ -2004,11 +2004,11 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| } | |||
| terminator = 0; // ?? Sentence intonation, but no pause ?? | |||
| return (terminator + GetVoiceAttributes(px, tag_type)); | |||
| return terminator + GetVoiceAttributes(px, tag_type); | |||
| case HTML_BREAK: | |||
| case HTML_BREAK + SSML_CLOSE: | |||
| return (CLAUSE_COLON); | |||
| return CLAUSE_COLON; | |||
| case SSML_SENTENCE: | |||
| if (ssml_sp->tag_type == SSML_SENTENCE) { | |||
| @@ -2016,7 +2016,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| voice_change_flag = GetVoiceAttributes(px, SSML_SENTENCE+SSML_CLOSE); | |||
| } | |||
| voice_change_flag |= GetVoiceAttributes(px, tag_type); | |||
| return (CLAUSE_PARAGRAPH + voice_change_flag); | |||
| return CLAUSE_PARAGRAPH + voice_change_flag; | |||
| case SSML_PARAGRAPH: | |||
| @@ -2029,7 +2029,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| voice_change_flag |= GetVoiceAttributes(px, SSML_PARAGRAPH+SSML_CLOSE); | |||
| } | |||
| voice_change_flag |= GetVoiceAttributes(px, tag_type); | |||
| return (CLAUSE_PARAGRAPH + voice_change_flag); | |||
| return CLAUSE_PARAGRAPH + voice_change_flag; | |||
| case SSML_SENTENCE + SSML_CLOSE: | |||
| @@ -2037,18 +2037,18 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outb | |||
| // end of a sentence which specified a language | |||
| voice_change_flag = GetVoiceAttributes(px, tag_type); | |||
| } | |||
| return (CLAUSE_PERIOD + voice_change_flag); | |||
| return CLAUSE_PERIOD + voice_change_flag; | |||
| case SSML_PARAGRAPH + SSML_CLOSE: | |||
| if ((ssml_sp->tag_type == SSML_SENTENCE) || (ssml_sp->tag_type == SSML_PARAGRAPH)) { | |||
| // End of a paragraph which specified a language. | |||
| // (End-of-paragraph also implies end-of-sentence) | |||
| return (GetVoiceAttributes(px, tag_type) + CLAUSE_PARAGRAPH); | |||
| return GetVoiceAttributes(px, tag_type) + CLAUSE_PARAGRAPH; | |||
| } | |||
| return (CLAUSE_PARAGRAPH); | |||
| return CLAUSE_PARAGRAPH; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2145,7 +2145,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| if (!iswalnum(c1)) { | |||
| if ((end_character_position > 0) && (count_characters > end_character_position)) { | |||
| end_of_input = 1; | |||
| return (CLAUSE_EOF); | |||
| return CLAUSE_EOF; | |||
| } | |||
| if ((skip_characters > 0) && (count_characters >= skip_characters)) { | |||
| @@ -2154,7 +2154,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| clear_skipping_text = 1; | |||
| skip_characters = 0; | |||
| UngetC(c2); | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| } | |||
| } | |||
| @@ -2235,7 +2235,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| ungot_char2 = c1; | |||
| buf[ix] = ' '; | |||
| buf[ix+1] = 0; | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| } | |||
| // SSML Tag | |||
| @@ -2267,7 +2267,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| if (terminator & CLAUSE_BIT_VOICE) { | |||
| strcpy(voice_change, current_voice_id); | |||
| } | |||
| return (terminator); | |||
| return terminator; | |||
| } | |||
| c1 = ' '; | |||
| c2 = GetC(); | |||
| @@ -2292,7 +2292,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| } | |||
| buf[ix] = ' '; | |||
| buf[ix+1] = 0; | |||
| return (terminator); | |||
| return terminator; | |||
| } | |||
| if ((c1 == CTRL_EMBEDDED) || (c1 == ctrl_embedded)) { | |||
| @@ -2302,7 +2302,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| while (!iswspace(c1 = GetC()) && !Eof() && (ix < (n_buf-1))) | |||
| buf[ix++] = c1; // add voice name to end of buffer, after the text | |||
| buf[ix++] = 0; | |||
| return (CLAUSE_VOICE); | |||
| return CLAUSE_VOICE; | |||
| } else if (c2 == 'B') { | |||
| // set the punctuation option from an embedded command | |||
| // B0 B1 B<punct list><space> | |||
| @@ -2368,7 +2368,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| ungot_word = "i "; | |||
| UngetC(c2); | |||
| p_word[0] = 0; | |||
| return (CLAUSE_PERIOD); | |||
| return CLAUSE_PERIOD; | |||
| } | |||
| } | |||
| } | |||
| @@ -2429,7 +2429,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| if (parag > 3) | |||
| parag = 3; | |||
| if (option_ssml) parag = 1; | |||
| return ((CLAUSE_PARAGRAPH-30) + 30*parag); // several blank lines, longer pause | |||
| return (CLAUSE_PARAGRAPH-30) + 30*parag; // several blank lines, longer pause | |||
| } | |||
| if (linelength <= option_linelength) { | |||
| @@ -2437,7 +2437,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| UngetC(c2); | |||
| buf[ix] = ' '; | |||
| buf[ix+1] = 0; | |||
| return (CLAUSE_COLON); | |||
| return CLAUSE_COLON; | |||
| } | |||
| linelength = 0; | |||
| @@ -2459,7 +2459,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| ungot_char2 = c1; | |||
| buf[end_clause_index] = ' '; // delete the end-clause punctuation | |||
| buf[end_clause_index+1] = 0; | |||
| return (end_clause_after_tag); | |||
| return end_clause_after_tag; | |||
| } | |||
| end_clause_after_tag = 0; | |||
| } | |||
| @@ -2502,7 +2502,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| if ((option_punctuation == 1) || (wcschr(option_punctlist, c1) != NULL)) { | |||
| tr->phonemes_repeat_count = 0; | |||
| if ((terminator = AnnouncePunctuation(tr, c1, &c2, buf, &ix, is_end_clause)) >= 0) | |||
| return (terminator); | |||
| return terminator; | |||
| announced_punctuation = c1; | |||
| } | |||
| } | |||
| @@ -2591,10 +2591,10 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| } | |||
| if (nl_count > 1) { | |||
| if ((punct_data == CLAUSE_QUESTION) || (punct_data == CLAUSE_EXCLAMATION)) | |||
| return (punct_data + 35); // with a longer pause | |||
| return (CLAUSE_PARAGRAPH); | |||
| return punct_data + 35; // with a longer pause | |||
| return CLAUSE_PARAGRAPH; | |||
| } | |||
| return (punct_data); // only recognise punctuation if followed by a blank or bracket/quote | |||
| return punct_data; // only recognise punctuation if followed by a blank or bracket/quote | |||
| } else { | |||
| if (!Eof()) { | |||
| if (iswspace(c2)) | |||
| @@ -2636,7 +2636,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| buf[ix] = ' '; | |||
| buf[ix+1] = 0; | |||
| UngetC(c2); | |||
| return (CLAUSE_NONE); | |||
| return CLAUSE_NONE; | |||
| } | |||
| } | |||
| @@ -2648,7 +2648,7 @@ int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix | |||
| } | |||
| buf[ix] = ' '; | |||
| buf[ix+1] = 0; | |||
| return (CLAUSE_EOF); // end of file | |||
| return CLAUSE_EOF; // end of file | |||
| } | |||
| @@ -123,7 +123,7 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event) | |||
| out_samplerate = voice_samplerate; | |||
| if (!wave_init(voice_samplerate)) { | |||
| err = EE_INTERNAL_ERROR; | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| wave_set_callback_is_output_enabled(fifo_is_command_enabled); | |||
| my_audio = wave_open("alsa"); | |||
| @@ -172,7 +172,7 @@ static int dispatch_audio(short *outbuf, int length, espeak_EVENT *event) | |||
| SHOW_TIME("LEAVE dispatch_audio\n"); | |||
| return (a_wave_can_be_played == 0); // 1 = stop synthesis, -1 = error | |||
| return a_wave_can_be_played == 0; // 1 = stop synthesis, -1 = error | |||
| } | |||
| @@ -283,12 +283,12 @@ int GetFileLength(const char *filename) | |||
| struct stat statbuf; | |||
| if (stat(filename, &statbuf) != 0) | |||
| return (0); | |||
| return 0; | |||
| if (S_ISDIR(statbuf.st_mode)) | |||
| return (-2); // a directory | |||
| return -2; // a directory | |||
| return (statbuf.st_size); | |||
| return statbuf.st_size; | |||
| } | |||
| #pragma GCC visibility pop | |||
| @@ -298,7 +298,7 @@ char *Alloc(int size) | |||
| char *p; | |||
| if ((p = (char *)malloc(size)) == NULL) | |||
| fprintf(stderr, "Can't allocate memory\n"); // I was told that size+1 fixes a crash on 64-bit systems | |||
| return (p); | |||
| return p; | |||
| } | |||
| void Free(void *ptr) | |||
| @@ -387,7 +387,7 @@ static int initialise(int control) | |||
| for (param = 0; param < N_SPEECH_PARAM; param++) | |||
| param_stack[0].parameter[param] = param_defaults[param]; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -409,7 +409,7 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
| #endif | |||
| if ((outbuf == NULL) || (event_list == NULL)) | |||
| return (EE_INTERNAL_ERROR); // espeak_Initialize() has not been called | |||
| return EE_INTERNAL_ERROR; // espeak_Initialize() has not been called | |||
| option_multibyte = flags & 7; | |||
| option_ssml = flags & espeakSSML; | |||
| @@ -448,7 +448,7 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
| if (SynthOnTimer() != 0) | |||
| break; | |||
| } | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| for (;;) { | |||
| @@ -507,7 +507,7 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, | |||
| } | |||
| } | |||
| } | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| #ifdef DEBUG_ENABLED | |||
| @@ -642,7 +642,7 @@ espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void * | |||
| aStatus = Synthesize(unique_identifier, text, flags | espeakSSML); | |||
| SHOW_TIME("LEAVE sync_espeak_Synth_Mark"); | |||
| return (aStatus); | |||
| return aStatus; | |||
| } | |||
| @@ -755,13 +755,13 @@ ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length | |||
| outbuf_size = (buf_length * samplerate)/500; | |||
| outbuf = (unsigned char *)realloc(outbuf, outbuf_size); | |||
| if ((out_start = outbuf) == NULL) | |||
| return (EE_INTERNAL_ERROR); | |||
| return EE_INTERNAL_ERROR; | |||
| // allocate space for event list. Allow 200 events per second. | |||
| // Add a constant to allow for very small buf_length | |||
| n_event_list = (buf_length*200)/1000 + 20; | |||
| if ((event_list = (espeak_EVENT *)realloc(event_list, sizeof(espeak_EVENT) * n_event_list)) == NULL) | |||
| return (EE_INTERNAL_ERROR); | |||
| return EE_INTERNAL_ERROR; | |||
| option_phonemes = 0; | |||
| option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA)); | |||
| @@ -781,7 +781,7 @@ ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length | |||
| fifo_init(); | |||
| #endif | |||
| return (samplerate); | |||
| return samplerate; | |||
| } | |||
| @@ -811,7 +811,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size, | |||
| *unique_identifier = 0; | |||
| if (synchronous_mode) { | |||
| return (sync_espeak_Synth(0, text, size, position, position_type, end_position, flags, user_data)); | |||
| return sync_espeak_Synth(0, text, size, position, position_type, end_position, flags, user_data); | |||
| } | |||
| #ifdef USE_ASYNC | |||
| @@ -869,7 +869,7 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size, | |||
| *unique_identifier = 0; | |||
| if (synchronous_mode) { | |||
| return (sync_espeak_Synth_Mark(0, text, size, index_mark, end_position, flags, user_data)); | |||
| return sync_espeak_Synth_Mark(0, text, size, index_mark, end_position, flags, user_data); | |||
| } | |||
| #ifdef USE_ASYNC | |||
| @@ -915,7 +915,7 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key) | |||
| if (synchronous_mode) { | |||
| sync_espeak_Key(key); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| #ifdef USE_ASYNC | |||
| @@ -944,7 +944,7 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) | |||
| if (synchronous_mode) { | |||
| sync_espeak_Char(character); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| t_espeak_command *c = create_espeak_char(character, NULL); | |||
| @@ -955,7 +955,7 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) | |||
| return a_error; | |||
| #else | |||
| sync_espeak_Char(character); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| #endif | |||
| } | |||
| @@ -964,7 +964,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name) | |||
| { | |||
| ENTER("espeak_SetVoiceByName"); | |||
| return (SetVoiceByName(name)); | |||
| return SetVoiceByName(name); | |||
| } | |||
| @@ -973,7 +973,7 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector | |||
| { | |||
| ENTER("espeak_SetVoiceByProperties"); | |||
| return (SetVoiceByProperties(voice_selector)); | |||
| return SetVoiceByProperties(voice_selector); | |||
| } | |||
| @@ -982,9 +982,9 @@ ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current) | |||
| ENTER("espeak_GetParameter"); | |||
| // current: 0=default value, 1=current value | |||
| if (current) { | |||
| return (param_stack[0].parameter[parameter]); | |||
| return param_stack[0].parameter[parameter]; | |||
| } else { | |||
| return (param_defaults[parameter]); | |||
| return param_defaults[parameter]; | |||
| } | |||
| } | |||
| @@ -1001,7 +1001,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| if (synchronous_mode) { | |||
| SetParameter(parameter, value, relative); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| t_espeak_command *c = create_espeak_parameter(parameter, value, relative); | |||
| @@ -1013,7 +1013,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu | |||
| return a_error; | |||
| #else | |||
| SetParameter(parameter, value, relative); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| #endif | |||
| } | |||
| @@ -1028,7 +1028,7 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist) | |||
| if (synchronous_mode) { | |||
| sync_espeak_SetPunctuationList(punctlist); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| t_espeak_command *c = create_espeak_punctuation_list(punctlist); | |||
| @@ -1039,7 +1039,7 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist) | |||
| return a_error; | |||
| #else | |||
| sync_espeak_SetPunctuationList(punctlist); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| #endif | |||
| } | |||
| @@ -1077,7 +1077,7 @@ ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, | |||
| option_multibyte = textmode & 7; | |||
| *textptr = TranslateClause(translator, NULL, *textptr, NULL, NULL); | |||
| return (GetTranslatedPhonemeString(phonememode)); | |||
| return GetTranslatedPhonemeString(phonememode); | |||
| } | |||
| @@ -1113,11 +1113,11 @@ ESPEAK_API int espeak_IsPlaying(void) | |||
| { | |||
| #ifdef USE_ASYNC | |||
| if ((my_mode == AUDIO_OUTPUT_PLAYBACK) && wave_is_busy(my_audio)) | |||
| return (1); | |||
| return 1; | |||
| return (fifo_is_busy()); | |||
| return fifo_is_busy(); | |||
| #else | |||
| return (0); | |||
| return 0; | |||
| #endif | |||
| } | |||
| @@ -1175,7 +1175,7 @@ ESPEAK_API const char *espeak_Info(const char **ptr) | |||
| if (ptr != NULL) { | |||
| *ptr = path_home; | |||
| } | |||
| return (version_string); | |||
| return version_string; | |||
| } | |||
| #pragma GCC visibility pop | |||
| @@ -86,7 +86,7 @@ float polint(float xa[], float ya[], int n, float x) | |||
| hp = xa[i+m]-x; | |||
| w = c[i+1]-d[i]; | |||
| if ((den = ho-hp) == 0.0) { | |||
| return (ya[2]); // two input xa are identical | |||
| return ya[2]; // two input xa are identical | |||
| } | |||
| den = w/den; | |||
| d[i] = hp*den; | |||
| @@ -94,7 +94,7 @@ float polint(float xa[], float ya[], int n, float x) | |||
| } | |||
| y += ((2*ns < (n-m) ? c[ns+1] : d[ns--])); | |||
| } | |||
| return (y); | |||
| return y; | |||
| } | |||
| @@ -187,7 +187,7 @@ int LoadFrame(SpectFrame *frame, FILE *stream, int file_format_type) | |||
| if (spect_data == NULL) { | |||
| fprintf(stderr, "Failed to allocate memory\n"); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| frame->max_y = 0; | |||
| @@ -198,7 +198,7 @@ int LoadFrame(SpectFrame *frame, FILE *stream, int file_format_type) | |||
| } | |||
| frame->spect = spect_data; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -226,7 +226,7 @@ double GetFrameRms(SpectFrame *frame, int seq_amplitude) | |||
| total += ((htab[h] * htab[h]) >> 10); | |||
| } | |||
| frame->rms = sqrt(total) / 7.25; | |||
| return (frame->rms); | |||
| return frame->rms; | |||
| } | |||
| @@ -272,13 +272,13 @@ static float GetFrameLength(SpectSeq *spect, int frame) | |||
| int ix; | |||
| float adjust = 0; | |||
| if (frame >= spect->numframes-1) return (0); | |||
| if (frame >= spect->numframes-1) return 0; | |||
| for (ix = frame+1; ix < spect->numframes-1; ix++) { | |||
| if (spect->frames[ix]->keyframe) break; // reached next keyframe | |||
| adjust += spect->frames[ix]->length_adjust; | |||
| } | |||
| return ((spect->frames[ix]->time - spect->frames[frame]->time) * 1000.0 + adjust); | |||
| return (spect->frames[ix]->time - spect->frames[frame]->time) * 1000.0 + adjust; | |||
| } | |||
| @@ -294,7 +294,7 @@ int LoadSpectSeq(SpectSeq *spect, const char *filename) | |||
| FILE *stream = fopen(filename, "rb"); | |||
| if (stream == NULL) { | |||
| fprintf(stderr, "Failed to open: '%s'", filename); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| fread(&id1, sizeof(uint32_t), 1, stream); | |||
| @@ -309,7 +309,7 @@ int LoadSpectSeq(SpectSeq *spect, const char *filename) | |||
| } else { | |||
| fprintf(stderr, "Unsupported spectral file format.\n"); | |||
| fclose(stream); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| fread(&name_len, sizeof(uint32_t), 1, stream); | |||
| @@ -326,7 +326,7 @@ int LoadSpectSeq(SpectSeq *spect, const char *filename) | |||
| if (n == 0) { | |||
| fclose(stream); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (spect->frames != NULL) { | |||
| @@ -383,5 +383,5 @@ int LoadSpectSeq(SpectSeq *spect, const char *filename) | |||
| spect->frames[ix]->length_adjust = spect->frames[ix]->length - GetFrameLength(spect, ix); | |||
| } | |||
| fclose(stream); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -127,7 +127,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| if (mbrola_voice == NULL) { | |||
| samplerate = samplerate_native; | |||
| SetParameter(espeakVOICETYPE, 0, 0); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice); | |||
| @@ -150,12 +150,12 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| #ifdef PLATFORM_WINDOWS | |||
| if (load_MBR() == FALSE) { // load mbrola.dll | |||
| fprintf(stderr, "Can't load mbrola.dll\n"); | |||
| return (EE_INTERNAL_ERROR); | |||
| return EE_INTERNAL_ERROR; | |||
| } | |||
| #endif | |||
| if (init_MBR(path) != 0) // initialise the required mbrola voice | |||
| return (EE_NOT_FOUND); | |||
| return EE_NOT_FOUND; | |||
| setNoError_MBR(1); // don't stop on phoneme errors | |||
| @@ -164,13 +164,13 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| size = GetFileLength(path); | |||
| if ((f_in = fopen(path, "rb")) == NULL) { | |||
| close_MBR(); | |||
| return (EE_NOT_FOUND); | |||
| return EE_NOT_FOUND; | |||
| } | |||
| if ((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab, size)) == NULL) { | |||
| fclose(f_in); | |||
| close_MBR(); | |||
| return (EE_INTERNAL_ERROR); | |||
| return EE_INTERNAL_ERROR; | |||
| } | |||
| mbrola_control = Read4Bytes(f_in); | |||
| @@ -189,7 +189,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| SetParameter(espeakVOICETYPE, 1, 0); | |||
| strcpy(mbrola_name, mbrola_voice); | |||
| mbrola_delay = 1000; // improve synchronization of events | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| @@ -254,7 +254,7 @@ static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev | |||
| if (pr->control & 0x10) { | |||
| mbr_name_prefix = pr->mbr_name; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| mnem = pr->mbr_name; | |||
| break; | |||
| @@ -268,7 +268,7 @@ static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev | |||
| mnem = (mnem << 8) | (mbr_name_prefix & 0xff); | |||
| } | |||
| mbr_name_prefix = 0; | |||
| return (mnem); | |||
| return mnem; | |||
| } | |||
| @@ -368,7 +368,7 @@ static char *WritePitch(int env, int pitch1, int pitch2, int split, int final) | |||
| if (final) | |||
| sprintf(output, "\t100 %d\n", p_end); | |||
| return (output); | |||
| return output; | |||
| } | |||
| @@ -586,7 +586,7 @@ int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| FILE *f_mbrola = NULL; | |||
| if (*n_ph == 0) | |||
| return (0); | |||
| return 0; | |||
| if (option_phonemes & espeakPHONEMES_MBROLA) { | |||
| // send mbrola data to a file, not to the mbrola library | |||
| @@ -650,17 +650,17 @@ void MbrolaReset(void) | |||
| espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate) | |||
| { | |||
| return (EE_INTERNAL_ERROR); | |||
| return EE_INTERNAL_ERROR; | |||
| } | |||
| int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int MbrolaFill(int length, int resume, int amplitude) | |||
| { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| void MbrolaReset(void) | |||
| @@ -86,7 +86,7 @@ static char *ReadPhFile(void *ptr, const char *fname, int *size) | |||
| if ((f_in = fopen(buf, "rb")) == NULL) { | |||
| fprintf(stderr, "Can't read data file: '%s'\n", buf); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| if (ptr != NULL) | |||
| @@ -94,18 +94,18 @@ static char *ReadPhFile(void *ptr, const char *fname, int *size) | |||
| if ((p = Alloc(length)) == NULL) { | |||
| fclose(f_in); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| if (fread(p, 1, length, f_in) != length) { | |||
| fclose(f_in); | |||
| Free(p); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| fclose(f_in); | |||
| if (size != NULL) | |||
| *size = length; | |||
| return (p); | |||
| return p; | |||
| } | |||
| @@ -121,13 +121,13 @@ int LoadPhData(int *srate) | |||
| int *pw; | |||
| if ((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data), "phontab", NULL)) == NULL) | |||
| return (-1); | |||
| return -1; | |||
| if ((phoneme_index = (USHORT *)ReadPhFile((void *)(phoneme_index), "phonindex", NULL)) == NULL) | |||
| return (-1); | |||
| return -1; | |||
| if ((phondata_ptr = ReadPhFile((void *)(phondata_ptr), "phondata", NULL)) == NULL) | |||
| return (-1); | |||
| return -1; | |||
| if ((tunes = (TUNE *)ReadPhFile((void *)(tunes), "intonations", &length)) == NULL) | |||
| return (-1); | |||
| return -1; | |||
| wavefile_data = (unsigned char *)phondata_ptr; | |||
| n_tunes = length / sizeof(TUNE); | |||
| @@ -166,7 +166,7 @@ int LoadPhData(int *srate) | |||
| if (srate != NULL) | |||
| *srate = rate; | |||
| return (result); | |||
| return result; | |||
| } | |||
| @@ -191,9 +191,9 @@ int PhonemeCode(unsigned int mnem) | |||
| if (phoneme_tab[ix] == NULL) | |||
| continue; | |||
| if (phoneme_tab[ix]->mnemonic == mnem) | |||
| return (phoneme_tab[ix]->code); | |||
| return phoneme_tab[ix]->code; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -211,7 +211,7 @@ int LookupPhonemeString(const char *string) | |||
| mnem |= (c << (ix*8)); | |||
| } | |||
| return (PhonemeCode(mnem)); | |||
| return PhonemeCode(mnem); | |||
| } | |||
| @@ -344,7 +344,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, | |||
| } | |||
| *n_frames = nf; | |||
| return (frames); | |||
| return frames; | |||
| } | |||
| @@ -353,9 +353,9 @@ unsigned char *GetEnvelope(int index) | |||
| { | |||
| if (index == 0) { | |||
| fprintf(stderr, "espeak: No envelope\n"); | |||
| return (envelope_data[0]); // not found, use a default envelope | |||
| return envelope_data[0]; // not found, use a default envelope | |||
| } | |||
| return ((unsigned char *)&phondata_ptr[index]); | |||
| return (unsigned char *)&phondata_ptr[index]; | |||
| } | |||
| @@ -409,9 +409,9 @@ int LookupPhonemeTable(const char *name) | |||
| } | |||
| } | |||
| if (ix == n_phoneme_tables) | |||
| return (-1); | |||
| return -1; | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| @@ -422,10 +422,10 @@ int SelectPhonemeTableName(const char *name) | |||
| int ix; | |||
| if ((ix = LookupPhonemeTable(name)) == -1) | |||
| return (-1); | |||
| return -1; | |||
| SelectPhonemeTable(ix); | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| @@ -508,7 +508,7 @@ static bool StressCondition(Translator *tr, PHONEME_LIST *plist, int condition, | |||
| if (phoneme_tab[plist[1].phcode]->type == phVOWEL) { | |||
| pl = &plist[1]; | |||
| } else | |||
| return (false); // no stress elevel for this consonant | |||
| return false; // no stress elevel for this consonant | |||
| } | |||
| stress_level = pl->stresslevel & 0xf; | |||
| @@ -516,7 +516,7 @@ static bool StressCondition(Translator *tr, PHONEME_LIST *plist, int condition, | |||
| if (tr != NULL) { | |||
| if ((control & 1) && (plist->synthflags & SFLAG_DICTIONARY) && ((tr->langopts.param[LOPT_REDUCE] & 1) == 0)) { | |||
| // change phoneme. Don't change phonemes which are given for the word in the dictionary. | |||
| return (false); | |||
| return false; | |||
| } | |||
| if ((tr->langopts.param[LOPT_REDUCE] & 0x2) && (stress_level >= pl->wordstress)) { | |||
| @@ -526,18 +526,18 @@ static bool StressCondition(Translator *tr, PHONEME_LIST *plist, int condition, | |||
| } | |||
| if (condition == 4) { | |||
| return (stress_level >= pl->wordstress); | |||
| return stress_level >= pl->wordstress; | |||
| } | |||
| if (condition == 3) { | |||
| // if stressed | |||
| if (stress_level > 3) | |||
| return (true); | |||
| return true; | |||
| } else { | |||
| if (stress_level < condition_level[condition]) | |||
| return (true); | |||
| return true; | |||
| } | |||
| return (false); | |||
| return false; | |||
| } | |||
| @@ -553,7 +553,7 @@ static int CountVowelPosition(PHONEME_LIST *plist) | |||
| break; | |||
| plist--; | |||
| } | |||
| return (count); | |||
| return count; | |||
| } | |||
| @@ -594,17 +594,17 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| if (which == 4) { | |||
| // nextPhW not word boundary | |||
| if (plist[1].sourceix) | |||
| return (false); | |||
| return false; | |||
| } | |||
| if (which == 5) { | |||
| // prevPhW, not word boundary | |||
| if (plist[0].sourceix) | |||
| return (false); | |||
| return false; | |||
| } | |||
| if (which == 6) { | |||
| // next2PhW, not word boundary | |||
| if (plist[1].sourceix || plist[2].sourceix) | |||
| return (false); | |||
| return false; | |||
| } | |||
| @@ -633,7 +633,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| // nextVowel, not word boundary | |||
| for (which = 1;; which++) { | |||
| if (plist[which].sourceix) | |||
| return (false); | |||
| return false; | |||
| if (phoneme_tab[plist[which].phcode]->type == phVOWEL) { | |||
| plist = &plist[which]; | |||
| break; | |||
| @@ -643,7 +643,7 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| case 8: // prevVowel in this word | |||
| if ((worddata == NULL) || (worddata->prev_vowel.ph == NULL)) | |||
| return (false); // no previous vowel | |||
| return false; // no previous vowel | |||
| plist = &(worddata->prev_vowel); | |||
| check_endtype = 1; | |||
| break; | |||
| @@ -651,14 +651,14 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| case 9: // next3PhW | |||
| for (ix = 1; ix <= 3; ix++) { | |||
| if (plist[ix].sourceix) | |||
| return (false); | |||
| return false; | |||
| } | |||
| plist = &plist[3]; | |||
| break; | |||
| case 10: // prev2PhW | |||
| if ((plist[0].sourceix) || (plist[-1].sourceix)) | |||
| return (false); | |||
| return false; | |||
| plist -= 2; | |||
| check_endtype = 1; | |||
| break; | |||
| @@ -680,12 +680,12 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| if (instn2 < 7) { | |||
| // 'data' is a phoneme number | |||
| if ((phoneme_tab[data]->mnemonic == ph->mnemonic) == true) | |||
| return (true); | |||
| return true; | |||
| // not an exact match, check for a vowel type (eg. #i ) | |||
| if ((check_endtype) && (ph->type == phVOWEL)) | |||
| return (data == ph->end_type); // prevPh() match on end_type | |||
| return (data == ph->start_type); // thisPh() or nextPh(), match on start_type | |||
| return data == ph->end_type; // prevPh() match on end_type | |||
| return data == ph->start_type; // thisPh() or nextPh(), match on start_type | |||
| } | |||
| data = instn & 0x1f; | |||
| @@ -694,17 +694,17 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| { | |||
| case 0x00: | |||
| // phoneme type, vowel, nasal, fricative, etc | |||
| return (ph->type == data); | |||
| return ph->type == data; | |||
| break; | |||
| case 0x20: | |||
| // place of articulation | |||
| return (((ph->phflags >> 16) & 0xf) == data); | |||
| return ((ph->phflags >> 16) & 0xf) == data; | |||
| break; | |||
| case 0x40: | |||
| // is a bit set in phoneme flags | |||
| return ((ph->phflags & (1 << data)) != 0); | |||
| return (ph->phflags & (1 << data)) != 0; | |||
| break; | |||
| case 0x80: | |||
| @@ -715,59 +715,59 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| case 2: | |||
| case 3: | |||
| case 4: | |||
| return (StressCondition(tr, plist, data, 0)); | |||
| return StressCondition(tr, plist, data, 0); | |||
| case 5: // isBreak, Either pause phoneme, or (stop/vstop/vfric not followed by vowel or (liquid in same word)) | |||
| return ((ph->type == phPAUSE) || (plist_this->synthflags & SFLAG_NEXT_PAUSE)); | |||
| return (ph->type == phPAUSE) || (plist_this->synthflags & SFLAG_NEXT_PAUSE); | |||
| case 6: // isWordStart | |||
| return (plist->sourceix != 0); | |||
| return plist->sourceix != 0; | |||
| case 7: // notWordStart | |||
| return (plist->sourceix == 0); | |||
| return plist->sourceix == 0; | |||
| case 8: // isWordEnd | |||
| return (plist[1].sourceix || (plist[1].ph->type == phPAUSE)); | |||
| return plist[1].sourceix || (plist[1].ph->type == phPAUSE); | |||
| break; | |||
| case 9: // isAfterStress | |||
| if (plist->sourceix != 0) | |||
| return (false); | |||
| return false; | |||
| do { | |||
| plist--; | |||
| if ((plist->stresslevel & 0xf) >= 4) | |||
| return (true); | |||
| return true; | |||
| } while (plist->sourceix == 0); | |||
| break; | |||
| case 10: // isNotVowel | |||
| return (ph->type != phVOWEL); | |||
| return ph->type != phVOWEL; | |||
| case 11: // isFinalVowel | |||
| for (;;) { | |||
| plist++; | |||
| // plist->ph = phoneme_tab[plist->phcode]; // Why was this line here?? It corrupts plist if we have language switching if phoneme_tab is wrong language | |||
| if (plist->sourceix != 0) | |||
| return (true); // start of next word, without finding another vowel | |||
| return true; // start of next word, without finding another vowel | |||
| if (plist->ph->type == phVOWEL) | |||
| return (false); | |||
| return false; | |||
| } | |||
| break; | |||
| case 12: // isVoiced | |||
| return ((ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED)); | |||
| return (ph->type == phVOWEL) || (ph->type == phLIQUID) || (ph->phflags & phVOICED); | |||
| case 13: // isFirstVowel | |||
| return (CountVowelPosition(plist) == 1); | |||
| return CountVowelPosition(plist) == 1; | |||
| case 14: // isSecondVowel | |||
| return (CountVowelPosition(plist) == 2); | |||
| return CountVowelPosition(plist) == 2; | |||
| case 15: // isSeqFlag1 | |||
| // is this preceded by a sequence if 1 or more vowels which have 'flag1' ? (lang=hi) | |||
| if (plist->sourceix != 0) | |||
| return (false); // this is the first phoneme in the word, so no. | |||
| return false; // this is the first phoneme in the word, so no. | |||
| count = 0; | |||
| for (;;) { | |||
| @@ -781,28 +781,28 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, | |||
| if (plist->sourceix != 0) | |||
| break; | |||
| } | |||
| return (count > 0); | |||
| return count > 0; | |||
| case 0x10: // isTranslationGiven | |||
| return ((plist->synthflags & SFLAG_DICTIONARY) != 0); | |||
| return (plist->synthflags & SFLAG_DICTIONARY) != 0; | |||
| } | |||
| break; | |||
| } | |||
| return (false); | |||
| return false; | |||
| } else if (instn2 == 0xf) { | |||
| // Other conditions | |||
| switch (data) | |||
| { | |||
| case 1: // PreVoicing | |||
| return (control & 1); | |||
| return control & 1; | |||
| case 2: // KlattSynth | |||
| return (voice->klattv[0] != 0); | |||
| return voice->klattv[0] != 0; | |||
| case 3: // MbrolaSynth | |||
| return (mbrola_name[0] != 0); | |||
| return mbrola_name[0] != 0; | |||
| } | |||
| } | |||
| return (false); | |||
| return false; | |||
| } | |||
| @@ -843,41 +843,41 @@ int NumInstnWords(USHORT *prog) | |||
| instn = *prog; | |||
| instn_type = instn >> 12; | |||
| if ((n = n_words[instn_type]) > 0) | |||
| return (n); | |||
| return n; | |||
| switch (instn_type) | |||
| { | |||
| case 0: | |||
| if (((instn & 0xf00) >> 8) == i_IPA_NAME) { | |||
| n = ((instn & 0xff) + 1) / 2; | |||
| return (n+1); | |||
| return n+1; | |||
| } | |||
| return (1);; | |||
| return 1; | |||
| case 6: | |||
| type2 = (instn & 0xf00) >> 9; | |||
| if ((type2 == 5) || (type2 == 6)) | |||
| return (12); // switch on vowel type | |||
| return (1); | |||
| return 12; // switch on vowel type | |||
| return 1; | |||
| case 2: | |||
| case 3: | |||
| // a condition, check for a 2-word instruction | |||
| if (((n = instn & 0x0f00) == 0x600) || (n == 0x0d00)) | |||
| return (2); | |||
| return (1); | |||
| return 2; | |||
| return 1; | |||
| default: | |||
| // instn_type 11 to 15, 2 words | |||
| instn2 = prog[2]; | |||
| if ((instn2 >> 12) == 0xf) { | |||
| // This instruction is followed by addWav(), 2 more words | |||
| return (4); | |||
| return 4; | |||
| } | |||
| if (instn2 == i_CONTINUE) { | |||
| return (3); | |||
| return 3; | |||
| } | |||
| return (2); | |||
| return 2; | |||
| } | |||
| } | |||
| @@ -88,7 +88,7 @@ const char *WordToString(unsigned int word) | |||
| for (ix = 0; ix < 4; ix++) | |||
| buf[ix] = word >> (ix*8); | |||
| buf[4] = 0; | |||
| return (buf); | |||
| return buf; | |||
| } | |||
| @@ -199,7 +199,7 @@ int PauseLength(int pause, int control) | |||
| if (len < speed.min_pause) { | |||
| len = speed.min_pause; // mS, limit the amount to which pauses can be shortened | |||
| } | |||
| return (len); | |||
| return len; | |||
| } | |||
| @@ -258,7 +258,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng | |||
| wav_length += p[0]; // length in bytes | |||
| if (wav_length == 0) | |||
| return (0); | |||
| return 0; | |||
| min_length = speed.min_sample_len; | |||
| @@ -304,7 +304,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng | |||
| } | |||
| if (amp < 0) | |||
| return (length); | |||
| return length; | |||
| len4 = wav_length / 4; | |||
| @@ -319,7 +319,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng | |||
| q[2] = (intptr_t)(&wavefile_data[index]); | |||
| q[3] = wav_scale + (amp << 8); | |||
| WcmdqInc(); | |||
| return (length); | |||
| return length; | |||
| } | |||
| if (length > wav_length) { | |||
| @@ -368,7 +368,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng | |||
| WcmdqInc(); | |||
| } | |||
| return (length); | |||
| return length; | |||
| } | |||
| @@ -397,7 +397,7 @@ int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp) | |||
| len = DoSample2(phdata->sound_addr[pd_WAV], 2, phdata->pd_param[pd_LENGTHMOD]*2, phdata->pd_control, length_mod, amp2); | |||
| } | |||
| last_frame = NULL; | |||
| return (len); | |||
| return len; | |||
| } | |||
| @@ -416,7 +416,7 @@ static frame_t *AllocFrame() | |||
| ix++; | |||
| if (ix >= N_FRAME_POOL) | |||
| ix = 0; | |||
| return (&frame_pool[ix]); | |||
| return &frame_pool[ix]; | |||
| } | |||
| @@ -489,7 +489,7 @@ static frame_t *CopyFrame(frame_t *frame1, int copy) | |||
| if ((copy == 0) && (frame1->frflags & FRFLAG_COPIED)) { | |||
| // this frame has already been copied in temporary rw memory | |||
| return (frame1); | |||
| return frame1; | |||
| } | |||
| frame2 = AllocFrame(); | |||
| @@ -498,7 +498,7 @@ static frame_t *CopyFrame(frame_t *frame1, int copy) | |||
| frame2->length = 0; | |||
| frame2->frflags |= FRFLAG_COPIED; | |||
| } | |||
| return (frame2); | |||
| return frame2; | |||
| } | |||
| @@ -562,12 +562,12 @@ static int VowelCloseness(frame_t *fr) | |||
| int f1; | |||
| if ((f1 = fr->ffreq[1]) < 300) | |||
| return (3); | |||
| return 3; | |||
| if (f1 < 400) | |||
| return (2); | |||
| return 2; | |||
| if (f1 < 500) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| @@ -598,7 +598,7 @@ int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsig | |||
| frame_t *fr = NULL; | |||
| if (*n_frames < 2) | |||
| return (0); | |||
| return 0; | |||
| len = (data1 & 0x3f) * 2; | |||
| rms = (data1 >> 6) & 0x3f; | |||
| @@ -699,8 +699,8 @@ int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsig | |||
| DoPause(20, 0); // add a short pause after the consonant | |||
| if (flags & 16) | |||
| return (len); | |||
| return (0); | |||
| return len; | |||
| return 0; | |||
| } | |||
| @@ -914,7 +914,7 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L | |||
| int frame_lengths[N_SEQ_FRAMES]; | |||
| if (fmt_params->fmt_addr == 0) | |||
| return (0); | |||
| return 0; | |||
| length_mod = plist->length; | |||
| if (length_mod == 0) length_mod = 256; | |||
| @@ -937,7 +937,7 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L | |||
| modn_flags = 0; | |||
| frames = LookupSpect(this_ph, which, fmt_params, &n_frames, plist); | |||
| if (frames == NULL) | |||
| return (0); // not found | |||
| return 0; // not found | |||
| if (fmt_params->fmt_amp != fmt_amplitude) { | |||
| // an amplitude adjustment is specified for this sequence | |||
| @@ -1073,7 +1073,7 @@ int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_L | |||
| } | |||
| return (total_len); | |||
| return total_len; | |||
| } | |||
| @@ -1223,13 +1223,13 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| static WORD_PH_DATA worddata; | |||
| if (option_quiet) | |||
| return (0); | |||
| return 0; | |||
| if (option_phoneme_events & espeakINITIALIZE_PHONEME_IPA) | |||
| use_ipa = 1; | |||
| if (mbrola_name[0] != 0) | |||
| return (MbrolaGenerate(phoneme_list, n_ph, resume)); | |||
| return MbrolaGenerate(phoneme_list, n_ph, resume); | |||
| if (resume == 0) { | |||
| ix = 1; | |||
| @@ -1259,7 +1259,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| free_min = MIN_WCMDQ; // 25 | |||
| if (WcmdqFree() <= free_min) | |||
| return (1); // wait | |||
| return 1; // wait | |||
| prev = &phoneme_list[ix-1]; | |||
| next = &phoneme_list[ix+1]; | |||
| @@ -1614,7 +1614,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| *n_ph = 0; | |||
| } | |||
| return (0); // finished the phoneme list | |||
| return 0; // finished the phoneme list | |||
| } | |||
| @@ -1626,7 +1626,7 @@ static int paused = 0; | |||
| int SynthOnTimer() | |||
| { | |||
| if (!timer_on) { | |||
| return (WavegenCloseSound()); | |||
| return WavegenCloseSound(); | |||
| } | |||
| do { | |||
| @@ -1638,13 +1638,13 @@ int SynthOnTimer() | |||
| } | |||
| } while (skipping_text); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int SynthStatus() | |||
| { | |||
| return (timer_on | paused); | |||
| return timer_on | paused; | |||
| } | |||
| @@ -1670,9 +1670,9 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| if (control == 4) { | |||
| if ((f_text == NULL) && (p_text == NULL)) | |||
| return (0); | |||
| return 0; | |||
| else | |||
| return (1); | |||
| return 1; | |||
| } | |||
| if (control == 2) { | |||
| @@ -1686,7 +1686,7 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| n_phoneme_list = 0; | |||
| WcmdqStop(); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (control == 3) { | |||
| @@ -1700,14 +1700,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| paused = 0; | |||
| Generate(phoneme_list, &n_phoneme_list, 0); // re-start from beginning of clause | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (control == 5) { | |||
| // stop speaking, but continue looking for text | |||
| n_phoneme_list = 0; | |||
| WcmdqStop(); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((f_in != NULL) || (text_in != NULL)) { | |||
| @@ -1720,14 +1720,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| if ((f_text == NULL) && (p_text == NULL)) { | |||
| skipping_text = 0; | |||
| timer_on = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((f_text != NULL) && feof(f_text)) { | |||
| timer_on = 0; | |||
| fclose(f_text); | |||
| f_text = NULL; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (current_phoneme_table != voice->phoneme_tab_ix) { | |||
| @@ -1754,7 +1754,7 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| if (skipping_text) { | |||
| n_phoneme_list = 0; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| Generate(phoneme_list, &n_phoneme_list, 0); | |||
| @@ -1772,5 +1772,5 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control) | |||
| new_voice = NULL; | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -115,9 +115,9 @@ ALPHABET *AlphabetFromName(const char *name) | |||
| for (alphabet = alphabets; alphabet->name != NULL; alphabet++) { | |||
| if (strcmp(name, &alphabet->name[1]) == 0) | |||
| return (alphabet); | |||
| return alphabet; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -129,13 +129,13 @@ ALPHABET *AlphabetFromChar(int c) | |||
| while (alphabet->name != NULL) { | |||
| if (c <= alphabet->range_max) { | |||
| if (c >= alphabet->range_min) | |||
| return (alphabet); | |||
| return alphabet; | |||
| else | |||
| break; | |||
| } | |||
| alphabet++; | |||
| } | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| @@ -239,7 +239,7 @@ static Translator *NewTranslator(void) | |||
| tr = (Translator *)Alloc(sizeof(Translator)); | |||
| if (tr == NULL) | |||
| return (NULL); | |||
| return NULL; | |||
| tr->charset_a0 = charsets[1]; // ISO-8859-1, this is for when the input is not utf8 | |||
| dictionary_name[0] = 0; | |||
| @@ -314,7 +314,7 @@ static Translator *NewTranslator(void) | |||
| memcpy(tr->langopts.tunes, default_tunes, sizeof(tr->langopts.tunes)); | |||
| return (tr); | |||
| return tr; | |||
| } | |||
| // common letter pairs, encode these as a single byte | |||
| @@ -1629,7 +1629,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->translator_name = name2; | |||
| ProcessLanguageOptions(&tr->langopts); | |||
| return (tr); | |||
| return tr; | |||
| } | |||
| @@ -382,80 +382,80 @@ int IsAlpha(unsigned int c) | |||
| }; | |||
| if (iswalpha2(c)) | |||
| return (1); | |||
| return 1; | |||
| if (c < 0x300) | |||
| return (0); | |||
| return 0; | |||
| if ((c >= 0x901) && (c <= 0xdf7)) { | |||
| // Indic scripts: Devanagari, Tamil, etc | |||
| if ((c & 0x7f) < 0x64) | |||
| return (1); | |||
| return 1; | |||
| if (lookupwchar(extra_indic_alphas, c) != 0) | |||
| return (1); | |||
| return 1; | |||
| if ((c >= 0xd7a) && (c <= 0xd7f)) | |||
| return (1); // malaytalam chillu characters | |||
| return 1; // malaytalam chillu characters | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((c >= 0x5b0) && (c <= 0x5c2)) | |||
| return (1); // Hebrew vowel marks | |||
| return 1; // Hebrew vowel marks | |||
| if (c == 0x0605) | |||
| return (1); | |||
| return 1; | |||
| if ((c == 0x670) || ((c >= 0x64b) && (c <= 0x65e))) | |||
| return (1); // arabic vowel marks | |||
| return 1; // arabic vowel marks | |||
| if ((c >= 0x300) && (c <= 0x36f)) | |||
| return (1); // combining accents | |||
| return 1; // combining accents | |||
| if ((c >= 0x780) && (c <= 0x7b1)) | |||
| return (1); // taani/divehi (maldives) | |||
| return 1; // taani/divehi (maldives) | |||
| if ((c >= 0xf40) && (c <= 0xfbc)) | |||
| return (1); // tibetan | |||
| return 1; // tibetan | |||
| if ((c >= 0x1100) && (c <= 0x11ff)) | |||
| return (1); // Korean jamo | |||
| return 1; // Korean jamo | |||
| if ((c >= 0x2800) && (c <= 0x28ff)) | |||
| return (1); // braille | |||
| return 1; // braille | |||
| if ((c > 0x3040) && (c <= 0xa700)) | |||
| return (1); // Chinese/Japanese. Should never get here, but Mac OS 10.4's iswalpha seems to be broken, so just make sure | |||
| return 1; // Chinese/Japanese. Should never get here, but Mac OS 10.4's iswalpha seems to be broken, so just make sure | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int IsDigit09(unsigned int c) | |||
| { | |||
| if ((c >= '0') && (c <= '9')) | |||
| return (1); | |||
| return (0); | |||
| return 1; | |||
| return 0; | |||
| } | |||
| int IsDigit(unsigned int c) | |||
| { | |||
| if (iswdigit(c)) | |||
| return (1); | |||
| return 1; | |||
| if ((c >= 0x966) && (c <= 0x96f)) | |||
| return (1); | |||
| return 1; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int IsSpace(unsigned int c) | |||
| { | |||
| if (c == 0) | |||
| return (0); | |||
| return 0; | |||
| if ((c >= 0x2500) && (c < 0x25a0)) | |||
| return (1); // box drawing characters | |||
| return 1; // box drawing characters | |||
| if ((c >= 0xfff9) && (c <= 0xffff)) | |||
| return (1); // unicode specials | |||
| return (iswspace(c)); | |||
| return 1; // unicode specials | |||
| return iswspace(c); | |||
| } | |||
| @@ -474,9 +474,9 @@ int lookupwchar(const unsigned short *list, int c) | |||
| for (ix = 0; list[ix] != 0; ix++) { | |||
| if (list[ix] == c) | |||
| return (ix+1); | |||
| return ix+1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -488,17 +488,17 @@ int lookupwchar2(const unsigned short *list, int c) | |||
| for (ix = 0; list[ix] != 0; ix += 2) { | |||
| if (list[ix] == c) | |||
| return (list[ix+1]); | |||
| return list[ix+1]; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int IsBracket(int c) | |||
| { | |||
| if ((c >= 0x2014) && (c <= 0x201f)) | |||
| return (1); | |||
| return (lookupwchar(brackets, c)); | |||
| return 1; | |||
| return lookupwchar(brackets, c); | |||
| } | |||
| @@ -513,11 +513,11 @@ int utf8_out(unsigned int c, char *buf) | |||
| if (c < 0x80) { | |||
| buf[0] = c; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| if (c >= 0x110000) { | |||
| buf[0] = ' '; // out of range character code | |||
| return (1); | |||
| return 1; | |||
| } | |||
| if (c < 0x0800) | |||
| n_bytes = 1; | |||
| @@ -532,7 +532,7 @@ int utf8_out(unsigned int c, char *buf) | |||
| shift -= 6; | |||
| buf[j+1] = 0x80 + ((c >> shift) & 0x3f); | |||
| } | |||
| return (n_bytes+1); | |||
| return n_bytes+1; | |||
| } | |||
| @@ -541,12 +541,12 @@ int utf8_nbytes(const char *buf) | |||
| // Returns the number of bytes for the first UTF-8 character in buf | |||
| unsigned char c = (unsigned char)buf[0]; | |||
| if (c < 0x80) | |||
| return (1); | |||
| return 1; | |||
| if (c < 0xe0) | |||
| return (2); | |||
| return 2; | |||
| if (c < 0xf0) | |||
| return (3); | |||
| return (4); | |||
| return 3; | |||
| return 4; | |||
| } | |||
| @@ -585,7 +585,7 @@ int utf8_in2(int *c, const char *buf, int backwards) | |||
| } | |||
| } | |||
| *c = c1; | |||
| return (n_bytes+1); | |||
| return n_bytes+1; | |||
| } | |||
| @@ -594,7 +594,7 @@ int utf8_in(int *c, const char *buf) | |||
| { | |||
| // Read a unicode characater from a UTF8 string | |||
| // Returns the number of UTF8 bytes used. | |||
| return (utf8_in2(c, buf, 0)); | |||
| return utf8_in2(c, buf, 0); | |||
| } | |||
| #pragma GCC visibility pop | |||
| @@ -603,8 +603,8 @@ char *strchr_w(const char *s, int c) | |||
| { | |||
| // return NULL for any non-ascii character | |||
| if (c >= 0x80) | |||
| return (NULL); | |||
| return (strchr((char *)s, c)); // (char *) is needed for Borland compiler | |||
| return NULL; | |||
| return strchr((char *)s, c); // (char *) is needed for Borland compiler | |||
| } | |||
| @@ -614,9 +614,9 @@ int IsAllUpper(const char *word) | |||
| while ((*word != 0) && !isspace2(*word)) { | |||
| word += utf8_in(&c, word); | |||
| if (!iswupper2(c)) | |||
| return (0); | |||
| return 0; | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -638,11 +638,11 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, | |||
| if (phonemes[0] == phonSWITCH) { | |||
| // change to another language in order to translate this word | |||
| strcpy(word_phonemes, phonemes); | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| } | |||
| SetSpellingStress(tr, phonemes, spell_word, posn); | |||
| return (word); | |||
| return word; | |||
| } | |||
| @@ -700,7 +700,7 @@ static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab) | |||
| word1[ix++] = ' '; | |||
| dictionary_skipwords = (count - 1)*2; | |||
| } | |||
| return (count); | |||
| return count; | |||
| } | |||
| @@ -725,13 +725,13 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) | |||
| // has a phoneme equivalence table been specified for thus language pair? | |||
| if ((ix = phoneme_tab_list[tr->phoneme_tab_ix].equivalence_tables) == 0) | |||
| return (0); | |||
| return 0; | |||
| pb = (unsigned char *)&phondata_ptr[ix]; | |||
| for (;;) { | |||
| if (pb[0] == 0) | |||
| return (0); // table not found | |||
| return 0; // table not found | |||
| if (pb[0] == lang2) | |||
| break; | |||
| @@ -783,7 +783,7 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes) | |||
| DecodePhonemes(phonemes, phonbuf); | |||
| fprintf(f_trans, "%s\n\n", phonbuf); | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -862,7 +862,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if (tr->data_dictlist == NULL) { | |||
| // dictionary is not loaded | |||
| word_phonemes[0] = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| // count the length of the word | |||
| @@ -961,7 +961,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if (phonemes[0] == phonSWITCH) { | |||
| // change to another language in order to translate this word | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((wmark > 0) && (wmark < 8)) { | |||
| @@ -977,12 +977,12 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if (!found && iswdigit(first_char)) { | |||
| Lookup(tr, "_0lang", word_phonemes); | |||
| if (word_phonemes[0] == phonSWITCH) | |||
| return (0); | |||
| return 0; | |||
| if ((tr->langopts.numbers2 & NUM2_ENGLISH_NUMERALS) && !(wtab->flags & FLAG_CHAR_REPLACED)) { | |||
| // for this language, speak English numerals (0-9) with the English voice | |||
| sprintf(word_phonemes, "%c", phonSWITCH); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| found = TranslateNumber(tr, word1, phonemes, dictionary_flags, wtab, 0); | |||
| @@ -1019,13 +1019,13 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if (SpeakIndividualLetters(tr, word1, phonemes, spell_word) == NULL) { | |||
| if (word_length > 1) | |||
| return (FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces | |||
| return (0); | |||
| return FLAG_SPELLWORD; // a mixture of languages, retranslate as individual letters, separated by spaces | |||
| return 0; | |||
| } | |||
| strcpy(word_phonemes, phonemes); | |||
| if (wflags & FLAG_TRANSLATOR2) | |||
| return (0); | |||
| return (dictionary_flags[0] & FLAG_SKIPWORDS); // for "b.c.d" | |||
| return 0; | |||
| return dictionary_flags[0] & FLAG_SKIPWORDS; // for "b.c.d" | |||
| } else if (found == 0) { | |||
| int posn; | |||
| int non_initial; | |||
| @@ -1056,8 +1056,8 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| // change to another language in order to translate this word | |||
| strcpy(word_phonemes, unpron_phonemes); | |||
| if (strcmp(&unpron_phonemes[1], "en") == 0) | |||
| return (FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_ | |||
| return (0); | |||
| return FLAG_SPELLWORD; // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_ | |||
| return 0; | |||
| } | |||
| length = 0; | |||
| @@ -1078,7 +1078,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| if (phonemes[0] == phonSWITCH) { | |||
| // change to another language in order to translate this word | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if ((phonemes[0] == 0) && (end_phonemes[0] == 0)) { | |||
| @@ -1088,10 +1088,10 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| utf8_in(&wc, wordx); | |||
| if ((word_length == 1) && (IsAlpha(wc) || IsSuperscript(wc))) { | |||
| if ((wordx = SpeakIndividualLetters(tr, wordx, phonemes, spell_word)) == NULL) { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| @@ -1199,7 +1199,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| // change to another language in order to translate this word | |||
| wordx[-1] = c_temp; | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| } | |||
| @@ -1228,7 +1228,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| // change to another language in order to translate this word | |||
| memcpy(wordx, word_copy, strlen(word_copy)); | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (dictionary_flags[0] == 0) { | |||
| dictionary_flags[0] = dictionary_flags2[0]; | |||
| @@ -1246,7 +1246,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| // change to another language in order to translate this word | |||
| memcpy(wordx, word_copy, strlen(word_copy)); | |||
| strcpy(word_phonemes, phonemes); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (dictionary_flags2[0] & FLAG_ABBREV) { | |||
| @@ -1290,7 +1290,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| strcpy(word_phonemes, phonemes); | |||
| memcpy(wordx, word_copy, strlen(word_copy)); | |||
| wordx[-1] = c_temp; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| } | |||
| } | |||
| @@ -1473,7 +1473,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt | |||
| dictionary_flags[0] |= was_unpronouncable; | |||
| memcpy(word_start, word_copy2, word_copy_length); | |||
| return (dictionary_flags[0]); | |||
| return dictionary_flags[0]; | |||
| } | |||
| @@ -1496,7 +1496,7 @@ static int CountSyllables(unsigned char *phonemes) | |||
| if (phoneme_tab[phon]->type == phVOWEL) | |||
| count++; | |||
| } | |||
| return (count); | |||
| return count; | |||
| } | |||
| @@ -1582,7 +1582,7 @@ int SetTranslator2(const char *new_language) | |||
| } | |||
| if (translator2 != NULL) | |||
| translator2->phonemes_repeat[0] = 0; | |||
| return (new_phoneme_tab); | |||
| return new_phoneme_tab; | |||
| } | |||
| @@ -1651,7 +1651,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| embedded_flag = 0; | |||
| } | |||
| word_phonemes[0] = 0; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| // after a $pause word attribute, ignore a $pause attribute on the next two words | |||
| @@ -1716,7 +1716,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| if (flags & FLAG_SPELLWORD) { | |||
| // re-translate the word as individual letters, separated by spaces | |||
| memcpy(word, word_copy, word_copy_len); | |||
| return (flags); | |||
| return flags; | |||
| } | |||
| if ((flags & FLAG_COMBINE) && !(wtab[1].flags & FLAG_PHONEMES)) { | |||
| @@ -1811,7 +1811,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| // strcpy((char *)p,translator2->word_phonemes); | |||
| if (p[0] == phonSWITCH) | |||
| return (FLAG_SPELLWORD); | |||
| return FLAG_SPELLWORD; | |||
| if (switch_phonemes < 0) { | |||
| // language code is not recognised or 2nd translator won't translate it | |||
| @@ -2044,7 +2044,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| } | |||
| tr->prev_dict_flags[0] = flags; | |||
| return (flags); | |||
| return flags; | |||
| } | |||
| @@ -2080,10 +2080,10 @@ static int EmbeddedCommand(unsigned int *source_index_out) | |||
| c = source[source_index++]; | |||
| if (embedded_ix >= (N_EMBEDDED_LIST - 2)) | |||
| return (0); // list is full | |||
| return 0; // list is full | |||
| if ((p = strchr_w(commands, c)) == NULL) | |||
| return (0); | |||
| return 0; | |||
| cmd = (p - commands)+1; | |||
| if (value == -1) { | |||
| value = embedded_default[cmd]; | |||
| @@ -2103,7 +2103,7 @@ static int EmbeddedCommand(unsigned int *source_index_out) | |||
| embedded_list[embedded_ix++] = cmd + sign + (value << 8); | |||
| *source_index_out = source_index; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -2119,12 +2119,12 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| if (ignore_next) { | |||
| ignore_next = 0; | |||
| return (8); | |||
| return 8; | |||
| } | |||
| if (c == 0) return (0); | |||
| if (c == 0) return 0; | |||
| if ((replace_chars = tr->langopts.replace_chars) == NULL) | |||
| return (c); | |||
| return c; | |||
| // there is a list of character codes to be substituted with alternative codes | |||
| @@ -2149,7 +2149,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| } | |||
| if (new_c == 0) | |||
| return (c); // no substitution | |||
| return c; // no substitution | |||
| if (new_c & 0xffe00000) { | |||
| // there is a second character to be inserted | |||
| @@ -2165,7 +2165,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, | |||
| new_c = towupper2(new_c); | |||
| *wordflags |= FLAG_CHAR_REPLACED; | |||
| return (new_c); | |||
| return new_c; | |||
| } | |||
| @@ -2207,10 +2207,10 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| c = initial + 0x1100; | |||
| *insert = (11*28*21) + (medial*28) + final + 0xac00; | |||
| } | |||
| return (c); | |||
| return c; | |||
| } else if (((code = c - 0x3130) >= 0) && (code < 0x34)) { | |||
| // Hangul compatibility jamo | |||
| return (hangul_compatibility[code] + 0x1100); | |||
| return hangul_compatibility[code] + 0x1100; | |||
| } | |||
| switch (tr->translator_name) | |||
| @@ -2227,17 +2227,17 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, | |||
| if ((next_in == 'n') && (tr->translator_name == L('a', 'f'))) { | |||
| // n preceded by either apostrophe or U2019 "right single quotation mark" | |||
| ptr[0] = ' '; // delete the n | |||
| return (0x0259); // replace ' by unicode schwa character | |||
| return 0x0259; // replace ' by unicode schwa character | |||
| } | |||
| if ((next_in == 'n') || (next_in == 't')) { | |||
| // Dutch, [@n] and [@t] | |||
| return (0x0259); // replace ' by unicode schwa character | |||
| return 0x0259; // replace ' by unicode schwa character | |||
| } | |||
| } | |||
| } | |||
| break; | |||
| } | |||
| return (SubstituteChar(tr, c, next_in, insert, wordflags)); | |||
| return SubstituteChar(tr, c, next_in, insert, wordflags); | |||
| } | |||
| @@ -2258,11 +2258,11 @@ int UpperCaseInWord(Translator *tr, char *word, int c) | |||
| len = strlen(p); | |||
| if ((word[-len] == ' ') && (memcmp(&word[-len+1], p, len-1) == 0)) { | |||
| if ((c == p[len-1]) || ((p[len-1] == 'A') && IsVowel(tr, c))) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -2315,7 +2315,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t | |||
| int tone2; | |||
| if (tr == NULL) { | |||
| return (NULL); | |||
| return NULL; | |||
| } | |||
| p_textinput = (unsigned char *)vp_input; | |||
| @@ -3049,12 +3049,12 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t | |||
| } | |||
| if (Eof() || (vp_input == NULL)) | |||
| return (NULL); | |||
| return NULL; | |||
| if (option_multibyte == espeakCHARS_WCHAR) | |||
| return ((void *)p_wchar_input); | |||
| return (void *)p_wchar_input; | |||
| else | |||
| return ((void *)p_textinput); | |||
| return (void *)p_textinput; | |||
| } | |||
| @@ -201,11 +201,11 @@ static char *fgets_strip(char *buf, int size, FILE *f_in) | |||
| char *p; | |||
| if (fgets(buf, size, f_in) == NULL) | |||
| return (NULL); | |||
| return NULL; | |||
| if (buf[0] == '#') { | |||
| buf[0] = 0; | |||
| return (buf); | |||
| return buf; | |||
| } | |||
| len = strlen(buf); | |||
| @@ -215,7 +215,7 @@ static char *fgets_strip(char *buf, int size, FILE *f_in) | |||
| if ((p = strstr(buf, "//")) != NULL) | |||
| *p = 0; | |||
| return (buf); | |||
| return buf; | |||
| } | |||
| @@ -225,9 +225,9 @@ static int LookupTune(const char *name) | |||
| for (ix = 0; ix < n_tunes; ix++) { | |||
| if (strcmp(name, tunes[ix].name) == 0) | |||
| return (ix); | |||
| return ix; | |||
| } | |||
| return (-1); | |||
| return -1; | |||
| } | |||
| @@ -315,7 +315,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char *le | |||
| sprintf(fname_buf, "%s/mbrola/%s", path_home, vname); | |||
| if (GetFileLength(fname_buf) <= 0) | |||
| return (0); | |||
| return 0; | |||
| } | |||
| #endif | |||
| @@ -353,7 +353,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char *le | |||
| gender = LookupMnem(genders, vgender); | |||
| if (n_languages == 0) { | |||
| return (NULL); // no language lines in the voice file | |||
| return NULL; // no language lines in the voice file | |||
| } | |||
| p = (char *)calloc(sizeof(espeak_VOICE) + langix + strlen(fname) + strlen(vname) + 3, 1); | |||
| @@ -377,7 +377,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char *le | |||
| voice_data->gender = gender; | |||
| voice_data->variant = 0; | |||
| voice_data->xx1 = n_variants; | |||
| return (voice_data); | |||
| return voice_data; | |||
| } | |||
| @@ -509,8 +509,8 @@ static int Read8Numbers(char *data_in, int *data) | |||
| { | |||
| // Read 8 integer numbers | |||
| memset(data, 0, 8+sizeof(int)); | |||
| return (sscanf(data_in, "%d %d %d %d %d %d %d %d", | |||
| &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7])); | |||
| return sscanf(data_in, "%d %d %d %d %d %d %d %d", | |||
| &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7]); | |||
| } | |||
| @@ -524,7 +524,7 @@ static unsigned int StringToWord2(const char *string) | |||
| for (ix = 0; (ix < 4) && ((c = string[ix]) != 0); ix++) { | |||
| value = (value << 8) | (c & 0xff); | |||
| } | |||
| return (value); | |||
| return value; | |||
| } | |||
| @@ -591,7 +591,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| if (control & 0x10) { | |||
| strcpy(buf, vname); | |||
| if (GetFileLength(buf) <= 0) | |||
| return (NULL); | |||
| return NULL; | |||
| } else { | |||
| if (voicename[0] == 0) | |||
| strcpy(voicename, "default"); | |||
| @@ -627,7 +627,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| language_type = "en"; // default | |||
| if (f_voice == NULL) { | |||
| if (control & 3) | |||
| return (NULL); // can't open file | |||
| return NULL; // can't open file | |||
| if (SelectPhonemeTableName(voicename) >= 0) | |||
| language_type = voicename; | |||
| @@ -1023,7 +1023,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| LoadDictionary(new_translator, new_dictionary, control & 4); | |||
| if (dictionary_name[0] == 0) { | |||
| DeleteTranslator(new_translator); | |||
| return (NULL); // no dictionary loaded | |||
| return NULL; // no dictionary loaded | |||
| } | |||
| new_translator->dict_condition = conditional_rules; | |||
| @@ -1057,7 +1057,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| translator->stress_amps_r[ix] = stress_amps[ix] -1; | |||
| } | |||
| return (voice); | |||
| return voice; | |||
| } | |||
| @@ -1096,7 +1096,7 @@ static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir) | |||
| sprintf(variant_name, "%sf%d", variant_prefix, variant_num-10); // female | |||
| } | |||
| return (variant_name); | |||
| return variant_name; | |||
| } | |||
| @@ -1114,12 +1114,12 @@ voice_t *LoadVoiceVariant(const char *vname, int variant_num) | |||
| variant_name = ExtractVoiceVariantName(buf, variant_num, 1); | |||
| if ((v = LoadVoice(buf, 0)) == NULL) | |||
| return (NULL); | |||
| return NULL; | |||
| if (variant_name[0] != 0) { | |||
| v = LoadVoice(variant_name, 2); | |||
| } | |||
| return (v); | |||
| return v; | |||
| } | |||
| @@ -1132,10 +1132,10 @@ static int __cdecl VoiceNameSorter(const void *p1, const void *p2) | |||
| if ((ix = strcmp(&v1->languages[1], &v2->languages[1])) != 0) // primary language name | |||
| return (ix); | |||
| return ix; | |||
| if ((ix = v1->languages[0] - v2->languages[0]) != 0) // priority number | |||
| return (ix); | |||
| return (strcmp(v1->name, v2->name)); | |||
| return ix; | |||
| return strcmp(v1->name, v2->name); | |||
| } | |||
| @@ -1146,8 +1146,8 @@ static int __cdecl VoiceScoreSorter(const void *p1, const void *p2) | |||
| espeak_VOICE *v2 = *(espeak_VOICE **)p2; | |||
| if ((ix = v2->score - v1->score) != 0) | |||
| return (ix); | |||
| return (strcmp(v1->name, v2->name)); | |||
| return ix; | |||
| return strcmp(v1->name, v2->name); | |||
| } | |||
| @@ -1171,8 +1171,8 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s | |||
| if (spec_n_parts < 0) { | |||
| // match on the subdirectory | |||
| if (memcmp(voice->identifier, spec_language, spec_lang_len) == 0) | |||
| return (100); | |||
| return (0); | |||
| return 100; | |||
| return 0; | |||
| } | |||
| if (spec_n_parts == 0) { | |||
| @@ -1231,7 +1231,7 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s | |||
| } | |||
| } | |||
| if (score == 0) | |||
| return (0); | |||
| return 0; | |||
| if (voice_spec->name != NULL) { | |||
| if (strcmp(voice_spec->name, voice->name) == 0) { | |||
| @@ -1274,7 +1274,7 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s | |||
| } | |||
| if (score < 1) | |||
| score = 1; | |||
| return (score); | |||
| return score; | |||
| } | |||
| @@ -1332,12 +1332,12 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int | |||
| voices[nv] = NULL; // list terminator | |||
| if (nv == 0) | |||
| return (0); | |||
| return 0; | |||
| // sort the selected voices by their score | |||
| qsort(voices, nv, sizeof(espeak_VOICE *), (int(__cdecl *)(const void *, const void *))VoiceScoreSorter); | |||
| return (nv); | |||
| return nv; | |||
| } | |||
| @@ -1391,9 +1391,9 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2) | |||
| } | |||
| if (match_name < 0) | |||
| return (NULL); | |||
| return NULL; | |||
| return (voices[match_name]); | |||
| return voices[match_name]; | |||
| } | |||
| @@ -1446,10 +1446,10 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
| if ((voice_select2.gender == 0) && (voice_select2.age == 0) && (voice_select2.variant == 0)) { | |||
| if (variant_name[0] != 0) { | |||
| sprintf(voice_id, "%s+%s", vp->identifier, variant_name); | |||
| return (voice_id); | |||
| return voice_id; | |||
| } | |||
| return (vp->identifier); | |||
| return vp->identifier; | |||
| } | |||
| } | |||
| } | |||
| @@ -1520,16 +1520,16 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found) | |||
| // index the sorted list by the required variant number | |||
| if (ix2 == 0) | |||
| return (NULL); | |||
| return NULL; | |||
| vp = voices2[voice_select2.variant % ix2]; | |||
| if (vp->variant != 0) { | |||
| variant_name = ExtractVoiceVariantName(NULL, vp->variant, 0); | |||
| sprintf(voice_id, "%s+%s", vp->identifier, variant_name); | |||
| return (voice_id); | |||
| return voice_id; | |||
| } | |||
| return (vp->identifier); | |||
| return vp->identifier; | |||
| } | |||
| @@ -1697,7 +1697,7 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
| DoVoiceChange(voice); | |||
| voice_selector.languages = voice->language_name; | |||
| SetVoiceStack(&voice_selector, variant_name); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| if (n_voices_list == 0) | |||
| @@ -1711,10 +1711,10 @@ espeak_ERROR SetVoiceByName(const char *name) | |||
| DoVoiceChange(voice); | |||
| voice_selector.languages = voice->language_name; | |||
| SetVoiceStack(&voice_selector, variant_name); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| } | |||
| return (EE_INTERNAL_ERROR); // voice name not found | |||
| return EE_INTERNAL_ERROR; // voice name not found | |||
| } | |||
| @@ -1727,13 +1727,13 @@ espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector) | |||
| voice_id = SelectVoice(voice_selector, &voice_found); | |||
| if (voice_found == 0) | |||
| return (EE_NOT_FOUND); | |||
| return EE_NOT_FOUND; | |||
| LoadVoiceVariant(voice_id, 0); | |||
| DoVoiceChange(voice); | |||
| SetVoiceStack(voice_selector, ""); | |||
| return (EE_OK); | |||
| return EE_OK; | |||
| } | |||
| @@ -1765,7 +1765,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| GetVoices(path_voices); | |||
| voices_list[n_voices_list] = NULL; // voices list terminator | |||
| } | |||
| return ((const espeak_VOICE **)voices_list); | |||
| return (const espeak_VOICE **)voices_list; | |||
| #else | |||
| int ix; | |||
| @@ -1802,7 +1802,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| } | |||
| voices[j] = NULL; | |||
| } | |||
| return ((const espeak_VOICE **)voices); | |||
| return (const espeak_VOICE **)voices; | |||
| #endif | |||
| } | |||
| @@ -1810,7 +1810,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void) | |||
| { | |||
| return (¤t_voice_selected); | |||
| return ¤t_voice_selected; | |||
| } | |||
| #pragma GCC visibility pop | |||
| @@ -392,7 +392,7 @@ static int pa_callback(const void *inputBuffer, void *outputBuffer, | |||
| } | |||
| #endif | |||
| return (aResult); | |||
| return aResult; | |||
| } | |||
| @@ -420,7 +420,7 @@ static int wave_open_sound() | |||
| if (active == 1) { | |||
| SHOW_TIME("wave_open_sound > already active"); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| if (active < 0) { | |||
| out_channels = 1; | |||
| @@ -519,7 +519,7 @@ static int wave_open_sound() | |||
| SHOW("wave_open_sound > %s\n", "LEAVE"); | |||
| return (err != paNoError); | |||
| return err != paNoError; | |||
| } | |||
| #if (USE_PORTAUDIO == 19) | |||
| @@ -656,7 +656,7 @@ void *wave_open(const char *the_api) | |||
| select_device("alsa"); | |||
| once = 1; | |||
| } | |||
| return ((void *)1); | |||
| return (void *)1; | |||
| } | |||
| static size_t copyBuffer(char *dest, char *src, const size_t theSizeInBytes) | |||
| @@ -906,7 +906,7 @@ int wave_is_busy(void *theHandler) | |||
| SHOW("wave_is_busy: %d\n", active); | |||
| return (active == 1); | |||
| return active == 1; | |||
| } | |||
| void wave_terminate() | |||
| @@ -996,7 +996,7 @@ extern void *wave_test_get_write_buffer() { | |||
| int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
| { | |||
| if (!time) return (-1); | |||
| if (!time) return -1; | |||
| *time = (uint32_t)0; | |||
| return 0; | |||
| } | |||
| @@ -591,7 +591,7 @@ int wave_init(int srate) | |||
| void *wave_open(const char *the_api) | |||
| { | |||
| ENTER("wave_open"); | |||
| return ((void *)1); | |||
| return (void *)1; | |||
| } | |||
| size_t wave_write(void *theHandler, char *theMono16BitsWaveBuffer, size_t theSize) | |||
| @@ -786,7 +786,7 @@ extern void *wave_test_get_write_buffer() { | |||
| int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
| { | |||
| if (!time) return (-1); | |||
| if (!time) return -1; | |||
| *time = (uint32_t)0; | |||
| return 0; | |||
| } | |||
| @@ -100,7 +100,7 @@ int wave_init(int srate) { | |||
| SHOW("wave_init() sun_audio_fd: %d\n", sun_audio_fd); | |||
| if (sun_audio_fd < 0) { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| ioctl(sun_audio_fd, AUDIO_GETINFO, &ainfo); | |||
| @@ -113,9 +113,9 @@ int wave_init(int srate) { | |||
| if (ioctl(sun_audio_fd, AUDIO_SETINFO, &ainfo) == -1) { | |||
| SHOW("wave_init() failed to set audio params: %s\n", strerror(errno)); | |||
| close(sun_audio_fd); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| // wave_open | |||
| @@ -143,7 +143,7 @@ int wave_init(int srate) { | |||
| void *wave_open(const char *the_api) | |||
| { | |||
| ENTER("wave_open"); | |||
| return ((void *)sun_audio_fd); | |||
| return (void *)sun_audio_fd; | |||
| } | |||
| // wave_write | |||
| @@ -471,7 +471,7 @@ int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
| audio_info_t ainfo; | |||
| ENTER("wave_get_remaining_time"); | |||
| if (!time) { | |||
| return (-1); | |||
| return -1; | |||
| SHOW_TIME("wave_get_remaining_time > LEAVE"); | |||
| } | |||
| @@ -529,7 +529,7 @@ extern void *wave_test_get_write_buffer() { | |||
| int wave_get_remaining_time(uint32_t sample, uint32_t *time) | |||
| { | |||
| if (!time) return (-1); | |||
| if (!time) return -1; | |||
| *time = (uint32_t)0; | |||
| return 0; | |||
| } | |||
| @@ -292,12 +292,12 @@ int WcmdqFree() | |||
| int i; | |||
| i = wcmdq_head - wcmdq_tail; | |||
| if (i <= 0) i += N_WCMDQ; | |||
| return (i); | |||
| return i; | |||
| } | |||
| int WcmdqUsed() | |||
| { | |||
| return (N_WCMDQ - WcmdqFree()); | |||
| return N_WCMDQ - WcmdqFree(); | |||
| } | |||
| @@ -470,7 +470,7 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| #if USE_PORTAUDIO == 18 | |||
| #ifdef PLATFORM_WINDOWS | |||
| return (result); | |||
| return result; | |||
| #endif | |||
| if (result != 0) { | |||
| static int end_timer = 0; | |||
| @@ -479,12 +479,12 @@ static int WaveCallback(const void *inputBuffer, void *outputBuffer, | |||
| if (end_timer > 0) { | |||
| end_timer--; | |||
| if (end_timer == 0) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| #else | |||
| return (result); | |||
| return result; | |||
| #endif | |||
| } | |||
| @@ -528,7 +528,7 @@ static PaError Pa_OpenDefaultStream2(PaStream **stream, | |||
| result = Pa_OpenStream( | |||
| stream, NULL, &hostApiOutputParameters, sampleRate, framesPerBuffer, paNoFlag, streamCallback, userData); | |||
| return (result); | |||
| return result; | |||
| } | |||
| #endif | |||
| @@ -540,7 +540,7 @@ int WavegenOpenSound() | |||
| if (option_waveout || option_quiet) { | |||
| // writing to WAV file, not to portaudio | |||
| return (0); | |||
| return 0; | |||
| } | |||
| #if USE_PORTAUDIO == 18 | |||
| @@ -550,7 +550,7 @@ int WavegenOpenSound() | |||
| #endif | |||
| if (active == 1) | |||
| return (0); | |||
| return 0; | |||
| if (active < 0) { | |||
| out_channels = 1; | |||
| @@ -587,7 +587,7 @@ int WavegenOpenSound() | |||
| exit(2); | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -607,13 +607,13 @@ int WavegenCloseSound() | |||
| if (active == 0) { | |||
| Pa_CloseStream(pa_stream); | |||
| pa_stream = NULL; | |||
| return (1); | |||
| return 1; | |||
| } | |||
| } else { | |||
| WavegenOpenSound(); // still items in the queue, shouldn't be closed | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -622,29 +622,29 @@ int WavegenInitSound() | |||
| PaError err; | |||
| if (option_quiet) | |||
| return (0); | |||
| return 0; | |||
| // PortAudio sound output library | |||
| err = Pa_Initialize(); | |||
| pa_init_err = err; | |||
| if (err != paNoError) { | |||
| fprintf(stderr, "Failed to initialise the PortAudio sound\n"); | |||
| return (1); | |||
| return 1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| #else | |||
| int WavegenOpenSound() | |||
| { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int WavegenCloseSound() | |||
| { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| int WavegenInitSound() | |||
| { | |||
| return (0); | |||
| return 0; | |||
| } | |||
| #endif | |||
| @@ -706,7 +706,7 @@ int GetAmplitude(void) | |||
| amp = (embedded_value[EMBED_A])*55/100; | |||
| general_amplitude = amp * amp_emphasis[embedded_value[EMBED_F]] / 16; | |||
| return (general_amplitude); | |||
| return general_amplitude; | |||
| } | |||
| @@ -775,12 +775,12 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control) | |||
| #ifdef SPECT_EDITOR | |||
| if (harm_sqrt_n > 0) | |||
| return (HarmToHarmspect(pitch, htab)); | |||
| return HarmToHarmspect(pitch, htab); | |||
| #endif | |||
| // initialise as much of *out as we will need | |||
| if (wvoice == NULL) | |||
| return (1); | |||
| return 1; | |||
| hmax = (peaks[wvoice->n_harmonic_peaks].freq + peaks[wvoice->n_harmonic_peaks].right)/pitch; | |||
| if (hmax >= MAX_HARMONIC) | |||
| hmax = MAX_HARMONIC-1; | |||
| @@ -866,7 +866,7 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control) | |||
| } | |||
| } | |||
| return (hmax); // highest harmonic number | |||
| return hmax; // highest harmonic number | |||
| } | |||
| @@ -1029,7 +1029,7 @@ static int ApplyBreath(void) | |||
| } | |||
| } | |||
| #endif | |||
| return (value); | |||
| return value; | |||
| } | |||
| @@ -1060,7 +1060,7 @@ int Wavegen() | |||
| for (;;) { | |||
| if ((end_wave == 0) && (samplecount == nsamples)) | |||
| return (0); | |||
| return 0; | |||
| if ((samplecount & 0x3f) == 0) { | |||
| // every 64 samples, adjust the parameters | |||
| @@ -1105,7 +1105,7 @@ int Wavegen() | |||
| // sign has changed, reached a quiet point in the waveform | |||
| cbytes = wavemult_offset - (cycle_samples)/2; | |||
| if (samplecount > nsamples) | |||
| return (0); | |||
| return 0; | |||
| cycle_count++; | |||
| @@ -1257,9 +1257,9 @@ int Wavegen() | |||
| echo_head = 0; | |||
| if (out_ptr >= out_end) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1273,7 +1273,7 @@ static int PlaySilence(int length, int resume) | |||
| wavephase = 0x7fffffff; | |||
| if (length == 0) | |||
| return (0); | |||
| return 0; | |||
| if (resume == 0) | |||
| n_samples = length; | |||
| @@ -1292,9 +1292,9 @@ static int PlaySilence(int length, int resume) | |||
| echo_head = 0; | |||
| if (out_ptr >= out_end) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1347,19 +1347,19 @@ static int PlayWave(int length, int resume, unsigned char *data, int scale, int | |||
| echo_head = 0; | |||
| if (out_ptr >= out_end) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| static int SetWithRange0(int value, int max) | |||
| { | |||
| if (value < 0) | |||
| return (0); | |||
| return 0; | |||
| if (value > max) | |||
| return (max); | |||
| return (value); | |||
| return max; | |||
| return value; | |||
| } | |||
| @@ -1615,7 +1615,7 @@ static int Wavegen2(int length, int modulation, int resume, frame_t *fr1, frame_ | |||
| if (resume == 0) | |||
| SetSynth(length, modulation, fr1, fr2, wvoice); | |||
| return (Wavegen()); | |||
| return Wavegen(); | |||
| } | |||
| void Write4Bytes(FILE *f, int value) | |||
| @@ -1650,14 +1650,14 @@ int WavegenFill2(int fill_zeros) | |||
| // continue to play silence until echo is completed | |||
| resume = PlaySilence(echo_complete, resume); | |||
| if (resume == 1) | |||
| return (0); // not yet finished | |||
| return 0; // not yet finished | |||
| } | |||
| if (fill_zeros) { | |||
| while (out_ptr < out_end) | |||
| *out_ptr++ = 0; | |||
| } | |||
| return (1); // queue empty, close sound channel | |||
| return 1; // queue empty, close sound channel | |||
| } | |||
| result = 0; | |||
| @@ -1767,7 +1767,7 @@ int WavegenFill2(int fill_zeros) | |||
| } | |||
| } | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -1787,7 +1787,7 @@ static int SpeedUp(short *outbuf, int length_in, int length_out, int end_of_text | |||
| } | |||
| if (sonicSpeedupStream == NULL) | |||
| return (0); | |||
| return 0; | |||
| if (end_of_text) { | |||
| sonicFlushStream(sonicSpeedupStream); | |||
| @@ -204,7 +204,7 @@ static int OpenWaveFile(const char *path, int rate) | |||
| }; | |||
| if (path == NULL) | |||
| return (2); | |||
| return 2; | |||
| while (isspace(*path)) path++; | |||
| @@ -225,9 +225,9 @@ static int OpenWaveFile(const char *path, int rate) | |||
| Write4Bytes(f_wave, rate); | |||
| Write4Bytes(f_wave, rate * 2); | |||
| fwrite(&wave_hdr[32], 1, 12, f_wave); | |||
| return (0); | |||
| return 0; | |||
| } | |||
| return (1); | |||
| return 1; | |||
| } | |||
| @@ -270,12 +270,12 @@ static int WavegenFile(void) | |||
| finished = WavegenFill(0); | |||
| if (quiet) | |||
| return (finished); | |||
| return finished; | |||
| if (f_wave == NULL) { | |||
| sprintf(fname, "%s_%.2d%s", wavefile, ++wavefile_count, filetype); | |||
| if (OpenWaveFile(fname, samplerate) != 0) | |||
| return (1); | |||
| return 1; | |||
| } | |||
| if (end_of_sentence) { | |||
| @@ -290,7 +290,7 @@ static int WavegenFile(void) | |||
| samples_total += (out_ptr - wav_outbuf)/2; | |||
| fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave); | |||
| } | |||
| return (finished); | |||
| return finished; | |||
| } | |||
| @@ -386,7 +386,7 @@ static int initialise(void) | |||
| for (param = 0; param < N_SPEECH_PARAM; param++) | |||
| param_stack[0].parameter[param] = param_defaults[param]; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| @@ -816,7 +816,7 @@ int main(int argc, char **argv) | |||
| if (option_quiet) { | |||
| while (SpeakNextClause(NULL, NULL, 1) != 0) ; | |||
| return (0); | |||
| return 0; | |||
| } | |||
| speaking = 1; | |||
| @@ -843,5 +843,5 @@ int main(int argc, char **argv) | |||
| if ((f_trans != stdout) && (f_trans != stderr)) | |||
| fclose(f_trans); // needed for WinCe | |||
| return (0); | |||
| return 0; | |||
| } | |||