ING_DB
This commit is contained in:
parent
285b79903a
commit
d126b68e03
|
|
@ -0,0 +1,213 @@
|
|||
# include <stdio.h>
|
||||
# include "../conf/gen.h"
|
||||
# include "../h/dbs.h"
|
||||
# include "../h/aux.h"
|
||||
# include "../h/access.h"
|
||||
# include "../h/batch.h"
|
||||
# include "../h/symbol.h"
|
||||
# include "../h/lock.h"
|
||||
# include "../h/bs.h"
|
||||
|
||||
# ifdef P8000
|
||||
ret_buf AAjmp_buf;
|
||||
# else
|
||||
jmp_buf AAjmp_buf;
|
||||
# endif
|
||||
|
||||
extern int AAdbstat;
|
||||
char *Fileset;
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
register char **av;
|
||||
register char *p;
|
||||
register int i;
|
||||
extern char *AAdbpath;
|
||||
extern char *AAproc_name;
|
||||
extern char *Parmvect[];
|
||||
extern char *Flagvect[];
|
||||
# ifdef SETBUF
|
||||
char stdbuf[BUFSIZ];
|
||||
|
||||
setbuf(stdout, stdbuf);
|
||||
# endif
|
||||
|
||||
AAproc_name = "PRINT_BATCH_FILE";
|
||||
|
||||
# ifdef xSTR1
|
||||
AAtTrace(&argc, argv, 'X');
|
||||
# endif
|
||||
|
||||
switch (i = initucode(argc, argv, TRUE, (char *) 0, M_SHARE))
|
||||
{
|
||||
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:
|
||||
AAsyserr(0, "Sie haben keinen Datenbanknamen angegeben");
|
||||
|
||||
default:
|
||||
AAsyserr(22200, AAproc_name, i);
|
||||
}
|
||||
|
||||
if (Flagvect[0])
|
||||
{
|
||||
printf("Fuer dieses Kommando sind keine Flags gestattet\n");
|
||||
goto usage;
|
||||
}
|
||||
|
||||
/*
|
||||
** Check for usage errors.
|
||||
*/
|
||||
for (i = 1; Parmvect[i]; i++)
|
||||
continue;
|
||||
if (i < 2)
|
||||
{
|
||||
usage:
|
||||
AAsyserr(0, "HINWEIS: prbatch db_name {batch_file}");
|
||||
}
|
||||
|
||||
/*
|
||||
** Check for superuser
|
||||
*/
|
||||
if (!(AAdbstat & U_SUPER))
|
||||
AAsyserr(0, "Sie duerfen PRBATCH nicht verwenden");
|
||||
|
||||
p = Parmvect[0]; /* data base is first parameter */
|
||||
if (chdir(AAdbpath) < 0)
|
||||
AAsyserr(22201, AAproc_name, p);
|
||||
|
||||
av = &Parmvect[1];
|
||||
while (p = *av++)
|
||||
prbatch(p);
|
||||
AAunldb();
|
||||
fflush(stdout);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
prbatch(name)
|
||||
char *name;
|
||||
{
|
||||
register struct si_doms *si;
|
||||
register int i;
|
||||
register struct batchhd *b;
|
||||
long tupcnt;
|
||||
long oldtid;
|
||||
char oldtup[MAXTUP];
|
||||
long newtid;
|
||||
char newtup[MAXTUP];
|
||||
char file_set_buf[IDSIZE + 1];
|
||||
extern long lseek();
|
||||
|
||||
if ((Batch_fp = open(name, 0)) < 0)
|
||||
{
|
||||
printf("BATCH file %s nicht lesbar\n", name);
|
||||
return;
|
||||
}
|
||||
|
||||
read(Batch_fp, Fileset = file_set_buf, IDSIZE);
|
||||
lseek(Batch_fp, 0L, 0);
|
||||
file_set_buf[IDSIZE] = 0;
|
||||
|
||||
b = &Batchhd;
|
||||
Batch_cnt = BATCHSIZE;
|
||||
getbatch(b, sizeof Batchhd);
|
||||
|
||||
printf("BATCH\tfile\t%s\n", name);
|
||||
printf("\t db\t%s\n", b->db_name);
|
||||
printf("\t rel\t%s\n", b->rel_name);
|
||||
printf("\tuser\t%s\n", b->userid);
|
||||
switch (b->mode_up)
|
||||
{
|
||||
case mdAPP:
|
||||
printf("APPEND\n");
|
||||
break;
|
||||
|
||||
case mdDEL:
|
||||
printf("DELETE\n");
|
||||
break;
|
||||
|
||||
case mdREPL:
|
||||
printf("REPLACE\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("%d\n", b->mode_up);
|
||||
}
|
||||
printf("\t%4ld\tAnzahl der Aenderungen\n", b->num_updts);
|
||||
printf("\t%4d\tLaenge des alten TID's\n", b->tido_size);
|
||||
printf("\t%4d\tLaenge des alten TUPLE's\n", b->tupo_size);
|
||||
printf("\t%4d\tLaenge des neuen TID's\n", b->tidn_size);
|
||||
printf("\t%4d\tLaenge des neuen TUPLE's\n", b->tupn_size);
|
||||
printf("\t%4d\tAnzahl der Domaenen in Indizes\n", b->si_dcount);
|
||||
if (b->si_dcount)
|
||||
{
|
||||
printf("INDEX\tDomaenen\n");
|
||||
for (si = b->si, i = 0; i <= MAXDOM; i++, si++)
|
||||
{
|
||||
if (!si->dom_size)
|
||||
continue;
|
||||
|
||||
printf(" %2d\tsize %3d", i, si->dom_size);
|
||||
printf(" tuple off %4d", si->rel_off);
|
||||
printf(" batch off %4d\n", si->tupo_off);
|
||||
}
|
||||
}
|
||||
|
||||
printf("VALUES\n");
|
||||
tupcnt = b->num_updts;
|
||||
while (tupcnt--)
|
||||
{
|
||||
printf("%ld", tupcnt);
|
||||
getbatch(&oldtid, b->tido_size);/* read old tid */
|
||||
getbatch(oldtup, b->tupo_size); /* and portions of old tuple */
|
||||
getbatch(newtup, b->tupn_size); /* and the newtup */
|
||||
getbatch(&newtid, b->tidn_size);/* and the new tid */
|
||||
if (b->tido_size)
|
||||
{
|
||||
printf("\told");
|
||||
AAdumptid(&oldtid);
|
||||
}
|
||||
if (b->tupo_size)
|
||||
{
|
||||
printf("\toldtup:\t");
|
||||
for (i = 0; i < b->tupo_size; i++)
|
||||
AAxputchar(oldtup[i]);
|
||||
putchar('\n');
|
||||
}
|
||||
if (b->tidn_size)
|
||||
{
|
||||
printf("\tnew");
|
||||
AAdumptid(&newtid);
|
||||
}
|
||||
if (b->tupn_size)
|
||||
{
|
||||
printf("\tnewtup:\t");
|
||||
for (i = 0; i < b->tupn_size; i++)
|
||||
AAxputchar(newtup[i]);
|
||||
putchar('\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rubproc()
|
||||
{
|
||||
AAunlall();
|
||||
fflush(stdout);
|
||||
exit(0);
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# include <stdio.h>
|
||||
# include "../conf/gen.h"
|
||||
# include "../h/dbs.h"
|
||||
# include "../h/access.h"
|
||||
# include "../h/aux.h"
|
||||
# include "../h/bs.h"
|
||||
|
||||
# ifdef P8000
|
||||
ret_buf AAjmp_buf;
|
||||
# else
|
||||
jmp_buf AAjmp_buf;
|
||||
# endif
|
||||
|
||||
extern int AAdbstat;
|
||||
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
struct admin ad;
|
||||
register int i;
|
||||
register int fp;
|
||||
register char *db;
|
||||
extern char *AAdbpath;
|
||||
extern char *AAproc_name;
|
||||
extern char *Parmvect[];
|
||||
extern char *Flagvect[];
|
||||
# ifdef SETBUF
|
||||
char stdbuf[BUFSIZ];
|
||||
|
||||
setbuf(stdout, stdbuf);
|
||||
# endif
|
||||
|
||||
AAproc_name = "ADMIN";
|
||||
|
||||
# ifdef xSTR1
|
||||
AAtTrace(&argc, argv, 'X');
|
||||
# endif
|
||||
|
||||
i = initucode(argc, argv, TRUE, (char *) 0, -1);
|
||||
db = Parmvect[0];
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
case 5:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 6:
|
||||
AAsyserr(0, "Die Datenbank '%s' existiert nicht", db);
|
||||
|
||||
case 2:
|
||||
AAsyserr(0, "Sie duerfen auf die Datenbank '%s' nicht zugreifen", db);
|
||||
|
||||
case 3:
|
||||
AAsyserr(0, "Sie sind kein eingetragener DBS-Nutzer");
|
||||
|
||||
case 4:
|
||||
printf("Sie haben keinen Datenbankname angegeben\n");
|
||||
usage:
|
||||
AAsyserr(0, "HINWEIS: admin db_name");
|
||||
|
||||
default:
|
||||
AAsyserr(22000, AAproc_name, i);
|
||||
}
|
||||
|
||||
if (Flagvect[0])
|
||||
{
|
||||
printf("Fuer dieses Kommando sind keine Flags gestattet\n");
|
||||
goto usage;
|
||||
}
|
||||
|
||||
if (Parmvect[1])
|
||||
goto usage;
|
||||
|
||||
if (!(AAdbstat & U_SUPER))
|
||||
AAsyserr(0, "Sie duerfen ADMIN nicht verwenden");
|
||||
|
||||
if (chdir(AAdbpath) < 0)
|
||||
AAsyserr(22001, AAproc_name, db);
|
||||
|
||||
if ((fp = open(AA_ADMIN, 0)) < 0)
|
||||
AAsyserr(0, "Fehler beim Eroeffnen des DBA file '%s/admin'", AAdbpath);
|
||||
if (read(fp, &ad, sizeof ad) != sizeof ad)
|
||||
AAsyserr(22076);
|
||||
|
||||
printf("Datenbank %s, DBA %.2s, Flags 0%o\n", db, ad.adhdr.adowner, ad.adhdr.adflags);
|
||||
|
||||
AAprdesc(&ad.adreld);
|
||||
printf("\n\n");
|
||||
AAprdesc(&ad.adattd);
|
||||
fflush(stdout);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
rubproc()
|
||||
{
|
||||
fflush(stdout);
|
||||
exit(1);
|
||||
}
|
||||
Loading…
Reference in New Issue