Annotation of 42BSD/ingres/source/iutil/del_tuple.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.