diff --git a/WEGA/contrib/ingres/dbs/src/monitor/clear.c b/WEGA/contrib/ingres/dbs/src/monitor/clear.c new file mode 100644 index 0000000..bf8f625 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/monitor/clear.c @@ -0,0 +1,28 @@ +# include +# include "gen.h" +# include "../h/dbs.h" +# include "../h/aux.h" +# include "monitor.h" + +/* +** Clear query buffer +** Flag f is set if called explicitly (with \q) and is +** clear if called automatically. +*/ +clear(f) +register int f; +{ + Autoclear = 0; + + /* TRUNCATE FILE & RETURN */ + if (!freopen(Qbname, "w", Qryiop)) + AAsyserr(16001); + + if (Nodayfile >= 0 && f) + prompt(EMPTY); + + if (f) + clrline(TRUE); + + Notnull = 0; +} diff --git a/WEGA/contrib/ingres/dbs/src/monitor/eval.c b/WEGA/contrib/ingres/dbs/src/monitor/eval.c new file mode 100644 index 0000000..84f5b63 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/monitor/eval.c @@ -0,0 +1,73 @@ +# include +# include "gen.h" +# include "../h/dbs.h" +# include "../h/aux.h" +# include "monitor.h" + +/* +** DO MACRO EVALUATION OF QUERY BUFFER +** +** The logical query buffer is read and passed through the macro +** processor. The main purpose of this is to evaluate {define}'s. +** If the 'pr' flag is set, the result is printed on the terminal, +** and so becomes a post-evaluation version of print. +*/ +eval(pr) +register int pr; +{ + register FILE *tfile; + register int c; +# ifdef SETBUF + char tbuf[BUFSIZ]; +# endif + char tfilename[QRYNAME]; + extern int fgetc(); + + Autoclear = 0; + clrline(TRUE); + + /* open temp file and rewind query buffer */ + if (!pr) + { + Notnull = 0; + AAconcat(QRYTBUF, Fileset, tfilename); + if (!(tfile = fopen(tfilename, "w"))) + AAsyserr(16004, tfilename); +# ifdef SETBUF + setbuf(tfile, tbuf); +# endif + } + if (!freopen(Qbname, "r", Qryiop)) + AAsyserr(16005); + + /* COPY FILE */ + macinit(fgetc, Qryiop, FALSE); + while ((c = macgetch()) > 0) + { + if (pr) + putchar(c); + else + { + if (c != ' ' && c != '\n' && c != '\t') + Notnull++; + if (putc(c, tfile) == EOF) + AAsyserr(16006); + } + } + + if (!pr) + { + /* link temp file back to query buffer */ + fclose(tfile); + unlink(Qbname); + if (link(tfilename, Qbname)) + AAsyserr(16007); + unlink(tfilename); + } + + /* reopen query buffer (now evaluated) */ + if (!(Qryiop = freopen(Qbname, "a", Qryiop))) + AAsyserr(16008); + + cgprompt(); +} diff --git a/WEGA/contrib/ingres/dbs/src/monitor/print.c b/WEGA/contrib/ingres/dbs/src/monitor/print.c new file mode 100644 index 0000000..4a371da --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/monitor/print.c @@ -0,0 +1,49 @@ +# include +# include "gen.h" +# include "../h/dbs.h" +# include "../h/aux.h" +# include "monitor.h" + +/* +** PRINT QUERY BUFFER +** +** The logical query buffer is printed on the terminal regardless +** of the "Nodayfile" mode. Autoclear is reset, so the query +** may be rerun. +*/ +print(pr) +register int pr; +{ + register int c; + register FILE *iop; +# ifdef SETBUF + char iop_buf[BUFSIZ]; +# endif + + if (pr) + { + /* BACK UP FILE & UPDATE LAST PAGE */ + Autoclear = 0; + clrline(TRUE); + fflush(Qryiop); + } + + if (!(iop = fopen(Qbname, "r"))) + AAsyserr(16021, Qbname); +# ifdef SETBUF + setbuf(iop, iop_buf); +# endif + + /* list file on standard output */ + Notnull = 0; + while ((c = getc(iop)) > 0) + { + if (pr) + putchar(c); + if (c != ' ' && c != '\n' && c != '\t') + Notnull++; + } + + fclose(iop); + cgprompt(); +}