home *** CD-ROM | disk | FTP | other *** search
- # include <ingres.h>
- # include <access.h>
- # include <aux.h>
- # include <lock.h>
- # include <sccs.h>
-
- SCCSID(@(#)readadmin.c 8.2 1/18/85)
-
- /*
- ** READADMIN -- read admin file into 'Admin' cache
- **
- ** The admin file in the current directory is opened and read
- ** into the 'Admin' cache. The admin file contains the following
- ** information:
- **
- ** A header block, containing the owner of the database (that is,
- ** the DBA), and a set of status bits for the database as a whole.
- ** These bits are defined in aux.h. This header also includes a
- ** field that defines the length of the header part & a version
- ** stamp.
- **
- ** Descriptors for the relation and attribute relations. These
- ** descriptors should be completely correct except for the
- ** relfp and relopn fields. These are required so that the
- ** process of opening a relation is not recursive.
- **
- ** After the admin file is read in, the relation and attribute
- ** files are opened, and the relfp and relopn fields in both
- ** descriptors are correctly initialized. Both catalogs are
- ** opened read/write.
- **
- ** WARNING:
- ** This routine is redefined by creatdb. If this
- ** routine is changed, check that program also!!
- **
- ** Parameters:
- ** none
- **
- ** Returns:
- ** none
- **
- ** Side Effects:
- ** The 'Admin' struct is filled in from the 'admin' file
- ** in the current directory.
- ** The 'relation....xx' and 'attribute...xx' files are
- ** opened.
- **
- ** Files:
- ** ./admin
- ** The bootstrap description of the database,
- ** described above.
- **
- ** Trace Flags:
- ** none
- */
-
- readadmin()
- {
- register int i;
- char relname[MAXNAME + 4];
- extern long lseek();
-
- /* read the stuff from the admin file */
- i = open("admin", O_RDONLY);
- if (i < 0)
- syserr("readadmin: open admin %d", i);
- checkadmin(i);
- close(i);
-
- /* open the physical files for 'relation' and 'attribute' */
- ingresname(Admin.adreld.reldum.relid, Admin.adreld.reldum.relowner, relname);
- if ((Admin.adreld.relfp = open(relname, O_RDWR)) < 0)
- syserr("readadmin: open rel %d", Admin.adreld.relfp);
- ingresname(Admin.adattd.reldum.relid, Admin.adattd.reldum.relowner, relname);
- if ((Admin.adattd.relfp = open(relname, O_RDWR)) < 0)
- syserr("readadmin: open att %d", Admin.adattd.relfp);
- Admin.adreld.relopn = (Admin.adreld.relfp + 1) * -5;
- /* we just want to read here create, modify and destroy fix it up */
- Admin.adattd.relopn = (Admin.adattd.relfp + 1) * 5;
-
- return;
- }
-