Annotation of 42BSD/ucb/lisp/franz/lisp.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *rcsid =
        !             3:    "$Header: lisp.c,v 1.2 83/09/07 17:56:04 sklower Exp $";
        !             4: #endif
        !             5: 
        !             6: /*                                     -[Sat Jan 29 13:24:33 1983 by jkf]-
        !             7:  *     lisp.c                          $Locker:  $
        !             8:  * main program
        !             9:  *
        !            10:  * (c) copyright 1982, Regents of the University of California
        !            11:  */
        !            12: 
        !            13: #include       "global.h"
        !            14: #include       "frame.h"
        !            15: 
        !            16: /* main *****************************************************************/
        !            17: /* Execution of the lisp system begins here.  This is the top level    */
        !            18: /* executor which is an infinite loop.  The structure is similar to    */
        !            19: /* error.                                                              */
        !            20: 
        !            21: extern char _sobuf[];
        !            22: extern lispval reborn;
        !            23: extern int rlevel;
        !            24: static int virgin = 0;
        !            25: int    Xargc;
        !            26: char   **Xargv;
        !            27: extern char **environ;
        !            28: 
        !            29: main(argc,argv,arge)
        !            30: char **argv,**arge;
        !            31: {
        !            32:        lispval matom(), Lapply();
        !            33:        extern struct frame *errp;
        !            34:        extern int holbeg,holend,usehole;
        !            35:        extern int *curhbeg;
        !            36:        pbuf pb;
        !            37:        
        !            38:        environ = arge;
        !            39:        setbuf(stdout,_sobuf);
        !            40:        Xargc = argc;
        !            41:        Xargv = argv;
        !            42:        virgin = 0;
        !            43:        errp = (struct frame *)0;
        !            44:        initial();
        !            45: 
        !            46:        errp = Pushframe(F_RESET,nil,nil);
        !            47:        switch(retval)
        !            48:        {
        !            49:        case C_RESET: break;    /* what to do? */
        !            50:        case C_INITIAL: break;  /* first time  */
        !            51:        }
        !            52: 
        !            53:        for(EVER) {
        !            54:                lbot = np = orgnp;
        !            55:                rlevel = 0;
        !            56:                depth = 0;
        !            57:                clearerr(piport = stdin);
        !            58:                clearerr(poport = stdout);
        !            59:                np++->val = matom("top-level");
        !            60:                np++->val = nil;
        !            61:                Lapply();
        !            62:        }
        !            63: }
        !            64: 
        !            65: lispval
        !            66: Ntpl()
        !            67: {
        !            68:        lispval Lread(),Istsrch();
        !            69: 
        !            70:        if (virgin == 0) {
        !            71:                fputs((char *)Istsrch(matom("version"))->d.cdr->d.cdr->d.cdr,poport);
        !            72:                virgin = 1;
        !            73:        }
        !            74:        lbot = np;
        !            75:        np++->val = P(stdin);
        !            76:        np++->val = eofa;
        !            77:        while (TRUE)
        !            78:                {
        !            79:                fputs("\n-> ",stdout);
        !            80:                dmpport(stdout);
        !            81:                vtemp = Lread();
        !            82:                if(vtemp == eofa) exit(0);
        !            83:                printr(eval(vtemp),stdout);
        !            84:                }
        !            85:        }
        !            86: 
        !            87: /* franzexit :: give up the ghost
        !            88:  * this function is called whenever one decides to kill this process. 
        !            89:  * We clean up a bit then call then standard exit routine.  C code 
        !            90:  * in franz should never call exit() directly.
        !            91:  */
        !            92: franzexit(code)
        !            93: {
        !            94:        extern int fvirgin;
        !            95:        extern char *stabf;
        !            96:        if(!fvirgin) unlink(stabf);     /* give up any /tmp symbol tables */
        !            97:        exit(code);
        !            98: /* is this something special?? _cleanup();
        !            99:  *                             proflush();
        !           100:  *                             _exit(code);
        !           101:  */
        !           102:                                
        !           103: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.