|
|
1.1 ! root 1: # include "monitor.h" ! 2: # include <ingres.h> ! 3: # include <aux.h> ! 4: # include <resp.h> ! 5: # include <symbol.h> ! 6: # include <pv.h> ! 7: # include <pipes.h> ! 8: # include <setjmp.h> ! 9: # include <sccs.h> ! 10: ! 11: SCCSID(@(#)go.c 8.2 1/22/85) ! 12: ! 13: ! 14: ! 15: /* ! 16: ** PROCESS QUERY ! 17: ** ! 18: ** The appropriate messages are printed, and the query is scanned. ! 19: ** Tokens are passed to the parser. A parser response is then ! 20: ** expected. ! 21: ** ! 22: ** Trace Flags: ! 23: ** 5 ! 24: */ ! 25: ! 26: # define QRYTRAP "{querytrap}" ! 27: ! 28: jmp_buf GoJmpBuf; ! 29: ! 30: go() ! 31: { ! 32: FILE *iop; ! 33: auto char c; ! 34: register char *p; ! 35: extern int fgetc(); ! 36: pb_t pb; ! 37: extern char *macro(); ! 38: ! 39: clrline(1); ! 40: fflush(Qryiop); ! 41: if ((iop = fopen(Qbname, "r")) == NULL) ! 42: syserr("go: open 1"); ! 43: if (Nodayfile >= 0) ! 44: printf("Executing . . .\n\n"); ! 45: ! 46: ! 47: if (!Nautoclear) ! 48: Autoclear = 1; ! 49: ! 50: /* arrange to call the parser */ ! 51: initp(); ! 52: call_setup(&pb, mdPARSER, NULL); ! 53: pb_prime(&pb, PB_REG); ! 54: pb.pb_proc = 1; /**** PARSER MUST BE IN PROC ONE ****/ ! 55: send_off(&pb, 0, NULL); ! 56: pb_tput(PV_EOF, "", 0, &pb); ! 57: macinit(fgetc, iop, 1); ! 58: while ((c = macgetch()) > 0) ! 59: pb_put(&c, 1, &pb); ! 60: pb_flush(&pb); ! 61: fclose(iop); ! 62: ! 63: /* wait for the response */ ! 64: setjmp(GoJmpBuf); ! 65: readinput(&pb); ! 66: ! 67: if (Resp.resp_tups >= 0) ! 68: macdefine("{tuplecount}", locv(Resp.resp_tups), TRUE); ! 69: ! 70: if (Error_id == 0 && (p = macro(QRYTRAP)) != NULL) ! 71: trapquery(&Resp, p); ! 72: ! 73: resetp(); ! 74: ! 75: mcall("{continuetrap}"); ! 76: ! 77: prompt("\ncontinue"); ! 78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.