=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/lex.c,v retrieving revision 1.8 retrieving revision 1.11 diff -u -p -r1.8 -r1.11 --- OpenXM_contrib2/asir2000/parse/lex.c 2000/12/05 01:24:57 1.8 +++ OpenXM_contrib2/asir2000/parse/lex.c 2000/12/18 01:28:27 1.11 @@ -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/lex.c,v 1.7 2000/12/01 04:34:01 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/lex.c,v 1.10 2000/12/06 01:27:16 noro Exp $ */ #include #include "ca.h" @@ -54,7 +54,11 @@ #include "parse.h" #include #include +#if defined(VISUAL) +#include "ytab.h" +#else #include "y.tab.h" +#endif extern IN asir_infile; extern struct oTKWD kwd[]; @@ -65,6 +69,7 @@ int aftercomment(); extern int main_parser; extern char *parse_strp; +extern int recv_intr; static int skipspace(); static int Getc(); @@ -404,10 +409,10 @@ void purge_stdin() #elif defined(linux) stdin->_IO_read_end = stdin->_IO_read_base; stdin->_IO_read_ptr = stdin->_IO_read_base; -#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) - stdin->_ptr = stdin->_base; stdin->_cnt = 0; -#elif defined(VISUAL) +#elif defined(VISUAL_LIB) w_purge_stdin(); +#elif defined(sparc) || defined(__alpha) || defined(__SVR4) || defined(mips) || defined(VISUAL) + stdin->_ptr = stdin->_base; stdin->_cnt = 0; #else --->FIXIT #endif @@ -519,6 +524,18 @@ FILE *fp; if ( fp ) { c = getc(fp); +#if defined(VISUAL) + if ( recv_intr ) { +#include + if ( recv_intr == 1 ) { + recv_intr = 0; + int_handler(SIGINT); + } else { + recv_intr = 0; + ox_usr1_handler(0); + } + } +#endif if ( c == EOF ) return c; if ( asir_infile->encoded ) @@ -555,7 +572,11 @@ static int Getc() { if ((c = Egetc(asir_infile->fp)) == EOF) if ( NEXT(asir_infile) ) { closecurrentinput(); - c = Getc(); + /* if the input is the top level, generate error */ + if ( !NEXT(asir_infile) ) + error("end-of-file detected during parsing"); + else + c = Getc(); break; } else if ( read_exec_file || do_file ) asir_terminate(2);