1: # include <stdio.h>
2:
3: # include "../ingres.h"
4: # include "../aux.h"
5: # include "../access.h"
6: # include "../lock.h"
7:
8:
9: extern int Status;
10:
11: main(argc, argv)
12: int argc;
13: char *argv[];
14: {
15: extern struct out_arg Out_arg;
16: register char **av;
17: register int i;
18: register char *p;
19: extern char *Parmvect[];
20: extern char *Flagvect[];
21: extern char *Dbpath;
22: int nc;
23: char *newpv[MAXPARMS];
24: char **nv, *qm;
25: char *qmtest();
26:
27: # ifdef xSTR1
28: tTrace(&argc, argv, 'T');
29: # endif
30:
31: i = initucode(argc, argv, TRUE, NULL, M_SHARE);
32: # ifdef xSTR2
33: if (tTf(0, 1))
34: printf("initucode=%d, Dbpath='%s'\n", i, Dbpath);
35: # endif
36: switch (i)
37: {
38: case 0:
39: case 5:
40: break;
41:
42: case 1:
43: case 6:
44: printf("Database %s does not exist\n", Parmvect[0]);
45: exit(-1);
46:
47: case 2:
48: printf("You are not authorized to access this database\n");
49: exit(-1);
50:
51: case 3:
52: printf("You are not a valid INGRES user\n");
53: exit(-1);
54:
55: case 4:
56: printf("No database name specified\n");
57: usage:
58: printf("usage: helpr database [relname ...]\n");
59: exit(-1);
60:
61: default:
62: syserr("initucode %d", i);
63: }
64:
65: if (Flagvect[0] != NULL)
66: {
67: printf("No flags are allowed for this command\n");
68: goto usage;
69: }
70:
71: if (chdir(Dbpath) < 0)
72: syserr("cannot access data base %s", p);
73: # ifdef xTTR2
74: if (tTf(1, 0))
75: printf("entered database %s\n", Dbpath);
76: # endif
77:
78: /* initialize access methods (and Admin struct) for user_ovrd test */
79: acc_init();
80:
81: av = &Parmvect[1]; /* get first param after datbase name */
82: p = *av;
83: if (p == NULL)
84: {
85: /* special case of no relations specified */
86: nv = newpv;
87: *nv++ = "2";
88: *nv = (char *) -1;
89: help(1, newpv);
90: }
91: else
92: {
93: do
94: {
95: nc = 0;
96: nv = newpv;
97:
98: if ((qm = qmtest(p)) != NULL)
99: {
100: /* either help view, integrity or protect */
101: av++;
102: while ((p = *av++) != NULL)
103: {
104: if ((i = (int) qmtest(p)) != NULL)
105: {
106: /* change of qmtest result */
107: qm = (char *) i;
108: continue;
109: }
110: *nv++ = qm;
111: *nv++ = p;
112: nc += 2;
113: }
114: *nv = (char *) -1;
115: display(nc, newpv);
116: }
117: else
118: {
119: /* help relname */
120: while ((p = *av++) != NULL && qmtest(p) == NULL)
121: {
122: if (sequal("all", p))
123: {
124: *nv++ = "3";
125: nc++;
126: }
127: else
128: {
129: *nv++ = "0";
130: *nv++ = p;
131: nc += 2;
132: }
133: }
134: *nv = (char *) -1;
135: help(nc, newpv);
136: /* this backs av up one step, so
137: * that it points at the keywords (permit,
138: * integrity, view) or the NULL
139: */
140: --av;
141: }
142: } while (p != NULL);
143: }
144: flush();
145: exit(0);
146: }
147:
148:
149:
150: char *qmtest(parm)
151: char *parm;
152: {
153: register char *p;
154:
155: p = parm;
156: if (sequal("view", p))
157: return ("4");
158: else if (sequal("permit", p))
159: return ("5");
160: else if (sequal("integrity", p))
161: return ("6");
162: else
163: return (NULL);
164: }
165:
166:
167: rubproc()
168: {
169: exit(1);
170: }
Defined functions
main
defined in line
11;
never used