COMPILATION LISTING OF SEGMENT fs_util_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/08/85 1017.9 mst Fri 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,indcomtxt,idind30 */ 10 11 12 /**** fs_util_ -- outer set of interfaces for typed object support. */ 13 14 fs_util_: 15 procedure; 16 17 /**** Jay Pattin 1/26/83 */ 18 /**** modified 1984.03.05 by M. Pandolf to fix get_bit_count parameter */ 19 /**** modified 1984.03.12 by M. Pandolf to initialize P_status correctly */ 20 /**** modified 1984.04.04 by M. Pandolf to fix GET_TYPE usage of parameters */ 21 22 declare P_acl_ptr ptr; 23 declare P_area_ptr ptr; 24 declare P_bit_count fixed bin (24); 25 declare P_copy_options_ptr ptr; 26 declare P_desired_version char (*); 27 declare P_directory char (*); 28 declare P_entryname char (*); 29 declare P_entrypoint_name char (*); 30 declare P_entry_to_call entry variable options (variable); 31 declare P_max_length fixed bin (19); 32 declare (P_modes, P_exmodes) bit (36) aligned; 33 declare P_new_name char (*); 34 declare P_no_sysdaemon bit (1); 35 declare P_old_name char (*); 36 declare P_ring fixed bin; 37 declare P_ring_brackets (*) fixed bin (3); 38 declare P_status fixed bin (35); 39 declare P_suffix_info_ptr ptr; 40 declare P_switch_list_ptr ptr; 41 declare P_switch_name char (*); 42 declare P_type char (*); 43 declare P_user_name char (*); 44 declare P_value bit (1) aligned; 45 46 declare entry_to_call entry variable options (variable); 47 declare idx fixed bin; 48 declare type char (32); 49 declare fixed_type fixed bin; 50 declare arg_list_ptr pointer; 51 declare user_area_ptr pointer; 52 53 declare cleanup condition; 54 55 declare cu_$arg_list_ptr entry () returns (ptr); 56 declare cu_$generate_call entry (entry, ptr); 57 declare sub_err_ entry options (variable); 58 59 declare get_user_free_area_ entry returns (pointer); 60 declare hcs_$make_entry entry (ptr, char (*), char (*), entry, fixed bin (35)); 61 declare pathname_ entry (char (*), char (*)) returns (char (168)); 62 63 declare error_table_$null_info_ptr fixed bin (35) ext static; 64 declare error_table_$unsupported_operation 65 fixed bin (35) ext static; 66 declare error_table_$unimplemented_version 67 fixed bin (35) ext static; 68 69 70 /**** * NOTE: operations that are defined to operate on links are 71* special-cased, to avoid chasing the link. At this time, 72* the only such operations are chname and delentry. */ 73 74 chname_file: 75 entry (P_directory, P_entryname, P_old_name, P_new_name, P_status); 76 77 arg_list_ptr = cu_$arg_list_ptr (); 78 call GO_NO_CHASE (FS_CHNAME_FILE); 79 80 delentry_file: 81 entry (P_directory, P_entryname, P_status); 82 83 arg_list_ptr = cu_$arg_list_ptr (); 84 call GO_NO_CHASE (FS_DELENTRY_FILE); 85 86 copy: 87 entry (P_copy_options_ptr, P_status); 88 89 arg_list_ptr = cu_$arg_list_ptr (); 90 call GO_DN_EN (FS_COPY, P_copy_options_ptr -> copy_options.source_dir, 91 P_copy_options_ptr -> copy_options.source_name); 92 93 get_max_length: 94 entry (P_directory, P_entryname, P_max_length, P_status); 95 96 arg_list_ptr = cu_$arg_list_ptr (); 97 call GO (FS_GET_MAX_LENGTH); 98 99 set_max_length: 100 entry (P_directory, P_entryname, P_max_length, P_status); 101 102 arg_list_ptr = cu_$arg_list_ptr (); 103 call GO (FS_SET_MAX_LENGTH); 104 105 get_bit_count: 106 entry (P_directory, P_entryname, P_bit_count, P_status); 107 108 arg_list_ptr = cu_$arg_list_ptr (); 109 call GO (FS_GET_BIT_COUNT); 110 111 set_bit_count: 112 entry (P_directory, P_entryname, P_bit_count, P_status); 113 114 arg_list_ptr = cu_$arg_list_ptr (); 115 call GO (FS_SET_BIT_COUNT); 116 117 get_user_access_modes: 118 entry (P_directory, P_entryname, P_user_name, P_ring, P_modes, P_exmodes, P_status); 119 120 arg_list_ptr = cu_$arg_list_ptr (); 121 call GO (FS_GET_USER_ACCESS_MODES); 122 123 124 get_ring_brackets: 125 entry (P_directory, P_entryname, P_ring_brackets, P_status); 126 127 arg_list_ptr = cu_$arg_list_ptr (); 128 call GO (FS_GET_RING_BRACKETS); 129 130 131 set_ring_brackets: 132 entry (P_directory, P_entryname, P_ring_brackets, P_status); 133 134 arg_list_ptr = cu_$arg_list_ptr (); 135 call GO (FS_SET_RING_BRACKETS); 136 137 get_switch: 138 entry (P_directory, P_entryname, P_switch_name, P_value, P_status); 139 140 arg_list_ptr = cu_$arg_list_ptr (); 141 call GO (FS_GET_SWITCH); 142 143 set_switch: 144 entry (P_directory, P_entryname, P_switch_name, P_value, P_status); 145 146 arg_list_ptr = cu_$arg_list_ptr (); 147 call GO (FS_SET_SWITCH); 148 149 150 add_acl_entries: 151 entry (P_directory, P_entryname, P_acl_ptr, P_status); 152 153 arg_list_ptr = cu_$arg_list_ptr (); 154 call GO (FS_ADD_ACL_ENTRIES); 155 156 add_extended_acl_entries: 157 entry (P_directory, P_entryname, P_acl_ptr, P_status); 158 159 arg_list_ptr = cu_$arg_list_ptr (); 160 call GO (FS_ADD_EXTENDED_ACL_ENTRIES); 161 162 delete_acl_entries: 163 entry (P_directory, P_entryname, P_acl_ptr, P_status); 164 165 arg_list_ptr = cu_$arg_list_ptr (); 166 call GO (FS_DELETE_ACL_ENTRIES); 167 168 list_acl: 169 entry (P_directory, P_entryname, P_desired_version, P_area_ptr, P_acl_ptr, P_status); 170 171 arg_list_ptr = cu_$arg_list_ptr (); 172 call GO (FS_LIST_ACL); 173 174 list_extended_acl: 175 entry (P_directory, P_entryname, P_desired_version, P_area_ptr, P_acl_ptr, P_status); 176 177 arg_list_ptr = cu_$arg_list_ptr (); 178 call GO (FS_LIST_EXTENDED_ACL); 179 180 replace_acl: 181 entry (P_directory, P_entryname, P_acl_ptr, P_no_sysdaemon, P_status); 182 183 arg_list_ptr = cu_$arg_list_ptr (); 184 call GO (FS_REPLACE_ACL); 185 186 replace_extended_acl: 187 entry (P_directory, P_entryname, P_acl_ptr, P_no_sysdaemon, P_status); 188 189 arg_list_ptr = cu_$arg_list_ptr (); 190 call GO (FS_REPLACE_EXTENDED_ACL); 191 192 193 suffix_info: 194 entry (P_directory, P_entryname, P_suffix_info_ptr, P_status); 195 196 if P_suffix_info_ptr = null () 197 then do; 198 P_status = error_table_$null_info_ptr; 199 return; 200 end; 201 if P_suffix_info_ptr -> suffix_info.version ^= SUFFIX_INFO_VERSION_1 202 then do; 203 204 P_status = error_table_$unimplemented_version; 205 return; 206 end; 207 208 P_status = 0; 209 call GET_TYPE_GET_ENTRY (FS_SUFFIX_INFO); 210 go to SUFFIX_INFO_COMMON; 211 212 suffix_info_for_type: 213 entry (P_type, P_suffix_info_ptr, P_status); 214 215 P_status = 0; 216 suffix_info_ptr = P_suffix_info_ptr; 217 if suffix_info.version ^= SUFFIX_INFO_VERSION_1 218 then do; 219 P_status = error_table_$unimplemented_version; 220 return; 221 end; 222 call GET_ENTRY_GIVEN_TYPE (P_type, FS_SUFFIX_INFO); 223 224 SUFFIX_INFO_COMMON: 225 call entry_to_call (P_suffix_info_ptr); 226 return; 227 228 229 230 list_switches: 231 entry (P_directory, P_entryname, P_desired_version, P_area_ptr, P_switch_list_ptr, P_status); 232 233 user_area_ptr = P_area_ptr; 234 if user_area_ptr = null () 235 then user_area_ptr = get_user_free_area_ (); 236 237 call GET_TYPE_GET_ENTRY (FS_LIST_SWITCHES); 238 go to LIST_SWITCHES_COMMON; 239 240 list_switches_for_type: 241 entry (P_type, P_desired_version, P_area_ptr, P_switch_list_ptr, P_status); 242 call GET_ENTRY_GIVEN_TYPE (P_type, FS_LIST_SWITCHES); 243 244 LIST_SWITCHES_COMMON: 245 call entry_to_call (P_desired_version, P_area_ptr, P_switch_list_ptr, P_status); 246 return; 247 248 249 250 make_entry: 251 entry (P_directory, P_entryname, P_entrypoint_name, P_entry_to_call, P_status); 252 253 P_status = 0; 254 call GET_TYPE_GET_ENTRY (P_entrypoint_name); 255 P_entry_to_call = entry_to_call; 256 return; 257 258 make_entry_for_type: 259 entry (P_type, P_entrypoint_name, P_entry_to_call, P_status); 260 261 P_status = 0; 262 call GET_ENTRY_GIVEN_TYPE (P_type, P_entrypoint_name); 263 P_entry_to_call = entry_to_call; 264 return; 265 266 get_type: 267 entry (P_directory, P_entryname, P_type, P_status); 268 269 P_status = 0; 270 P_type = ""; 271 call GET_TYPE (P_directory, P_entryname); 272 if P_status = 0 273 then P_type = type; 274 return; 275 276 277 278 GO: 279 procedure (operation); 280 281 declare operation char (*); 282 declare directory char (*) parameter; 283 declare entryname char (*) parameter; 284 285 call GET_TYPE (P_directory, P_entryname); /* get the type of the thing */ 286 go to GO_common; 287 288 GO_NO_CHASE: 289 entry (operation); 290 291 call GET_TYPE_NO_CHASE (P_directory, P_entryname); 292 go to GO_common; 293 294 GO_DN_EN: 295 entry (operation, directory, entryname); 296 297 call GET_TYPE (directory, entryname); 298 299 GO_common: 300 call GET_ENTRY (operation); /* find the entrypoint */ 301 call cu_$generate_call (entry_to_call, arg_list_ptr); 302 go to MAIN_RETURN; 303 304 end GO; 305 306 GET_TYPE_GET_ENTRY: 307 procedure (operation); 308 309 declare operation char (*); 310 311 call GET_TYPE (P_directory, P_entryname); 312 call GET_ENTRY (operation); 313 return; 314 end GET_TYPE_GET_ENTRY; 315 316 GET_ENTRY_GIVEN_TYPE: 317 procedure (a_type, operation); 318 319 declare (a_type, operation) char (*); 320 321 type = a_type; 322 call FIX_TYPE; 323 324 call GET_ENTRY (operation); 325 return; 326 end GET_ENTRY_GIVEN_TYPE; 327 328 GET_ENTRY: 329 procedure (operation); 330 331 declare operation char (*); 332 declare ox fixed bin; 333 declare reference_name char (32); 334 declare code fixed bin (35); 335 336 declare fs_standard_object_$make_entry 337 entry (fixed bin, fixed bin, fixed bin (35)) returns (entry); 338 339 if fixed_type > 0 /* this is a standard_object */ 340 then do; 341 do ox = 1 to HIGHEST_FS_OPERATION_INDEX; 342 if operation = FS_OPERATIONS (ox) 343 then go to HAVE_OPERATION; 344 if operation < FS_OPERATIONS (ox) 345 then go to ERROR_NO_OPERATION; 346 end; 347 ERROR_NO_OPERATION: 348 P_status = error_table_$unsupported_operation; 349 go to MAIN_RETURN; 350 351 HAVE_OPERATION: 352 entry_to_call = fs_standard_object_$make_entry (fixed_type, ox, P_status); 353 if P_status ^= 0 354 then go to MAIN_RETURN; 355 end; 356 357 else do; 358 reference_name = "suffix_" || rtrim (type) || "_"; 359 call hcs_$make_entry (codeptr (fs_util_), reference_name, operation, entry_to_call, code); 360 if code ^= 0 361 then do; 362 P_status = error_table_$unsupported_operation; 363 go to MAIN_RETURN; 364 end; 365 end; 366 367 return; 368 end GET_ENTRY; 369 370 /**** call fs_get_type_, translate type to fixed bin if appropriate */ 371 372 GET_TYPE: 373 procedure (directory, entryname); 374 375 declare (directory, entryname) char (*); 376 377 378 declare fs_get_type_ entry (char (*), char (*), char (*), fixed bin (35)); 379 declare fs_get_type_$no_chase entry (character (*), character (*), character (*), fixed binary (35)); 380 381 382 call fs_get_type_ (directory, entryname, type, P_status); 383 go to GET_TYPE_common; 384 385 GET_TYPE_NO_CHASE: 386 entry (directory, entryname); 387 388 call fs_get_type_$no_chase (directory, entryname, type, P_status); 389 GET_TYPE_common: 390 if P_status ^= 0 391 then go to MAIN_RETURN; 392 393 FIX_TYPE: 394 entry; 395 if substr (type, 1, 1) = "-" 396 then do; 397 do idx = 1 to HIGHEST_FS_STANDARD_TYPE_INDEX; 398 if type = FS_STANDARD_TYPES (idx) 399 then go to HAVE_STD_TYPE; 400 end; 401 call sub_err_ (0, "fs_util_", ACTION_CANT_RESTART, null (), (0), 402 "Unsupported reserved object type referenced: ""^a"".", type); 403 404 HAVE_STD_TYPE: 405 fixed_type = idx; 406 end; 407 else fixed_type = -1; /* Implies that this is not a std type */ 408 409 return; 410 411 end GET_TYPE; 412 413 MAIN_RETURN: 414 return; 415 1 1 /* BEGIN INCLUDE FILE: copy_options.incl.pl1 */ 1 2 1 3 /* This structure declares the input structure used by the copy_ subroutine. 1 4* 1 5* NOTE: This include file depends on declarations in the include file 1 6* copy_flags.incl.pl1. 1 7* 1 8* Jay Pattin 6/1/83 */ 1 9 1 10 declare copy_options_ptr ptr; 1 11 1 12 declare 1 copy_options aligned based (copy_options_ptr), 1 13 2 version char (8), /* currently COPY_OPTIONS_VERSION_1 */ 1 14 2 caller_name char (32) unal, /* Used in nd_handler_ call */ 1 15 2 source_dir char (168) unal, 1 16 2 source_name char (32) unal, 1 17 2 target_dir char (168) unal, 1 18 2 target_name char (32) unal, 1 19 2 flags, 1 20 3 no_name_dup bit (1) unaligned, /* ON = don't call nd_handler_ */ 1 21 3 raw bit (1) unaligned, /* ON = don't call object_type_, use hcs_ */ 1 22 3 force bit (1) unaligned, /* ON = delete or force access to target */ 1 23 3 delete bit (1) unaligned, /* ON = delete original after copy (for move) */ 1 24 3 target_err_switch bit (1) unaligned, 1 25 3 mbz bit (31) unaligned, 1 26 2 copy_items like copy_flags; /* see copy_flags.incl.pl1 */ 1 27 1 28 declare COPY_OPTIONS_VERSION_1 char (8) static options (constant) init ("CPOPT001"); 1 29 1 30 /* END INCLUDE FILE: copy_options.incl.pl1 */ 416 2 1 /* Begin include file file_system_operations_.incl.pl1 BIM 8309 */ 2 2 /* Modified 1984.12.17 MAP: change FS_STANDARD_TYPES (4) to -multisegment_file */ 2 3 /* format: style3,indcomtxt */ 2 4 2 5 /**** Names of the operations supported by the extended object 2 6* software (file_system_/object_type_). */ 2 7 2 8 /**** These MUST be in alphabetical order! 2 9* Changes here must force recompilation of users of the include file */ 2 10 2 11 declare FS_OPERATIONS (22) char (64) unaligned init ( 2 12 /** */ 2 13 "add_acl_entries", 2 14 "add_extended_acl_entries", 2 15 "chname_file", 2 16 "copy", 2 17 "delentry_file", 2 18 "delete_acl_entries", 2 19 "get_bit_count", 2 20 "get_max_length", 2 21 "get_ring_brackets", 2 22 "get_switch", 2 23 "get_user_access_modes", 2 24 "list_acl", 2 25 "list_extended_acl", 2 26 "list_switches", 2 27 "replace_acl", 2 28 "replace_extended_acl", 2 29 "set_bit_count", 2 30 "set_max_length", 2 31 "set_ring_brackets", 2 32 "set_switch", 2 33 "suffix_info", 2 34 "validate" /** */ 2 35 ) int static options (constant); 2 36 2 37 declare HIGHEST_FS_OPERATION_INDEX fixed bin init (22) int static options (constant); 2 38 2 39 declare FS_STANDARD_TYPES (5) char (32) int static options (constant) init ( 2 40 /** */ 2 41 "-directory", /** 1 */ 2 42 "-dm_file", /** 2 */ 2 43 "-link", /** 3 */ 2 44 "-multisegment_file", /** 4 */ 2 45 "-segment" /** 5 */ 2 46 ); 2 47 2 48 declare HIGHEST_FS_STANDARD_TYPE_INDEX fixed bin init (5) int static options (constant); 2 49 2 50 /* End include file file_system_operations_.incl.pl1 */ 417 3 1 /* Begin include file file_system_operations.incl.pl1 BIM 8309 */ 3 2 /* format: style3,indcomtxt,idind30 */ 3 3 3 4 /**** Operation names to be passed to fs_util_$make_entry */ 3 5 3 6 declare ( 3 7 FS_ADD_ACL_ENTRIES init ("add_acl_entries"), 3 8 FS_ADD_EXTENDED_ACL_ENTRIES init ("add_extended_acl_entries"), 3 9 FS_CHNAME_FILE init ("chname_file"), 3 10 FS_COPY init ("copy"), 3 11 FS_DELENTRY_FILE init ("delentry_file"), 3 12 FS_DELETE_ACL_ENTRIES init ("delete_acl_entries"), 3 13 FS_GET_BIT_COUNT init ("get_bit_count"), 3 14 FS_GET_MAX_LENGTH init ("get_max_length"), 3 15 FS_GET_RING_BRACKETS init ("get_ring_brackets"), 3 16 FS_GET_SWITCH init ("get_switch"), 3 17 FS_GET_USER_ACCESS_MODES init ("get_user_access_modes"), 3 18 FS_LIST_ACL init ("list_acl"), 3 19 FS_LIST_EXTENDED_ACL init ("list_extended_acl"), 3 20 FS_LIST_SWITCHES init ("list_switches"), 3 21 FS_REPLACE_ACL init ("replace_acl"), 3 22 FS_REPLACE_EXTENDED_ACL init ("replace_extended_acl"), 3 23 FS_SET_BIT_COUNT init ("set_bit_count"), 3 24 FS_SET_MAX_LENGTH init ("set_max_length"), 3 25 FS_SET_RING_BRACKETS init ("set_ring_brackets"), 3 26 FS_SET_SWITCH init ("set_switch"), 3 27 FS_SUFFIX_INFO init ("suffix_info"), 3 28 FS_VALIDATE init ("validate") 3 29 ) char (64) int static options (constant); 3 30 3 31 /* End include file file_system_operations.incl.pl1 */ 418 419 4 1 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 4 2 /* format: style3,indcomtxt,idind30 */ 4 3 /**** Jay Pattin 2/13/83 4 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 4 5* 4 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 4 7* 4 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 4 9 4 10 declare suffix_info_ptr ptr; 4 11 4 12 declare 1 suffix_info aligned based (suffix_info_ptr), 4 13 2 version char (8), 4 14 2 type char (32) unaligned, 4 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 4 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 4 17 2 flags unaligned, 4 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 4 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 4 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 4 21 3 mbz1 bit (33) unaligned, 4 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 4 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 4 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 4 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 4 26 2 info_pathname char (168) unaligned; 4 27 /* pathname of info segment containing more info */ 4 28 4 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 4 30 4 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 4 32 4 33 declare switch_list_ptr ptr, 4 34 alloc_switch_count fixed bin, 4 35 alloc_switch_name_count fixed bin; 4 36 4 37 declare 1 switch_list aligned based (switch_list_ptr), 4 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 4 39 2 switch_count fixed bin, /* total number of switches */ 4 40 2 switch_name_count fixed bin, /* total number of names */ 4 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 4 42 3 name_index fixed bin, /* index of first name for this switch */ 4 43 3 name_count fixed bin, /* number of names for this switch */ 4 44 3 default_value bit (1) aligned, /* default setting for this switch */ 4 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 4 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 4 47 4 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 4 49 4 50 declare ( 4 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 4 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 4 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 4 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 4 55 FS_OBJECT_TYPE_LINK init ("-link") 4 56 ) char (32) unaligned int static options (constant); 4 57 4 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 420 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 */ 421 6 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 6 2 /* format: style3 */ 6 3 6 4 /* These constants are to be used for the flags argument of sub_err_ */ 6 5 /* They are just "string (condition_info_header.action_flags)" */ 6 6 6 7 declare ( 6 8 ACTION_CAN_RESTART init (""b), 6 9 ACTION_CANT_RESTART init ("1"b), 6 10 ACTION_DEFAULT_RESTART 6 11 init ("01"b), 6 12 ACTION_QUIET_RESTART 6 13 init ("001"b), 6 14 ACTION_SUPPORT_SIGNAL 6 15 init ("0001"b) 6 16 ) bit (36) aligned internal static options (constant); 6 17 6 18 /* End include file */ 422 423 end fs_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/08/85 0946.1 fs_util_.pl1 >spec>on>maggie_fixes>fs_util_.pl1 416 1 10/14/83 1606.7 copy_options.incl.pl1 >ldd>include>copy_options.incl.pl1 417 2 03/05/85 1807.7 file_system_operations_.incl.pl1 >ldd>include>file_system_operations_.incl.pl1 418 3 10/14/83 1606.7 file_system_operations.incl.pl1 >ldd>include>file_system_operations.incl.pl1 420 4 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 421 5 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 422 6 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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 000000 constant bit(36) initial dcl 6-7 set ref 401* FS_ADD_ACL_ENTRIES 000504 constant char(64) initial unaligned dcl 3-6 set ref 154* FS_ADD_EXTENDED_ACL_ENTRIES 000464 constant char(64) initial unaligned dcl 3-6 set ref 160* FS_CHNAME_FILE 000444 constant char(64) initial unaligned dcl 3-6 set ref 78* FS_COPY 000424 constant char(64) initial unaligned dcl 3-6 set ref 90* FS_DELENTRY_FILE 000404 constant char(64) initial unaligned dcl 3-6 set ref 84* FS_DELETE_ACL_ENTRIES 000364 constant char(64) initial unaligned dcl 3-6 set ref 166* FS_GET_BIT_COUNT 000344 constant char(64) initial unaligned dcl 3-6 set ref 109* FS_GET_MAX_LENGTH 000324 constant char(64) initial unaligned dcl 3-6 set ref 97* FS_GET_RING_BRACKETS 000304 constant char(64) initial unaligned dcl 3-6 set ref 128* FS_GET_SWITCH 000264 constant char(64) initial unaligned dcl 3-6 set ref 141* FS_GET_USER_ACCESS_MODES 000244 constant char(64) initial unaligned dcl 3-6 set ref 121* FS_LIST_ACL 000224 constant char(64) initial unaligned dcl 3-6 set ref 172* FS_LIST_EXTENDED_ACL 000204 constant char(64) initial unaligned dcl 3-6 set ref 178* FS_LIST_SWITCHES 000164 constant char(64) initial unaligned dcl 3-6 set ref 237* 242* FS_OPERATIONS 000574 constant char(64) initial array unaligned dcl 2-11 ref 342 344 FS_REPLACE_ACL 000144 constant char(64) initial unaligned dcl 3-6 set ref 184* FS_REPLACE_EXTENDED_ACL 000124 constant char(64) initial unaligned dcl 3-6 set ref 190* FS_SET_BIT_COUNT 000104 constant char(64) initial unaligned dcl 3-6 set ref 115* FS_SET_MAX_LENGTH 000064 constant char(64) initial unaligned dcl 3-6 set ref 103* FS_SET_RING_BRACKETS 000044 constant char(64) initial unaligned dcl 3-6 set ref 135* FS_SET_SWITCH 000024 constant char(64) initial unaligned dcl 3-6 set ref 147* FS_STANDARD_TYPES 000524 constant char(32) initial array unaligned dcl 2-39 ref 398 FS_SUFFIX_INFO 000004 constant char(64) initial unaligned dcl 3-6 set ref 209* 222* HIGHEST_FS_OPERATION_INDEX constant fixed bin(17,0) initial dcl 2-37 ref 341 HIGHEST_FS_STANDARD_TYPE_INDEX constant fixed bin(17,0) initial dcl 2-48 ref 397 P_acl_ptr parameter pointer dcl 22 ref 150 156 162 168 174 180 186 P_area_ptr parameter pointer dcl 23 set ref 168 174 230 233 240 244* P_bit_count parameter fixed bin(24,0) dcl 24 ref 105 111 P_copy_options_ptr parameter pointer dcl 25 ref 86 90 90 P_desired_version parameter char unaligned dcl 26 set ref 168 174 230 240 244* P_directory parameter char unaligned dcl 27 set ref 74 80 93 99 105 111 117 124 131 137 143 150 156 162 168 174 180 186 193 230 250 266 271* 285* 291* 311* P_entry_to_call parameter entry variable dcl 30 set ref 250 255* 258 263* P_entryname parameter char unaligned dcl 28 set ref 74 80 93 99 105 111 117 124 131 137 143 150 156 162 168 174 180 186 193 230 250 266 271* 285* 291* 311* P_entrypoint_name parameter char unaligned dcl 29 set ref 250 254* 258 262* P_exmodes parameter bit(36) dcl 32 ref 117 P_max_length parameter fixed bin(19,0) dcl 31 ref 93 99 P_modes parameter bit(36) dcl 32 ref 117 P_new_name parameter char unaligned dcl 33 ref 74 P_no_sysdaemon parameter bit(1) unaligned dcl 34 ref 180 186 P_old_name parameter char unaligned dcl 35 ref 74 P_ring parameter fixed bin(17,0) dcl 36 ref 117 P_ring_brackets parameter fixed bin(3,0) array dcl 37 ref 124 131 P_status parameter fixed bin(35,0) dcl 38 set ref 74 80 86 93 99 105 111 117 124 131 137 143 150 156 162 168 174 180 186 193 198* 204* 208* 212 215* 219* 230 240 244* 250 253* 258 261* 266 269* 272 347* 351* 353 362* 382* 388* 389 P_suffix_info_ptr parameter pointer dcl 39 set ref 193 196 201 212 216 224* P_switch_list_ptr parameter pointer dcl 40 set ref 230 240 244* P_switch_name parameter char unaligned dcl 41 ref 137 143 P_type parameter char unaligned dcl 42 set ref 212 222* 240 242* 258 262* 266 270* 272* P_user_name parameter char unaligned dcl 43 ref 117 P_value parameter bit(1) dcl 44 ref 137 143 SUFFIX_INFO_VERSION_1 000002 constant char(8) initial unaligned dcl 4-29 ref 201 217 a_type parameter char unaligned dcl 319 ref 316 321 arg_list_ptr 000116 automatic pointer dcl 50 set ref 77* 83* 89* 96* 102* 108* 114* 120* 127* 134* 140* 146* 153* 159* 165* 171* 177* 183* 189* 301* code 000215 automatic fixed bin(35,0) dcl 334 set ref 359* 360 copy_flags based structure level 1 dcl 5-8 copy_options based structure level 1 dcl 1-12 cu_$arg_list_ptr 000010 constant entry external dcl 55 ref 77 83 89 96 102 108 114 120 127 134 140 146 153 159 165 171 177 183 189 cu_$generate_call 000012 constant entry external dcl 56 ref 301 directory parameter char unaligned dcl 375 in procedure "GET_TYPE" set ref 372 382* 385 388* directory parameter char unaligned dcl 282 in procedure "GO" set ref 294 297* entry_to_call 000100 automatic entry variable dcl 46 set ref 224 244 255 263 301* 351* 359* entryname parameter char unaligned dcl 283 in procedure "GO" set ref 294 297* entryname parameter char unaligned dcl 375 in procedure "GET_TYPE" set ref 372 382* 385 388* error_table_$null_info_ptr 000022 external static fixed bin(35,0) dcl 63 ref 198 error_table_$unimplemented_version 000026 external static fixed bin(35,0) dcl 66 ref 204 219 error_table_$unsupported_operation 000024 external static fixed bin(35,0) dcl 64 ref 347 362 fixed_type 000115 automatic fixed bin(17,0) dcl 49 set ref 339 351* 404* 407* fs_get_type_ 000032 constant entry external dcl 378 ref 382 fs_get_type_$no_chase 000034 constant entry external dcl 379 ref 388 fs_standard_object_$make_entry 000030 constant entry external dcl 336 ref 351 get_user_free_area_ 000016 constant entry external dcl 59 ref 234 hcs_$make_entry 000020 constant entry external dcl 60 ref 359 idx 000104 automatic fixed bin(17,0) dcl 47 set ref 397* 398* 404 operation parameter char unaligned dcl 319 in procedure "GET_ENTRY_GIVEN_TYPE" set ref 316 324* operation parameter char unaligned dcl 331 in procedure "GET_ENTRY" set ref 328 342 344 359* operation parameter char unaligned dcl 309 in procedure "GET_TYPE_GET_ENTRY" set ref 306 312* operation parameter char unaligned dcl 281 in procedure "GO" set ref 278 288 294 299* ox 000204 automatic fixed bin(17,0) dcl 332 set ref 341* 342 344* 351* reference_name 000205 automatic char(32) unaligned dcl 333 set ref 358* 359* source_dir 12 based char(168) level 2 packed unaligned dcl 1-12 set ref 90* source_name 64 based char(32) level 2 packed unaligned dcl 1-12 set ref 90* sub_err_ 000014 constant entry external dcl 57 ref 401 suffix_info based structure level 1 dcl 4-12 suffix_info_ptr 000122 automatic pointer dcl 4-10 set ref 216* 217 type 000105 automatic char(32) unaligned dcl 48 set ref 272 321* 358 382* 388* 395 398 401* user_area_ptr 000120 automatic pointer dcl 51 set ref 233* 234 234* version based char(8) level 2 dcl 4-12 ref 201 217 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 6-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 6-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 6-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 6-7 COPY_OPTIONS_VERSION_1 internal static char(8) initial unaligned dcl 1-28 FS_OBJECT_TYPE_DIRECTORY internal static char(32) initial unaligned dcl 4-50 FS_OBJECT_TYPE_DM_FILE internal static char(32) initial unaligned dcl 4-50 FS_OBJECT_TYPE_LINK internal static char(32) initial unaligned dcl 4-50 FS_OBJECT_TYPE_MSF internal static char(32) initial unaligned dcl 4-50 FS_OBJECT_TYPE_SEGMENT internal static char(32) initial unaligned dcl 4-50 FS_VALIDATE internal static char(64) initial unaligned dcl 3-6 SWITCH_LIST_VERSION_1 internal static char(8) initial unaligned dcl 4-48 alloc_switch_count automatic fixed bin(17,0) dcl 4-33 alloc_switch_name_count automatic fixed bin(17,0) dcl 4-33 cleanup 000000 stack reference condition dcl 53 copy_options_ptr automatic pointer dcl 1-10 pathname_ 000000 constant entry external dcl 61 switch_list based structure level 1 dcl 4-37 switch_list_ptr automatic pointer dcl 4-33 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_NO_OPERATION 003754 constant label dcl 347 ref 344 FIX_TYPE 004222 constant entry internal dcl 393 ref 322 GET_ENTRY 003715 constant entry internal dcl 328 ref 299 312 324 GET_ENTRY_GIVEN_TYPE 003655 constant entry internal dcl 316 ref 222 242 262 GET_TYPE 004104 constant entry internal dcl 372 ref 271 285 297 311 GET_TYPE_GET_ENTRY 003613 constant entry internal dcl 306 ref 209 237 254 GET_TYPE_NO_CHASE 004152 constant entry internal dcl 385 ref 291 GET_TYPE_common 004217 constant label dcl 389 ref 383 GO 003446 constant entry internal dcl 278 ref 97 103 109 115 121 128 135 141 147 154 160 166 172 178 184 190 GO_DN_EN 003526 constant entry internal dcl 294 ref 90 GO_NO_CHASE 003476 constant entry internal dcl 288 ref 78 84 GO_common 003567 constant label dcl 299 ref 286 292 HAVE_OPERATION 003760 constant label dcl 351 ref 342 HAVE_STD_TYPE 004320 constant label dcl 404 ref 398 LIST_SWITCHES_COMMON 003173 constant label dcl 244 ref 238 MAIN_RETURN 003445 constant label dcl 413 ref 302 349 353 363 389 SUFFIX_INFO_COMMON 003035 constant label dcl 224 ref 210 add_acl_entries 002305 constant entry external dcl 150 add_extended_acl_entries 002347 constant entry external dcl 156 chname_file 001421 constant entry external dcl 74 copy 001536 constant entry external dcl 86 delentry_file 001474 constant entry external dcl 80 delete_acl_entries 002411 constant entry external dcl 162 fs_util_ 001406 constant entry external dcl 14 ref 359 359 get_bit_count 001711 constant entry external dcl 105 get_max_length 001606 constant entry external dcl 93 get_ring_brackets 002065 constant entry external dcl 124 get_switch 002170 constant entry external dcl 137 get_type 003354 constant entry external dcl 266 get_user_access_modes 002015 constant entry external dcl 117 list_acl 002457 constant entry external dcl 168 list_extended_acl 002527 constant entry external dcl 174 list_switches 003050 constant entry external dcl 230 list_switches_for_type 003132 constant entry external dcl 240 make_entry 003224 constant entry external dcl 250 make_entry_for_type 003301 constant entry external dcl 258 replace_acl 002602 constant entry external dcl 180 replace_extended_acl 002644 constant entry external dcl 186 set_bit_count 001751 constant entry external dcl 111 set_max_length 001646 constant entry external dcl 99 set_ring_brackets 002125 constant entry external dcl 131 set_switch 002235 constant entry external dcl 143 suffix_info 002706 constant entry external dcl 193 suffix_info_for_type 002766 constant entry external dcl 212 NAMES DECLARED BY CONTEXT OR IMPLICATION. codeptr builtin function ref 359 359 null builtin function ref 196 234 401 401 rtrim builtin function ref 358 substr builtin function ref 395 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5164 5222 4517 5174 Length 5640 4517 36 401 444 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fs_util_ 330 external procedure is an external procedure. GO internal procedure shares stack frame of external procedure fs_util_. GET_TYPE_GET_ENTRY internal procedure shares stack frame of external procedure fs_util_. GET_ENTRY_GIVEN_TYPE internal procedure shares stack frame of external procedure fs_util_. GET_ENTRY internal procedure shares stack frame of external procedure fs_util_. GET_TYPE internal procedure shares stack frame of external procedure fs_util_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME fs_util_ 000100 entry_to_call fs_util_ 000104 idx fs_util_ 000105 type fs_util_ 000115 fixed_type fs_util_ 000116 arg_list_ptr fs_util_ 000120 user_area_ptr fs_util_ 000122 suffix_info_ptr fs_util_ 000204 ox GET_ENTRY 000205 reference_name GET_ENTRY 000215 code GET_ENTRY THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_var_desc call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_list_ptr cu_$generate_call fs_get_type_ fs_get_type_$no_chase fs_standard_object_$make_entry get_user_free_area_ hcs_$make_entry sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$null_info_ptr error_table_$unimplemented_version error_table_$unsupported_operation LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 001405 74 001413 77 001456 78 001464 80 001467 83 001517 84 001526 86 001531 89 001546 90 001555 93 001600 96 001631 97 001640 99 001643 102 001671 103 001700 105 001703 108 001734 109 001743 111 001746 114 001774 115 002003 117 002006 120 002045 121 002054 124 002057 127 002110 128 002117 131 002122 134 002150 135 002157 137 002162 140 002220 141 002227 143 002232 146 002265 147 002274 150 002277 153 002332 154 002341 156 002344 159 002374 160 002403 162 002406 165 002436 166 002445 168 002450 171 002512 172 002521 174 002524 177 002562 178 002571 180 002574 183 002627 184 002636 186 002641 189 002671 190 002700 193 002703 196 002733 198 002737 199 002742 201 002743 204 002751 205 002754 208 002755 209 002756 210 002761 212 002762 215 003005 216 003006 217 003011 219 003015 220 003020 222 003021 224 003035 226 003045 230 003046 233 003103 234 003106 237 003121 238 003124 240 003125 242 003157 244 003173 246 003216 250 003217 253 003255 254 003256 255 003266 256 003273 258 003274 261 003324 262 003325 263 003341 264 003346 266 003347 269 003403 270 003404 271 003414 272 003432 274 003444 413 003445 278 003446 285 003457 286 003475 288 003476 291 003507 292 003525 294 003526 297 003551 299 003567 301 003601 302 003612 306 003613 311 003624 312 003642 313 003654 316 003655 321 003673 322 003701 324 003702 325 003714 328 003715 339 003726 341 003730 342 003737 344 003751 346 003752 347 003754 349 003757 351 003760 353 003775 355 003777 358 004000 359 004037 360 004075 362 004077 363 004102 367 004103 372 004104 382 004122 383 004151 385 004152 388 004170 389 004217 393 004221 395 004223 397 004227 398 004237 400 004245 401 004247 404 004320 406 004322 407 004323 409 004325 ----------------------------------------------------------- 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