=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/glob.c,v retrieving revision 1.15 retrieving revision 1.21 diff -u -p -r1.15 -r1.21 --- OpenXM_contrib2/asir2000/parse/glob.c 2001/03/16 01:54:55 1.15 +++ OpenXM_contrib2/asir2000/parse/glob.c 2001/08/20 09:03:27 1.21 @@ -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.14 2001/03/08 07:49:13 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.20 2001/06/27 09:14:08 noro Exp $ */ #include "ca.h" #include "al.h" @@ -62,7 +62,7 @@ #include #endif -#if defined(SYSV) +#if defined(SYSV) && !defined(_IBMR2) #include #endif @@ -77,7 +77,7 @@ extern int GC_free_space_numerator; extern FILE *asir_out; IN asir_infile; -jmp_buf env,debug_env,timer_env; +jmp_buf main_env,debug_env,timer_env,exec_env; int little_endian,debug_mode; char *asir_libdir; char *asir_pager; @@ -132,7 +132,7 @@ F F_FALSE = &oF_FALSE; #if defined(__SVR4) && defined(sun) char cppname[BUFSIZ] = "/usr/ccs/lib/cpp "; #else -#if defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || (defined(__MACH__) && defined(__ppc__)) char cppname[BUFSIZ] = "/usr/bin/cpp "; #else #if defined(VISUAL) @@ -180,7 +180,6 @@ Obj a,b,*c; error("undefined arithmetic operation."); } -int kernelmode; int do_asirrc; int do_file; int do_message; @@ -206,8 +205,15 @@ void ExitAsir() { void asir_terminate(status) int status; { + int t; + if ( read_exec_file ) { - read_exec_file = 0; longjmp(env,status); + t = read_exec_file; + read_exec_file = 0; + if ( t == 1 ) + longjmp(main_env,status); + else + longjmp(exec_env,status); } else { tty_reset(); #if MPI @@ -215,10 +221,11 @@ int status; close_allconnections(); mpi_finalize(); #else +#if defined(SIGPIPE) + signal(SIGPIPE,SIG_IGN); +#endif close_allconnections(); #endif - if ( kernelmode ) - fputc(0xff,asir_out); if ( asir_out ) fflush(asir_out); #if FEP @@ -242,14 +249,14 @@ void param_init() { void prompt() { if ( !no_prompt && !do_fep && asir_infile->fp == stdin ) - fprintf(asir_out,"[%d]%c",APVS->n,kernelmode?0xfe:' '); + fprintf(asir_out,"[%d] ",APVS->n); fflush(asir_out); } void sprompt(ptr) char *ptr; { - sprintf(ptr,"[%d]%c",APVS->n,kernelmode?0xfe:' '); + sprintf(ptr,"[%d] ",APVS->n); } FILE *in_fp; @@ -287,8 +294,6 @@ char **av; } do_file = 1; av += 2; ac -= 2; - } else if ( !strcmp(*av,"-kernel") ) { - kernelmode = 1; av++; ac--; } else if ( !strcmp(*av,"-norc") ) { do_asirrc = 0; av++; ac--; } else if ( !strcmp(*av,"-nomessage") ) { @@ -398,8 +403,10 @@ char *s; /* restore states */ reset_engine(); reset_io(); +#if !defined(VISUAL) reset_timer(); - longjmp(env,1); +#endif + longjmp(main_env,1); } void fatal(n) @@ -424,11 +431,9 @@ int sig; return; } #if defined(VISUAL) - suspend_timer(); signal(SIGINT,SIG_IGN); + suspend_timer(); #endif -#if defined(_PA_RISC1_1) || defined(linux) || defined(VISUAL) || defined(__svr4__) signal(SIGINT,SIG_IGN); -#endif #if !defined(VISUAL) if ( do_server_in_X11 ) { debug(PVSS?((VS)BDY(PVSS))->usrf->f.usrf->body:0); @@ -449,8 +454,6 @@ int sig; char c; fprintf(stderr,"interrupt ?(q/t/c/d/u/w/?) "); fflush(stderr); - if ( kernelmode ) - fputc('\0',stderr); buf[0] = '\n'; while ( buf[0] == '\n' ) fgets(buf,BUFSIZ,stdin); @@ -482,8 +485,6 @@ int sig; } if ( debug_mode ) debug_mode = 0; - if ( kernelmode ) - fputc('\0',stderr); restore_handler(); if ( c == 'u' ) { if ( registered_handler ) { @@ -507,8 +508,6 @@ int sig; restore_handler(); return; case 'c': - if ( kernelmode ) - fputc('\0',stderr); restore_handler(); return; break; case 'w': @@ -524,9 +523,9 @@ int sig; void restore_handler() { #if defined(VISUAL) - resume_timer(); signal(SIGINT,int_handler); + resume_timer(); #endif -#if defined(_PA_RISC1_1) || defined(linux) || defined(__svr4__) +#if defined(SIGINT) signal(SIGINT,int_handler); #endif } @@ -534,19 +533,19 @@ void restore_handler() { void segv_handler(sig) int sig; { -#if defined(_PA_RISC1_1) || defined(linux) || defined(VISUAL) || defined(__svr4__) +#if defined(SIGSEGV) signal(SIGSEGV,segv_handler); -#endif error("internal error (SEGV)"); +#endif } void ill_handler(sig) int sig; { -#if defined(_PA_RISC1_1) || defined(linux) || defined(VISUAL) || defined(__svr4__) +#if defined(SIGILL) signal(SIGILL,ill_handler); -#endif error("illegal instruction (ILL)"); +#endif } void alrm_handler(sig) @@ -568,10 +567,10 @@ int sig; void fpe_handler(sig) int sig; { -#if defined(_PA_RISC1_1) || defined(linux) || defined(VISUAL) || defined(__svr4__) +#if defined(SIGFPE) signal(SIGFPE,fpe_handler); -#endif error("internal error (FPE)"); +#endif } void pipe_handler(sig) @@ -579,6 +578,7 @@ int sig; { #if defined(SIGPIPE) signal(SIGPIPE,pipe_handler); + end_critical(); error("internal error (BROKEN PIPE)"); #endif } @@ -609,8 +609,10 @@ char *s; { SNODE *snp; +#if !defined(VISUAL) if ( timer_is_set ) alrm_handler(SIGVTALRM); +#endif fprintf(stderr,"%s\n",s); set_lasterror(s); if ( CPVS != GPVS ) { @@ -675,8 +677,13 @@ unsigned int get_asir_version(); char *get_asir_distribution(); void copyright() { +#if defined(INTERVAL) + printf("This is Risa/Asir + Interval Arithmetic, Version %d (%s Distribution).\n", + get_asir_version(), get_asir_distribution()); +#else printf("This is Risa/Asir, Version %d (%s Distribution).\n", get_asir_version(), get_asir_distribution()); +#endif printf("Copyright (C) 1994-2000, all rights reserved, FUJITSU LABORATORIES LIMITED.\n"); printf("Copyright 2000,2001, Risa/Asir committers, http://www.openxm.org/.\n"); printf("GC 5.3, copyright 1999, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n");