1: # include <ingres.h>
2: # include <symbol.h>
3: # include <sccs.h>
4:
5: SCCSID(@(#)setkey.c 8.1 12/31/84)
6:
7: /*
8: ** Clearkeys - reset all key indicators in descriptor
9: **
10: ** Clearkeys is used to clear the key supplied
11: ** flags before calls to setkey
12: */
13:
14:
15: clearkeys(d)
16: register DESC *d;
17: {
18: register int i;
19:
20: for (i = 0; i <= d->reldum.relatts; i++)
21: d->relgiven[i] = 0;
22: return (0);
23: }
24: /*
25: ** SETKEY - indicate a partial key for find
26: **
27: ** Setkey is used to set a key value into place
28: ** in a key. The key can be as large as the entire
29: ** tuple. Setkey moves the key value into the
30: ** proper place in the key and marks the value as
31: ** supplied
32: **
33: ** If the value is a null pointer, then the key is
34: ** cleared.
35: **
36: ** Clearkeys should be called once before the
37: ** first call to setkey.
38: */
39:
40: setkey(d, key, value, dom)
41: register DESC *d;
42: char *key;
43: char *value;
44: register int dom;
45: {
46: register int len;
47: char *cp;
48:
49: # ifdef xATR1
50: if (tTf(22, 8))
51: printf("setkey: %.14s, %d\n", d->reldum.relid, dom);
52: # endif
53:
54: /* check validity of domain number */
55: if (dom < 1 || dom > d->reldum.relatts)
56: syserr("setkey:rel=%12s,dom=%d", d->reldum.relid, dom);
57:
58: /* if value is null, clear key */
59: if (value == 0)
60: {
61: d->relgiven[dom] = 0;
62: return;
63: }
64:
65: /* mark as given */
66: d->relgiven[dom] = 1;
67:
68: len = d->relfrml[dom] & I1MASK;
69: cp = &key[d->reloff[dom]];
70:
71: if (d->relfrmt[dom] == CHAR)
72: {
73: pmove(value, cp, len, ' ');
74: }
75: else
76: {
77: bmove(value, cp, len);
78: }
79: }
Defined functions
setkey
defined in line
40; used 15 times