|
|
1.1 ! root 1: # include "monitor.h" ! 2: # include <ingres.h> ! 3: # include <aux.h> ! 4: # include <sccs.h> ! 5: ! 6: SCCSID(@(#)eval.c 7.1 2/5/81) ! 7: ! 8: ! 9: ! 10: /* ! 11: ** DO MACRO EVALUATION OF QUERY BUFFER ! 12: ** ! 13: ** The logical query buffer is read and passed through the macro ! 14: ** processor. The main purpose of this is to evaluate {define}'s. ! 15: ** If the 'pr' flag is set, the result is printed on the terminal, ! 16: ** and so becomes a post-evaluation version of print. ! 17: ** ! 18: ** Uses trace flag 12 ! 19: */ ! 20: ! 21: eval(pr) ! 22: int pr; ! 23: { ! 24: register FILE *tfile; ! 25: register char c; ! 26: extern int fgetc(); ! 27: char tfilename[40]; ! 28: ! 29: Autoclear = 0; ! 30: clrline(1); ! 31: ! 32: /* open temp file and reopen query buffer for reading */ ! 33: if (!pr) ! 34: { ! 35: concat("/tmp/INGTQ", Fileset, tfilename); ! 36: if ((tfile = fopen(tfilename, "w")) == NULL) ! 37: syserr("eval: open(%s)", tfilename); ! 38: } ! 39: if (freopen(Qbname, "r", Qryiop) == NULL) ! 40: syserr("eval: freopen 1"); ! 41: ! 42: /* COPY FILE */ ! 43: macinit(fgetc, Qryiop, 1); ! 44: while ((c = macgetch()) > 0) ! 45: { ! 46: if (pr) ! 47: putchar(c); ! 48: else ! 49: if (putc(c, tfile) == EOF) ! 50: syserr("eval: putc"); ! 51: } ! 52: ! 53: if (!pr) ! 54: { ! 55: /* link temp file back to query buffer */ ! 56: fclose(tfile); ! 57: unlink(Qbname); ! 58: if (link(tfilename, Qbname)) ! 59: syserr("eval: link"); ! 60: unlink(tfilename); ! 61: } ! 62: ! 63: /* reopen query buffer (now evaluated) */ ! 64: if (freopen(Qbname, "a", Qryiop) == NULL) ! 65: syserr("eval: freopen 2"); ! 66: ! 67: cgprompt(); ! 68: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.