Annotation of 43BSD/ingres/source/monitor/branch.c, revision 1.1.1.1

1.1       root        1: # include      "monitor.h"
                      2: # include      <ingres.h>
                      3: # include      <aux.h>
                      4: #include       <sccs.h>
                      5: 
                      6: SCCSID(@(#)branch.c    8.1     12/31/84)
                      7: 
                      8: 
                      9: 
                     10: /*
                     11: **  BRANCH
                     12: **
                     13: **     The "filename" following the \b op must match the "filename"
                     14: **     which follows some \k command somewhere in this same file.
                     15: **     The input pointer is placed at that point if possible.  If
                     16: **     the label does not exist, an error is printed and the next
                     17: **     character read is an EOF.
                     18: **
                     19: **     Trace Flags:
                     20: **             33
                     21: */
                     22: 
                     23: branch()
                     24: {
                     25:        register char   c;
                     26:        register int    i;
                     27:        extern char     getch();
                     28: 
                     29: #      ifdef xMTR2
                     30:        if (tTf(33, -1))
                     31:                printf(">>branch: ");
                     32: #      endif
                     33: 
                     34:        /* see if conditional */
                     35:        while ((c = getch()) > 0)
                     36:                if (c != ' ' && c != '\t')
                     37:                        break;
                     38:        if (c == '?')
                     39:        {
                     40:                /* got a conditional; evaluate it */
                     41:                Oneline = TRUE;
                     42:                macinit(getch, 0, 0);
                     43:                i = expr();
                     44: 
                     45:                if (i <= 0)
                     46:                {
                     47:                        /* no branch */
                     48: #                      ifdef xMTR2
                     49:                        if (tTf(33, 0))
                     50:                                printf("no branch\n");
                     51: #                      endif
                     52:                        getfilenm();
                     53:                        return;
                     54:                }
                     55:        }
                     56:        else
                     57:        {
                     58:                ungetc(c, Input);
                     59:        }
                     60: 
                     61:        /* get the target label */
                     62:        if (branchto(getfilenm()) == 0)
                     63:                if (branchto(macro("{default}")) == 0)
                     64:                {
                     65:                        GiveEof = TRUE;
                     66:                        printf("Cannot branch\n");
                     67:                }
                     68:        return;
                     69: }
                     70: 
                     71: 
                     72: branchto(label)
                     73: char   *label;
                     74: {
                     75:        char            target[100];
                     76:        register char   c;
                     77: 
                     78:        smove(label, target);
                     79:        if (rewind(Input))
                     80:        {
                     81:                printf("Cannot branch on a terminal\n");
                     82:                return (1);
                     83:        }
                     84: 
                     85:        /* search for the label */
                     86:        while ((c = getch()) > 0)
                     87:        {
                     88:                if (c != '\\')
                     89:                        continue;
                     90:                if (getescape(0) != C_MARK)
                     91:                        continue;
                     92:                if (sequal(getfilenm(), target))
                     93:                        return;
                     94:        }
                     95: }

unix.superglobalmegacorp.com

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