COMPILATION LISTING OF SEGMENT ring_1_tools_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/19/83 0602.5 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* The following procedure is a special entry in ring 1 for use in installing procedures 12* in the system libraries. It calls the acl primitive and name manipulation procedures, but first sets the 13* validation level to 1 so that procedures can be installed in ring 1 from 14* ring 4. 15* 16* Originally coded by R. J. Feiertag on January 19, 1971 17* last modified by E. Stone 12/71 - changed name from set_acc_control_list_ 18* modified by Peter B. Kelley 05/73 - added entry points for new ACL primitives; 19* - renamed existing entry points to correspond to 20* published documentation. (installation_tools_ gate also changed). 21* Modified 01/11/79 by C. D. Tavares to add dir_ring_brackets entry. 22* Modified 831014 BIM for delentry_file, expunge acl_add1. 23**/ 24 25 /* format: style2,idind30,indcomtxt */ 26 ring_1_tools_: 27 procedure; 28 29 dcl dir char (*); /* directory of branch whose acl is to be replaced */ 30 dcl entry char (*); /* entry name of acl whose acl is to be replaced */ 31 dcl code fixed bin (35); 32 /* file system error code */ 33 dcl switch_value bit parameter; 34 /* for switch stuff */ 35 dcl validation_level fixed bin; /* validation level of caller */ 36 37 dcl acl_ptr ptr; /* ptr to new acl structure */ 38 dcl delete_acl_ptr ptr; /* ptr to structure containing deletions */ 39 dcl dir_acl_ptr ptr; /* as acl_ptr 'cept points to dir_acl structure */ 40 dcl acl_count fixed bin; /* no. of acls in structure */ 41 dcl area_ptr ptr; /* points to area where acl list is to be */ 42 /* allocated when listing whole acl */ 43 dcl alloc_ptr ptr; /* set to allocated list in area when listing */ 44 /* whole acl */ 45 dcl no_sysdaemon_sw bit (1) aligned; 46 /* if "0"b then *.SysDaemon.* rwa (sma) will */ 47 /* be appended to replacement list */ 48 dcl rbs (3) fixed bin (3); 49 /* ring brackets for hcs_$set_ring_brackets */ 50 dcl dir_rbs (2) fixed bin (3); 51 /* ring brackets for hcs_$set_dir_ring_brackets */ 52 53 dcl old_name char (*); 54 dcl new_name char (*); 55 dcl dir2 char (*); 56 dcl entry2 char (*); 57 dcl caller char (*); 58 dcl err_sw bit (1) aligned; 59 60 dcl cleanup condition; 61 62 dcl copy_names_ entry (char (*), char (*), char (*), char (*), char (*), bit (1) aligned, 63 fixed bin (35)); 64 dcl cu_$level_get entry (fixed bin); 65 dcl cu_$level_set entry (fixed bin); 66 dcl get_ring_ entry returns (fixed bin); 67 dcl move_names_ entry (char (*), char (*), char (*), char (*), char (*), bit (1) aligned, 68 fixed bin (35)); 69 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 70 dcl hcs_$add_dir_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 71 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 72 dcl hcs_$delentry_file entry (char (*), char (*), fixed bin (35)); 73 dcl hcs_$delete_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 74 dcl hcs_$delete_dir_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 75 dcl hcs_$list_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)); 76 dcl hcs_$list_dir_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)); 77 dcl hcs_$replace_acl entry (char (*), char (*), ptr, fixed bin, bit (1) aligned, 78 fixed bin (35)); 79 dcl hcs_$replace_dir_acl entry (char (*), char (*), ptr, fixed bin, bit (1) aligned, 80 fixed bin (35)); 81 dcl hcs_$set_ring_brackets entry (char (*), char (*), (3) fixed bin (3), fixed bin (35)); 82 dcl hcs_$set_dir_ring_brackets entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 83 dcl hcs_$set_safety_sw entry (char (*), char (*), bit, fixed bin (35)); 84 dcl term_ entry (character (*), character (*), fixed binary (35)); 85 86 87 chname_file: 88 entry (dir, entry, old_name, new_name, code); 89 90 validation_level = -1; 91 on cleanup call cleanup_validation; 92 call setup; 93 call hcs_$chname_file (dir, entry, old_name, new_name, code); 94 go to RETURN; 95 96 copy_names_: 97 entry (dir, entry, dir2, entry2, caller, err_sw, code); 98 99 validation_level = -1; 100 on cleanup call cleanup_validation; 101 call setup; 102 call copy_names_ (dir, entry, dir2, entry2, caller, err_sw, code); 103 go to RETURN; 104 105 delentry_file: 106 entry (dir, entry, code); 107 108 validation_level = -1; 109 on cleanup call cleanup_validation; 110 call setup; 111 call term_ (dir, entry, (0)); /* cannot hurt */ 112 call hcs_$delentry_file (dir, entry, code); 113 go to RETURN; 114 115 move_names_: 116 entry (dir, entry, dir2, entry2, caller, err_sw, code); 117 118 validation_level = -1; 119 on cleanup call cleanup_validation; 120 call setup; 121 call move_names_ (dir, entry, dir2, entry2, caller, err_sw, code); 122 go to RETURN; 123 124 list_acl: 125 entry (dir, entry, area_ptr, alloc_ptr, acl_ptr, acl_count, code); 126 127 validation_level = -1; 128 on cleanup call cleanup_validation; 129 call setup; 130 call hcs_$list_acl (dir, entry, area_ptr, alloc_ptr, acl_ptr, acl_count, code); 131 go to RETURN; 132 133 add_acl_entries: 134 entry (dir, entry, acl_ptr, acl_count, code); 135 136 validation_level = -1; 137 on cleanup call cleanup_validation; 138 call setup; 139 call hcs_$add_acl_entries (dir, entry, acl_ptr, acl_count, code); 140 go to RETURN; 141 142 delete_acl_entries: 143 entry (dir, entry, delete_acl_ptr, acl_count, code); 144 145 validation_level = -1; 146 on cleanup call cleanup_validation; 147 call setup; 148 call hcs_$delete_acl_entries (dir, entry, delete_acl_ptr, acl_count, code); 149 go to RETURN; 150 151 replace_acl: 152 entry (dir, entry, acl_ptr, acl_count, no_sysdaemon_sw, code); 153 154 validation_level = -1; 155 on cleanup call cleanup_validation; 156 call setup; 157 call hcs_$replace_acl (dir, entry, acl_ptr, acl_count, no_sysdaemon_sw, code); 158 go to RETURN; 159 160 list_dir_acl: 161 entry (dir, entry, area_ptr, alloc_ptr, dir_acl_ptr, acl_count, code); 162 163 validation_level = -1; 164 on cleanup call cleanup_validation; 165 call setup; 166 call hcs_$list_dir_acl (dir, entry, area_ptr, alloc_ptr, dir_acl_ptr, acl_count, code); 167 go to RETURN; 168 169 add_dir_acl_entries: 170 entry (dir, entry, dir_acl_ptr, acl_count, code); 171 172 validation_level = -1; 173 on cleanup call cleanup_validation; 174 call setup; 175 call hcs_$add_dir_acl_entries (dir, entry, dir_acl_ptr, acl_count, code); 176 go to RETURN; 177 178 delete_dir_acl_entries: 179 entry (dir, entry, delete_acl_ptr, acl_count, code); 180 181 validation_level = -1; 182 on cleanup call cleanup_validation; 183 call setup; 184 call hcs_$delete_dir_acl_entries (dir, entry, delete_acl_ptr, acl_count, code); 185 go to RETURN; 186 187 replace_dir_acl: 188 entry (dir, entry, dir_acl_ptr, acl_count, no_sysdaemon_sw, code); 189 190 validation_level = -1; 191 on cleanup call cleanup_validation; 192 call setup; 193 call hcs_$replace_dir_acl (dir, entry, dir_acl_ptr, acl_count, no_sysdaemon_sw, code); 194 go to RETURN; 195 196 set_ring_brackets: 197 entry (dir, entry, rbs, code); 198 199 validation_level = -1; 200 on cleanup call cleanup_validation; 201 call setup; 202 call hcs_$set_ring_brackets (dir, entry, rbs, code); 203 go to RETURN; 204 205 set_dir_ring_brackets: 206 entry (dir, entry, dir_rbs, code); 207 208 validation_level = -1; 209 on cleanup call cleanup_validation; 210 call setup; 211 call hcs_$set_dir_ring_brackets (dir, entry, dir_rbs, code); 212 go to RETURN; 213 214 set_safety_sw: 215 entry (dir, entry, switch_value, code); 216 217 validation_level = -1; 218 on cleanup call cleanup_validation; 219 call setup; 220 call hcs_$set_safety_sw (dir, entry, switch_value, code); 221 222 /**** go to RETURN; */ 223 224 RETURN: 225 call cu_$level_set (validation_level); 226 return; 227 228 229 setup: 230 procedure; 231 232 call cu_$level_get (validation_level); /* remember caller's validation level */ 233 call cu_$level_set ((get_ring_ ())); /* set validation level to current ring */ 234 return; 235 end setup; 236 237 cleanup_validation: 238 procedure; 239 240 if validation_level ^= -1 241 then call cu_$level_set (validation_level); 242 validation_level = -1; 243 return; 244 end cleanup_validation; 245 246 end ring_1_tools_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/19/83 0602.5 ring_1_tools_.pl1 >spec>online>bim>ring_1_tools_.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. acl_count parameter fixed bin(17,0) dcl 40 set ref 124 130* 133 139* 142 148* 151 157* 160 166* 169 175* 178 184* 187 193* acl_ptr parameter pointer dcl 37 set ref 124 130* 133 139* 151 157* alloc_ptr parameter pointer dcl 43 set ref 124 130* 160 166* area_ptr parameter pointer dcl 41 set ref 124 130* 160 166* caller parameter char unaligned dcl 57 set ref 96 102* 115 121* cleanup 000102 stack reference condition dcl 60 ref 91 100 109 119 128 137 146 155 164 173 182 191 200 209 218 code parameter fixed bin(35,0) dcl 31 set ref 87 93* 96 102* 105 112* 115 121* 124 130* 133 139* 142 148* 151 157* 160 166* 169 175* 178 184* 187 193* 196 202* 205 211* 214 220* copy_names_ 000010 constant entry external dcl 62 ref 102 cu_$level_get 000012 constant entry external dcl 64 ref 232 cu_$level_set 000014 constant entry external dcl 65 ref 224 233 240 delete_acl_ptr parameter pointer dcl 38 set ref 142 148* 178 184* dir parameter char unaligned dcl 29 set ref 87 93* 96 102* 105 111* 112* 115 121* 124 130* 133 139* 142 148* 151 157* 160 166* 169 175* 178 184* 187 193* 196 202* 205 211* 214 220* dir2 parameter char unaligned dcl 55 set ref 96 102* 115 121* dir_acl_ptr parameter pointer dcl 39 set ref 160 166* 169 175* 187 193* dir_rbs parameter fixed bin(3,0) array dcl 50 set ref 205 211* entry parameter char unaligned dcl 30 set ref 87 93* 96 102* 105 111* 112* 115 121* 124 130* 133 139* 142 148* 151 157* 160 166* 169 175* 178 184* 187 193* 196 202* 205 211* 214 220* entry2 parameter char unaligned dcl 56 set ref 96 102* 115 121* err_sw parameter bit(1) dcl 58 set ref 96 102* 115 121* get_ring_ 000016 constant entry external dcl 66 ref 233 hcs_$add_acl_entries 000022 constant entry external dcl 69 ref 139 hcs_$add_dir_acl_entries 000024 constant entry external dcl 70 ref 175 hcs_$chname_file 000026 constant entry external dcl 71 ref 93 hcs_$delentry_file 000030 constant entry external dcl 72 ref 112 hcs_$delete_acl_entries 000032 constant entry external dcl 73 ref 148 hcs_$delete_dir_acl_entries 000034 constant entry external dcl 74 ref 184 hcs_$list_acl 000036 constant entry external dcl 75 ref 130 hcs_$list_dir_acl 000040 constant entry external dcl 76 ref 166 hcs_$replace_acl 000042 constant entry external dcl 77 ref 157 hcs_$replace_dir_acl 000044 constant entry external dcl 79 ref 193 hcs_$set_dir_ring_brackets 000050 constant entry external dcl 82 ref 211 hcs_$set_ring_brackets 000046 constant entry external dcl 81 ref 202 hcs_$set_safety_sw 000052 constant entry external dcl 83 ref 220 move_names_ 000020 constant entry external dcl 67 ref 121 new_name parameter char unaligned dcl 54 set ref 87 93* no_sysdaemon_sw parameter bit(1) dcl 45 set ref 151 157* 187 193* old_name parameter char unaligned dcl 53 set ref 87 93* rbs parameter fixed bin(3,0) array dcl 48 set ref 196 202* switch_value parameter bit(1) unaligned dcl 33 set ref 214 220* term_ 000054 constant entry external dcl 84 ref 111 validation_level 000100 automatic fixed bin(17,0) dcl 35 set ref 90* 99* 108* 118* 127* 136* 145* 154* 163* 172* 181* 190* 199* 208* 217* 224* 232* 240 240* 242* NAMES DECLARED BY EXPLICIT CONTEXT. RETURN 002265 constant label dcl 224 ref 94 103 113 122 131 140 149 158 167 176 185 194 203 212 add_acl_entries 000725 constant entry external dcl 133 add_dir_acl_entries 001411 constant entry external dcl 169 chname_file 000034 constant entry external dcl 87 cleanup_validation 002325 constant entry internal dcl 237 ref 91 100 109 119 128 137 146 155 164 173 182 191 200 209 218 copy_names_ 000160 constant entry external dcl 96 delentry_file 000317 constant entry external dcl 105 delete_acl_entries 001037 constant entry external dcl 142 delete_dir_acl_entries 001523 constant entry external dcl 178 list_acl 000602 constant entry external dcl 124 list_dir_acl 001271 constant entry external dcl 160 move_names_ 000441 constant entry external dcl 115 replace_acl 001153 constant entry external dcl 151 replace_dir_acl 001633 constant entry external dcl 187 ring_1_tools_ 000021 constant entry external dcl 26 set_dir_ring_brackets 002061 constant entry external dcl 205 set_ring_brackets 001754 constant entry external dcl 196 set_safety_sw 002166 constant entry external dcl 214 setup 002275 constant entry internal dcl 229 ref 92 101 110 120 129 138 147 156 165 174 183 192 201 210 219 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3022 3100 2351 3032 Length 3356 2351 56 242 451 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ring_1_tools_ 149 external procedure is an external procedure. on unit on line 91 64 on unit on unit on line 100 64 on unit on unit on line 109 64 on unit on unit on line 119 64 on unit on unit on line 128 64 on unit on unit on line 137 64 on unit on unit on line 146 64 on unit on unit on line 155 64 on unit on unit on line 164 64 on unit on unit on line 173 64 on unit on unit on line 182 64 on unit on unit on line 191 64 on unit on unit on line 200 64 on unit on unit on line 209 64 on unit on unit on line 218 64 on unit setup internal procedure shares stack frame of external procedure ring_1_tools_. cleanup_validation 68 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ring_1_tools_ 000100 validation_level ring_1_tools_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_other return enable ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. copy_names_ cu_$level_get cu_$level_set get_ring_ hcs_$add_acl_entries hcs_$add_dir_acl_entries hcs_$chname_file hcs_$delentry_file hcs_$delete_acl_entries hcs_$delete_dir_acl_entries hcs_$list_acl hcs_$list_dir_acl hcs_$replace_acl hcs_$replace_dir_acl hcs_$set_dir_ring_brackets hcs_$set_ring_brackets hcs_$set_safety_sw move_names_ term_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 26 000020 87 000026 90 000071 91 000073 92 000115 93 000116 94 000151 96 000152 99 000222 100 000224 101 000246 102 000247 103 000312 105 000313 108 000342 109 000344 110 000366 111 000367 112 000413 113 000436 115 000437 118 000503 119 000505 120 000527 121 000530 122 000573 124 000574 127 000631 128 000633 129 000655 130 000656 131 000717 133 000720 136 000754 137 000756 138 001000 139 001001 140 001034 142 001035 145 001064 146 001066 147 001110 148 001111 149 001144 151 001145 154 001202 155 001204 156 001226 157 001227 158 001266 160 001267 163 001320 164 001322 165 001344 166 001345 167 001406 169 001407 172 001440 173 001442 174 001464 175 001465 176 001520 178 001521 181 001550 182 001552 183 001574 184 001575 185 001630 187 001631 190 001662 191 001664 192 001706 193 001707 194 001746 196 001747 199 001777 200 002001 201 002023 202 002024 203 002053 205 002054 208 002104 209 002106 210 002130 211 002131 212 002160 214 002161 217 002211 218 002213 219 002235 220 002236 224 002265 226 002274 229 002275 232 002276 233 002305 234 002323 237 002324 240 002332 242 002344 243 002347 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved