|
|
1.1 root 1: # include <ingres.h>
2: # include <access.h>
3: # include <sccs.h>
4:
5: SCCSID(@(#)del_tuple.c 8.1 12/31/84)
6:
7: /*
8: ** Delete the specified tuple from the
9: ** current page.
10: **
11: ** The space occupied by the tuple is
12: ** compacted and the effected remaining
13: ** tuple line offsets are adjusted.
14: */
15:
16: del_tuple(tid, width)
17: TID *tid;
18: int width;
19: {
20: register char *startpt, *midpt;
21: register int i;
22: extern char *get_addr();
23: char *endpt;
24: int cnt, offset, nextline;
25: int linenum;
26:
27: linenum = tid->line_id & I1MASK;
28: offset = Acc_head->linetab[-linenum];
29: nextline = Acc_head->nxtlino;
30:
31: startpt = get_addr(tid);
32: midpt = startpt + width;
33: endpt = (char *)Acc_head + Acc_head->linetab[-nextline];
34:
35: cnt = endpt - midpt;
36:
37: /* delete tuple */
38: Acc_head->linetab[-linenum] = 0;
39:
40: /* update affected line numbers */
41: for (i = 0; i <= nextline; i++)
42: {
43: if (Acc_head->linetab[-i] > offset)
44: Acc_head->linetab[-i] -= width;
45: }
46:
47: /* compact the space */
48: while (cnt--)
49: *startpt++ = *midpt++;
50: Acc_head->bufstatus |= BUF_DIRTY;
51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.