ING_DB
This commit is contained in:
parent
3046bc250c
commit
d1c174e06a
|
|
@ -0,0 +1,117 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/access.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
|
||||||
|
|
||||||
|
int Noupdt;
|
||||||
|
extern char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *AAdbpath;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
char null;
|
||||||
|
|
||||||
|
AAproc_name = "COPYR";
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
printf("Sie haben keinen Datenbanknamen angegeben\n");
|
||||||
|
usage:
|
||||||
|
AAsyserr(0, "HINWEIS: copyr db_name rel_name {dom_name format} into|from file_name");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0, av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
printf("Unbekanntes Flag `%s'\n", p);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
for (i = 0; Parmvect[i]; i++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((argc = i) < 4 || argc % 2)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
/* initialize access methods (and AAdmin struct) for user_ovrd test */
|
||||||
|
AAam_start();
|
||||||
|
opencatalog(AA_REL, 2);
|
||||||
|
|
||||||
|
/* do function */
|
||||||
|
for (i = 0; i < argc - 3; i++)
|
||||||
|
Parmvect[i] = Parmvect[i + 1];
|
||||||
|
null = 0;
|
||||||
|
Parmvect[argc - 3] = &null;
|
||||||
|
copy(argc, Parmvect);
|
||||||
|
|
||||||
|
/* logout database */
|
||||||
|
closecatalog(TRUE);
|
||||||
|
AAunldb();
|
||||||
|
AAam_exit();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *AArelpath(rel)
|
||||||
|
register char *rel;
|
||||||
|
{
|
||||||
|
extern char *AAztack();
|
||||||
|
|
||||||
|
return (AAztack(AAztack(AAdbpath, "/"), rel));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
AAunlall();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* substitution */
|
||||||
|
fullwait() {}
|
||||||
|
fork() {}
|
||||||
|
pipe() {}
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/access.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 char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *AAdbpath;
|
||||||
|
extern int Standalone;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
|
||||||
|
AAproc_name = "DESTROYR";
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
printf("Sie haben keinen Datenbanknamen angegeben\n");
|
||||||
|
usage:
|
||||||
|
AAsyserr(0, "HINWEIS: destroyr db_name {rel_name}");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0, av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
printf("Unbekanntes Flag `%s'\n", p);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
for (i = 0; Parmvect[i]; i++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((argc = i) < 2)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
if (chdir(AAdbpath) < 0)
|
||||||
|
AAsyserr(22201, AAproc_name, AAdbpath);
|
||||||
|
|
||||||
|
/* hello eric */
|
||||||
|
Standalone = 0;
|
||||||
|
|
||||||
|
/* initialize access methods (and AAdmin struct) for user_ovrd test */
|
||||||
|
AAam_start();
|
||||||
|
opencatalog(AA_REL, 2);
|
||||||
|
|
||||||
|
/* do function */
|
||||||
|
Parmvect[argc] = (char *) -1;
|
||||||
|
destroy(--argc, &Parmvect[1]);
|
||||||
|
|
||||||
|
/* logout database */
|
||||||
|
closecatalog(TRUE);
|
||||||
|
AAunldb();
|
||||||
|
AAam_exit();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
AAunlall();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,232 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "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
|
||||||
|
|
||||||
|
char KSORT[] = "/sys/bin/dbu___s";
|
||||||
|
|
||||||
|
char SYSNAME[] = "_SYS";
|
||||||
|
int s_SYSNAME = sizeof SYSNAME - 1;
|
||||||
|
char *Fileset;
|
||||||
|
char *Ksort;
|
||||||
|
char **Xparams = &Ksort;
|
||||||
|
int Noupdt;
|
||||||
|
int Where;
|
||||||
|
char *Fillflag;
|
||||||
|
char *Fillfactor;
|
||||||
|
char *Minflag;
|
||||||
|
char *Minpages;
|
||||||
|
char *Maxflag;
|
||||||
|
char *Maxpages;
|
||||||
|
char *Storage_structure = "isam";
|
||||||
|
int Tidp;
|
||||||
|
struct batchbuf Batchbuf;
|
||||||
|
extern char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *AAdbpath;
|
||||||
|
extern char *AApath;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
char null;
|
||||||
|
char ksort[100];
|
||||||
|
char fileset[6];
|
||||||
|
|
||||||
|
AAproc_name = "INDEXR";
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
printf("Sie haben keinen Datenbanknamen angegeben\n");
|
||||||
|
usage:
|
||||||
|
AAsyserr(0, "HINWEIS: indexr db_name prim_rel index_rel {dom_name}");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0, av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
if (*p == '-')
|
||||||
|
{
|
||||||
|
if (where_flag(p + 1))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
switch (p[1])
|
||||||
|
{
|
||||||
|
case 'N':
|
||||||
|
case 'n':
|
||||||
|
Storage_structure = &p[2];
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case 'T':
|
||||||
|
case 't':
|
||||||
|
Tidp++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Unbekanntes Flag '%s'\n", p);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
for (i = 0; Parmvect[i]; i++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((argc = i) < 4 || argc > 9)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
if (chdir(AAdbpath) < 0)
|
||||||
|
AAsyserr(22201, AAproc_name, AAdbpath);
|
||||||
|
|
||||||
|
/* initialize access methods (and AAdmin struct) for user_ovrd test */
|
||||||
|
AAam_start();
|
||||||
|
opencatalog(AA_REL, 2);
|
||||||
|
|
||||||
|
/* do function index */
|
||||||
|
if (sec_index(argc - 1, &Parmvect[1]))
|
||||||
|
goto no_modify;
|
||||||
|
|
||||||
|
/* do function modify */
|
||||||
|
AA_itoa(getpid(), Fileset = fileset);
|
||||||
|
AAconcat(AApath, KSORT, ksort);
|
||||||
|
Ksort = ksort;
|
||||||
|
Parmvect[0] = Parmvect[2];
|
||||||
|
Parmvect[1] = Storage_structure;
|
||||||
|
Parmvect[2] = "name";
|
||||||
|
if (Tidp)
|
||||||
|
Parmvect[argc++] = "tidp";
|
||||||
|
if (Where)
|
||||||
|
{
|
||||||
|
i = argc;
|
||||||
|
null = 0;
|
||||||
|
Parmvect[i++] = &null;
|
||||||
|
if (Fillflag)
|
||||||
|
{
|
||||||
|
Parmvect[i++] = Fillflag;
|
||||||
|
Parmvect[i++] = Fillfactor;
|
||||||
|
}
|
||||||
|
if (Minflag)
|
||||||
|
{
|
||||||
|
Parmvect[i++] = Minflag;
|
||||||
|
Parmvect[i++] = Minpages;
|
||||||
|
}
|
||||||
|
if (Maxflag)
|
||||||
|
{
|
||||||
|
Parmvect[i++] = Maxflag;
|
||||||
|
Parmvect[i++] = Maxpages;
|
||||||
|
}
|
||||||
|
argc = i;
|
||||||
|
}
|
||||||
|
Parmvect[argc] = (char *) -1;
|
||||||
|
Parmvect[argc + 1] = (char *) 0;
|
||||||
|
modify(argc, Parmvect);
|
||||||
|
|
||||||
|
no_modify:
|
||||||
|
/* logout database */
|
||||||
|
closecatalog(TRUE);
|
||||||
|
AAunldb();
|
||||||
|
AAam_exit();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
where_flag(flag)
|
||||||
|
register char *flag;
|
||||||
|
{
|
||||||
|
register char *f;
|
||||||
|
long i;
|
||||||
|
|
||||||
|
for (f = flag; *f && *f != ':'; f++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!*f)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
*f++ = 0;
|
||||||
|
|
||||||
|
if ((AAsequal(flag, "fillfactor")
|
||||||
|
# ifdef ESER
|
||||||
|
|| AAsequal(flag, "FILLFACTOR")
|
||||||
|
# endif
|
||||||
|
) && !AA_atol(f, &i))
|
||||||
|
{
|
||||||
|
Fillflag = flag;
|
||||||
|
Fillfactor = f;
|
||||||
|
goto flag_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((AAsequal(flag, "minpages")
|
||||||
|
# ifdef ESER
|
||||||
|
|| AAsequal(flag, "MINPAGES")
|
||||||
|
# endif
|
||||||
|
) && !AA_atol(f, &i))
|
||||||
|
{
|
||||||
|
Minflag = flag;
|
||||||
|
Minpages = f;
|
||||||
|
goto flag_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((AAsequal(flag, "maxpages")
|
||||||
|
# ifdef ESER
|
||||||
|
|| AAsequal(flag, "MAXPAGES")
|
||||||
|
# endif
|
||||||
|
) && !AA_atol(f, &i))
|
||||||
|
{
|
||||||
|
Maxflag = flag;
|
||||||
|
Maxpages = f;
|
||||||
|
flag_ok:
|
||||||
|
Where++;
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
*--f = ':';
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
AAunlall();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/access.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 char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *AAdbpath;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int i;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
|
||||||
|
AAproc_name = "SAVER";
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
printf("Sie haben keinen Datenbanknamen angegeben\n");
|
||||||
|
usage:
|
||||||
|
AAsyserr(0, "HINWEIS: saver db_name rel_name month day year");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0, av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
printf("Unbekanntes Flag `%s'\n", p);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
for (i = 0; Parmvect[i]; i++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((argc = i) != 5)
|
||||||
|
goto usage;
|
||||||
|
|
||||||
|
if (chdir(AAdbpath) < 0)
|
||||||
|
AAsyserr(22201, AAproc_name, AAdbpath);
|
||||||
|
|
||||||
|
/* initialize access methods (and AAdmin struct) for user_ovrd test */
|
||||||
|
AAam_start();
|
||||||
|
opencatalog(AA_REL, 0);
|
||||||
|
|
||||||
|
/* do function */
|
||||||
|
save(argc - 1, &Parmvect[1]);
|
||||||
|
|
||||||
|
/* logout database */
|
||||||
|
closecatalog(TRUE);
|
||||||
|
AAunldb();
|
||||||
|
AAam_exit();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
AAunlall();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,312 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/access.h"
|
||||||
|
# include "../h/lock.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
** These are subroutines common to RESTORE and PURGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char All;
|
||||||
|
char Qrymod;
|
||||||
|
char Superuser;
|
||||||
|
char Ask;
|
||||||
|
char Purge;
|
||||||
|
char No_purge;
|
||||||
|
char No_sysmod;
|
||||||
|
char Clean;
|
||||||
|
char Lastflag;
|
||||||
|
|
||||||
|
struct directory
|
||||||
|
{
|
||||||
|
# ifndef NON_V7_FS
|
||||||
|
short inumber;
|
||||||
|
# endif
|
||||||
|
char fname[MAXNAME + 3];
|
||||||
|
};
|
||||||
|
|
||||||
|
# ifndef NON_V7_FS
|
||||||
|
int Direc_fd;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
extern int AAdbstat;
|
||||||
|
extern char *AAusercode;
|
||||||
|
char **Dblist;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** INITIALIZE GLOBALS
|
||||||
|
**
|
||||||
|
** Set up AAusercode and AAdbstat
|
||||||
|
*/
|
||||||
|
initialize(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
register char *p;
|
||||||
|
register char **av;
|
||||||
|
char datadir[MAXLINE];
|
||||||
|
extern char *AAproc_name;
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *Parmvect[];
|
||||||
|
extern long lseek();
|
||||||
|
|
||||||
|
AAproc_name = "INITIALIZE";
|
||||||
|
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(40, 0, "entered initialize\n");
|
||||||
|
# endif
|
||||||
|
|
||||||
|
i = initucode(argc, argv, FALSE, (char *) 0, -1);
|
||||||
|
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(40, 1, "initucode ret:%d\n", i);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
AAsyserr(0, "Sie sind kein eingetragener DBS-Nutzer");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
initdbpath((char *) 0, datadir, FALSE);
|
||||||
|
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(40, 2, "scanning flags\n");
|
||||||
|
# endif
|
||||||
|
for (av = Flagvect; *av; av++)
|
||||||
|
{
|
||||||
|
p = *av;
|
||||||
|
if (p[0] != '-')
|
||||||
|
{
|
||||||
|
badflag:
|
||||||
|
AAsyserr(0, "Unbekanntes Flag %s", p);
|
||||||
|
}
|
||||||
|
switch (p[1])
|
||||||
|
{
|
||||||
|
case 'A':
|
||||||
|
case 'a':
|
||||||
|
Ask++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'f':
|
||||||
|
Clean++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
Purge++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
No_purge++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
if (sucheck())
|
||||||
|
Superuser++;
|
||||||
|
else
|
||||||
|
AAsyserr(0, "Sie duerfen das -s Flag nicht verwenden");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'S':
|
||||||
|
No_sysmod++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto badflag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Dblist = Parmvect;
|
||||||
|
if (!*Dblist)
|
||||||
|
{
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(40, 3, "doing all\n");
|
||||||
|
# endif
|
||||||
|
All++;
|
||||||
|
# ifdef NON_V7_FS
|
||||||
|
if (!open_dir(datadir))
|
||||||
|
AAsyserr(21131);
|
||||||
|
# else
|
||||||
|
if ((Direc_fd = open(datadir, 0)) < 0)
|
||||||
|
AAsyserr(21131);
|
||||||
|
lseek(Direc_fd, 32L, 0);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(40, 0, "leaving initialize\n");
|
||||||
|
# endif
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CHECK FOR SUPERUSER
|
||||||
|
**
|
||||||
|
** The user has requested the -s flag. Can he do it? Will Martha
|
||||||
|
** recover from cancer? Will Dick get the girl? Stay tuned for
|
||||||
|
** "sucheck".
|
||||||
|
**
|
||||||
|
** Permission is based on the U_SUPER bit in the status field
|
||||||
|
** in the AA_USERS.
|
||||||
|
*/
|
||||||
|
sucheck()
|
||||||
|
{
|
||||||
|
return (AAdbstat & U_SUPER);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** GET NEXT DATABASE
|
||||||
|
**
|
||||||
|
** The next database to be purged is selected. It comes from
|
||||||
|
** either the directory or the database list.
|
||||||
|
**
|
||||||
|
** Getnxtdb() leaves the user in the database directory.
|
||||||
|
*/
|
||||||
|
char *getnxtdb()
|
||||||
|
{
|
||||||
|
# ifdef NON_V7_FS
|
||||||
|
extern char *read_dir();
|
||||||
|
# endif
|
||||||
|
static struct directory buf;
|
||||||
|
register char *db;
|
||||||
|
register int admin_fd;
|
||||||
|
register int i;
|
||||||
|
extern struct admin AAdmin;
|
||||||
|
static char dbpbuf[MAXLINE];
|
||||||
|
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 0, "entered getnxtdb\n");
|
||||||
|
# endif
|
||||||
|
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
if (All)
|
||||||
|
{
|
||||||
|
# ifdef NON_V7_FS
|
||||||
|
if (db = read_dir())
|
||||||
|
{
|
||||||
|
/* throw out legitimate files */
|
||||||
|
if (AAsequal(db, ".") || AAsequal(db, ".."))
|
||||||
|
continue;
|
||||||
|
AAbmove(db, buf.fname, MAXNAME + 2);
|
||||||
|
db = buf.fname;
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
if ((i = read(Direc_fd, &buf, 16)) < 16)
|
||||||
|
db = (char *) 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!buf.inumber)
|
||||||
|
continue;
|
||||||
|
db = buf.fname;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
buf.fname[MAXNAME + 2] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
db = *Dblist++;
|
||||||
|
if (!db)
|
||||||
|
{
|
||||||
|
# ifdef NON_V7_FS
|
||||||
|
close_dir();
|
||||||
|
# else
|
||||||
|
if (Direc_fd);
|
||||||
|
close(Direc_fd);
|
||||||
|
# endif
|
||||||
|
return ((char *) 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 1, "using %s as Database\n", db);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
i = initdbpath(db, dbpbuf, TRUE);
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 3, "INITDBPATH: ret %d, %s\n", i, dbpbuf);
|
||||||
|
# endif
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
case 3:
|
||||||
|
printf("Die Datenbank %s existiert nicht\n", db);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(21132, i);
|
||||||
|
}
|
||||||
|
if (chdir(dbpbuf) < 0)
|
||||||
|
{
|
||||||
|
printf("Fehler bei cd %s.", dbpbuf);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 4, "chdir ok, Superuser: %d\n", Superuser);
|
||||||
|
# endif
|
||||||
|
if ((admin_fd = open(AA_ADMIN, 0)) < 0)
|
||||||
|
{
|
||||||
|
printf("Fehler beim Eroeffnen des DBA file %s/admin\n", dbpbuf);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
read(admin_fd, &AAdmin.adhdr, sizeof AAdmin.adhdr);
|
||||||
|
close(admin_fd);
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 5, "dba: %.2s\n", AAdmin.adhdr.adowner);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* set qrymod flag from database status */
|
||||||
|
Qrymod = ((AAdmin.adhdr.adflags & A_QRYMOD) == A_QRYMOD);
|
||||||
|
|
||||||
|
/* check for dba of database if not superuser */
|
||||||
|
if (Superuser || AAbequal(AAdmin.adhdr.adowner, AAusercode, 2))
|
||||||
|
break;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** not DBA isn't an error if running in all mode since user
|
||||||
|
** couln't have specified the database
|
||||||
|
*/
|
||||||
|
if (All)
|
||||||
|
continue;
|
||||||
|
printf("Sie sind nicht der DBA der Datenbank %s\n", db);
|
||||||
|
}
|
||||||
|
# ifdef xSTR2
|
||||||
|
AAtTfp(41, 6, "leaving getnxtdb, %s ok\n", db);
|
||||||
|
# endif
|
||||||
|
return (db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** ASK
|
||||||
|
** If Ask is set desplay prompt and look for 'y' and return TRUE
|
||||||
|
** If Ask is not set return TRUE
|
||||||
|
*/
|
||||||
|
ask(prompt)
|
||||||
|
register char *prompt;
|
||||||
|
{
|
||||||
|
char line[MAXLINE];
|
||||||
|
extern char Ask;
|
||||||
|
extern char *fgetline();
|
||||||
|
|
||||||
|
if (!Ask)
|
||||||
|
return (TRUE);
|
||||||
|
|
||||||
|
printf("**\t\t%s ? *\b", prompt);
|
||||||
|
|
||||||
|
if (!fgetline(line, MAXLINE, stdin))
|
||||||
|
AAsyserr(21133);
|
||||||
|
|
||||||
|
return (line[0] == 'y');
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,282 @@
|
||||||
|
# include <stdio.h>
|
||||||
|
# include "gen.h"
|
||||||
|
# include "../h/dbs.h"
|
||||||
|
# include "../h/aux.h"
|
||||||
|
# include "../h/lock.h"
|
||||||
|
# include "../h/access.h"
|
||||||
|
# include "../h/batch.h"
|
||||||
|
# include "../h/bs.h"
|
||||||
|
|
||||||
|
# ifdef P8000
|
||||||
|
ret_buf AAjmp_buf;
|
||||||
|
# else
|
||||||
|
jmp_buf AAjmp_buf;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
extern int AAdbstat;
|
||||||
|
|
||||||
|
short Qrymod;
|
||||||
|
char *Fileset;
|
||||||
|
int Noupdt = FALSE;
|
||||||
|
char *Dummy;
|
||||||
|
char **Xparams = &Dummy;
|
||||||
|
struct batchbuf Batchbuf;
|
||||||
|
char Header[] = "**\t\t";
|
||||||
|
|
||||||
|
char KSORT[] = "/sys/bin/dbu___s";
|
||||||
|
|
||||||
|
struct modtabl
|
||||||
|
{
|
||||||
|
char *rname;
|
||||||
|
char **parvec;
|
||||||
|
short qmcatalogs;
|
||||||
|
short goahead;
|
||||||
|
short normgo;
|
||||||
|
short optn;
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Relpar[] =
|
||||||
|
{
|
||||||
|
AA_REL,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"relid",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Attpar[] =
|
||||||
|
{
|
||||||
|
AA_ATT,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"attrelid", "attowner", "#attid",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Indpar[] =
|
||||||
|
{
|
||||||
|
AA_INDEX,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"irelidp", "iownerp",
|
||||||
|
"",
|
||||||
|
"minpages", "5",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Trepar[] =
|
||||||
|
{
|
||||||
|
AA_TREE,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"treerelid", "treeowner", "treetype",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Propar[] =
|
||||||
|
{
|
||||||
|
AA_PROTECT,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"prorelid", "proowner",
|
||||||
|
"",
|
||||||
|
"minpages", "5",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Intpar[] =
|
||||||
|
{
|
||||||
|
AA_INTEG,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"intrelid", "intrelowner",
|
||||||
|
"",
|
||||||
|
"minpages", "5",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
char *Refpar[] =
|
||||||
|
{
|
||||||
|
AA_REF,
|
||||||
|
"hash",
|
||||||
|
"name",
|
||||||
|
"refrelid", "refowner", "reftype",
|
||||||
|
"",
|
||||||
|
"minpages", "5",
|
||||||
|
(char *) -1
|
||||||
|
};
|
||||||
|
|
||||||
|
struct modtabl Modtabl[] =
|
||||||
|
{
|
||||||
|
AA_REL, Relpar, FALSE, FALSE, TRUE, FALSE,
|
||||||
|
AA_ATT, Attpar, FALSE, FALSE, TRUE, FALSE,
|
||||||
|
AA_INDEX, Indpar, FALSE, FALSE, TRUE, FALSE,
|
||||||
|
AA_TREE, Trepar, TRUE, FALSE, TRUE, TRUE,
|
||||||
|
AA_PROTECT, Propar, TRUE, FALSE, TRUE, TRUE,
|
||||||
|
AA_INTEG, Intpar, TRUE, FALSE, TRUE, TRUE,
|
||||||
|
AA_REF, Refpar, TRUE, FALSE, TRUE, TRUE,
|
||||||
|
(char *) 0
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
** SYSMOD -- Modify system catalogs to a predetermined
|
||||||
|
** storage structure with predetermined keys.
|
||||||
|
*/
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
register int i;
|
||||||
|
register int j;
|
||||||
|
register char **av;
|
||||||
|
register char *p;
|
||||||
|
register int retval;
|
||||||
|
register int superuser;
|
||||||
|
char fileset[10];
|
||||||
|
char proctab[100];
|
||||||
|
extern char *Parmvect[];
|
||||||
|
extern char *Flagvect[];
|
||||||
|
extern char *AAdbpath;
|
||||||
|
extern char *AApath;
|
||||||
|
extern char *AAproc_name;
|
||||||
|
|
||||||
|
AAproc_name = "SYSMOD";
|
||||||
|
|
||||||
|
# ifdef xSTR1
|
||||||
|
AAtTrace(&argc, argv, 'X');
|
||||||
|
# endif
|
||||||
|
|
||||||
|
AA_itoa(getpid(), fileset);
|
||||||
|
Fileset = fileset;
|
||||||
|
i = initucode(argc, argv, TRUE, (char *) 0, M_EXCL);
|
||||||
|
printf("Datenbank %s\n", Parmvect[0]);
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
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");
|
||||||
|
usage:
|
||||||
|
AAsyserr(0, "HINWEIS: sysmod [-s] [+-w] db_name {relation ...}");
|
||||||
|
|
||||||
|
default:
|
||||||
|
AAsyserr(22200, AAproc_name, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
AAconcat(AApath, KSORT, proctab);
|
||||||
|
Dummy = proctab;
|
||||||
|
|
||||||
|
superuser = FALSE;
|
||||||
|
for (av = Flagvect; p = *av; av++)
|
||||||
|
{
|
||||||
|
if (p[0] != '-')
|
||||||
|
{
|
||||||
|
badflag:
|
||||||
|
printf("Unbekanntes Flag %s\n", p);
|
||||||
|
goto usage;
|
||||||
|
}
|
||||||
|
switch (p[1])
|
||||||
|
{
|
||||||
|
case 's':
|
||||||
|
if (!(AAdbstat & U_SUPER))
|
||||||
|
AAsyserr(0, "Sie duerfen das -s Flag nicht verwenden");
|
||||||
|
superuser = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto badflag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (chdir(AAdbpath) < 0)
|
||||||
|
AAsyserr(0, "Die Datenbank %s existiert nicht", Parmvect[0]);
|
||||||
|
if (superuser)
|
||||||
|
AAbmove(AAdmin.adhdr.adowner, AAusercode, 2);
|
||||||
|
if (!AAbequal(AAusercode, AAdmin.adhdr.adowner, 2))
|
||||||
|
AAsyserr(0, "Sie sind nicht der DBA der Datenbank %s", Parmvect[0]);
|
||||||
|
|
||||||
|
Qrymod = ((AAdmin.adhdr.adflags & A_QRYMOD) == A_QRYMOD);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** if there are any arguments, verify that they are valid
|
||||||
|
** names of relations which can be modified by this program.
|
||||||
|
** if there are no arguments, assume all system relations are to be
|
||||||
|
** modified.
|
||||||
|
*/
|
||||||
|
if (Parmvect[1])
|
||||||
|
if (!(Parmvect[2]) && AAsequal(Parmvect[1], "all"))
|
||||||
|
for (i = 0; Modtabl[i].rname; i++)
|
||||||
|
Modtabl[i].goahead = TRUE;
|
||||||
|
else
|
||||||
|
for (av = &Parmvect[1]; p = *av; av++)
|
||||||
|
{
|
||||||
|
for (j = 0; Modtabl[j].rname; j++)
|
||||||
|
{
|
||||||
|
if (!AAscompare(p, MAXNAME, Modtabl[j].rname, MAXNAME))
|
||||||
|
{
|
||||||
|
if (Modtabl[j].goahead)
|
||||||
|
AAsyserr(0, "Doppelt angegebener Relationsname %s", p);
|
||||||
|
Modtabl[j].goahead = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!Modtabl[j].rname)
|
||||||
|
AAsyserr(0, "%s ist kein Katalogname", p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
for (i = 0; Modtabl[i].rname; i++)
|
||||||
|
Modtabl[i].goahead = Modtabl[i].normgo;
|
||||||
|
for (i = 0; Modtabl[i].rname; i++)
|
||||||
|
{
|
||||||
|
if (!Modtabl[i].goahead || optn_rel(&Modtabl[i]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!Qrymod && Modtabl[i].qmcatalogs)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
printf("%sKatalog %s\n", Header, Modtabl[i].rname);
|
||||||
|
av = Modtabl[i].parvec + 3;
|
||||||
|
j = 0;
|
||||||
|
while (*av != (char *) -1)
|
||||||
|
{
|
||||||
|
j++;
|
||||||
|
av++;
|
||||||
|
}
|
||||||
|
j += 3;
|
||||||
|
AAsmove(Fileset, Batchbuf.file_id);
|
||||||
|
if (retval = modify(j, Modtabl[i].parvec))
|
||||||
|
AAsyserr(0, "%sFehlernummer *%d*", Header, retval);
|
||||||
|
}
|
||||||
|
AAunldb();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
optn_rel(m)
|
||||||
|
register struct modtabl *m;
|
||||||
|
{
|
||||||
|
DESC des;
|
||||||
|
|
||||||
|
return (m->optn & AArelopen(&des, -1, m->rname));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rubproc()
|
||||||
|
{
|
||||||
|
printf("%sSYSMOD interrupted\n", Header);
|
||||||
|
AAunlall();
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue