ING_DB
This commit is contained in:
parent
83975093c3
commit
3a3c2a6e27
|
|
@ -0,0 +1,235 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "../conf/gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/access.h"
|
||||||
|
# include "../h/bs.h"
|
||||||
|
|
||||||
|
# ifdef P8000
|
||||||
|
ret_buf AAjmp_buf;
|
||||||
|
# else
|
||||||
|
jmp_buf AAjmp_buf;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int Dflag; /* print descriptor */
|
||||||
|
int Lflag; /* print line table */
|
||||||
|
short Tflag; /* print tuple */
|
||||||
|
extern int AAdbstat;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
register int badf;
|
||||||
|
extern char *AAdbpath;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
extern char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
# ifdef SETBUF
|
||||||
|
char stdbuf[BUFSIZ];
|
||||||
|
|
||||||
|
setbuf(stdout, stdbuf);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
AAproc_name = "PAGER";
|
||||||
|
|
||||||
|
# ifdef xSTR1
|
||||||
|
AAtTrace(&argc, argv, 'X');
|
||||||
|
# endif
|
||||||
|
|
||||||
|
badf = 0;
|
||||||
|
switch (i = initucode(argc, argv, TRUE, (char *) 0, -1))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 5:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
case 6:
|
||||||
|
AAsyserr(0, "Die Datenbank '%s' existiert nicht", Parmvect[0]);
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
AAsyserr(0, "Sie duerfen auf die Datenbank '%s' nicht zugreifen", Parmvect[0]);
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
AAsyserr(0, "Sie sind kein eingetragener DBS-Nutzer");
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
printf("Sie haben keinen Datenbanknamen angegeben\n");
|
||||||
|
badf++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
if (p[0] != '-')
|
||||||
|
goto badflag;
|
||||||
|
switch (p[1])
|
||||||
|
{
|
||||||
|
case 'd':
|
||||||
|
case 'D':
|
||||||
|
Dflag++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'l':
|
||||||
|
case 'L':
|
||||||
|
Lflag++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
AA_atoi(&p[1], &Tflag);
|
||||||
|
Lflag++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
badflag:
|
||||||
|
printf("Unbekanntes Flag '%s'\n", p);
|
||||||
|
badf++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (badf)
|
||||||
|
{
|
||||||
|
flush();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Check for usage errors.
|
||||||
|
*/
|
||||||
|
for (i = 1; Parmvect[i]; i++)
|
||||||
|
continue;
|
||||||
|
if (i < 2)
|
||||||
|
AAsyserr(0, "HINWEIS: pager [-d] [-l] [-no] db_name {relation}");
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Check for superuser
|
||||||
|
*/
|
||||||
|
if (!(AAdbstat & U_SUPER))
|
||||||
|
AAsyserr(0, "Sie duerfen PAGER nicht verwenden");
|
||||||
|
|
||||||
|
p = Parmvect[0]; /* data base is first parameter */
|
||||||
|
if (chdir(AAdbpath) < 0)
|
||||||
|
AAsyserr(22201, AAproc_name, p);
|
||||||
|
|
||||||
|
/* initialize access methods (and AAdmin struct) for user_ovrd test */
|
||||||
|
AAam_start();
|
||||||
|
|
||||||
|
av = &Parmvect[1];
|
||||||
|
while (p = *av++)
|
||||||
|
pager(p);
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ifdef STACK
|
||||||
|
static ACCBUF pg_buf;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
pager(name)
|
||||||
|
register char *name;
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
register ACCBUF *b;
|
||||||
|
register DESC *d;
|
||||||
|
register int f;
|
||||||
|
register int k;
|
||||||
|
long page;
|
||||||
|
DESC desc;
|
||||||
|
# ifndef STACK
|
||||||
|
ACCBUF pg_buf;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if ((i = AArelopen(d = &desc, 0, name)) == 1)
|
||||||
|
{
|
||||||
|
printf("PAGER: relation '%s' does not exist\n", name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (i < 0)
|
||||||
|
AAsyserr(22202, name, i);
|
||||||
|
|
||||||
|
printf("\n\nPAGES for ");
|
||||||
|
switch (abs(d->reldum.relspec))
|
||||||
|
{
|
||||||
|
case M_HEAP:
|
||||||
|
printf("HEAP");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case M_HASH:
|
||||||
|
printf("HASH");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case M_ISAM:
|
||||||
|
printf("ISAM");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("%4d", d->reldum.relspec);
|
||||||
|
}
|
||||||
|
printf("-relation %s: %5ld\n", name, d->reldum.relprim);
|
||||||
|
printf("---------------------------------------\n\n");
|
||||||
|
f = d->relfp; /* file descriptor for relation file */
|
||||||
|
page = 0;
|
||||||
|
b = &pg_buf;
|
||||||
|
|
||||||
|
if (Dflag)
|
||||||
|
{
|
||||||
|
AAprdesc(d);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
if (d->reldum.relatts > Tflag)
|
||||||
|
d->reldum.relatts = Tflag;
|
||||||
|
|
||||||
|
while (read(f, b, AApgsize) == AApgsize)
|
||||||
|
{
|
||||||
|
printf("%5ld(%4d|%4d):%5ld->%5ld\n", page, b->nxtlino,
|
||||||
|
b->linetab[LINETAB(b->nxtlino)], b->mainpg, b->ovflopg);
|
||||||
|
if (Lflag)
|
||||||
|
{
|
||||||
|
if (Tflag)
|
||||||
|
{
|
||||||
|
for (i = 0; i < b->nxtlino; i++)
|
||||||
|
if (k = b->linetab[LINETAB(i)])
|
||||||
|
{
|
||||||
|
printf("%5ld/%4d|%4d: ", page, i, k);
|
||||||
|
AAprtup(d, ((char *) b) + k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf(" ");
|
||||||
|
for (i = 0; i < b->nxtlino; i++)
|
||||||
|
if (b->linetab[LINETAB(i)])
|
||||||
|
printf("%5d", i);
|
||||||
|
printf("\n ");
|
||||||
|
for (i = 0; i < b->nxtlino; i++)
|
||||||
|
if (k = b->linetab[LINETAB(i)])
|
||||||
|
printf("%5d", k);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
page++;
|
||||||
|
}
|
||||||
|
AArelclose(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue