|
|
1.1 ! root 1: # include <ingres.h> ! 2: # include <access.h> ! 3: # include <sccs.h> ! 4: ! 5: SCCSID(@(#)del_tuple.c 7.1 2/5/81) ! 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.