Annotation of 42BSD/ingres/source/iutil/noclose.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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