Annotation of researchv9/jerq/sgs/libsdp/audit.c, revision 1.1

1.1     ! root        1: static char ID[] = "@(#) audit.c: 1.1 3/16/82";
        !             2: #include <stdio.h>
        !             3: #include "sdp.h"
        !             4: #include "define3.h"
        !             5: 
        !             6: #ifdef SHORT
        !             7: #define        AU01    "AU01 "
        !             8: #define        AU02    "AU02 "
        !             9: #define        AU03    "AU03 "
        !            10: #define        AU04    "AU04 "
        !            11: #define        AUAU    "AUAU "
        !            12: #else
        !            13: #define AU01   "%s","AU01 -- audit failure in global hash\n"
        !            14: #define AU02   "%s","AU02 -- audit failure in space hash\n"
        !            15: #define AU03   "%s","AU03 -- audit failure in environment hash\n"
        !            16: #define AU04   "%s","AU04 -- audit failure in manager hash\n"
        !            17: #define AUAU   "%s","AUAU -- audit failed in sdp_audit\n"
        !            18: #endif
        !            19: 
        !            20: #define PROLOG         if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\
        !            21:                                ERR_RET(AUAU,ERROR)
        !            22: #define EPILOG         if(aud_flag == AUDITON)\
        !            23:                                aud_set() ;\
        !            24:                        if(hist_fp != NULL)\
        !            25:                                fprintf(hist_fp,"AU\t%d\n",mode) ;
        !            26: #define RADIX  109
        !            27: 
        !            28: extern int aud_flag ;
        !            29: extern long compatible ;
        !            30: extern long gl1_hash ;
        !            31: extern long gl2_hash ;
        !            32: extern struct ENVIRON *first_environ ;
        !            33: extern struct SPACE *first_space ;
        !            34: extern int Gnumbfile ;
        !            35: extern int Gln_file[] ;
        !            36: extern int Gnumbstax ;
        !            37: extern int Gsz_stax[] ;
        !            38: extern FILE *hist_fp ;
        !            39: extern ITEMID *known_idptr ;
        !            40: extern struct LIBFILE lib_file ;
        !            41: extern struct LIBMEM lib_mem ;
        !            42: 
        !            43: int                                    /* SUCCESS or ERROR */
        !            44: sdp_audit(mode)
        !            45: int mode ;
        !            46: {
        !            47: #ifndef SWEET
        !            48: 
        !            49:        PROLOG
        !            50:        switch(mode)
        !            51:        {
        !            52:                case AUDITNOW:
        !            53:                        break ;
        !            54: 
        !            55:                case AUDITOFF:
        !            56:                        aud_flag = AUDITOFF ;
        !            57:                        aud_reset() ;
        !            58:                        break ;
        !            59: 
        !            60:                case AUDITON:
        !            61:                        aud_flag = AUDITON ;
        !            62:                        break ;
        !            63:        }
        !            64:        EPILOG
        !            65:        return(SUCCESS) ;
        !            66: #endif
        !            67: }
        !            68: aud_set()
        !            69: {
        !            70: #ifndef SWEET
        !            71:        struct SPACE *i ;
        !            72:        struct ENVIRON *j ;
        !            73:        int k ;
        !            74:        long hash1_gl(), hash2_gl(), hash1_sp(), hash2_sp(), hash_en(), hash_mn() ;
        !            75: 
        !            76:        gl1_hash = hash1_gl() ;
        !            77:        gl2_hash = hash2_gl() ;
        !            78: 
        !            79:        for(i=first_space; i!=NULL; i=i->next_space)
        !            80:        {
        !            81:                i->sp1_hash = hash1_sp(i) ;
        !            82:                i->sp2_hash = hash2_sp(i) ;
        !            83:        }
        !            84: 
        !            85:        for(j=first_environ; j!=NULL; j=j->next_environ)
        !            86:        {
        !            87:                j->en_hash = hash_en(j) ;
        !            88:                for(k=0; k<=j->num_frames; k++)
        !            89:                        (j->manp[k]).mn_hash = hash_mn(&(j->manp[k])) ;
        !            90:        }
        !            91: #endif
        !            92: }
        !            93: int                                    /* SUCCESS or ERROR */
        !            94: aud_check()
        !            95: {
        !            96: #ifndef SWEET
        !            97:        struct SPACE *i ;
        !            98:        struct ENVIRON *j ;
        !            99:        int k ;
        !           100:        long hash1_gl(), hash2_gl(), hash1_sp(), hash2_sp(), hash_en(), hash_mn() ;
        !           101: 
        !           102:        if( gl1_hash != hash1_gl()
        !           103:         || gl2_hash != hash2_gl() )
        !           104:                ERR_RET(AU01,ERROR)
        !           105: 
        !           106:        for(i=first_space; i!=NULL; i=i->next_space)
        !           107:                if( i->sp1_hash != hash1_sp(i)
        !           108:                 || i->sp2_hash != hash2_sp(i) )
        !           109:                        ERR_RET(AU02,ERROR)
        !           110: 
        !           111:        for(j=first_environ; j!=NULL; j=j->next_environ)
        !           112:        {
        !           113:                if( j->en_hash != hash_en(j) )
        !           114:                        ERR_RET(AU03,ERROR)
        !           115:                for(k=0; k<=j->num_frames; k++)
        !           116:                        if( (j->manp[k]).mn_hash != hash_mn(&(j->manp[k])) )
        !           117:                                ERR_RET(AU04,ERROR)
        !           118:        }
        !           119:        return(SUCCESS) ;
        !           120: #endif
        !           121: }
        !           122: 
        !           123: #ifndef SWEET
        !           124: aud_reset()
        !           125: {
        !           126: 
        !           127:        struct SPACE *i ;
        !           128:        struct ENVIRON *j ;
        !           129:        int k ;
        !           130: 
        !           131:        gl1_hash = HASHNULL ;
        !           132:        gl2_hash = HASHNULL ;
        !           133: 
        !           134:        for(i=first_space; i!=NULL; i=i->next_space)
        !           135:        {
        !           136:                i->sp1_hash = HASHNULL ;
        !           137:                i->sp2_hash = HASHNULL ;
        !           138:        }
        !           139: 
        !           140:        for(j=first_environ; j!=NULL; j=j->next_environ)
        !           141:        {
        !           142:                j->en_hash = HASHNULL ;
        !           143:                for(k=0; k<j->num_frames; k++)
        !           144:                        (j->manp)[k].mn_hash = HASHNULL ;
        !           145:        }
        !           146: }
        !           147: long                                   /* hash value */
        !           148: hash1_gl()
        !           149: {
        !           150:        register long   value ;
        !           151: 
        !           152:        value = (long)first_environ ;
        !           153:        value *= RADIX ;
        !           154:        value += (long)first_space ;
        !           155:        value *= RADIX ;
        !           156:        value += compatible ;
        !           157:        value *= RADIX ;
        !           158:        value += (long)Gnumbfile ;
        !           159:        value *= RADIX ;
        !           160:        value += (long)Gnumbstax ;
        !           161:        value *= RADIX ;
        !           162:        value += (long)hist_fp ;
        !           163:        value *= RADIX ;
        !           164:        value += (long)aud_flag ;
        !           165:        value *= RADIX ;
        !           166:        value += (long)known_idptr ;
        !           167:        value *= RADIX ;
        !           168:        value += (long)lib_file.libbuildname ;
        !           169:        value *= RADIX ;
        !           170:        value += (long)lib_file.libclose ;
        !           171:        value *= RADIX ;
        !           172:        value += (long)lib_file.libcreate ;
        !           173:        value *= RADIX ;
        !           174:        value += (long)lib_file.libopen ;
        !           175:        value *= RADIX ;
        !           176:        value += (long)lib_file.libread ;
        !           177:        value *= RADIX ;
        !           178:        value += (long)lib_file.libseek ;
        !           179:        value *= RADIX ;
        !           180:        value += (long)lib_file.libunlink ;
        !           181:        value *= RADIX ;
        !           182:        value += (long)lib_file.libwrite ;
        !           183:        value *= RADIX ;
        !           184:        value += (long)lib_mem.liballoc ;
        !           185:        value *= RADIX ;
        !           186:        value += (long)lib_mem.libfree ;
        !           187:        return(value) ;
        !           188: }
        !           189: 
        !           190: long                                   /* hash value */
        !           191: hash2_gl()
        !           192: {
        !           193:        register long   value ;
        !           194:        register int    i ;
        !           195: 
        !           196:        value = 0 ;
        !           197:        for(i=0; i<Gnumbfile; i++)
        !           198:        {
        !           199:                value *= RADIX ;
        !           200:                value += Gln_file[i] ;
        !           201:        }
        !           202:        for(i=0; i<Gnumbstax; i++)
        !           203:        {
        !           204:                value *= RADIX ;
        !           205:                value += Gsz_stax[i] ;
        !           206:        }
        !           207:        return(value) ;
        !           208: }
        !           209: long                                   /* hash value */
        !           210: hash_en(env)
        !           211: struct ENVIRON *env ;
        !           212: {
        !           213:        register long   value ;
        !           214: 
        !           215:        value = (long)env->num_frames ;
        !           216:        value *= RADIX ;
        !           217:        value += (long)env->frame_size ;
        !           218:        value *= RADIX ;
        !           219:        value += (long)env->cnct_count ;
        !           220:        value *= RADIX ;
        !           221:        value += (long)env->manp ;
        !           222:        value *= RADIX ;
        !           223:        value += (long)env->empties ;
        !           224:        value *= RADIX ;
        !           225:        value += (long)env->next_environ ;
        !           226:        value *= RADIX ;
        !           227:        value += env->stats.uses ;
        !           228:        value *= RADIX ;
        !           229:        value += env->stats.faults ;
        !           230:        value *= RADIX ;
        !           231:        value += env->stats.writes ;
        !           232:        value *= RADIX ;
        !           233:        value += (long)env->stats.maxuse ;
        !           234:        value *= RADIX ;
        !           235:        value += (long)env->stats.curuse ;
        !           236:        return(value) ;
        !           237: }
        !           238: long                                   /* hash value */
        !           239: hash1_sp(sp)
        !           240: struct SPACE *sp ;
        !           241: {
        !           242:        register long   value ;
        !           243: 
        !           244:        value = sp->version ;
        !           245:        value *= RADIX ;
        !           246:        value += (long)sp->page_size ;
        !           247:        value *= RADIX ;
        !           248:        value += sp->maxpage ;
        !           249:        value *= RADIX ;
        !           250:        value += sp->curpage ;
        !           251:        value *= RADIX ;
        !           252:        value += (long)sp->curleft ;
        !           253:        value *= RADIX ;
        !           254:        value += (long)sp->numbfile ;
        !           255:        value *= RADIX ;
        !           256:        value += (long)sp->fileinfo ;
        !           257:        value *= RADIX ;
        !           258:        value += (long)sp->numbstax ;
        !           259:        value *= RADIX ;
        !           260:        value += (long)sp->staxinfo ;
        !           261:        value *= RADIX ;
        !           262:        value += (long)sp->head_name ;
        !           263:        value *= RADIX ;
        !           264:        value += (long)sp->environ ;
        !           265:        value *= RADIX ;
        !           266:        value += (long)sp->next_space ;
        !           267:        return(value) ;
        !           268: }
        !           269: long                                   /* hash value */
        !           270: hash2_sp(sp)
        !           271: struct SPACE *sp ;
        !           272: {
        !           273:        register long   value ;
        !           274:        register int    i ;
        !           275: 
        !           276:        value = 0 ;
        !           277:        for(i=0; i<sp->numbfile; i++)
        !           278:        {
        !           279:                value *= RADIX ;
        !           280:                value += sp->fileinfo[i].leng ;
        !           281:                value *= RADIX ;
        !           282:                value += (long)sp->fileinfo[i].desc ;
        !           283:        }
        !           284:        for(i=0; i<sp->numbstax; i++)
        !           285:        {
        !           286:                value *= RADIX ;
        !           287:                value += sp->staxinfo[i].top ;
        !           288:                value *= RADIX ;
        !           289:                value += (long)sp->staxinfo[i].size ;
        !           290:                value *= RADIX ;
        !           291:                value += sp->staxinfo[i].depth ;
        !           292:        }
        !           293:        return(value) ;
        !           294: }
        !           295: long                                   /* hash value */
        !           296: hash_mn(man)
        !           297: struct MANAGER *man ;
        !           298: {
        !           299:        register long   value ;
        !           300: 
        !           301:        value = (long)man->space ;
        !           302:        value *= RADIX ;
        !           303:        value += man->page_id ;
        !           304:        value *= RADIX ;
        !           305:        value += man->usecount ;
        !           306:        value *= RADIX ;
        !           307:        value += (long)man->ref_chng ;
        !           308:        value *= RADIX ;
        !           309:        value += (long)man->forward ;
        !           310:        value *= RADIX ;
        !           311:        value += (long)man->backward ;
        !           312:        value *= RADIX ;
        !           313:        value += (long)man->frame_pntr ;
        !           314:        return(value) ;
        !           315: }
        !           316: #endif

unix.superglobalmegacorp.com

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