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

1.1     ! root        1: # include      <ingres.h>
        !             2: # include      <version.h>
        !             3: # include      <access.h>
        !             4: # include      <sccs.h>
        !             5: 
        !             6: SCCSID(@(#)checkadmin.c        8.2     1/3/85)
        !             7: 
        !             8: /*
        !             9: **  CHECKADMIN -- check admin file version, etc.
        !            10: **
        !            11: **     The checks for database version code and whatnot are
        !            12: **     factored out into this routine.  When this routine returns,
        !            13: **     the admin file should be legible to this program.
        !            14: **     If the admin file is not legible, it will syserr.
        !            15: **
        !            16: **     Parameters:
        !            17: **             fd -- open file descriptor for admin file.  Only
        !            18: **                     read access is required.
        !            19: **
        !            20: **     Returns:
        !            21: **             nothing if ok.
        !            22: **             not at all (or via syserr) if not ok.
        !            23: **
        !            24: **     Side Effects:
        !            25: **             The Admin.adhdr struct will be filled in.
        !            26: */
        !            27: 
        !            28: checkadmin(fd)
        !            29: register int   fd;
        !            30: {
        !            31:        register int    i;
        !            32:        register int    k;
        !            33: 
        !            34:        i = ((char *) &Admin.adhdr.adversion) - ((char *) &Admin.adhdr);
        !            35:        if (read(fd, (char *) &Admin.adhdr, i) != i)
        !            36:                syserr("readadmin: admin read err 1");
        !            37:        if (!bitset(A_NEWFMT, Admin.adhdr.adflags))
        !            38:                syserr("readadmin: cannot use old databases");
        !            39: 
        !            40:        /* read in remainder of admin header */
        !            41:        i = sizeof Admin.adhdr;
        !            42:        if (Admin.adhdr.adlength < i)
        !            43:                i = Admin.adhdr.adlength;
        !            44:        i -= ((char *) &Admin.adhdr.adversion) - ((char *) &Admin.adhdr);
        !            45:        if (i <= 0)
        !            46:                syserr("readadmin: adlen=%d, hdrsz=%d, ct=%d", Admin.adhdr.adlength, sizeof Admin.adhdr, i);
        !            47:        if ((k = read(fd, (char *) &Admin.adhdr.adversion, i)) != i)
        !            48:                syserr("readadmin: admin read err 2, i=%d k=%d", i, k);
        !            49: 
        !            50:        /* check versions here */
        !            51:        if (Admin.adhdr.adversion != DBVERCODE)
        !            52:                syserr("cannot handle code %d databases (current code is %d)",
        !            53:                        Admin.adhdr.adversion, DBVERCODE);
        !            54:        if (Admin.adhdr.adreldsz != sizeof Admin.adreld)
        !            55:                syserr("checkadmin: descriptor size mismatch, dec=%d, actual=%d\n Run ingconv on this database.",
        !            56:                        Admin.adhdr.adreldsz, sizeof Admin.adreld);
        !            57: 
        !            58:        /* get to beginning of descriptors */
        !            59:        if (lseek(fd, (long) Admin.adhdr.adlength, 0) < 0)
        !            60:                syserr("checkadmin: seek");
        !            61: 
        !            62:        /* read the descriptors */
        !            63:        if (read(fd, (char *) &Admin.adreld, Admin.adhdr.adreldsz) != Admin.adhdr.adreldsz)
        !            64:                syserr("checkadmin: reld read sz=%d", Admin.adhdr.adreldsz);
        !            65:        if (read(fd, (char *) &Admin.adattd, Admin.adhdr.adattdsz) != Admin.adhdr.adattdsz)
        !            66:                syserr("checkadmin: attd read sz=%d", Admin.adhdr.adattdsz);
        !            67: }

unix.superglobalmegacorp.com

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