COMPILATION LISTING OF SEGMENT suffix_mcacs_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/09/85 1326.1 mst Tue Options: optimize map 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* ************************************************************** */ 8 9 /* format: style2,idind30,indcomtxt */ 10 11 /* Typed-segment primitives for Message Coordinator ACS segments */ 12 13 /**** 1984-12-21, BIM: created from suffix_ms_ */ 14 15 suffix_mcacs_: 16 procedure (); 17 18 19 /* Common Parameters */ 20 21 dcl P_desired_version character (*) parameter; 22 dcl P_dirname character (*) parameter; 23 /* directory containing the message segment */ 24 dcl P_ename character (*) parameter; 25 /* name of the message segment */ 26 dcl P_code fixed binary (35) parameter; 27 28 /* suffix_info and list_switches Parameters */ 29 30 dcl P_switch_list_ptr ptr parameter; 31 dcl P_suffix_info_ptr ptr parameter; 32 33 /* chname_file Parameters */ 34 35 dcl P_old_name character (*) parameter; 36 /* name to be deleted */ 37 dcl P_new_name character (*) parameter; 38 /* name to be added */ 39 40 /* copy parameters */ 41 42 dcl P_copy_options_ptr ptr parameter; 43 44 /* Parameters used by most ACL entries */ 45 46 dcl P_acl_ptr pointer parameter; 47 /* -> an ACL array structure */ 48 49 50 /* list_acl Parameters */ 51 52 dcl P_user_area_ptr pointer parameter; 53 /* -> area where to allocate listed_acl if non-null */ 54 55 56 /* replace_acl Parameters */ 57 58 dcl P_no_sysdaemon bit (1) parameter; 59 /* ON => do not add explicit *.SysDaemon.* term */ 60 61 /* switch Parameters */ 62 63 dcl P_switch_name char (*) parameter; 64 dcl P_value bit (1) aligned parameter; 65 66 /* (get set)_max_length and bit_count parameters */ 67 68 dcl P_max_length fixed bin (19) parameter; 69 70 /* get_user_access_modes parameters */ 71 72 dcl (P_modes, P_exmodes) bit (36) aligned; 73 dcl P_ring fixed bin; 74 dcl P_user_name char (*); 75 76 /* ring brackets */ 77 78 dcl P_rings (2) fixed bin (3); 79 80 /* Remaining declarations */ 81 82 dcl acl_error bit (1) aligned; 83 dcl ex_acl_ptr pointer; 84 dcl user_area_ptr pointer; 85 dcl user_area area based (user_area_ptr); 86 dcl system_free_area area based (get_system_free_area_ ()); 87 88 dcl idx fixed binary; 89 90 dcl error_table_$argerr fixed binary (35) external; 91 dcl error_table_$unsupported_operation 92 fixed binary (35) external; 93 dcl error_table_$unimplemented_version 94 fixed bin (35) ext static; 95 declare error_table_$not_seg_type fixed bin (35) ext static; 96 97 declare cu_$generate_call entry (entry, ptr); 98 declare cu_$arg_list_ptr entry returns (pointer); 99 dcl (get_system_free_area_, get_user_free_area_) 100 entry () returns (pointer); 101 102 dcl hcs_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, 103 bit (36) aligned, fixed bin (35)); 104 dcl sub_err_ entry () options (variable); 105 106 107 declare V_entry entry variable options (variable); 108 109 dcl cleanup condition; 110 111 dcl null builtin; 112 113 declare VALID_ACL_XMODES bit (36) aligned init 114 /** abcdefghijklmnopqrstuvwxyz */ 115 /* */ ("001100000000000011000000000000000000"b) int static 116 options (constant); 117 118 119 /**** format: off */ 120 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 1 2 /* format: style3,indcomtxt,idind30 */ 1 3 /**** Jay Pattin 2/13/83 1 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 1 5* 1 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 1 7* 1 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 1 9 1 10 declare suffix_info_ptr ptr; 1 11 1 12 declare 1 suffix_info aligned based (suffix_info_ptr), 1 13 2 version char (8), 1 14 2 type char (32) unaligned, 1 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 1 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 1 17 2 flags unaligned, 1 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 1 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 1 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 1 21 3 mbz1 bit (33) unaligned, 1 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 1 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 1 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 1 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 1 26 2 info_pathname char (168) unaligned; 1 27 /* pathname of info segment containing more info */ 1 28 1 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 1 30 1 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 1 32 1 33 declare switch_list_ptr ptr, 1 34 alloc_switch_count fixed bin, 1 35 alloc_switch_name_count fixed bin; 1 36 1 37 declare 1 switch_list aligned based (switch_list_ptr), 1 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 1 39 2 switch_count fixed bin, /* total number of switches */ 1 40 2 switch_name_count fixed bin, /* total number of names */ 1 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 1 42 3 name_index fixed bin, /* index of first name for this switch */ 1 43 3 name_count fixed bin, /* number of names for this switch */ 1 44 3 default_value bit (1) aligned, /* default setting for this switch */ 1 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 1 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 1 47 1 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 1 49 1 50 declare ( 1 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 1 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 1 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 1 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 1 55 FS_OBJECT_TYPE_LINK init ("-link") 1 56 ) char (32) unaligned int static options (constant); 1 57 1 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 120 121 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 2 2 /* format: style3,indcomtxt,idind30 */ 2 3 2 4 declare acl_ptr pointer; 2 5 declare acl_count fixed bin; 2 6 2 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 2 8 2 version char (8) aligned, 2 9 2 count fixed bin, 2 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 2 11 2 12 declare 1 general_acl_entry based, 2 13 2 access_name character (32) unaligned, 2 14 2 mode bit (36) aligned, 2 15 2 status_code fixed bin (35); 2 16 2 17 2 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 2 19 2 version char (8) aligned, 2 20 2 count fixed bin, 2 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 2 22 2 23 declare 1 general_extended_acl_entry aligned based, 2 24 2 access_name character (32) unaligned, 2 25 2 mode bit (36) aligned, 2 26 2 extended_mode bit (36) aligned, 2 27 2 status_code fixed bin (35); 2 28 2 29 2 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 2 31 2 version char (8) aligned, 2 32 2 count fixed bin, 2 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 2 34 2 35 declare 1 general_delete_acl_entry aligned based, 2 36 2 access_name character (32) unaligned, 2 37 2 status_code fixed bin (35); 2 38 2 39 2 40 declare 1 segment_acl aligned based (acl_ptr), 2 41 2 version fixed bin, 2 42 2 count fixed bin, 2 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 2 44 2 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 2 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 2 47 2 48 2 49 declare 1 directory_acl aligned based (acl_ptr), 2 50 2 version fixed bin, 2 51 2 count fixed bin, 2 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 2 53 2 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 2 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 2 56 2 57 2 58 declare 1 delete_acl based (acl_ptr) aligned, 2 59 2 version fixed bin, 2 60 2 count fixed bin, 2 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 2 62 2 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 2 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 2 65 2 66 2 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 2 68 DIR_ACL_VERSION_1 init ("dra1"), 2 69 DELETE_ACL_VERSION_1 init ("dla1")) 2 70 char (4) int static options (constant); 2 71 2 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 2 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 2 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 2 75 char (8) internal static options (constant); 2 76 2 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 2 78 2 79 /* End include file acl_structures.incl.pl1 */ 121 122 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 3 2* 3 3* Values for the "access mode" argument so often used in hardcore 3 4* James R. Davis 26 Jan 81 MCR 4844 3 5* Added constants for SM access 4/28/82 Jay Pattin 3 6* Added text strings 03/19/85 Chris Jones 3 7**/ 3 8 3 9 3 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 3 11 dcl ( 3 12 N_ACCESS init ("000"b), 3 13 R_ACCESS init ("100"b), 3 14 E_ACCESS init ("010"b), 3 15 W_ACCESS init ("001"b), 3 16 RE_ACCESS init ("110"b), 3 17 REW_ACCESS init ("111"b), 3 18 RW_ACCESS init ("101"b), 3 19 S_ACCESS init ("100"b), 3 20 M_ACCESS init ("010"b), 3 21 A_ACCESS init ("001"b), 3 22 SA_ACCESS init ("101"b), 3 23 SM_ACCESS init ("110"b), 3 24 SMA_ACCESS init ("111"b) 3 25 ) bit (3) internal static options (constant); 3 26 3 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 3 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 3 29 3 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 3 31 static options (constant); 3 32 3 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 3 34 static options (constant); 3 35 3 36 dcl ( 3 37 N_ACCESS_BIN init (00000b), 3 38 R_ACCESS_BIN init (01000b), 3 39 E_ACCESS_BIN init (00100b), 3 40 W_ACCESS_BIN init (00010b), 3 41 RW_ACCESS_BIN init (01010b), 3 42 RE_ACCESS_BIN init (01100b), 3 43 REW_ACCESS_BIN init (01110b), 3 44 S_ACCESS_BIN init (01000b), 3 45 M_ACCESS_BIN init (00010b), 3 46 A_ACCESS_BIN init (00001b), 3 47 SA_ACCESS_BIN init (01001b), 3 48 SM_ACCESS_BIN init (01010b), 3 49 SMA_ACCESS_BIN init (01011b) 3 50 ) fixed bin (5) internal static options (constant); 3 51 3 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 122 4 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 4 2 /* format: style3 */ 4 3 4 4 /* These constants are to be used for the flags argument of sub_err_ */ 4 5 /* They are just "string (condition_info_header.action_flags)" */ 4 6 4 7 declare ( 4 8 ACTION_CAN_RESTART init (""b), 4 9 ACTION_CANT_RESTART init ("1"b), 4 10 ACTION_DEFAULT_RESTART 4 11 init ("01"b), 4 12 ACTION_QUIET_RESTART 4 13 init ("001"b), 4 14 ACTION_SUPPORT_SIGNAL 4 15 init ("0001"b) 4 16 ) bit (36) aligned internal static options (constant); 4 17 4 18 /* End include file */ 123 5 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 5 2 5 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 5 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 5 5* 5 6* Jay Pattin 6/23/83 */ 5 7 5 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 5 9 2 names bit (1) unaligned, 5 10 2 acl bit (1) unaligned, 5 11 2 ring_brackets bit (1) unaligned, 5 12 2 max_length bit (1) unaligned, 5 13 2 copy_switch bit (1) unaligned, 5 14 2 safety_switch bit (1) unaligned, 5 15 2 dumper_switches bit (1) unaligned, 5 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 5 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 5 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 5 19 2 mbz bit (26) unaligned; 5 20 5 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 124 6 1 /* Begin include file file_system_operations.incl.pl1 BIM 8309 */ 6 2 /* format: style3,indcomtxt,idind30 */ 6 3 6 4 /**** Operation names to be passed to fs_util_$make_entry */ 6 5 6 6 declare ( 6 7 FS_ADD_ACL_ENTRIES init ("add_acl_entries"), 6 8 FS_ADD_EXTENDED_ACL_ENTRIES init ("add_extended_acl_entries"), 6 9 FS_CHNAME_FILE init ("chname_file"), 6 10 FS_COPY init ("copy"), 6 11 FS_DELENTRY_FILE init ("delentry_file"), 6 12 FS_DELETE_ACL_ENTRIES init ("delete_acl_entries"), 6 13 FS_GET_BIT_COUNT init ("get_bit_count"), 6 14 FS_GET_MAX_LENGTH init ("get_max_length"), 6 15 FS_GET_RING_BRACKETS init ("get_ring_brackets"), 6 16 FS_GET_SWITCH init ("get_switch"), 6 17 FS_GET_USER_ACCESS_MODES init ("get_user_access_modes"), 6 18 FS_LIST_ACL init ("list_acl"), 6 19 FS_LIST_EXTENDED_ACL init ("list_extended_acl"), 6 20 FS_LIST_SWITCHES init ("list_switches"), 6 21 FS_REPLACE_ACL init ("replace_acl"), 6 22 FS_REPLACE_EXTENDED_ACL init ("replace_extended_acl"), 6 23 FS_SET_BIT_COUNT init ("set_bit_count"), 6 24 FS_SET_MAX_LENGTH init ("set_max_length"), 6 25 FS_SET_RING_BRACKETS init ("set_ring_brackets"), 6 26 FS_SET_SWITCH init ("set_switch"), 6 27 FS_SUFFIX_INFO init ("suffix_info"), 6 28 FS_VALIDATE init ("validate") 6 29 ) char (64) int static options (constant); 6 30 6 31 /* End include file file_system_operations.incl.pl1 */ 125 126 /* format: on */ 127 128 129 130 /* Deletes a message segment */ 131 132 delentry_file: 133 entry (P_dirname, P_ename, P_code); 134 135 call FORWARD (FS_DELENTRY_FILE, cu_$arg_list_ptr ()); 136 return; 137 138 139 140 chname_file: 141 entry (P_dirname, P_ename, P_old_name, P_new_name, P_code); 142 143 call FORWARD (FS_CHNAME_FILE, cu_$arg_list_ptr ()); 144 return; 145 146 147 copy: 148 entry (P_copy_options_ptr, P_code); 149 150 call FORWARD (FS_COPY, cu_$arg_list_ptr ()); 151 return; 152 153 154 validate: 155 entry (P_dirname, P_ename, P_code); 156 157 P_code = error_table_$not_seg_type; 158 if index (P_ename, ".") > 0 159 then if before (reverse (rtrim (P_ename)), ".") = reverse ("mcacs") 160 then P_code = 0; 161 return; 162 163 164 suffix_info: 165 entry (P_suffix_info_ptr); 166 167 suffix_info_ptr = P_suffix_info_ptr; 168 169 if suffix_info.version ^= SUFFIX_INFO_VERSION_1 170 then call sub_err_ (error_table_$unimplemented_version, "bad suffix info version", ACTION_CANT_RESTART, null (), 171 (0), "Invalid version ^a in call to suffix_ms_$suffix_info.", suffix_info.version); 172 173 suffix_info.type = "mcacs"; 174 suffix_info.type_name = "Message Coordinator source ACS"; 175 suffix_info.plural_name = "Message Coordinator source ACS's"; 176 string (suffix_info.flags) = ""b; 177 suffix_info.extended_acl = "0"b; 178 suffix_info.has_switches = "0"b; 179 suffix_info.modes = "cdqr"; 180 suffix_info.max_mode_len = 4; 181 suffix_info.num_ring_brackets = 2; /* gate bracket dull */ 182 string (suffix_info.copy_flags) = ""b; 183 suffix_info.copy_flags.names, suffix_info.copy_flags.acl, suffix_info.copy_flags.max_length, 184 suffix_info.copy_flags.safety_switch = "1"b; 185 186 suffix_info.info_pathname = "extended_access.gi.info"; 187 188 return; 189 190 191 192 add_acl_entries: 193 entry (P_dirname, P_ename, P_acl_ptr, P_code); 194 195 acl_ptr = P_acl_ptr; 196 if acl_ptr = null () 197 then do; 198 P_code = error_table_$argerr; 199 return; 200 end; 201 202 if general_acl.version ^= GENERAL_ACL_VERSION_1 203 then do; 204 P_code = error_table_$unimplemented_version; 205 return; 206 end; 207 208 acl_error = "0"b; 209 general_acl.entries (*).status_code = 0; 210 do idx = 1 to general_acl.count; 211 if (general_acl.entries (idx).mode & VALID_ACL_XMODES) ^= ""b 212 then do; 213 general_acl.entries (idx).status_code = error_table_$argerr; 214 acl_error = "1"b; 215 end; 216 end; 217 if acl_error 218 then do; 219 P_code = error_table_$argerr; 220 return; 221 end; 222 223 acl_count = general_acl.count; 224 allocate general_extended_acl in (system_free_area) set (ex_acl_ptr); 225 ex_acl_ptr -> general_extended_acl.version = GENERAL_EXTENDED_ACL_VERSION_1; 226 do idx = 1 to acl_count; 227 ex_acl_ptr -> general_extended_acl.entries (idx).access_name = general_acl.entries (idx).access_name; 228 ex_acl_ptr -> general_extended_acl.entries (idx).mode = ""b; 229 ex_acl_ptr -> general_extended_acl.entries (idx).extended_mode = general_acl.entries (idx).mode; 230 ex_acl_ptr -> general_extended_acl.entries (idx).status_code = 0; 231 end; 232 233 call MAKE_ENTRY (FS_ADD_EXTENDED_ACL_ENTRIES); 234 call V_entry (P_dirname, P_ename, ex_acl_ptr, P_code); 235 236 general_acl.entries (*).status_code = ex_acl_ptr -> general_extended_acl.entries (*).status_code; 237 free general_extended_acl; 238 return; 239 240 241 list_acl: 242 entry (P_dirname, P_ename, P_desired_version, P_user_area_ptr, P_acl_ptr, P_code); 243 244 acl_ptr = P_acl_ptr; 245 ex_acl_ptr = null (); 246 247 if acl_ptr ^= null () 248 then do; /* wants to list specific entries */ 249 if general_acl.version ^= GENERAL_ACL_VERSION_1 250 then do; 251 P_code = error_table_$unimplemented_version; 252 return; 253 end; 254 255 acl_count = general_acl.count; 256 if acl_count = 0 257 then return; 258 allocate general_extended_acl in (system_free_area) set (ex_acl_ptr); 259 ex_acl_ptr -> general_extended_acl.version = GENERAL_EXTENDED_ACL_VERSION_1; 260 do idx = 1 to acl_count; 261 ex_acl_ptr -> general_extended_acl.entries (idx).access_name = 262 general_acl.entries (idx).access_name; 263 ex_acl_ptr -> general_extended_acl.entries (idx).status_code = 0; 264 end; 265 266 call MAKE_ENTRY (FS_LIST_EXTENDED_ACL); 267 call V_entry (P_dirname, P_ename, "", null (), ex_acl_ptr, P_code); 268 do idx = 1 to acl_count; 269 general_acl.entries (idx).mode = ex_acl_ptr -> general_extended_acl.entries (idx).extended_mode; 270 general_acl.entries (idx).status_code = 271 ex_acl_ptr -> general_extended_acl.entries (idx).status_code; 272 end; 273 free ex_acl_ptr -> general_extended_acl; 274 end; 275 276 277 else do; /* wants to list an acl entirely */ 278 if P_desired_version ^= GENERAL_ACL_VERSION_1 279 then do; 280 P_code = error_table_$unimplemented_version; 281 return; 282 end; 283 284 user_area_ptr = P_user_area_ptr; 285 if user_area_ptr = null () 286 then user_area_ptr = get_user_free_area_ (); 287 288 call MAKE_ENTRY (FS_LIST_EXTENDED_ACL); 289 call V_entry (P_dirname, P_ename, GENERAL_EXTENDED_ACL_VERSION_1, get_system_free_area_ (), 290 ex_acl_ptr, P_code); 291 292 if P_code ^= 0 293 then return; 294 295 if ex_acl_ptr = null () 296 then do; 297 P_acl_ptr = null (); 298 return; 299 end; 300 301 acl_count = max (1, ex_acl_ptr -> general_extended_acl.count); 302 allocate general_acl in (user_area); 303 P_acl_ptr = acl_ptr; 304 general_acl.count = ex_acl_ptr -> general_extended_acl.count; 305 if general_acl.count = 0 306 then go to LIST_FREE_RETURN; 307 308 general_acl.version = GENERAL_ACL_VERSION_1; 309 do idx = 1 to acl_count; 310 general_acl.entries (idx).access_name = 311 ex_acl_ptr -> general_extended_acl.entries (idx).access_name; 312 general_acl.entries (idx).mode = ex_acl_ptr -> general_extended_acl.entries (idx).extended_mode; 313 general_acl.entries (*).status_code = 0; 314 end; 315 LIST_FREE_RETURN: 316 free ex_acl_ptr -> general_extended_acl; 317 end; 318 319 return; 320 321 322 delete_acl_entries: 323 entry (P_dirname, P_ename, P_acl_ptr, P_code); 324 325 acl_ptr = P_acl_ptr; 326 if acl_ptr = null () 327 then do; 328 P_code = error_table_$argerr; 329 return; 330 end; 331 332 call FORWARD (FS_DELETE_ACL_ENTRIES, cu_$arg_list_ptr ()); 333 334 335 336 /**** NOTE -- the default SysDaemon access for an mcacs is null. 337* Therefore, the no_sysdaemon switch is a noop. */ 338 339 replace_acl: 340 entry (P_dirname, P_ename, P_acl_ptr, P_no_sysdaemon, P_code); 341 342 ex_acl_ptr = null (); 343 344 acl_ptr = P_acl_ptr; 345 if acl_ptr = null () 346 then do; 347 P_code = error_table_$argerr; 348 return; 349 end; 350 351 on cleanup 352 begin; 353 if ex_acl_ptr ^= null () 354 then do; 355 free ex_acl_ptr -> general_extended_acl; 356 ex_acl_ptr = null (); 357 end; 358 end; 359 360 acl_count = general_acl.count; 361 362 call MAKE_ENTRY (FS_REPLACE_EXTENDED_ACL); 363 364 365 if acl_count = 0 /* cannot have no_sysdaemon */ 366 then do; 367 acl_count = 1; 368 allocate general_extended_acl in (system_free_area) set (ex_acl_ptr); 369 ex_acl_ptr -> general_extended_acl.version = GENERAL_EXTENDED_ACL_VERSION_1; 370 ex_acl_ptr -> general_extended_acl.count = 0; 371 call V_entry (P_dirname, P_ename, ex_acl_ptr, "1"b, P_code); 372 free ex_acl_ptr -> general_extended_acl; 373 return; 374 end; 375 376 allocate general_extended_acl in (system_free_area) set (ex_acl_ptr); 377 ex_acl_ptr -> general_extended_acl.version = GENERAL_EXTENDED_ACL_VERSION_1; 378 379 do idx = 1 to acl_count; /* no need to splice in funny acl */ 380 ex_acl_ptr -> general_extended_acl.entries (idx).access_name = general_acl.entries (idx).access_name; 381 ex_acl_ptr -> general_extended_acl.entries (idx).extended_mode = general_acl.entries (idx).mode; 382 ex_acl_ptr -> general_extended_acl.entries (idx).mode = ""b; 383 ex_acl_ptr -> general_extended_acl.entries (idx).status_code = 0; 384 385 end; 386 387 call V_entry (P_dirname, P_ename, ex_acl_ptr, "1"b, P_code); 388 389 general_acl.entries (*).status_code = ex_acl_ptr -> general_extended_acl.entries (*).status_code; 390 free ex_acl_ptr -> general_extended_acl; 391 392 return; 393 394 395 get_switch: 396 entry (P_dirname, P_ename, P_switch_name, P_value, P_code); 397 398 call FORWARD (FS_GET_SWITCH, cu_$arg_list_ptr ()); 399 400 set_switch: 401 entry (P_dirname, P_ename, P_switch_name, P_value, P_code); 402 403 call FORWARD (FS_SET_SWITCH, cu_$arg_list_ptr ()); 404 405 406 get_max_length: 407 entry (P_dirname, P_ename, P_max_length, P_code); 408 409 call FORWARD (FS_GET_MAX_LENGTH, cu_$arg_list_ptr ()); 410 411 set_max_length: 412 entry (P_dirname, P_ename, P_max_length, P_code); 413 414 call FORWARD (FS_SET_MAX_LENGTH, cu_$arg_list_ptr ()); 415 416 list_switches: 417 entry (P_desired_version, P_user_area_ptr, P_switch_list_ptr, P_code); 418 419 call FORWARD (FS_LIST_SWITCHES, cu_$arg_list_ptr ()); 420 421 422 get_ring_brackets: 423 entry (P_dirname, P_ename, P_rings, P_code); 424 425 declare three_rings (3) fixed bin (3); 426 427 call MAKE_ENTRY (FS_GET_RING_BRACKETS); 428 call V_entry (P_dirname, P_ename, three_rings, P_code); 429 P_rings (1) = three_rings (1); 430 P_rings (2) = three_rings (2); 431 return; 432 433 set_ring_brackets: 434 entry (P_dirname, P_ename, P_rings, P_code); 435 436 three_rings (1) = P_rings (1); 437 three_rings (2), three_rings (3) = P_rings (2); 438 call MAKE_ENTRY (FS_SET_RING_BRACKETS); 439 call V_entry (P_dirname, P_ename, three_rings, P_code); 440 return; 441 442 443 get_user_access_modes: 444 entry (P_dirname, P_ename, P_user_name, P_ring, P_modes, P_exmodes, P_code); 445 446 P_exmodes = ""b; /* msegs, like dirs, have only modes, no exmodes */ 447 call hcs_$get_user_access_modes (P_dirname, P_ename, P_user_name, P_ring, ((36)"0"b), P_modes, P_code); 448 return; 449 450 451 MAKE_ENTRY: 452 procedure (OP); 453 454 declare OP char (64); 455 456 call MAKE_ENTRY_ (OP); 457 return; 458 FORWARD: 459 entry (OP, Arg_list_ptr); 460 461 declare Arg_list_ptr pointer; 462 463 call MAKE_ENTRY_ (OP); 464 call cu_$generate_call (V_entry, Arg_list_ptr); 465 go to FORWARD_RETURNS; 466 end MAKE_ENTRY; 467 468 FORWARD_RETURNS: 469 return; 470 471 MAKE_ENTRY_: 472 procedure (OP); 473 474 declare OP char (64); 475 declare code fixed bin (35); 476 477 declare fs_util_$make_entry_for_type entry (character (*), character (*), entry, fixed binary (35)); 478 479 call fs_util_$make_entry_for_type ("-segment", (OP), V_entry, code); 480 if code ^= 0 481 then call sub_err_ (code, "suffix_mcacs_", ACTION_CANT_RESTART, null (), (0), 482 "Failed to find entrypoint for ""^a"" for segments.", OP); 483 end MAKE_ENTRY_; 484 485 end suffix_mcacs_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1133.0 suffix_mcacs_.pl1 >special_ldd>online>41-15-04/10/85>suffix_mcacs_.pl1 120 1 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 121 2 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 122 3 04/09/85 1109.7 access_mode_values.incl.pl1 >special_ldd>online>41-15-04/10/85>access_mode_values.incl.pl1 123 4 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 124 5 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 125 6 10/14/83 1606.7 file_system_operations.incl.pl1 >ldd>include>file_system_operations.incl.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. ACTION_CANT_RESTART 000355 constant bit(36) initial dcl 4-7 set ref 169* 480* Arg_list_ptr parameter pointer dcl 461 set ref 458 464* FS_ADD_EXTENDED_ACL_ENTRIES 000320 constant char(64) initial unaligned dcl 6-6 set ref 233* FS_CHNAME_FILE 000300 constant char(64) initial unaligned dcl 6-6 set ref 143* FS_COPY 000260 constant char(64) initial unaligned dcl 6-6 set ref 150* FS_DELENTRY_FILE 000240 constant char(64) initial unaligned dcl 6-6 set ref 135* FS_DELETE_ACL_ENTRIES 000220 constant char(64) initial unaligned dcl 6-6 set ref 332* FS_GET_MAX_LENGTH 000200 constant char(64) initial unaligned dcl 6-6 set ref 409* FS_GET_RING_BRACKETS 000160 constant char(64) initial unaligned dcl 6-6 set ref 427* FS_GET_SWITCH 000140 constant char(64) initial unaligned dcl 6-6 set ref 398* FS_LIST_EXTENDED_ACL 000120 constant char(64) initial unaligned dcl 6-6 set ref 266* 288* FS_LIST_SWITCHES 000100 constant char(64) initial unaligned dcl 6-6 set ref 419* FS_REPLACE_EXTENDED_ACL 000060 constant char(64) initial unaligned dcl 6-6 set ref 362* FS_SET_MAX_LENGTH 000040 constant char(64) initial unaligned dcl 6-6 set ref 414* FS_SET_RING_BRACKETS 000020 constant char(64) initial unaligned dcl 6-6 set ref 438* FS_SET_SWITCH 000000 constant char(64) initial unaligned dcl 6-6 set ref 403* GENERAL_ACL_VERSION_1 000342 constant char(8) initial unaligned dcl 2-72 ref 202 249 278 308 GENERAL_EXTENDED_ACL_VERSION_1 000340 constant char(8) initial unaligned dcl 2-72 set ref 225 259 289* 369 377 OP parameter char(64) unaligned dcl 474 in procedure "MAKE_ENTRY_" set ref 471 479 480* OP parameter char(64) unaligned dcl 454 in procedure "MAKE_ENTRY" set ref 451 456* 458 463* P_acl_ptr parameter pointer dcl 46 set ref 192 195 241 244 297* 303* 322 325 339 344 P_code parameter fixed bin(35,0) dcl 26 set ref 132 140 147 154 157* 158* 192 198* 204* 219* 234* 241 251* 267* 280* 289* 292 322 328* 339 347* 371* 387* 395 400 406 411 416 422 428* 433 439* 443 447* P_copy_options_ptr parameter pointer dcl 42 ref 147 P_desired_version parameter char unaligned dcl 21 ref 241 278 416 P_dirname parameter char unaligned dcl 22 set ref 132 140 154 192 234* 241 267* 289* 322 339 371* 387* 395 400 406 411 422 428* 433 439* 443 447* P_ename parameter char unaligned dcl 24 set ref 132 140 154 158 158 192 234* 241 267* 289* 322 339 371* 387* 395 400 406 411 422 428* 433 439* 443 447* P_exmodes parameter bit(36) dcl 72 set ref 443 446* P_max_length parameter fixed bin(19,0) dcl 68 ref 406 411 P_modes parameter bit(36) dcl 72 set ref 443 447* P_new_name parameter char unaligned dcl 37 ref 140 P_no_sysdaemon parameter bit(1) unaligned dcl 58 ref 339 P_old_name parameter char unaligned dcl 35 ref 140 P_ring parameter fixed bin(17,0) dcl 73 set ref 443 447* P_rings parameter fixed bin(3,0) array dcl 78 set ref 422 429* 430* 433 436 437 P_suffix_info_ptr parameter pointer dcl 31 ref 164 167 P_switch_list_ptr parameter pointer dcl 30 ref 416 P_switch_name parameter char unaligned dcl 63 ref 395 400 P_user_area_ptr parameter pointer dcl 52 ref 241 284 416 P_user_name parameter char unaligned dcl 74 set ref 443 447* P_value parameter bit(1) dcl 64 ref 395 400 SUFFIX_INFO_VERSION_1 000344 constant char(8) initial unaligned dcl 1-29 ref 169 VALID_ACL_XMODES constant bit(36) initial dcl 113 ref 211 V_entry 000110 automatic entry variable dcl 107 set ref 234 267 289 371 387 428 439 464* 479* access_name 3 based char(32) array level 3 in structure "general_acl" packed unaligned dcl 2-7 in procedure "suffix_mcacs_" set ref 227 261 310* 380 access_name 3 based char(32) array level 3 in structure "general_extended_acl" packed unaligned dcl 2-18 in procedure "suffix_mcacs_" set ref 227* 261* 310 380* acl 46(01) based bit(1) level 3 packed unaligned dcl 1-12 set ref 183* acl_count 000126 automatic fixed bin(17,0) dcl 2-5 set ref 223* 224 224 226 255* 256 258 258 260 268 301* 302 302 309 360* 365 367* 368 368 376 376 379 acl_error 000100 automatic bit(1) dcl 82 set ref 208* 214* 217 acl_ptr 000124 automatic pointer dcl 2-4 set ref 195* 196 202 209 210 211 213 223 227 229 236 237 244* 247 249 255 261 269 270 302* 303 304 305 308 310 312 313 325* 326 344* 345 360 380 381 389 cleanup 000114 stack reference condition dcl 109 ref 351 code 000170 automatic fixed bin(35,0) dcl 475 set ref 479* 480 480* copy_flags 46 based structure level 2 in structure "suffix_info" dcl 1-12 in procedure "suffix_mcacs_" set ref 182* copy_flags based structure level 1 dcl 5-8 in procedure "suffix_mcacs_" count 2 based fixed bin(17,0) level 2 in structure "general_acl" dcl 2-7 in procedure "suffix_mcacs_" set ref 209 210 223 236 255 302* 304* 305 313 360 389 count 2 based fixed bin(17,0) level 2 in structure "general_extended_acl" dcl 2-18 in procedure "suffix_mcacs_" set ref 224* 236 237 258* 273 301 304 315 355 368* 370* 372 376* 389 390 cu_$arg_list_ptr 000020 constant entry external dcl 98 ref 135 135 143 143 150 150 332 332 398 398 403 403 409 409 414 414 419 419 cu_$generate_call 000016 constant entry external dcl 97 ref 464 delete_acl_entry based structure level 1 dcl 2-63 directory_acl_entry based structure level 1 dcl 2-54 entries 3 based structure array level 2 in structure "general_extended_acl" dcl 2-18 in procedure "suffix_mcacs_" entries 3 based structure array level 2 in structure "general_acl" dcl 2-7 in procedure "suffix_mcacs_" error_table_$argerr 000010 external static fixed bin(35,0) dcl 90 ref 198 213 219 328 347 error_table_$not_seg_type 000014 external static fixed bin(35,0) dcl 95 ref 157 error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 93 set ref 169* 204 251 280 ex_acl_ptr 000102 automatic pointer dcl 83 set ref 224* 225 227 228 229 230 234* 236 245* 258* 259 261 263 267* 269 270 273 289* 295 301 304 310 312 315 342* 353 355 356* 368* 369 370 371* 372 376* 377 380 381 382 383 387* 389 390 extended_acl 32(01) based bit(1) level 3 packed unaligned dcl 1-12 set ref 177* extended_mode 14 based bit(36) array level 3 dcl 2-18 set ref 229* 269 312 381* flags 32 based structure level 2 packed unaligned dcl 1-12 set ref 176* fs_util_$make_entry_for_type 000032 constant entry external dcl 477 ref 479 general_acl based structure level 1 dcl 2-7 set ref 302 general_acl_entry based structure level 1 unaligned dcl 2-12 general_delete_acl_entry based structure level 1 dcl 2-35 general_extended_acl based structure level 1 dcl 2-18 set ref 224 237 258 273 315 355 368 372 376 390 general_extended_acl_entry based structure level 1 dcl 2-23 get_system_free_area_ 000022 constant entry external dcl 99 ref 224 258 289 289 368 376 get_user_free_area_ 000024 constant entry external dcl 99 ref 285 has_switches 32(02) based bit(1) level 3 packed unaligned dcl 1-12 set ref 178* hcs_$get_user_access_modes 000026 constant entry external dcl 102 ref 447 idx 000106 automatic fixed bin(17,0) dcl 88 set ref 210* 211 213* 226* 227 227 228 229 229 230* 260* 261 261 263* 268* 269 269 270 270* 309* 310 310 312 312* 379* 380 380 381 381 382 383* info_pathname 47 based char(168) level 2 packed unaligned dcl 1-12 set ref 186* max_length 46(03) based bit(1) level 3 packed unaligned dcl 1-12 set ref 183* max_mode_len 44 based fixed bin(17,0) level 2 dcl 1-12 set ref 180* mode 13 based bit(36) array level 3 in structure "general_acl" dcl 2-7 in procedure "suffix_mcacs_" set ref 211 229 269* 312* 381 mode 13 based bit(36) array level 3 in structure "general_extended_acl" dcl 2-18 in procedure "suffix_mcacs_" set ref 228* 382* modes 33 based char(36) level 2 dcl 1-12 set ref 179* names 46 based bit(1) level 3 packed unaligned dcl 1-12 set ref 183* null builtin function dcl 111 ref 169 169 196 245 247 267 267 285 295 297 326 342 345 353 356 480 480 num_ring_brackets 45 based fixed bin(17,0) level 2 dcl 1-12 set ref 181* plural_name 22 based char(32) level 2 packed unaligned dcl 1-12 set ref 175* safety_switch 46(05) based bit(1) level 3 packed unaligned dcl 1-12 set ref 183* segment_acl_entry based structure level 1 dcl 2-45 status_code 14 based fixed bin(35,0) array level 3 in structure "general_acl" dcl 2-7 in procedure "suffix_mcacs_" set ref 209* 213* 236* 270* 313* 389* status_code 15 based fixed bin(35,0) array level 3 in structure "general_extended_acl" dcl 2-18 in procedure "suffix_mcacs_" set ref 230* 236 263* 270 383* 389 sub_err_ 000030 constant entry external dcl 104 ref 169 480 suffix_info based structure level 1 dcl 1-12 suffix_info_ptr 000122 automatic pointer dcl 1-10 set ref 167* 169 169 173 174 175 176 177 178 179 180 181 182 183 183 183 183 186 system_free_area based area(1024) dcl 86 ref 224 258 368 376 three_rings 000127 automatic fixed bin(3,0) array dcl 425 set ref 428* 429 430 436* 437* 437* 439* type 2 based char(32) level 2 packed unaligned dcl 1-12 set ref 173* type_name 12 based char(32) level 2 packed unaligned dcl 1-12 set ref 174* user_area based area(1024) dcl 85 ref 302 user_area_ptr 000104 automatic pointer dcl 84 set ref 284* 285 285* 302 version based char(8) level 2 in structure "suffix_info" dcl 1-12 in procedure "suffix_mcacs_" set ref 169 169* version based char(8) level 2 in structure "general_acl" dcl 2-7 in procedure "suffix_mcacs_" set ref 202 249 308* version based char(8) level 2 in structure "general_extended_acl" dcl 2-18 in procedure "suffix_mcacs_" set ref 225* 259* 369* 377* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 2-77 ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 4-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 4-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 4-7 A_ACCESS internal static bit(3) initial unaligned dcl 3-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 DELETE_ACL_VERSION_1 internal static char(4) initial unaligned dcl 2-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 3-33 DIR_ACL_VERSION_1 internal static char(4) initial unaligned dcl 2-67 E_ACCESS internal static bit(3) initial unaligned dcl 3-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 FS_ADD_ACL_ENTRIES internal static char(64) initial unaligned dcl 6-6 FS_GET_BIT_COUNT internal static char(64) initial unaligned dcl 6-6 FS_GET_USER_ACCESS_MODES internal static char(64) initial unaligned dcl 6-6 FS_LIST_ACL internal static char(64) initial unaligned dcl 6-6 FS_OBJECT_TYPE_DIRECTORY internal static char(32) initial unaligned dcl 1-50 FS_OBJECT_TYPE_DM_FILE internal static char(32) initial unaligned dcl 1-50 FS_OBJECT_TYPE_LINK internal static char(32) initial unaligned dcl 1-50 FS_OBJECT_TYPE_MSF internal static char(32) initial unaligned dcl 1-50 FS_OBJECT_TYPE_SEGMENT internal static char(32) initial unaligned dcl 1-50 FS_REPLACE_ACL internal static char(64) initial unaligned dcl 6-6 FS_SET_BIT_COUNT internal static char(64) initial unaligned dcl 6-6 FS_SUFFIX_INFO internal static char(64) initial unaligned dcl 6-6 FS_VALIDATE internal static char(64) initial unaligned dcl 6-6 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial unaligned dcl 2-72 M_ACCESS internal static bit(3) initial unaligned dcl 3-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 N_ACCESS internal static bit(3) initial unaligned dcl 3-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 REW_ACCESS internal static bit(3) initial unaligned dcl 3-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 RE_ACCESS internal static bit(3) initial unaligned dcl 3-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 RW_ACCESS internal static bit(3) initial unaligned dcl 3-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 R_ACCESS internal static bit(3) initial unaligned dcl 3-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SA_ACCESS internal static bit(3) initial unaligned dcl 3-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 3-30 SEG_ACL_VERSION_1 internal static char(4) initial unaligned dcl 2-67 SMA_ACCESS internal static bit(3) initial unaligned dcl 3-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SM_ACCESS internal static bit(3) initial unaligned dcl 3-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SWITCH_LIST_VERSION_1 internal static char(8) initial unaligned dcl 1-48 S_ACCESS internal static bit(3) initial unaligned dcl 3-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 W_ACCESS internal static bit(3) initial unaligned dcl 3-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 alloc_switch_count automatic fixed bin(17,0) dcl 1-33 alloc_switch_name_count automatic fixed bin(17,0) dcl 1-33 delete_acl based structure level 1 dcl 2-58 delete_acl_array based structure array level 1 dcl 2-64 directory_acl based structure level 1 dcl 2-49 directory_acl_array based structure array level 1 dcl 2-55 error_table_$unsupported_operation external static fixed bin(35,0) dcl 91 general_delete_acl based structure level 1 dcl 2-30 segment_acl based structure level 1 dcl 2-40 segment_acl_array based structure array level 1 dcl 2-46 switch_list based structure level 1 dcl 1-37 switch_list_ptr automatic pointer dcl 1-33 NAMES DECLARED BY EXPLICIT CONTEXT. FORWARD 003251 constant entry internal dcl 458 ref 135 143 150 332 398 403 409 414 419 FORWARD_RETURNS 003237 constant label dcl 468 ref 465 LIST_FREE_RETURN 002050 constant label dcl 315 ref 305 MAKE_ENTRY 003240 constant entry internal dcl 451 ref 233 266 288 362 427 438 MAKE_ENTRY_ 003275 constant entry internal dcl 471 ref 456 463 add_acl_entries 001125 constant entry external dcl 192 chname_file 000564 constant entry external dcl 140 copy 000637 constant entry external dcl 147 delentry_file 000523 constant entry external dcl 132 delete_acl_entries 002061 constant entry external dcl 322 get_max_length 002625 constant entry external dcl 406 get_ring_brackets 002764 constant entry external dcl 422 get_switch 002512 constant entry external dcl 395 get_user_access_modes 003141 constant entry external dcl 443 list_acl 001421 constant entry external dcl 241 list_switches 002726 constant entry external dcl 416 replace_acl 002140 constant entry external dcl 339 set_max_length 002664 constant entry external dcl 411 set_ring_brackets 003050 constant entry external dcl 433 set_switch 002556 constant entry external dcl 400 suffix_info 000763 constant entry external dcl 164 suffix_mcacs_ 000511 constant entry external dcl 15 validate 000663 constant entry external dcl 154 NAMES DECLARED BY CONTEXT OR IMPLICATION. before builtin function ref 158 index builtin function ref 158 max builtin function ref 301 reverse builtin function ref 158 158 rtrim builtin function ref 158 string builtin function set ref 176 182* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4064 4120 3526 4074 Length 4516 3526 34 362 335 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME suffix_mcacs_ 258 external procedure is an external procedure. on unit on line 351 64 on unit MAKE_ENTRY internal procedure shares stack frame of external procedure suffix_mcacs_. MAKE_ENTRY_ internal procedure shares stack frame of external procedure suffix_mcacs_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME suffix_mcacs_ 000100 acl_error suffix_mcacs_ 000102 ex_acl_ptr suffix_mcacs_ 000104 user_area_ptr suffix_mcacs_ 000106 idx suffix_mcacs_ 000110 V_entry suffix_mcacs_ 000122 suffix_info_ptr suffix_mcacs_ 000124 acl_ptr suffix_mcacs_ 000126 acl_count suffix_mcacs_ 000127 three_rings suffix_mcacs_ 000170 code MAKE_ENTRY_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_var_desc call_ext_out_desc call_ext_out return bound_check_signal enable shorten_stack ext_entry ext_entry_desc int_entry reverse_cs set_cs_eis alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_list_ptr cu_$generate_call fs_util_$make_entry_for_type get_system_free_area_ get_user_free_area_ hcs_$get_user_access_modes sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$argerr error_table_$not_seg_type error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000510 132 000516 135 000546 136 000556 140 000557 143 000621 144 000632 147 000633 150 000647 151 000660 154 000661 157 000706 158 000711 161 000756 164 000760 167 000770 169 000774 173 001055 174 001061 175 001064 176 001067 177 001070 178 001072 179 001074 180 001077 181 001101 182 001103 183 001104 186 001114 188 001117 192 001120 195 001152 196 001155 198 001161 199 001164 202 001165 204 001171 205 001174 208 001175 209 001176 210 001210 211 001217 213 001225 214 001231 216 001233 217 001235 219 001237 220 001242 223 001243 224 001246 225 001266 226 001271 227 001301 228 001314 229 001315 230 001321 231 001322 233 001324 234 001326 236 001354 237 001405 238 001412 241 001413 244 001454 245 001457 247 001461 249 001464 251 001470 252 001473 255 001474 256 001476 258 001477 259 001517 260 001522 261 001531 263 001544 264 001546 266 001550 267 001552 268 001611 269 001621 270 001631 272 001633 273 001635 274 001643 278 001644 280 001655 281 001660 284 001661 285 001664 288 001677 289 001701 292 001745 295 001747 297 001753 298 001755 301 001756 302 001764 303 001775 304 001776 305 002001 308 002002 309 002005 310 002015 312 002030 313 002034 314 002046 315 002050 319 002056 322 002057 325 002106 326 002111 328 002115 329 002120 332 002121 339 002132 342 002165 344 002167 345 002172 347 002175 348 002200 351 002201 353 002215 355 002222 356 002230 358 002233 360 002234 362 002237 365 002241 367 002243 368 002245 369 002265 370 002270 371 002271 372 002325 373 002333 376 002334 377 002354 379 002357 380 002367 381 002402 382 002406 383 002407 385 002410 387 002412 389 002446 390 002477 392 002504 395 002505 398 002542 400 002553 403 002606 406 002617 409 002650 411 002661 414 002707 416 002720 419 002745 422 002756 427 003007 428 003011 429 003037 430 003042 431 003045 433 003046 436 003073 437 003076 438 003102 439 003104 440 003132 443 003133 446 003171 447 003173 448 003236 468 003237 451 003240 456 003242 457 003250 458 003251 463 003253 464 003262 465 003274 471 003275 479 003277 480 003332 483 003410 ----------------------------------------------------------- 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