|  |  | @@ -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 |