Annotation of 43BSD/ingres/source/iutil/noclose.c, revision 1.1

1.1     ! root        1: # include      <stdio.h>
        !             2: # include      <ingres.h>
        !             3: # include      <aux.h>
        !             4: # include      <access.h>
        !             5: # include      <sccs.h>
        !             6: 
        !             7: SCCSID(@(#)noclose.c   8.1     12/31/84)
        !             8: 
        !             9: /*
        !            10: **     noclose - update system catalogs for a relation
        !            11: **     DESCRIPTION
        !            12: **
        !            13: **     function values:
        !            14: **
        !            15: **             <0  fatal error
        !            16: **              0  success
        !            17: **              1  relation was not open
        !            18: */
        !            19: 
        !            20: 
        !            21: noclose(d)
        !            22: register DESC  *d;
        !            23: {
        !            24:        register int    i;
        !            25:        struct relation rel;
        !            26: 
        !            27: #      ifdef xATR1
        !            28:        if (tTf(21, 12))
        !            29:                printf("noclose: %.14s,%ld\n", d->reldum.relid, d->reladds);
        !            30: #      endif
        !            31: 
        !            32:        /* make sure relation relation is read/write mode */
        !            33:        if (abs(d->relopn) != (d->relfp + 1) * 5)
        !            34:                return (1);
        !            35: 
        !            36:        /* flush all pages associated with relation */
        !            37:        /* if system catalog, reset all the buffers so they can't be reused */
        !            38:        i = flush_rel(d, d->reldum.relstat & S_CATALOG);
        !            39: 
        !            40:        /* check to see if number of tuples has changed */
        !            41:        if (d->reladds != 0)
        !            42:        {
        !            43:                /* yes, update the system catalogs */
        !            44:                /* get tuple from relation relation */
        !            45:                Admin.adreld.relopn = (Admin.adreld.relfp + 1) * -5;
        !            46:                if (i = get_page(&Admin.adreld, &d->reltid.s_tupid))
        !            47:                        return (i);     /* fatal error */
        !            48: 
        !            49:                /* get the actual tuple */
        !            50:                get_tuple(&Admin.adreld, &d->reltid.s_tupid, (char *) &rel);
        !            51: 
        !            52:                /* update the reltups field */
        !            53:                rel.reltups += d->reladds;
        !            54:                d->reldum.reltups = rel.reltups;
        !            55: 
        !            56:                /* put the tuple back */
        !            57:                put_tuple(&d->reltid.s_tupid, (char *) &rel, Admin.adreld.reldum.relwid);
        !            58:                i = resetacc(Acc_head);
        !            59:                d->reladds = 0;
        !            60:        }
        !            61:        return (i);
        !            62: }

unix.superglobalmegacorp.com

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