This commit is contained in:
Oliver Lehmann 1989-04-06 13:58:27 +00:00
parent 285b79903a
commit d126b68e03
2 changed files with 314 additions and 0 deletions

View File

@ -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);
}

View File

@ -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);
}