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