=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/glob.c,v retrieving revision 1.24 retrieving revision 1.36 diff -u -p -r1.24 -r1.36 --- OpenXM_contrib2/asir2000/parse/glob.c 2001/10/09 01:36:24 1.24 +++ OpenXM_contrib2/asir2000/parse/glob.c 2003/05/16 07:56:16 1.36 @@ -45,22 +45,26 @@ * 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.23 2001/10/05 10:23:07 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.35 2003/05/14 06:20:12 noro Exp $ */ #include "ca.h" #include "al.h" #include "parse.h" #include "ox.h" -#if PARI +#if defined(PARI) #include "genpari.h" #endif -#if !defined(VISUAL) && !defined(_PA_RISC1_1) && !defined(linux) && !defined(SYSV) +#if !defined(VISUAL) && !defined(_PA_RISC1_1) && !defined(linux) && !defined(SYSV) && !defined(__CYGWIN__) #include #endif #if defined(VISUAL) #include #include +#else +#include +#include +#include #endif #if defined(SYSV) && !defined(_IBMR2) @@ -78,14 +82,14 @@ extern int GC_free_space_numerator; extern FILE *asir_out; INFILE asir_infile; -jmp_buf main_env,debug_env,timer_env,exec_env; +JMP_BUF main_env,debug_env,timer_env,exec_env; int little_endian,debug_mode; char *asir_libdir; char *asir_pager; NODE usrf,sysf,noargsysf,ubinf,parif; NODE ONENODE; -int main_parser, ox_do_copy, ox_do_count, ox_count_length; +int main_parser, allow_create_var, ox_do_copy, ox_do_count, ox_count_length; int ox_file_io, ox_need_conv; char *ox_copy_bptr; char *parse_strp; @@ -124,25 +128,21 @@ struct oVS oGPVS,oAPVS,oEPVS; VS GPVS = &oGPVS; VS APVS = &oAPVS; VS EPVS = &oEPVS; -VS CPVS; +VS CPVS,MPVS; +NODE MODULE_LIST; +MODULE CUR_MODULE; +char *CUR_FUNC; + struct oF oF_TRUE,oF_FALSE; F F_TRUE = &oF_TRUE; F F_FALSE = &oF_FALSE; -#if defined(__SVR4) && defined(sun) -char cppname[BUFSIZ] = "/usr/ccs/lib/cpp "; -#else -#if defined(__FreeBSD__) || defined(__NetBSD__) || (defined(__MACH__) && defined(__ppc__)) -char cppname[BUFSIZ] = "/usr/bin/cpp "; -#else #if defined(VISUAL) char cppname[BUFSIZ] = "c:\\asir\\stdlib\\cpp "; #else char cppname[BUFSIZ] = "/lib/cpp "; #endif -#endif -#endif char asirname[BUFSIZ]; char displayname[BUFSIZ]; @@ -206,12 +206,12 @@ void asir_terminate(int status) t = read_exec_file; read_exec_file = 0; if ( t == 1 ) - longjmp(main_env,status); + LONGJMP(main_env,status); else - longjmp(exec_env,status); + LONGJMP(exec_env,status); } else { tty_reset(); -#if MPI +#if defined(MPI) if ( !mpi_myid ) close_allconnections(); mpi_finalize(); @@ -253,12 +253,53 @@ void sprompt(char *ptr) sprintf(ptr,"[%d] ",APVS->n); } +#if !defined(VISUAL) +static int which(char *prog, char *path, char *buf, size_t size) +{ + char *tok; + char delim[] = ":"; + char *path2 = malloc(strlen(path)+1); + char *name = malloc(size); + int proglen = strlen(prog)+3; /* "/" + prog + " \0" */ + + if (!name || !path2) { + return 0; + } + strcpy(path2, path); + tok = strtok(path2, delim); + while (tok != NULL) { + if (size >= strlen(tok)) { + sprintf(name, "%s/%s", tok, prog); + if (access(name, X_OK&R_OK) == 0) { + strcpy(buf, name); + strcat(buf, " "); + free(path2); free(name); + return 1; + } + tok = strtok(NULL, delim); + } + } + free(path2); free(name); + return 0; +} +#endif + +void cppname_init() +{ +#if !defined(VISUAL) + if (access(cppname, X_OK&R_OK) != 0) { + which("cpp", "/lib:/usr/ccs/lib:/usr/bin", cppname, BUFSIZ) || + which("cpp", getenv("PATH"), cppname, BUFSIZ); + } +#endif +} + FILE *in_fp; void process_args(int ac,char **av) { do_asirrc = 1; -#if !MPI +#if !defined(MPI) do_message = 1; #endif while ( ac > 0 ) { @@ -306,7 +347,7 @@ void process_args(int ac,char **av) } else if ( !strcmp(*av,"-fep") ) { do_fep = 1; av++; ac--; #endif -#if PARI +#if defined(PARI) } else if ( !strcmp(*av,"-paristack") ) { extern int paristack; @@ -390,7 +431,7 @@ void resetenv(char *s) w_noflush_stderr(0); #endif asir_out = stdout; -#if PARI +#if defined(PARI) pari_outfile = stdout; #endif /* restore states */ @@ -399,7 +440,7 @@ void resetenv(char *s) #if !defined(VISUAL) reset_timer(); #endif - longjmp(main_env,1); + LONGJMP(main_env,1); } void fatal(int n) @@ -540,7 +581,7 @@ void ill_handler(int sig) void alrm_handler(int sig) { fprintf(stderr,"interval timer expired (VTALRM)\n"); - longjmp(timer_env,1); + LONGJMP(timer_env,1); } void bus_handler(int sig) @@ -616,7 +657,7 @@ void error(char *s) ExitAsir(); } if ( debug_mode ) - longjmp(debug_env,1); + LONGJMP(debug_env,1); if ( CPVS != GPVS ) if ( do_server_in_X11 || isatty(0) ) bp(error_snode); @@ -667,10 +708,15 @@ void copyright() { 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"); - printf("PARI 2.2.1(alpha), copyright (C) 2000,\n"); - printf(" C. Batut, K. Belabas, D. Bernardi, H. Cohen and M. Olivier.\n"); + printf("Copyright 2000-2003, Risa/Asir committers, http://www.openxm.org/.\n"); + printf("GC 6.1(alpha5) copyright 2001, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"); +#if PARI +#if 0 + printf("PARI 2.2.4, copyright (C) 2002 The PARI Group.\n"); +#endif + printf("PARI 2.0.17, copyright 1989-1999, C. Batut, K. Belabas, D. Bernardi,\n"); + printf(" H. Cohen and M. Olivier.\n"); +#endif }