=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/glob.c,v retrieving revision 1.64 retrieving revision 1.74 diff -u -p -r1.64 -r1.74 --- OpenXM_contrib2/asir2000/parse/glob.c 2006/02/10 23:56:44 1.64 +++ OpenXM_contrib2/asir2000/parse/glob.c 2008/03/19 07:05:56 1.74 @@ -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.63 2006/02/08 04:33:50 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.73 2008/01/04 16:42:19 saito Exp $ */ #include "ca.h" #include "al.h" @@ -54,7 +54,7 @@ #if defined(PARI) #include "genpari.h" #endif -#if !defined(VISUAL) && !defined(_PA_RISC1_1) && !defined(linux) && !defined(SYSV) && !defined(__CYGWIN__) && !defined(__INTERIX) +#if !defined(VISUAL) && !defined(_PA_RISC1_1) && !defined(linux) && !defined(SYSV) && !defined(__CYGWIN__) && !defined(__INTERIX) && !defined(__FreeBSD__) #include #endif @@ -537,6 +537,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(); @@ -619,6 +621,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"); @@ -677,7 +687,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); @@ -714,7 +724,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 ) { @@ -738,8 +748,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; } @@ -751,8 +761,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 @@ -760,6 +770,15 @@ void reset_timer() unsigned int get_asir_version(); char *get_asir_distribution(); +char *get_gcversion() +{ +#if defined(GC7) + return "GC 7.0 copyright 1988-2007, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"; +#else + return "GC 6.8 copyright 1988-2006, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"; +#endif +} + char *get_pariversion() { #if PARI @@ -783,24 +802,25 @@ 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-2006, 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()); + char *scopyright(); + fputs(scopyright(), stdout); } char *scopyright() { static char *notice; - char *s1, *s2, *s3; + char *s1, *s2, *s3, *s4; 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-2006, 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/.\n%s%s"; if (!notice) { s1 = get_intervalversion(); s2 = get_asir_distribution(); - s3 = get_pariversion(); + s3 = get_gcversion(); + s4 = get_pariversion(); d = get_asir_version(); - len = (strlen(format)-8)+strlen(s1)+strlen(s2)+strlen(s3)+sizeof(int)*3; + len = (strlen(format)-8)+strlen(s1)+strlen(s2)+strlen(s3)+strlen(s4)+sizeof(int)*3; notice = MALLOC(len+1); - sprintf(notice, format, s1, d, s2, s3); + sprintf(notice, format, s1, d, s2, s3, s4); } return notice; }