|
|
1.1 ! root 1: static char ID[] = "@(#) sync.c: 1.1 3/16/82"; ! 2: #include <stdio.h> ! 3: #include "sdp.h" ! 4: #include "define3.h" ! 5: ! 6: #ifdef SHORT ! 7: #define SY01 "SY01 " ! 8: #define SY02 "SY02 " ! 9: #define SY03 "SY03 " ! 10: #define SY04 "SY04 " ! 11: #define SY05 "SY05 " ! 12: #define SYAU "SYAU " ! 13: #else ! 14: #define SY01 "SY01 -- error return from readpage\n%o\n",sp ! 15: #define SY02 "SY02 -- error return from writeframe\n%o\n",sp ! 16: #define SY03 "SY03 -- unknown ref/chng flag\n%o\t%d\n",sp,manager[i].ref_chng ! 17: #define SY04 "SY04 -- error return from wtSPACE\n%o\n",sp ! 18: #define SY05 "SY05 -- space not connected\n%o\n",sp ! 19: #define SYAU "%s","SYAU -- audit failed in sdp_sync\n" ! 20: #endif ! 21: ! 22: #ifdef SWEET ! 23: #define PROLOG ! 24: #define EPILOG ! 25: #else ! 26: #define PROLOG if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\ ! 27: ERR_RET(SYAU,ERROR) ! 28: #define EPILOG if(aud_flag == AUDITON)\ ! 29: aud_set() ;\ ! 30: if(hist_fp != NULL)\ ! 31: fprintf(hist_fp,"SY\t%o\n",sp) ; ! 32: #endif ! 33: ! 34: extern int aud_flag ; ! 35: extern struct SPACE *first_space ; ! 36: extern struct LIBFILE *Glib_file ; ! 37: extern FILE *hist_fp ; ! 38: ! 39: extern int aud_check() ; ! 40: extern aud_set() ; ! 41: extern FATAL() ; ! 42: extern int readpage() ; ! 43: extern int wtSPACE() ; ! 44: ! 45: int /* SUCCESS or ERROR */ ! 46: sdp_sync(sp) ! 47: struct SPACE *sp ; ! 48: { ! 49: register int i ; ! 50: register struct SPACE *curr ; ! 51: register struct MANAGER *manager ; ! 52: ! 53: PROLOG ! 54: for(curr=first_space; curr!=NULL; curr=curr->next_space) ! 55: { ! 56: if( (curr==sp) || (sp==NULL) ) ! 57: { ! 58: Glib_file = curr->lib_file ; ! 59: ! 60: manager = (curr->environ)->manp ; ! 61: ! 62: for(i=0; i<(curr->environ)->num_frames; i++) ! 63: switch(manager[i].ref_chng) ! 64: { ! 65: case RNLY: ! 66: if(readpage(curr,manager[i].page_id,i) == ERROR) ! 67: ERR_RET(SY01,ERROR) ! 68: break ; ! 69: ! 70: case WRTN: ! 71: if( (curr->perms != WRTN) || (writeframe(curr,i) == ERROR) ) ! 72: ERR_RET(SY02,ERROR) ! 73: manager[i].ref_chng = RNLY ; ! 74: break ; ! 75: ! 76: case RCNULL: ! 77: break ; ! 78: ! 79: default: ! 80: ERR_RET(SY03,ERROR) ! 81: break ; ! 82: ! 83: } ! 84: if ((curr->perms == WRTN) && (wtSPACE(curr) == ERROR)) ! 85: ERR_RET(SY04,ERROR) ! 86: if(sp == curr) ! 87: break ; ! 88: } ! 89: } ! 90: if( (curr==NULL) && (sp!=NULL) ) ! 91: ERR_RET(SY04,ERROR) ! 92: EPILOG ! 93: return(SUCCESS) ; ! 94: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.