1: #include "../h/rt.h"
   2: 
   3: /*
   4:  * bscan - set &subject and &pos upon entry to a scanning expression.
   5:  *
   6:  *  Arguments are:
   7:  *      arg1 - new value for &subject
   8:  *      arg2 - saved value of &subject
   9:  *      arg3 - saved value of &pos
  10:  */
  11: 
  12: bscan(nargs, arg3, arg2, arg1)
  13: int nargs;
  14: struct descrip arg3, arg2, arg1;
  15:    {
  16:    DclSave
  17:    char sbuf[MAXSTRING];
  18:    extern char *alcstr();
  19:    struct descrip tsubject;
  20: 
  21:    SetBound;
  22:    /*
  23:     * Make a copy of the value for &subject and convert it to a string.
  24:     */
  25:    tsubject = arg1;
  26:    switch (cvstr(&tsubject, sbuf)) {
  27:       case NULL:
  28:          runerr(103, &tsubject);
  29:       case 1:
  30:          /*
  31:           * The new value for &subject wasn't a string.  Allocate the
  32:           *  new value and fall through.
  33:           */
  34:          sneed(STRLEN(tsubject));
  35:          STRLOC(tsubject) = alcstr(STRLOC(tsubject), STRLEN(tsubject));
  36:       case 2:
  37:          /*
  38:           * Establish a new &subject value and set &pos to 1.
  39:           */
  40:          k_subject = tsubject;
  41:          k_pos = 1;
  42:       }
  43:    suspend();
  44: 
  45:    /*
  46:     * bscan has been resumed. Restore the old &subject and &pos values
  47:     *  and fail.
  48:     */
  49:    k_subject = arg2;
  50:    k_pos = INTVAL(arg3);
  51:    fail();
  52:    }

Defined functions

bscan defined in line 12; never used
Last modified: 1984-11-18
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 786
Valid CSS Valid XHTML 1.0 Strict