ING_DB
This commit is contained in:
parent
0108850f96
commit
6dba192858
|
|
@ -0,0 +1,109 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "monitor.h"
|
||||||
|
|
||||||
|
FILE *Trapfile;
|
||||||
|
int Trap;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** TRAPQUERY -- trap queries which succeeded.
|
||||||
|
**
|
||||||
|
** This module traps the current query into the file
|
||||||
|
** specified by Trapfile. It will open Trapfile if
|
||||||
|
** it is not already open.
|
||||||
|
**
|
||||||
|
** Parameters:
|
||||||
|
** retcode -- the return code of the query.
|
||||||
|
** name -- the name of the file in which to dump the
|
||||||
|
** query buffer.
|
||||||
|
**
|
||||||
|
** Bugs:
|
||||||
|
** If 'name' (that is, the QUERYTRAP macro) changes
|
||||||
|
** during a run, the output file does not change.
|
||||||
|
*/
|
||||||
|
trapquery(retcode, name)
|
||||||
|
struct retcode *retcode;
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
register int c;
|
||||||
|
register FILE *iop;
|
||||||
|
register char *cp;
|
||||||
|
long timevec;
|
||||||
|
# ifdef SETBUF
|
||||||
|
static char trap_buf[BUFSIZ];
|
||||||
|
char iop_buf[BUFSIZ];
|
||||||
|
# endif
|
||||||
|
char buf[MAXLINE + 1];
|
||||||
|
extern fgetc();
|
||||||
|
extern long time();
|
||||||
|
extern char *ctime();
|
||||||
|
extern char *AAdatabase;
|
||||||
|
extern char *AAusercode;
|
||||||
|
|
||||||
|
if (Trap < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Trapfile)
|
||||||
|
{
|
||||||
|
if (!(Trapfile = fopen(name, "a")))
|
||||||
|
{
|
||||||
|
printf("%s open TRAP file '%s'\n", ERROR, name);
|
||||||
|
Trap = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(Trapfile, trap_buf);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Trap++)
|
||||||
|
{
|
||||||
|
time(&timevec);
|
||||||
|
# ifdef ESER_VMX
|
||||||
|
fprintf(Trapfile, "\\r\n\/\*\n** TIME %s", ctime(timevec));
|
||||||
|
# else
|
||||||
|
fprintf(Trapfile, "\\r\n\/\*\n** TIME %s", ctime(&timevec));
|
||||||
|
# endif
|
||||||
|
fprintf(Trapfile, "** DB %s\n", AAdatabase);
|
||||||
|
getuser((char *) -1); /* init getuser */
|
||||||
|
if (getuser(AAusercode, buf))
|
||||||
|
*buf = 0; /* cant find user code */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (cp = buf; *cp != ':'; cp++)
|
||||||
|
continue;
|
||||||
|
*cp = '\0';
|
||||||
|
}
|
||||||
|
getuser((char *) 0); /* close getuser */
|
||||||
|
fprintf(Trapfile, "** USER %s (%.2s)\n", buf, AAusercode);
|
||||||
|
fprintf(Trapfile, "** TRAP %s\n\*\/\n\n\n", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(iop = fopen(Qbname, "r")))
|
||||||
|
AAsyserr(16024);
|
||||||
|
# ifdef SETBUF
|
||||||
|
setbuf(iop, iop_buf);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
macinit(fgetc, iop, TRUE);
|
||||||
|
|
||||||
|
while ((c = macgetch()) > 0)
|
||||||
|
putc(c, Trapfile);
|
||||||
|
|
||||||
|
time(&timevec);
|
||||||
|
# ifdef ESER_VMX
|
||||||
|
fprintf(Trapfile, "\/\*\n** %s", ctime(timevec));
|
||||||
|
# else
|
||||||
|
fprintf(Trapfile, "\/\*\n** %s", ctime(&timevec));
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (retcode->rc_status == RC_OK)
|
||||||
|
fprintf(Trapfile, "** %ld tuples touched\n", retcode->rc_tupcount);
|
||||||
|
|
||||||
|
fprintf(Trapfile, "\*\/\n\\p\\g\\r\n\n");
|
||||||
|
|
||||||
|
fflush(Trapfile);
|
||||||
|
fclose(iop);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue