COMPILATION LISTING OF SEGMENT copy_iacl_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/25/83 1539.9 mst Tue 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 12 /* Copy segment and/or directory IACL from one directory to another */ 13 14 /* Rewritten: 23 January 1981 by G. Palter to not add *.SysDaemon.* term to the new IACL if not present in the original 15* and to use the system free area rather than an automatic one */ 16 17 18 copy_iacl_: 19 procedure (source_dirname, source_ename, target_dirname, target_ename, error_on_target, code); 20 21 22 /* Parameters */ 23 24 dcl source_dirname character (*) parameter; /* dir/entry of directory whose IACL is copied */ 25 dcl source_ename character (*) parameter; 26 27 dcl target_dirname character (*) parameter; /* dir/entry of directory to receive the IACL */ 28 dcl target_ename character (*) parameter; 29 30 dcl error_on_target bit (1) aligned parameter; /* ON => error occurred adding IACL to target; 31* OFF => error occured adding getting IACL from source */ 32 33 dcl code fixed binary (35) parameter; 34 35 36 /* Remaining declarations */ 37 38 dcl 1 segment_acl (acl_count) aligned based (acl_ptr), 39 2 access_name character (32), 40 2 modes bit (36), 41 2 extended_modes bit (36), 42 2 status_code fixed binary (35); 43 44 dcl 1 directory_acl (acl_count) based (acl_ptr), 45 2 access_name character (32), 46 2 dir_modes bit (36), 47 2 status_code fixed binary (35); 48 49 dcl acl_ptr pointer; 50 dcl acl_count fixed binary; 51 52 dcl ring fixed binary (3); 53 54 dcl directory_iacl bit (1) aligned; 55 56 dcl system_area area based (system_area_ptr); 57 dcl system_area_ptr pointer; 58 59 dcl get_ring_ entry () returns (fixed binary (3)); 60 dcl get_system_free_area_ entry () returns (pointer); 61 dcl (hcs_$list_inacl, hcs_$list_dir_inacl) 62 entry (character (*), character (*), pointer, pointer, pointer, fixed binary, fixed binary (3), fixed binary (35)); 63 dcl (hcs_$replace_dir_inacl, hcs_$replace_inacl) 64 entry (character (*), character (*), pointer, fixed binary, bit(1) aligned, fixed binary (3), fixed binary (35)); 65 66 dcl cleanup condition; 67 68 dcl null builtin; 69 70 /* Copy both the segment and directory IACLs */ 71 72 system_area_ptr = get_system_free_area_ (); 73 ring = get_ring_ (); 74 75 acl_ptr = null (); /* for cleanup handler */ 76 on condition (cleanup) 77 begin; 78 if acl_ptr ^= null () then 79 if directory_iacl then 80 free directory_acl in (system_area); 81 else free segment_acl in (system_area); 82 end; 83 84 directory_iacl = "0"b; 85 call copy_seg_iacl (); 86 if code ^= 0 then return; /* couldn't do it */ 87 88 directory_iacl = "1"b; 89 call copy_dir_iacl (); 90 91 return; 92 93 94 95 /* Copy the segment IACL only */ 96 97 seg: entry (source_dirname, source_ename, target_dirname, target_ename, error_on_target, code); 98 99 system_area_ptr = get_system_free_area_ (); 100 ring = get_ring_ (); 101 102 acl_ptr = null (); 103 on condition (cleanup) 104 begin; 105 if acl_ptr ^= null () then 106 free segment_acl in (system_area); 107 end; 108 109 call copy_seg_iacl (); 110 111 return; 112 113 114 115 /* Copy the directory IACL only */ 116 117 dir: entry (source_dirname, source_ename, target_dirname, target_ename, error_on_target, code); 118 119 system_area_ptr = get_system_free_area_ (); 120 ring = get_ring_ (); 121 122 acl_ptr = null (); 123 on condition (cleanup) 124 begin; 125 if acl_ptr ^= null () then 126 free directory_acl in (system_area); 127 end; 128 129 call copy_dir_iacl (); 130 131 return; 132 133 /* Copy the segment IACL */ 134 135 copy_seg_iacl: 136 procedure (); 137 138 error_on_target = "0"b; 139 call hcs_$list_inacl (source_dirname, source_ename, system_area_ptr, acl_ptr, null (), acl_count, ring, code); 140 if code ^= 0 then return; /* assume nothing was allocated */ 141 142 error_on_target = "1"b; 143 call hcs_$replace_inacl (target_dirname, target_ename, acl_ptr, acl_count, "1"b, ring, code); 144 145 free segment_acl in (system_area); /* get rid of it */ 146 147 return; 148 149 end copy_seg_iacl; 150 151 152 153 /* Copy the directory IACL */ 154 155 copy_dir_iacl: 156 procedure (); 157 158 error_on_target = "0"b; 159 call hcs_$list_dir_inacl (source_dirname, source_ename, system_area_ptr, acl_ptr, null (), acl_count, 160 ring, code); 161 if code ^= 0 then return; /* assume nothing allocated */ 162 163 error_on_target = "1"b; 164 call hcs_$replace_dir_inacl (target_dirname, target_ename, acl_ptr, acl_count, "1"b, ring, code); 165 166 free directory_acl in (system_area); 167 168 return; 169 170 end copy_dir_iacl; 171 172 end copy_iacl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/83 1444.6 copy_iacl_.pl1 >spec>on>eod-fix>copy_iacl_.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 000102 automatic fixed bin(17,0) dcl 50 set ref 78 81 105 125 139* 143* 145 159* 164* 166 acl_ptr 000100 automatic pointer dcl 49 set ref 75* 78 78 81 102* 105 105 122* 125 125 139* 143* 145 159* 164* 166 cleanup 000110 stack reference condition dcl 66 ref 76 103 123 code parameter fixed bin(35,0) dcl 33 set ref 18 86 97 117 139* 140 143* 159* 161 164* directory_acl based structure array level 1 unaligned dcl 44 ref 78 125 166 directory_iacl 000104 automatic bit(1) dcl 54 set ref 78 84* 88* error_on_target parameter bit(1) dcl 30 set ref 18 97 117 138* 142* 158* 163* get_ring_ 000010 constant entry external dcl 59 ref 73 100 120 get_system_free_area_ 000012 constant entry external dcl 60 ref 72 99 119 hcs_$list_dir_inacl 000016 constant entry external dcl 61 ref 159 hcs_$list_inacl 000014 constant entry external dcl 61 ref 139 hcs_$replace_dir_inacl 000020 constant entry external dcl 63 ref 164 hcs_$replace_inacl 000022 constant entry external dcl 63 ref 143 null builtin function dcl 68 ref 75 78 102 105 122 125 139 139 159 159 ring 000103 automatic fixed bin(3,0) dcl 52 set ref 73* 100* 120* 139* 143* 159* 164* segment_acl based structure array level 1 dcl 38 ref 81 105 145 source_dirname parameter char unaligned dcl 24 set ref 18 97 117 139* 159* source_ename parameter char unaligned dcl 25 set ref 18 97 117 139* 159* system_area based area(1024) dcl 56 ref 78 81 105 125 145 166 system_area_ptr 000106 automatic pointer dcl 57 set ref 72* 78 81 99* 105 119* 125 139* 145 159* 166 target_dirname parameter char unaligned dcl 27 set ref 18 97 117 143* 164* target_ename parameter char unaligned dcl 28 set ref 18 97 117 143* 164* NAMES DECLARED BY EXPLICIT CONTEXT. copy_dir_iacl 000476 constant entry internal dcl 155 ref 89 129 copy_iacl_ 000020 constant entry external dcl 18 copy_seg_iacl 000347 constant entry internal dcl 135 ref 85 109 dir 000245 constant entry external dcl 117 seg 000141 constant entry external dcl 97 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 760 1004 625 770 Length 1166 625 24 146 133 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME copy_iacl_ 172 external procedure is an external procedure. on unit on line 76 64 on unit on unit on line 103 64 on unit on unit on line 123 64 on unit copy_seg_iacl internal procedure shares stack frame of external procedure copy_iacl_. copy_dir_iacl internal procedure shares stack frame of external procedure copy_iacl_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME copy_iacl_ 000100 acl_ptr copy_iacl_ 000102 acl_count copy_iacl_ 000103 ring copy_iacl_ 000104 directory_iacl copy_iacl_ 000106 system_area_ptr copy_iacl_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry_desc int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_ring_ get_system_free_area_ hcs_$list_dir_inacl hcs_$list_inacl hcs_$replace_dir_inacl hcs_$replace_inacl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000012 72 000052 73 000060 75 000067 76 000071 78 000105 81 000121 82 000125 84 000126 85 000127 86 000130 88 000133 89 000135 91 000136 97 000137 99 000173 100 000202 102 000211 103 000213 105 000227 107 000240 109 000241 111 000242 117 000243 119 000277 120 000306 122 000315 123 000317 125 000333 127 000344 129 000345 131 000346 135 000347 138 000350 139 000352 140 000420 142 000424 143 000426 145 000471 147 000475 155 000476 158 000477 159 000501 161 000547 163 000553 164 000555 166 000620 168 000624 ----------------------------------------------------------- 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