ING_DB
This commit is contained in:
parent
f376daca1a
commit
0abad3c194
|
|
@ -0,0 +1,28 @@
|
|||
# include <stdio.h>
|
||||
# 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;
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
# include <stdio.h>
|
||||
# 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();
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# include <stdio.h>
|
||||
# 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();
|
||||
}
|
||||
Loading…
Reference in New Issue