Annotation of 43BSD/ingres/source/ctlmod/initp.c, revision 1.1.1.1

1.1       root        1: # include      "ctlmod.h"
                      2: # include      <ingres.h>
                      3: # include      <aux.h>
                      4: # include      <tree.h>
                      5: # include      <sccs.h>
                      6: 
                      7: SCCSID(@(#)initp.c     8.1     12/31/84)
                      8: 
                      9: /*
                     10: **  INITP -- initialize parameters for call
                     11: **
                     12: **     Saves the current context if one is in effect, and
                     13: **     initializes the new context.  Further 'setp' calls
                     14: **     will set parameters, and 'call' will call the desired
                     15: **     function.
                     16: **
                     17: **     'Initp' is also used by the error routine, except
                     18: **     that the 'call' is simulated internally in 'error'
                     19: **
                     20: **     Parameters:
                     21: **             none
                     22: **
                     23: **     Returns:
                     24: **             nothing
                     25: **
                     26: **     Side Effects:
                     27: **             Saves the context 'Ctx' if active.
                     28: **             Initializes 'Ctx'.
                     29: **
                     30: **     Trace Flags:
                     31: **             4.0 - 4.3
                     32: */
                     33: 
                     34: initp()
                     35: {
                     36:        register ctx_t  *pctx;
                     37:        register int    sz;
                     38:        extern char *need();
                     39: 
                     40: # ifdef xCTR1
                     41:        if (tTf(4, 0))
                     42:                lprintf("initp: new %d mark %d\n", Ctx.ctx_new, markbuf(Qbuf));
                     43: # endif
                     44: 
                     45:        if (!Ctx.ctx_new)
                     46:        {
                     47:                /*
                     48:                ** Save the context.
                     49:                **      Mark the current point in Qbuf.
                     50:                **      Allocate space from Qbuf and save the context.
                     51:                **      Only save as much of the pv as is used.
                     52:                **      Leave 'pctx' as a pointer to the save area.
                     53:                */
                     54: 
                     55:                Ctx.ctx_cmark = markbuf(Qbuf);
                     56:                sz = Ctx.ctx_pc * sizeof Ctx.ctx_pv[0]
                     57:                     + ((char *) Ctx.ctx_pv - (char *) &Ctx);
                     58:                pctx = (ctx_t *) need(Qbuf, sz);
                     59:                bmove((char *) &Ctx, (char *) pctx, sz);
                     60:                
                     61:                /*
                     62:                **  Initialize new context.
                     63:                **      The current context describes the attributes of
                     64:                **              the next context (e.g., ctx_size).
                     65:                **      ctx_pmark marks the base of the parameters in
                     66:                **              Qbuf.
                     67:                **      ctx_qt points to the saved query tree header (if
                     68:                **              one exists).
                     69:                */
                     70: 
                     71:                Ctx.ctx_link = pctx;
                     72:                Ctx.ctx_size = sz;
                     73:                Ctx.ctx_pmark = markbuf(Qbuf);
                     74:                Ctx.ctx_qt = NULL;
                     75:                Ctx.ctx_resp = Cm.cm_myproc;
                     76: 
                     77:                /*
                     78:                **  If the QT hdr is in use by the
                     79:                **  context we just saved, arrange to have it saved
                     80:                **  later (if anyone every tries to use it).
                     81:                */
                     82: 
                     83:                if (Qt.qt_active > 0 && Qt.qt_ctx == NULL)
                     84:                {
                     85:                        Qt.qt_ctx = (char *) pctx;
                     86:                }
                     87:        }
                     88:        Ctx.ctx_pc = 0;
                     89:        Ctx.ctx_init = Ctx.ctx_new = TRUE;
                     90:        Ctx.ctx_errfn = NULL;
                     91:        Ctx.ctx_fn = NULL;
                     92:        Ctx.ctx_glob = NULL;
                     93: 
                     94: # ifdef xCTR2
                     95:        if (tTf(4, 2))
                     96:                lprintf("initp: cmark %d pmark %d link %x\n",
                     97:                    Ctx.ctx_cmark, Ctx.ctx_pmark, Ctx.ctx_link);
                     98: # endif
                     99: }

unix.superglobalmegacorp.com

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