=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/glob.c,v retrieving revision 1.62 retrieving revision 1.70 diff -u -p -r1.62 -r1.70 --- OpenXM_contrib2/asir2000/parse/glob.c 2006/02/08 02:11:19 1.62 +++ OpenXM_contrib2/asir2000/parse/glob.c 2007/09/19 05:43:00 1.70 @@ -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/glob.c,v 1.61 2006/02/03 03:55:18 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.69 2007/09/15 10:17:08 noro Exp $ */ #include "ca.h" #include "al.h" @@ -214,6 +214,7 @@ void ExitAsir() { /* * status = 1 abnormal termination (error() etc.) * status = 2 normal termination (end(), quit() etc.) + * status = 3 absolute termination */ void asir_terminate(int status) @@ -221,6 +222,9 @@ void asir_terminate(int status) int t; NODE n; + /* called from engine in Windows */ + if ( status == 3 ) asir_infile = 0; + if ( asir_infile && asir_infile->ready_for_longjmp ) LONGJMP(asir_infile->jmpbuf,status); else { @@ -476,6 +480,7 @@ void resetenv(char *s) #if !defined(VISUAL) reset_timer(); #endif + init_denomlist(); LONGJMP(main_env,1); } @@ -533,6 +538,8 @@ void int_handler(int sig) fgets(buf,BUFSIZ,stdin); if ( !strncmp(buf,"y",1) ) { fprintf(stderr,"Bye\n"); + /* for terminating myself */ + asir_infile = 0; asir_terminate(1); } else if ( !strncmp(buf,"n",1) ) { restore_handler(); @@ -615,6 +622,14 @@ void ill_handler(int sig) #endif } +#if defined(__DARWIN__) +#define SIGNAL_FOR_TIMER SIGALRM +#define ITIMER_TYPE ITIMER_REAL +#else +#define SIGNAL_FOR_TIMER SIGVTALRM +#define ITIMER_TYPE ITIMER_VIRTUAL +#endif + void alrm_handler(int sig) { fprintf(stderr,"interval timer expired (VTALRM)\n"); @@ -673,7 +688,7 @@ void error(char *s) #if !defined(VISUAL) if ( !error_in_timer && timer_is_set ) - alrm_handler(SIGVTALRM); + alrm_handler(SIGNAL_FOR_TIMER); #endif fprintf(stderr,"%s\n",s); set_lasterror(s); @@ -710,7 +725,7 @@ void toplevel(char *s) #if !defined(VISUAL) if ( timer_is_set ) - alrm_handler(SIGVTALRM); + alrm_handler(SIGNAL_FOR_TIMER); #endif fprintf(stderr,"%s\n",s); if ( do_file ) { @@ -734,8 +749,8 @@ void set_timer(int interval) it.it_interval.tv_usec = 0; it.it_value.tv_sec = interval; it.it_value.tv_usec = 0; - setitimer(ITIMER_VIRTUAL,&it,0); - signal(SIGVTALRM,alrm_handler); + setitimer(ITIMER_TYPE,&it,0); + signal(SIGNAL_FOR_TIMER,alrm_handler); timer_is_set = 1; } @@ -747,8 +762,8 @@ void reset_timer() it.it_interval.tv_usec = 0; it.it_value.tv_sec = 0; it.it_value.tv_usec = 0; - setitimer(ITIMER_VIRTUAL,&it,0); - signal(SIGVTALRM,SIG_IGN); + setitimer(ITIMER_TYPE,&it,0); + signal(SIGNAL_FOR_TIMER,SIG_IGN); timer_is_set = 0; } #endif @@ -779,7 +794,7 @@ char *get_intervalversion() void copyright() { - char *format = "This is Risa/Asir%s, Version %d (%s Distribution).\nCopyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.\nCopyright 2000-2005, Risa/Asir committers, http://www.openxm.org/.\nGC 6.5 Copyright 1988-2005, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n%s"; + char *format = "This is Risa/Asir%s, Version %d (%s Distribution).\nCopyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.\nCopyright 2000-2007, Risa/Asir committers, http://www.openxm.org/.\nGC 6.5 Copyright 1988-2005, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n%s"; printf(format, get_intervalversion(), get_asir_version(), get_asir_distribution(), get_pariversion()); } @@ -788,7 +803,7 @@ char *scopyright() static char *notice; char *s1, *s2, *s3; int d, len; - char *format = "This is Risa/Asir%s, Version %d (%s Distribution).\nCopyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.\nCopyright 2000-2005, Risa/Asir committers, http://www.openxm.org/.\nGC 6.5 copyright 1988-2005, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n%s"; + char *format = "This is Risa/Asir%s, Version %d (%s Distribution).\nCopyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.\nCopyright 2000-2007, Risa/Asir committers, http://www.openxm.org/.\nGC 6.5 copyright 1988-2005, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n%s"; if (!notice) { s1 = get_intervalversion(); s2 = get_asir_distribution();