Annotation of 41BSD/cmd/lisp/trace.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)trace.c     34.1 10/3/80";
                      2: 
                      3: #include "global.h"
                      4: lispval
                      5: Leval1(){
                      6:     register struct nament *bindptr;
                      7:     register lispval handy;
                      8:     snpand(2);
                      9:     if (np-lbot == 2) {        /*if two arguments to eval */
                     10:        if (TYPE((lbot+1)->val) != INT)
                     11:            error("Eval: 2nd arg not legal alist pointer", FALSE);
                     12:        bindptr = orgbnp + (lbot+1)->val->i;
                     13:        if (rsetsw == 0 || rsetatom->a.clb == nil)
                     14:            error("Not in *rsetmode; second arg is useless - eval", TRUE);
                     15:        if (bptr_atom->a.clb != nil)
                     16:            error("WARNING - Nesting 2nd args to eval will give spurious values", TRUE);
                     17:        if (bindptr < orgbnp || bindptr >bnplim)
                     18:            error("Illegal pdl pointer as 2nd arg - eval", FALSE);
                     19:        handy = newdot();
                     20:        handy->d.car = (lispval)bindptr;
                     21:        handy->d.cdr = (lispval)bnp;
                     22:        PUSHDOWN(bptr_atom, handy); 
                     23:        handy = eval(lbot->val);
                     24:        POP;
                     25:        return(handy);
                     26:     } else {   /* normal case - only one arg */
                     27:        chkarg(1,"eval");
                     28:        handy = eval(lbot->val);
                     29:        return(handy);
                     30:     };
                     31: }
                     32: 
                     33: lispval
                     34: Levalhook()
                     35: {
                     36:     register lispval handy;
                     37:     snpand(1);
                     38:     chkarg(2,"evalhook");
                     39:     if (evalhsw == 0) 
                     40:            error("evalhook called before doing sstatus-evalhook", TRUE);
                     41:     if (rsetsw == 0 || rsetatom->a.clb == nil)
                     42:            error("evalhook called while not in *rset mode", TRUE);
                     43:     PUSHDOWN(evalhatom,(lispval)(lbot+1)->val);
                     44:     /* eval checks evalhcall to see if this is a LISP call to evalhook
                     45:        in which case it avoids call to evalhook function, but clobbers
                     46:        value to nil so recursive calls will check.  */
                     47:     PUSHDOWN(evalhcall,tatom);
                     48:     handy = eval(lbot->val);
                     49:     POP;
                     50:     POP;
                     51:     return(handy);
                     52: }
                     53: 
                     54: lispval
                     55: Lrset ()
                     56:     {
                     57:     chkarg(1,"rset");
                     58: 
                     59:     rsetsw = (lbot->val == nil) ? 0 : 1;
                     60:     rsetatom->a.clb = (lbot->val == nil) ? nil: tatom;
                     61:     return(lbot->val);
                     62: }
                     63: 

unix.superglobalmegacorp.com

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