=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/stdio.c,v retrieving revision 1.4 retrieving revision 1.7 diff -u -p -r1.4 -r1.7 --- OpenXM_contrib2/asir2000/parse/stdio.c 2000/11/13 01:48:13 1.4 +++ OpenXM_contrib2/asir2000/parse/stdio.c 2005/10/19 04:51:15 1.7 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/stdio.c,v 1.3 2000/08/22 05:04:28 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/stdio.c,v 1.6 2001/10/09 01:36:25 noro Exp $ */ #include #include @@ -61,6 +61,7 @@ static struct w_buf { } W_BUF; static int noflush; +extern int emergency; #define INBUF_EMPTY (W_BUF.inpos >= W_BUF.inlen) @@ -73,12 +74,19 @@ void w_purge_stdin(void) int w_filbuf(void) { int status = get_line(W_BUF.inbuf); + + /* XXX */ + if ( emergency ) return 0; + W_BUF.inpos = 0; W_BUF.inlen = strlen(W_BUF.inbuf); return status; } int w_flushbuf(void) { + /* XXX */ + if ( emergency ) return 0; + W_BUF.outbuf[W_BUF.outpos] = 0; W_BUF.outpos = 0; put_line(W_BUF.outbuf); @@ -141,16 +149,18 @@ int unget_char(int c) return c; } -int put_char(int c,FILE *file) +int win_put_string(char *s,FILE *file); + +int win_put_char(int c,FILE *file) { static char s[2]; s[0] = (char)c; - put_string(s,file); + win_put_string(s,file); return c; } -int put_string(char *s,FILE *file) +int win_put_string(char *s,FILE *file) { char c; @@ -192,17 +202,15 @@ int w_ungetc(int c, FILE *file) int w_fputc(int c, FILE *file) { if ( file == stdout || file == stderr ) - return put_char(c,file); + return win_put_char(c,file); else return fputc(c,file); } int w_fputs(char *s, FILE *file) { - int status; - if ( file == stdout || file == stderr ) - return put_string(s,file); + return win_put_string(s,file); else return fputs(s,file); } @@ -215,7 +223,7 @@ int w_printf(char *format, ...) va_start(ap,format); status = vsprintf(buf,format,ap); - put_string(buf,stdout); + win_put_string(buf,stdout); return status; } @@ -228,7 +236,7 @@ int w_fprintf(FILE *file, char *format, ...) va_start(ap,format); if ( file == stdout || file == stderr ) { status = vsprintf(buf,format,ap); - put_string(buf,file); + win_put_string(buf,file); } else { status = vfprintf(file,format,ap); }