1: # include   "ctlmod.h"
   2: # include   <ingres.h>
   3: # include   <tree.h>
   4: # include   <sccs.h>
   5: 
   6: SCCSID(@(#)resetp.c	8.2	12/8/85)
   7: 
   8: /*
   9: **  RESETP -- reset parameters from call.
  10: **
  11: **	This must be called after an initp-setp-call sequence to
  12: **	reclaim the memory gathered by the initp.  It can also be
  13: **	used in an initp-setp sequence to clean up if an error is
  14: **	found.
  15: **
  16: **	Parameters:
  17: **		none.
  18: **
  19: **	Returns:
  20: **		none.
  21: **
  22: **	Side Effects:
  23: **		Restores the old context.
  24: **		Reclaims space from Qbuf.
  25: **
  26: **	Trace Flags:
  27: **		4.4 - 4.7
  28: */
  29: 
  30: resetp()
  31: {
  32:     extern char *Proc_name;
  33: 
  34: # ifdef xCTR1
  35:     if (tTf(4, 4))
  36:         printf("resetp: ctx_new=%d _init=%d _link=%x _pmark=%d _cmark=%d\n",
  37:             Ctx.ctx_new, Ctx.ctx_init, Ctx.ctx_link, Ctx.ctx_pmark,
  38:             Ctx.ctx_cmark);
  39: # endif
  40: 
  41:     /* don't do anything if no matching "initp" call */
  42:     if (!Ctx.ctx_new)
  43:         return;
  44: 
  45:     /* If the Current Qt header matches the new context clean things up */
  46:     if ((char *)Ctx.ctx_link == Qt.qt_ctx)
  47:         Qt.qt_ctx = NULL;
  48: 
  49:     /*
  50: 	**	The 'freebuf' to ctx_cmark will also deallocate
  51: 	**	any parameters, since ctx_pmark >= ctx_cmark
  52: 	**	always.
  53: 	*/
  54: 
  55:     if (Ctx.ctx_link != NULL)
  56:         bmove((char *) Ctx.ctx_link, (char *) &Ctx, Ctx.ctx_size);
  57: # ifdef xCM_DEBUG
  58:     if (Ctx.ctx_pmark < Ctx.ctx_cmark)
  59:         syserr("resetp: pmark %d cmark %d", Ctx.ctx_pmark, Ctx.ctx_cmark);
  60: # endif
  61:     freebuf(Qbuf, Ctx.ctx_cmark);
  62:     tT = Ctx.ctx_tvect;
  63:     Proc_name = Ctx.ctx_name;
  64: # ifdef xCTR1
  65:     if (tTf(4, 5))
  66:         lprintf("resetp: free %d\n", Ctx.ctx_cmark);
  67: # endif
  68: 
  69:     /*
  70: 	**	If there was a Qt associated with this context,
  71: 	**	restore it also.  If not, but there was a Qt
  72: 	**	associated with the context we just deallocated,
  73: 	**	set Qt to be 'unallocated'.
  74: 	*/
  75:     if (Ctx.ctx_qt != NULL)
  76:     {
  77:         /* first free any descriptors */
  78:         clrrange();
  79:         bmove((char *) Ctx.ctx_qt, (char *) &Qt, sizeof Qt);
  80:         free(Ctx.ctx_qt);
  81:         Ctx.ctx_qt = NULL;
  82:     }
  83:     else if (Qt.qt_ctx == NULL)
  84:         Qt.qt_active = 0;
  85: }

Defined functions

Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 902
Valid CSS Valid XHTML 1.0 Strict