|
|
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.