Browse Source

Support reading input from named pipes

Added support for line-by-line input reading from unix FIFOs.
master
Ondřej Lysoněk 8 years ago
parent
commit
7659aaa2e8
1 changed files with 13 additions and 3 deletions
  1. 13
    3
      src/espeak-ng.c

+ 13
- 3
src/espeak-ng.c View File

@@ -652,12 +652,20 @@ int main(int argc, char **argv)
flag_stdin = 2;
}
} else {
struct stat st;
if (stat(filename, &st) != 0) {
fprintf(stderr, "Failed to stat() file '%s'\n", filename);
exit(EXIT_FAILURE);
}
filesize = GetFileLength(filename);
f_text = fopen(filename, "r");
if (f_text == NULL) {
fprintf(stderr, "Failed to read file '%s'\n", filename);
exit(EXIT_FAILURE);
}
if (S_ISFIFO(st.st_mode)) {
flag_stdin = 2;
}
}

if (p_text != NULL) {
@@ -672,11 +680,13 @@ int main(int argc, char **argv)
}

if (flag_stdin == 2) {
// line by line input on stdin
while (fgets(p_text, max, stdin) != NULL) {
// line by line input on stdin or from FIFO
while (fgets(p_text, max, f_text) != NULL) {
p_text[max-1] = 0;
espeak_Synth(p_text, max, 0, POS_CHARACTER, 0, synth_flags, NULL, NULL);

}
if (f_text != stdin) {
fclose(f_text);
}
} else {
// bulk input on stdin

Loading…
Cancel
Save