[BACK]Return to asir_lib.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Annotation of OpenXM_contrib2/asir2000/parse/asir_lib.c, Revision 1.1

1.1     ! noro        1: /* $OpenXM: OpenXM/src/asir99/parse/asir_lib.c,v 1.1.1.1 1999/11/10 08:12:34 noro Exp $ */
        !             2: #include "ca.h"
        !             3: #include "parse.h"
        !             4: #if defined(THINK_C)
        !             5: #include <console.h>
        !             6: #endif
        !             7:
        !             8: #if PARI
        !             9: #include "genpari.h"
        !            10:
        !            11: extern jmp_buf environnement;
        !            12: #endif
        !            13:
        !            14: extern jmp_buf env;
        !            15: extern int *StackBottom;
        !            16: extern char *parse_strp;
        !            17: extern int do_file;
        !            18:
        !            19: void Init_Asir(int,char **);
        !            20: int Call_Asir(char *,pointer *);
        !            21:
        !            22: void Init_Asir(int argc,char **argv)
        !            23: {
        !            24:        int tmp;
        !            25:        FILE *ifp;
        !            26:        char ifname[BUFSIZ];
        !            27:        extern int GC_dont_gc;
        !            28:        extern int read_exec_file;
        !            29:        extern int do_asirrc;
        !            30:        char *getenv();
        !            31:        static asirlib_initialized=0;
        !            32:
        !            33:        if ( asirlib_initialized )
        !            34:                return;
        !            35:        asirlib_initialized = 1;
        !            36:        do_file = 1;
        !            37: #if PARI
        !            38:     risa_pari_init();
        !            39: #endif
        !            40:        srandom((int)get_current_time());
        !            41: /*     mt_sgenrand((unsigned long)get_current_time()); */
        !            42:
        !            43: #if defined(THINK_C)
        !            44:        param_init();
        !            45: #endif
        !            46:        StackBottom = &tmp + 1; /* XXX */
        !            47:        rtime_init();
        !            48:        env_init();
        !            49:        endian_init();
        !            50: #if !defined(VISUAL) && !defined(THINK_C)
        !            51: /*     check_key(); */
        !            52: #endif
        !            53:        GC_init();
        !            54:        process_args(--argc,++argv);
        !            55:        copyright();
        !            56:        output_init();
        !            57:        arf_init();
        !            58:        nglob_init();
        !            59:        glob_init();
        !            60:        sig_init();
        !            61:        tty_init();
        !            62:        debug_init();
        !            63:        pf_init();
        !            64:        sysf_init();
        !            65:        parif_init();
        !            66: #if defined(UINIT)
        !            67:        reg_sysf();
        !            68: #endif
        !            69: #if defined(THINK_C)
        !            70:        sprintf(ifname,"asirrc");
        !            71: #else
        !            72:        sprintf(ifname,"%s/.asirrc",getenv("HOME"));
        !            73: #endif
        !            74:        if ( do_asirrc && (ifp = fopen(ifname,"r")) ) {
        !            75:                input_init(ifp,ifname);
        !            76:                if ( !setjmp(env) ) {
        !            77:                        read_exec_file = 1;
        !            78:                        read_eval_loop();
        !            79:                        read_exec_file = 0;
        !            80:                }
        !            81:                fclose(ifp);
        !            82:        } else
        !            83:                error(".asirrc not found");
        !            84:        input_init(0,"string");
        !            85: }
        !            86:
        !            87: int Call_Asir(char *cmd,pointer *result)
        !            88: {
        !            89:        SNODE snode;
        !            90:        pointer val;
        !            91: #if PARI
        !            92:        recover(0);
        !            93:        if ( setjmp(environnement) ) {
        !            94:                avma = top; recover(1);
        !            95:                error("PARI error");
        !            96:        }
        !            97: #endif
        !            98:        if ( setjmp(env) ) {
        !            99:                *result = 0;
        !           100:                return -1;
        !           101:        }
        !           102:        parse_strp = cmd;
        !           103:        if ( mainparse(&snode) ) {
        !           104:                *result = 0;
        !           105:                return -1;
        !           106:        }
        !           107:        val = evalstat(snode);
        !           108:        if ( NEXT(asir_infile) ) {
        !           109:                while ( NEXT(asir_infile) ) {
        !           110:                        if ( mainparse(&snode) ) {
        !           111:                                *result = val;
        !           112:                                return -1;
        !           113:                        }
        !           114:                        nextbp = 0;
        !           115:                        val = evalstat(snode);
        !           116:                }
        !           117:        }
        !           118:        *result = val;
        !           119:        return 0;
        !           120: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>