|
|
1.1 root 1: # include <ingres.h>
2: # include <aux.h>
3: # include <access.h>
4: # include <sccs.h>
5:
6: SCCSID(@(#)closecat.c 7.1 2/5/81)
7:
8: /*
9: ** CLOSECATALOG -- close system catalog
10: **
11: ** This routine closes the sysetm relations opened by calls
12: ** to opencatalog.
13: **
14: ** The 'Desxx' struct defines which relations will be closed
15: ** in this manner and is defined in .../source/aux.h.
16: **
17: ** The actual desxx structure definition is in the file
18: **
19: ** catalog_desc.c
20: **
21: ** which defines which relations can be cached and if any
22: ** alias descriptors exist for the relations. That file
23: ** can be redefined to include various caching.
24: **
25: ** Parameters:
26: ** really - whether to actually close the relations
27: ** or just update and flush them.
28: **
29: ** Returns:
30: ** none
31: **
32: ** Side Effects:
33: ** A relation is (may be) closed and its pages flushed
34: **
35: ** Trace Flags:
36: ** none
37: */
38:
39:
40: closecatalog(really)
41: bool really;
42: {
43: register struct desxx *p;
44: extern struct desxx Desxx[];
45: extern long CmOfiles;
46:
47: for (p = Desxx; p->cach_relname; p++)
48: {
49: if (really && !p->cach_alias)
50: {
51: CmOfiles &= ~(1 << p->cach_desc->relfp);
52: if (closer(p->cach_desc) < 0)
53: syserr("closecat %s", p->cach_relname);
54: }
55: else
56: {
57: if (noclose(p->cach_desc) < 0)
58: syserr("closecat %s", p->cach_relname);
59: if (really)
60: p->cach_desc->relopn = 0;
61: }
62: }
63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.