1: # include   <ingres.h>
   2: # include   <aux.h>
   3: # include   <pv.h>
   4: # include   <sccs.h>
   5: # include   <symbol.h>
   6: # include   <func.h>
   7: 
   8: 
   9: SCCSID (@(#)sysfunc.c	8.2 	1/15/85)
  10: 
  11: short       tTdbu[100];
  12: extern int  sysfunc();
  13: extern int  null_fn();
  14: 
  15: int     Noupdt = FALSE;
  16: 
  17: struct  fn_def  SysFuncFn =
  18: {
  19:     "SYSMOD",
  20:     sysfunc,
  21:     null_fn,
  22:     null_fn,
  23:     NULL,
  24:     0,
  25:     tTdbu,
  26:     100,
  27:     'S',
  28:     0
  29: };
  30: 
  31: 
  32: extern int  Status;
  33: 
  34: struct modtabl
  35: {
  36:     char    *rname;
  37:     char    **parvec;
  38:     int goahead;
  39:     int normgo;
  40:     int optn;
  41: };
  42: 
  43: char    *Relpar[] =
  44: {
  45:     "relation", "hash",     "name",
  46:     "relid",    NULL
  47: };
  48: 
  49: char    *Attpar[] =
  50: {
  51:     "attribute",    "hash",     "name",
  52:     "attrelid", "attowner", "#attid",
  53:     NULL
  54: };
  55: 
  56: char    *Indpar[] =
  57: {
  58:     "indexes",  "hash",     "name",
  59:     "irelidp",  "iownerp",  "",
  60:     "minpages", "5",        NULL
  61: };
  62: 
  63: char    *Trepar[] =
  64: {
  65:     "tree",     "hash",     "name",
  66:     "treerelid",    "treeowner",    "treetype",
  67:     NULL
  68: };
  69: 
  70: char    *Propar[] =
  71: {
  72:     "protect",  "hash",     "name",
  73:     "prorelid", "prorelown",    NULL
  74: };
  75: 
  76: char    *Intpar[] =
  77: {
  78:     "integrities",  "hash",     "name",
  79:     "intrelid", "intrelowner",  NULL
  80: };
  81: 
  82: char    *Rdelpar[] =
  83: {
  84:     "rdelim",   "isam",     "name",
  85:     "order",    "group",    "delim",
  86:     NULL
  87: };
  88: 
  89: struct modtabl  Modtabl[] =
  90: {
  91:     "relation", &Relpar[0], FALSE,  TRUE,   FALSE,
  92:     "attribute",    &Attpar[0], FALSE,  TRUE,   FALSE,
  93:     "indexes",  &Indpar[0], FALSE,  TRUE,   FALSE,
  94:     "tree",     &Trepar[0], FALSE,  TRUE,   TRUE,
  95:     "protect",  &Propar[0], FALSE,  TRUE,   TRUE,
  96:     "integrities",  &Intpar[0], FALSE,  TRUE,   TRUE,
  97:     "rdelim",   &Rdelpar[0],    FALSE,  TRUE,   TRUE,
  98:     0
  99: };
 100: 
 101: 
 102: /*
 103: **	SYSMOD -- Modify system catalogs to a predetermined
 104: **		storage structure with predetermined keys.
 105: **
 106: **		Flags:
 107: **			'-Rsystem relation name' will modify
 108: **			only the named relations
 109: **
 110: **		Trace flags:
 111: **			-S99
 112: **
 113: */
 114: 
 115: sysfunc (pc, pv)
 116: int     pc;
 117: PARM    *pv;
 118: {
 119:     register int    i;
 120:     register int    j;
 121:     register char   **av;
 122:     char        *p;
 123:     char        *argptr;
 124: 
 125: 
 126: # ifdef xSTR1
 127:     if (tTf(99,0))
 128:     {
 129:         printf("SYSFUNC: starting. \n");
 130:         prvect(pc, pv);
 131:     }
 132: # endif
 133: 
 134: /*
 135: **	if there are any arguments, verify that they are valid
 136: **	names of relations which can be modified by this program.
 137: **	if there are no arguments, assume all system relations are to be
 138: **	modified.
 139: */
 140: 
 141:     if (pv[0].pv_val.pv_str != NULL)
 142:         if ((pv[1].pv_val.pv_str == NULL) && sequal(argptr = &pv[0].pv_val.pv_str[2], "all"))
 143:             for (i = 0; Modtabl[i].rname; i++)
 144:                 Modtabl[i].goahead = TRUE;
 145:         else
 146:             for ( i = 0; i <= pc; i++)
 147:             {
 148:                 av = &pv[i].pv_val.pv_str;
 149:                 if (( p = *av) == NULL)
 150:                     break;
 151: 
 152:                 argptr = &p[2];
 153:                 for (j = 0; Modtabl[j].rname; j++)
 154:                 {
 155:                     if (sequal(argptr, Modtabl[j].rname))
 156:                     {
 157:                         if (Modtabl[j].goahead)
 158:                         {
 159:                             printf("%s duplicate relation name\n", p);
 160:                             return(1);
 161:                         }
 162:                         Modtabl[j].goahead = TRUE;
 163:                         break;
 164:                     }
 165:                 }
 166:                 if ((!Modtabl[j].rname) && !(p[1] == 'Z'))
 167:                 {
 168:                     printf("%s is not a system relation\n", p);
 169:                     return(1);
 170:                 }
 171:             }
 172:     else
 173:         for (i = 0; Modtabl[i].rname; i++)
 174:             Modtabl[i].goahead = Modtabl[i].normgo;
 175: 
 176:     for (i = 0; Modtabl[i].rname; i++)
 177:     {
 178:         if (Modtabl[i].goahead == 0 || optn_rel(&Modtabl[i]))
 179:             continue;
 180:         argptr = Modtabl[i].rname;
 181:         printf("modifying %s\n", argptr);
 182:         av = Modtabl[i].parvec;
 183:         j = 0;
 184:         initp();
 185:         while (*av != NULL)
 186:         {
 187:             setp(PV_STR, *av);
 188:             av++;
 189:         }
 190: 
 191:         call( mdMODIFY, NULL);
 192:     }
 193:     printf("sysmod done\n");
 194:     return(0);
 195: }
 196: 
 197: 
 198: optn_rel(mx)
 199: struct modtabl  *mx;
 200: {
 201:     register struct modtabl *m;
 202:     register int        ret;
 203:     char            *temp;
 204: 
 205:     struct descriptor   des;
 206: 
 207:     m = mx;
 208:     ret = FALSE;
 209: 
 210:     if (m->optn)
 211:     {
 212:         if (openr(&des, OR_RELTID, m->rname))
 213:         {
 214:             ret = TRUE;
 215:         }
 216:     }
 217:     return (ret);
 218: }
 219: 
 220: /* rubproc()
 221: {
 222: 	printf("sysmod interrupted\n");
 223: 	return(1);
 224: } */

Defined functions

optn_rel defined in line 198; used 1 times
sysfunc defined in line 115; used 2 times

Defined variables

Attpar defined in line 49; used 1 times
  • in line 92
Indpar defined in line 56; used 1 times
  • in line 93
Intpar defined in line 76; used 1 times
  • in line 96
Modtabl defined in line 89; used 15 times
Noupdt defined in line 15; never used
Propar defined in line 70; used 1 times
  • in line 95
Rdelpar defined in line 82; used 1 times
  • in line 97
Relpar defined in line 43; used 1 times
  • in line 91
SysFuncFn defined in line 17; never used
Trepar defined in line 63; used 1 times
  • in line 94

Defined struct's

modtabl defined in line 34; used 6 times
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 873
Valid CSS Valid XHTML 1.0 Strict