|
|
1.1 ! root 1: static char ID[] = "@(#) change.c: 1.1 3/16/82"; ! 2: #include <stdio.h> ! 3: #include "sdp.h" ! 4: #include "define3.h" ! 5: ! 6: #ifdef SHORT ! 7: #define CH01 "CH01 " ! 8: #define CH02 "CH02 " ! 9: #define CHAU "CHAU " ! 10: #else ! 11: #define CH01 "CH01 -- no permission to change\n%o\n",i->manp[j].space ! 12: #define CH02 "CH02 -- frame not found\n%o\n",ptr ! 13: #define CHAU "%s","CHAU -- audit failed in sdp_change\n" ! 14: #endif ! 15: ! 16: #ifdef SWEET ! 17: #define PROLOG ! 18: #define EPILOG ! 19: #else ! 20: #define PROLOG if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\ ! 21: ERR_RET(CHAU,ERROR) ! 22: #define EPILOG if(aud_flag == AUDITON)\ ! 23: aud_set() ;\ ! 24: if(hist_fp != NULL)\ ! 25: fprintf(hist_fp,"CH\t%o\t%ld\t%o\n",(i->manp)[j].space,(i->manp)[j].page_id,ptr) ; ! 26: #endif ! 27: ! 28: extern int aud_flag ; ! 29: extern FILE *hist_fp ; ! 30: extern struct ENVIRON *first_environ ; ! 31: extern struct LIBFILE *Glib_file ; ! 32: ! 33: extern aud_set() ; ! 34: extern int aud_check() ; ! 35: extern fatal() ; ! 36: ! 37: int /* SUCCESS or ERROR */ ! 38: sdp_change(ptr) ! 39: char *ptr ; ! 40: { ! 41: register struct ENVIRON *i ; ! 42: register int j ; ! 43: register unsigned f ; ! 44: register unsigned p ; ! 45: register int status ; ! 46: ! 47: PROLOG ! 48: ! 49: p = (unsigned)ptr ; ! 50: status = 0 ; ! 51: for(i=first_environ; i!=NULL; i=i->next_environ) ! 52: { ! 53: for(j=0; j<i->num_frames; j++) ! 54: { ! 55: f = (unsigned)(i->manp)[j].frame_pntr ; ! 56: if ( f <= p && p < f + (unsigned)i->frame_size ) ! 57: { ! 58: if(i->manp[j].space->perms != WRTN) ! 59: ERR_RET(CH01,ERROR) ! 60: i->manp[j].ref_chng = WRTN ; ! 61: status = 1 ; ! 62: break ; ! 63: } ! 64: } ! 65: if(status == 1) ! 66: break ; ! 67: } ! 68: ! 69: if(status == 0) ! 70: ERR_RET(CH02,ERROR) ! 71: ! 72: EPILOG ! 73: return(SUCCESS) ; ! 74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.