COMPILATION LISTING OF SEGMENT e_multics_files_util_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/20/86 2248.3 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1978 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * Copyright (c) 1972 by Massachusetts Institute of * 9* * Technology and Honeywell Information Systems, Inc. * 10* * * 11* *********************************************************** */ 12 13 /* Utility routines for manipulating Multics files from Emacs */ 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(79-07-28,Palter), approve(), audit(), 18* install(86-08-20,MR12.0-1136): 19* Initial coding. 20* 2) change(86-01-17,Margolin), approve(86-01-17,MCR7325), 21* audit(86-08-12,Harvey), install(86-08-20,MR12.0-1136): 22* Added force_msf_access, restore_msf_access, star_list_init, 23* nth_star_match, star_list_cleanup, get_dtcm, get_dtcm_file entrypoints. 24* Upgraded code in the force_access and restore_access entrypoints, to 25* establish proper cleanup handlers, use standard include file structures, 26* and to use named constants. Sorted the declarations. 27* END HISTORY COMMENTS */ 28 29 30 /* format: style2,ifthenstmt,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 31 32 e_multics_files_util_: 33 procedure (); 34 35 return; /* not an entry */ 36 37 /*** Parameter ***/ 38 39 dcl P_abs_pathname character (*) parameter; 40 dcl P_code fixed binary (35) parameter; 41 dcl P_component char (*) parameter; 42 dcl P_count fixed bin parameter; 43 dcl P_dir char (*) parameter; 44 dcl P_dtcm fixed bin (35) parameter; 45 dcl P_entry char (*) parameter; 46 dcl P_fcb_ptr ptr parameter; 47 dcl P_protect_info_ptr pointer parameter; 48 dcl P_seg_ptr pointer parameter; 49 dcl P_starname_info_ptr pointer parameter; 50 51 /*** Automatic ***/ 52 53 dcl code fixed bin (35); 54 dcl 1 dacl aligned like general_delete_acl_entry; 55 /* entry to delete */ 56 dcl dates_array (2) bit (36); 57 dcl dirname character (168); 58 dcl ename character (32); 59 dcl 1 new_acl aligned like general_extended_acl_entry; 60 /* entry to add/replace */ 61 dcl protect_info_ptr pointer; 62 dcl star_component bit (1) aligned; /* does the component name have "*" or "?" */ 63 dcl star_entry bit (1) aligned; /* does the entryname have "*" or "?" */ 64 dcl star_star_component bit (1) aligned; /* is the componentname "**" */ 65 dcl starname_index fixed bin; 66 dcl starname_info_max_entries 67 fixed bin; 68 dcl starname_info_ptr ptr; 69 dcl system_area_ptr pointer; 70 71 /*** Based ***/ 72 73 dcl 1 protect_info aligned based (protect_info_ptr), 74 /* remember how we forced access */ 75 2 dirname character (168) unaligned, 76 2 ename character (32) unaligned, 77 2 delete_the_acl bit (1), /* ON => we added ACL term */ 78 2 acl like general_extended_acl_entry; 79 dcl 1 protect_msf_info aligned based (protect_info_ptr), 80 /* remember how we forced access */ 81 2 delete_the_acl bit (1), /* ON => we added ACL term */ 82 2 acl like general_extended_acl_entry; 83 dcl 1 starname_info aligned based (starname_info_ptr), 84 2 header, 85 3 max_entries fixed bin, /* size of the array */ 86 3 n_entries fixed bin init (0), /* how many are used */ 87 2 names (starname_info_max_entries refer (starname_info.max_entries)), 88 3 (entry, component) 89 char (32) unaligned; 90 dcl system_area area based (system_area_ptr); 91 92 /*** Static ***/ 93 94 dcl ( 95 error_table_$argerr, 96 error_table_$nomatch, 97 error_table_$user_not_found 98 ) fixed binary (35) external static; 99 100 /*** Builtin ***/ 101 102 dcl (addr, binary, divide, null, unspec) 103 builtin; 104 105 /*** Condition ***/ 106 107 dcl cleanup condition; 108 109 /*** External Entry ***/ 110 111 dcl archive_$list_components 112 entry (ptr, fixed bin (24), fixed bin, ptr, ptr, fixed bin, fixed bin (35)); 113 dcl check_star_name_$entry 114 entry (char (*), fixed bin (35)); 115 dcl expand_pathname_ entry (character (*), character (*), character (*), fixed binary (35)); 116 dcl get_group_id_ entry () returns (character (32)); 117 dcl get_system_free_area_ entry () returns (pointer); 118 dcl hcs_$add_acl_entries entry (character (*), character (*), pointer, fixed binary, fixed binary (35)); 119 dcl hcs_$delete_acl_entries 120 entry (character (*), character (*), pointer, fixed binary, fixed binary (35)); 121 dcl hcs_$get_dates entry (char (*), char (*), (*) bit (36), fixed bin (35)); 122 dcl hcs_$get_dates_ptr entry (ptr, (*) bit (36), fixed bin (35)); 123 dcl hcs_$list_acl entry (character (*), character (*), pointer, pointer, pointer, fixed binary, 124 fixed binary (35)); 125 dcl hcs_$star_dir_list_ entry (char (*), char (*), fixed bin (3), ptr, fixed bin, fixed bin, ptr, ptr, 126 fixed bin (35)); 127 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 128 dcl initiate_file_$component 129 entry (char (*), char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)) 130 ; 131 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 132 dcl msf_manager_$acl_add entry (ptr, ptr, fixed bin, fixed bin (35)); 133 dcl msf_manager_$acl_delete 134 entry (ptr, ptr, fixed bin, fixed bin (35)); 135 dcl msf_manager_$acl_list entry (ptr, ptr, ptr, ptr, fixed bin, fixed bin (35)); 136 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 137 138 139 140 /* This entry forces read/write access to the specified file */ 141 142 force_access: 143 entry (P_abs_pathname, P_protect_info_ptr, P_code); 144 145 call expand_pathname_ (P_abs_pathname, dirname, ename, P_code); 146 if P_code ^= 0 then return; /* shouldn't happen */ 147 148 system_area_ptr = get_system_free_area_ (); 149 150 protect_info_ptr = null (); 151 on cleanup 152 begin; 153 if protect_info_ptr ^= null () then free protect_info; 154 end; 155 allocate protect_info in (system_area) set (protect_info_ptr); 156 157 protect_info.dirname = dirname; 158 protect_info.ename = ename; 159 160 protect_info.acl.access_name = get_group_id_ (); 161 162 call hcs_$list_acl (dirname, ename, null (), null (), addr (protect_info.acl), 1, P_code); 163 if P_code ^= 0 then do; /* couldn't list it */ 164 free protect_info in (system_area); 165 return; 166 end; 167 168 if protect_info.acl.status_code = error_table_$user_not_found then 169 protect_info.delete_the_acl = "1"b; /* must add the entry */ 170 else protect_info.delete_the_acl = "0"b; 171 172 new_acl.access_name = protect_info.acl.access_name; 173 new_acl.mode = RW_ACCESS; 174 new_acl.extended_mode = ""b; 175 176 on cleanup 177 begin; 178 if protect_info_ptr ^= null () then do; 179 call restore_access (protect_info_ptr); 180 free protect_info; 181 end; 182 end; 183 184 call hcs_$add_acl_entries (dirname, ename, addr (new_acl), 1, P_code); 185 186 if P_code ^= 0 then do; /* couldn't add it */ 187 free protect_info in (system_area); 188 P_protect_info_ptr = null (); 189 if P_code = error_table_$argerr then P_code = new_acl.status_code; 190 /* no true info here */ 191 end; 192 193 else do; /* success */ 194 P_protect_info_ptr = protect_info_ptr; 195 end; 196 197 return; 198 199 /* */ 200 201 /* This entry restores the access on a segment to its original state */ 202 203 restore_access: 204 entry (P_protect_info_ptr); 205 206 if P_protect_info_ptr = null () then return; 207 208 protect_info_ptr = P_protect_info_ptr; 209 P_protect_info_ptr = null (); 210 211 if protect_info.delete_the_acl then do; 212 dacl.access_name = protect_info.acl.access_name; 213 call hcs_$delete_acl_entries (protect_info.dirname, protect_info.ename, addr (dacl), 1, (0)); 214 end; 215 216 else call hcs_$add_acl_entries (protect_info.dirname, protect_info.ename, addr (protect_info.acl), 1, (0)); 217 218 system_area_ptr = get_system_free_area_ (); 219 220 free protect_info in (system_area); 221 222 return; 223 224 225 /* This entry forces read/write access to the specified MSF/SSF */ 226 227 force_msf_access: 228 entry (P_fcb_ptr, P_protect_info_ptr, P_code); 229 230 system_area_ptr = get_system_free_area_ (); 231 232 protect_info_ptr = null (); 233 on cleanup 234 begin; 235 if protect_info_ptr ^= null () then free protect_msf_info; 236 end; 237 allocate protect_msf_info in (system_area) set (protect_info_ptr); 238 239 protect_msf_info.acl.access_name = get_group_id_ (); 240 241 call msf_manager_$acl_list (P_fcb_ptr, null (), null (), addr (protect_msf_info.acl), 1, P_code); 242 if P_code ^= 0 then do; /* couldn't list it */ 243 free protect_msf_info in (system_area); 244 return; 245 end; 246 247 if protect_msf_info.acl.status_code = error_table_$user_not_found then 248 protect_msf_info.delete_the_acl = "1"b; /* must add the entry */ 249 else protect_msf_info.delete_the_acl = "0"b; 250 251 new_acl.access_name = protect_msf_info.acl.access_name; 252 new_acl.mode = RW_ACCESS; 253 new_acl.extended_mode = ""b; 254 255 on cleanup 256 begin; 257 if protect_info_ptr ^= null () then do; 258 call restore_msf_access (P_fcb_ptr, protect_info_ptr); 259 free protect_msf_info; 260 end; 261 end; 262 263 call msf_manager_$acl_add (P_fcb_ptr, addr (new_acl), 1, P_code); 264 265 if P_code ^= 0 then do; /* couldn't add it */ 266 free protect_msf_info in (system_area); 267 P_protect_info_ptr = null (); 268 if P_code = error_table_$argerr then P_code = new_acl.status_code; 269 /* no true info here */ 270 end; 271 272 else do; /* success */ 273 P_protect_info_ptr = protect_info_ptr; 274 end; 275 276 return; 277 278 279 280 /* This entry restores the access on an MSF to its original state */ 281 282 restore_msf_access: 283 entry (P_fcb_ptr, P_protect_info_ptr); 284 285 if P_fcb_ptr = null () then do; 286 if P_protect_info_ptr ^= null () then free P_protect_info_ptr -> protect_msf_info; 287 return; 288 end; 289 if P_protect_info_ptr = null () then return; 290 291 protect_info_ptr = P_protect_info_ptr; 292 P_protect_info_ptr = null (); 293 294 if protect_msf_info.delete_the_acl then do; 295 dacl.access_name = protect_msf_info.acl.access_name; 296 call msf_manager_$acl_delete (P_fcb_ptr, addr (dacl), 1, (0)); 297 end; 298 299 else call msf_manager_$acl_add (P_fcb_ptr, addr (protect_msf_info.acl), 1, (0)); 300 301 free protect_msf_info; 302 303 return; 304 305 306 star_list_init: 307 entry (P_dir, P_entry, P_component, P_starname_info_ptr, P_count, P_code); 308 309 P_code = 0; 310 P_count = 0; 311 P_starname_info_ptr = null (); 312 313 starname_info_ptr, star_list_branch_ptr, star_list_names_ptr = null (); 314 on cleanup 315 begin; 316 if starname_info_ptr ^= null then free starname_info; 317 if star_list_names_ptr ^= null then free star_list_names; 318 if star_list_branch_ptr ^= null then free star_dir_list_branch; 319 end; 320 321 code = 0; 322 call check_star_name_$entry (P_entry, code); 323 if code = 0 then star_entry = "0"b; 324 else if code > 2 then do; 325 P_code = code; 326 return; 327 end; 328 else star_entry = "1"b; 329 330 if P_component = "" then 331 star_component = "0"b; 332 else do; 333 call check_star_name_$entry (P_component, code); 334 if code = 0 then star_component = "0"b; 335 else if code > 2 then do; 336 P_code = code; 337 return; 338 end; 339 else do; 340 star_component = "1"b; 341 star_star_component = (code = 2); 342 end; 343 end; 344 345 system_area_ptr = get_system_free_area_ (); 346 347 if ^star_entry & ^star_component then do; /* simple, common case */ 348 starname_info_max_entries = 1; 349 allocate starname_info in (system_area); 350 starname_info.n_entries = 1; 351 starname_info.names (1).entry = P_entry; 352 starname_info.names (1).component = P_component; 353 P_starname_info_ptr = starname_info_ptr; 354 P_count = 1; 355 return; 356 end; 357 358 star_select_sw = star_BRANCHES_ONLY; 359 call hcs_$star_dir_list_ (P_dir, P_entry, star_select_sw, get_system_free_area_ (), star_branch_count, 360 star_link_count, star_list_branch_ptr, star_list_names_ptr, P_code); 361 if P_code ^= 0 then return; 362 363 if P_component = "" then 364 call star_list_files (); 365 else call star_list_archives (); 366 367 if P_code = 0 then do; 368 P_starname_info_ptr = starname_info_ptr; 369 P_count = starname_info.n_entries; 370 end; 371 else free starname_info; 372 373 free star_list_names; 374 free star_dir_list_branch; 375 376 return; 377 378 star_list_files: 379 proc (); 380 381 starname_info_max_entries = star_branch_count; 382 allocate starname_info in (system_area); 383 do starname_index = 1 to star_branch_count; 384 if star_dir_list_branch (starname_index).type = star_SEGMENT 385 | star_dir_list_branch (starname_index).bit_count > 1 /* MSF */ then do; 386 starname_info.n_entries = starname_info.n_entries + 1; 387 starname_info.names (starname_info.n_entries).entry = 388 star_list_names (star_dir_list_branch (starname_index).nindex); 389 starname_info.names (starname_info.n_entries).component = ""; 390 end; 391 end; 392 393 return; 394 395 star_list_archives: 396 entry (); 397 398 if star_component then /* just a guess, we'll grow it if necessary */ 399 if star_star_component then 400 starname_info_max_entries = 15 * star_branch_count; 401 else starname_info_max_entries = 5 * star_branch_count; 402 else starname_info_max_entries = star_branch_count; 403 /* maximum one per archive */ 404 allocate starname_info in (system_area); 405 do starname_index = 1 to star_branch_count; 406 if star_dir_list_branch (starname_index).type = star_SEGMENT /* no MSF archives */ then 407 call star_list_components (star_list_names (star_dir_list_branch (starname_index).nindex)); 408 end; 409 410 if starname_info.n_entries = 0 then P_code = error_table_$nomatch; 411 412 return; 413 414 star_list_components: 415 proc (archive_entry); 416 417 dcl archive_entry char (*) parameter; 418 419 dcl archive_bc fixed bin (24); 420 dcl 1 archive_component_info_array 421 (n_components) based (archive_component_info_array_ptr) aligned 422 like archive_component_info; 423 dcl archive_component_info_array_ptr 424 ptr; 425 dcl archive_ptr ptr; 426 dcl code fixed bin (35); 427 dcl component_index fixed bin; 428 dcl n_components fixed bin; 429 430 431 archive_component_info_array_ptr, archive_ptr = null (); 432 on cleanup 433 begin; 434 if archive_component_info_array_ptr ^= null () then free archive_component_info_array; 435 if archive_ptr ^= null () then call terminate_file_ (archive_ptr, 0, TERM_FILE_TERM, (0)); 436 end; 437 438 if star_component then do; /* foo*::bar* */ 439 call initiate_file_ (P_dir, archive_entry, R_ACCESS, archive_ptr, archive_bc, code); 440 if code ^= 0 then return; /* skip this one */ 441 call archive_$list_components (archive_ptr, archive_bc, ARCHIVE_COMPONENT_INFO_VERSION_1, system_area_ptr, 442 archive_component_info_array_ptr, n_components, code); 443 if code ^= 0 then go to star_list_components_EXIT; 444 445 if star_star_component then 446 do component_index = 1 to n_components; 447 call star_list_comp_add (archive_entry, archive_component_info_array (component_index).name); 448 end; 449 else do component_index = 1 to n_components; 450 call match_star_name_ (archive_component_info_array (component_index).name, P_component, code); 451 if code = 0 then 452 call star_list_comp_add (archive_entry, archive_component_info_array (component_index).name); 453 else code = 0; 454 end; 455 456 free archive_component_info_array; 457 end; 458 459 else do; /* foo*::bar */ 460 call initiate_file_$component (P_dir, archive_entry, P_component, R_ACCESS, archive_ptr, (0), code); 461 if code = 0 then call star_list_comp_add (archive_entry, P_component); 462 end; 463 464 465 star_list_components_EXIT: 466 call terminate_file_ (archive_ptr, 0, TERM_FILE_TERM, (0)); 467 468 return; 469 470 star_list_comp_add: 471 proc (entry, component); 472 473 dcl (component, entry) char (*) parameter; 474 475 if starname_info.n_entries = starname_info.max_entries then 476 begin; 477 dcl temp_ptr ptr init (null ()); 478 on cleanup 479 begin; 480 if temp_ptr ^= null () then free temp_ptr -> starname_info; 481 end; 482 starname_info_max_entries = starname_info.max_entries + 25; 483 allocate starname_info in (system_area) set (temp_ptr); 484 temp_ptr -> starname_info.header = starname_info.header; 485 temp_ptr -> starname_info.names = starname_info.names; 486 free starname_info; 487 starname_info_ptr = temp_ptr; 488 end; 489 490 starname_info.n_entries = starname_info.n_entries + 1; 491 starname_info.names (starname_info.n_entries).entry = entry; 492 starname_info.names (starname_info.n_entries).component = component; 493 return; 494 495 end star_list_comp_add; 496 497 end star_list_components; 498 499 end star_list_files; 500 501 nth_star_match: 502 entry (P_starname_info_ptr, P_count, P_entry, P_component); 503 504 starname_info_ptr = P_starname_info_ptr; 505 if P_count > starname_info.n_entries then do; 506 P_entry = ""; 507 P_component = ""; 508 end; 509 else do; 510 P_entry = starname_info.names (P_count).entry; 511 P_component = starname_info.names (P_count).component; 512 end; 513 514 return; 515 516 star_list_cleanup: 517 entry (P_starname_info_ptr); 518 519 if P_starname_info_ptr = null () then return; 520 521 starname_info_ptr = P_starname_info_ptr; 522 P_starname_info_ptr = null (); 523 free starname_info; 524 525 return; 526 527 get_dtcm: 528 entry (P_seg_ptr, P_dtcm, P_code); 529 530 call hcs_$get_dates_ptr (P_seg_ptr, dates_array, P_code); 531 go to get_dtcm_join; 532 533 get_dtcm_file: 534 entry (P_dir, P_entry, P_dtcm, P_code); 535 536 call hcs_$get_dates (P_dir, P_entry, dates_array, P_code); 537 538 get_dtcm_join: 539 if P_code = 0 then 540 unspec (P_dtcm) = dates_array (2); 541 else P_dtcm = 0; 542 543 return; 544 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 545 546 2 1 /* 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 */ 547 548 3 1 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 3 2 /* Structure describing an archive component, used by archive_ */ 3 3 3 4 dcl archive_component_info_ptr pointer; 3 5 3 6 dcl 1 archive_component_info aligned based (archive_component_info_ptr), 3 7 2 version fixed bin, 3 8 2 comp_bc fixed bin (24), 3 9 2 comp_ptr pointer, 3 10 2 name char (32) unaligned, 3 11 2 time_modified fixed bin (71), 3 12 2 time_updated fixed bin (71), 3 13 2 comp_lth fixed bin (19), 3 14 2 access bit (36) unaligned; 3 15 3 16 dcl ARCHIVE_COMPONENT_INFO_VERSION_1 fixed bin internal static options (constant) init (1); 3 17 3 18 /* BEGIN INCLUDE FILE ... archive_component_info.incl.pl1 ... WOS 01/13/81 */ 549 550 4 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 4 2 4 3 /* This include file contains structures for the hcs_$star_, 4 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 4 5* 4 6* Written 23 October 1978 by Monte Davidoff. 4 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 4 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 4 9**/ 4 10 4 11 /* automatic */ 4 12 4 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 4 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 4 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 4 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 4 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 4 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 4 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 4 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 4 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 4 22 4 23 /* based */ 4 24 4 25 /* hcs_$star_ entry structure */ 4 26 4 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 4 28 2 type fixed binary (2) unsigned unaligned, 4 29 /* storage system type */ 4 30 2 nnames fixed binary (16) unsigned unaligned, 4 31 /* number of names of entry that match star_name */ 4 32 2 nindex fixed binary (18) unsigned unaligned; 4 33 /* index of first name in star_names */ 4 34 4 35 /* hcs_$star_ name structure */ 4 36 4 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 4 38 4 39 /* hcs_$star_list_ branch structure */ 4 40 4 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 4 42 2 type fixed binary (2) unsigned unaligned, 4 43 /* storage system type */ 4 44 2 nnames fixed binary (16) unsigned unaligned, 4 45 /* number of names of entry that match star_name */ 4 46 2 nindex fixed binary (18) unsigned unaligned, 4 47 /* index of first name in star_list_names */ 4 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 4 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 4 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 4 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 4 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 4 53 2 pad bit (7) unaligned, 4 54 2 records fixed binary (18) unsigned unaligned; 4 55 /* records used by branch */ 4 56 4 57 /* hcs_$star_dir_list_ branch structure */ 4 58 4 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 4 60 2 type fixed binary (2) unsigned unaligned, 4 61 /* storage system type */ 4 62 2 nnames fixed binary (16) unsigned unaligned, 4 63 /* number of names of entry that match star_name */ 4 64 2 nindex fixed binary (18) unsigned unaligned, 4 65 /* index of first name in star_list_names */ 4 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 4 67 2 pad bit (36) unaligned, 4 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 4 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 4 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 4 71 2 bit_count fixed binary (24) unaligned; 4 72 /* bit count of the branch */ 4 73 4 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 4 75 4 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 4 77 2 type fixed binary (2) unsigned unaligned, 4 78 /* storage system type */ 4 79 2 nnames fixed binary (16) unsigned unaligned, 4 80 /* number of names of entry that match star_name */ 4 81 2 nindex fixed binary (18) unsigned unaligned, 4 82 /* index of first name in star_list_names */ 4 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 4 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 4 85 2 pathname_len fixed binary (18) unsigned unaligned, 4 86 /* length of the pathname of the link */ 4 87 2 pathname_index fixed binary (18) unsigned unaligned; 4 88 /* index of start of pathname in star_list_names */ 4 89 4 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 4 91 4 92 declare star_list_names char (32) based (star_list_names_ptr) 4 93 dimension (star_links (star_branch_count + star_link_count).nindex 4 94 + star_links (star_branch_count + star_link_count).nnames 4 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 4 96 * binary ( 4 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 4 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 4 99 4 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 4 101 4 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 4 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 4 104 4 105 /* internal static */ 4 106 4 107 /* star_select_sw values */ 4 108 4 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 4 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 4 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 4 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 4 113 fixed binary (3) internal static options (constant) initial (5); 4 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 4 115 fixed binary (3) internal static options (constant) initial (7); 4 116 4 117 /* storage system types */ 4 118 4 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 4 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 4 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 4 122 4 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 551 552 5 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 5 2 /* format: style2,^inddcls,idind32 */ 5 3 5 4 declare 1 terminate_file_switches based, 5 5 2 truncate bit (1) unaligned, 5 6 2 set_bc bit (1) unaligned, 5 7 2 terminate bit (1) unaligned, 5 8 2 force_write bit (1) unaligned, 5 9 2 delete bit (1) unaligned; 5 10 5 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 5 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 5 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 5 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 5 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 5 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 5 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 5 18 5 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 553 554 555 556 end e_multics_files_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/20/86 2248.3 e_multics_files_util_.pl1 >special_ldd>install>MR12.0-1136>e_multics_files_util_.pl1 545 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 547 2 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 549 3 04/16/81 0942.6 archive_component_info.incl.pl1 >ldd>include>archive_component_info.incl.pl1 551 4 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 553 5 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. ARCHIVE_COMPONENT_INFO_VERSION_1 000013 constant fixed bin(17,0) initial dcl 3-16 set ref 441* P_abs_pathname parameter char unaligned dcl 39 set ref 142 145* P_code parameter fixed bin(35,0) dcl 40 set ref 142 145* 146 162* 163 184* 186 189 189* 227 241* 242 263* 265 268 268* 306 309* 325* 336* 359* 361 367 410* 527 530* 533 536* 538 P_component parameter char unaligned dcl 41 set ref 306 330 333* 352 363 450* 460* 461* 501 507* 511* P_count parameter fixed bin(17,0) dcl 42 set ref 306 310* 354* 369* 501 505 510 511 P_dir parameter char unaligned dcl 43 set ref 306 359* 439* 460* 533 536* P_dtcm parameter fixed bin(35,0) dcl 44 set ref 527 533 538* 541* P_entry parameter char unaligned dcl 45 set ref 306 322* 351 359* 501 506* 510* 533 536* P_fcb_ptr parameter pointer dcl 46 set ref 227 241* 258* 263* 282 285 296* 299* P_protect_info_ptr parameter pointer dcl 47 set ref 142 188* 194* 203 206 208 209* 227 267* 273* 282 286 286 289 291 292* P_seg_ptr parameter pointer dcl 48 set ref 527 530* P_starname_info_ptr parameter pointer dcl 49 set ref 306 311* 353* 368* 501 504 516 519 521 522* RW_ACCESS constant bit(3) initial unaligned dcl 1-11 ref 173 252 R_ACCESS 000004 constant bit(3) initial unaligned dcl 1-11 set ref 439* 460* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 5-14 set ref 435* 465* access_name 1 based char(32) level 3 in structure "protect_msf_info" packed unaligned dcl 79 in procedure "e_multics_files_util_" set ref 239* 251 295 access_name 000101 automatic char(32) level 2 in structure "dacl" packed unaligned dcl 54 in procedure "e_multics_files_util_" set ref 212* 295* access_name 63 based char(32) level 3 in structure "protect_info" packed unaligned dcl 73 in procedure "e_multics_files_util_" set ref 160* 172 212 access_name 000176 automatic char(32) level 2 in structure "new_acl" packed unaligned dcl 59 in procedure "e_multics_files_util_" set ref 172* 251* acl 1 based structure level 2 in structure "protect_msf_info" dcl 79 in procedure "e_multics_files_util_" set ref 241 241 299 299 acl 63 based structure level 2 in structure "protect_info" dcl 73 in procedure "e_multics_files_util_" set ref 162 162 216 216 addr builtin function dcl 102 ref 162 162 184 184 213 213 216 216 241 241 263 263 296 296 299 299 archive_$list_components 000016 constant entry external dcl 111 ref 441 archive_bc 000100 automatic fixed bin(24,0) dcl 419 set ref 439* 441* archive_component_info based structure level 1 dcl 3-6 archive_component_info_array based structure array level 1 dcl 420 set ref 434 456 archive_component_info_array_ptr 000102 automatic pointer dcl 423 set ref 431* 434 434 441* 447 450 451 456 archive_entry parameter char unaligned dcl 417 set ref 414 439* 447* 451* 460* 461* archive_ptr 000104 automatic pointer dcl 425 set ref 431* 435 435* 439* 441* 460* 465* binary builtin function dcl 102 ref 317 373 bit_count 3(11) based fixed bin(24,0) array level 2 packed unaligned dcl 4-59 ref 384 check_star_name_$entry 000020 constant entry external dcl 113 ref 322 333 cleanup 000226 stack reference condition dcl 107 ref 151 176 233 255 314 432 478 code 000106 automatic fixed bin(35,0) dcl 426 in procedure "star_list_components" set ref 439* 440 441* 443 450* 451 453* 460* 461 code 000100 automatic fixed bin(35,0) dcl 53 in procedure "e_multics_files_util_" set ref 321* 322* 323 324 325 333* 334 335 336 341 component parameter char unaligned dcl 473 in procedure "star_list_comp_add" ref 470 492 component 12 based char(32) array level 3 in structure "starname_info" packed unaligned dcl 83 in procedure "e_multics_files_util_" set ref 352* 389* 492* 511 component_index 000107 automatic fixed bin(17,0) dcl 427 set ref 445* 447* 449* 450 451* dacl 000101 automatic structure level 1 dcl 54 set ref 213 213 296 296 dates_array 000112 automatic bit(36) array unaligned dcl 56 set ref 530* 536* 538 delete_acl_entry based structure level 1 dcl 2-63 delete_the_acl 62 based bit(1) level 2 in structure "protect_info" dcl 73 in procedure "e_multics_files_util_" set ref 168* 170* 211 delete_the_acl based bit(1) level 2 in structure "protect_msf_info" dcl 79 in procedure "e_multics_files_util_" set ref 247* 249* 294 directory_acl_entry based structure level 1 dcl 2-54 dirname based char(168) level 2 in structure "protect_info" packed unaligned dcl 73 in procedure "e_multics_files_util_" set ref 157* 213* 216* dirname 000114 automatic char(168) unaligned dcl 57 in procedure "e_multics_files_util_" set ref 145* 157 162* 184* divide builtin function dcl 102 ref 317 373 ename 52 based char(32) level 2 in structure "protect_info" packed unaligned dcl 73 in procedure "e_multics_files_util_" set ref 158* 213* 216* ename 000166 automatic char(32) unaligned dcl 58 in procedure "e_multics_files_util_" set ref 145* 158 162* 184* entry 2 based char(32) array level 3 in structure "starname_info" packed unaligned dcl 83 in procedure "e_multics_files_util_" set ref 351* 387* 491* 510 entry parameter char unaligned dcl 473 in procedure "star_list_comp_add" ref 470 491 error_table_$argerr 000010 external static fixed bin(35,0) dcl 94 ref 189 268 error_table_$nomatch 000012 external static fixed bin(35,0) dcl 94 ref 410 error_table_$user_not_found 000014 external static fixed bin(35,0) dcl 94 ref 168 247 expand_pathname_ 000022 constant entry external dcl 115 ref 145 extended_mode 11 000176 automatic bit(36) level 2 dcl 59 set ref 174* 253* 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_entry based structure level 1 dcl 2-23 get_group_id_ 000024 constant entry external dcl 116 ref 160 239 get_system_free_area_ 000026 constant entry external dcl 117 ref 148 218 230 345 359 359 hcs_$add_acl_entries 000030 constant entry external dcl 118 ref 184 216 hcs_$delete_acl_entries 000032 constant entry external dcl 119 ref 213 hcs_$get_dates 000034 constant entry external dcl 121 ref 536 hcs_$get_dates_ptr 000036 constant entry external dcl 122 ref 530 hcs_$list_acl 000040 constant entry external dcl 123 ref 162 hcs_$star_dir_list_ 000042 constant entry external dcl 125 ref 359 header based structure level 2 dcl 83 set ref 484* 484 initiate_file_ 000044 constant entry external dcl 127 ref 439 initiate_file_$component 000046 constant entry external dcl 128 ref 460 match_star_name_ 000050 constant entry external dcl 131 ref 450 max_entries based fixed bin(17,0) level 3 dcl 83 set ref 316 349* 371 382* 404* 475 480 482 483* 485 486 523 mode 10 000176 automatic bit(36) level 2 dcl 59 set ref 173* 252* msf_manager_$acl_add 000052 constant entry external dcl 132 ref 263 299 msf_manager_$acl_delete 000054 constant entry external dcl 133 ref 296 msf_manager_$acl_list 000056 constant entry external dcl 135 ref 241 n_components 000110 automatic fixed bin(17,0) dcl 428 set ref 434 441* 445 449 456 n_entries 1 based fixed bin(17,0) initial level 3 dcl 83 set ref 349* 350* 369 382* 386* 386 387 389 404* 410 475 483* 490* 490 491 492 505 name 4 based char(32) array level 2 packed unaligned dcl 420 set ref 447* 450* 451* names 2 based structure array level 2 dcl 83 set ref 485* 485 new_acl 000176 automatic structure level 1 dcl 59 set ref 184 184 263 263 nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 4-76 in procedure "e_multics_files_util_" ref 317 373 nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 4-59 in procedure "e_multics_files_util_" ref 387 406 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 4-76 ref 317 373 null builtin function dcl 102 ref 150 153 162 162 162 162 178 188 206 209 232 235 241 241 241 241 257 267 285 286 289 292 311 313 316 317 318 431 434 435 477 480 519 522 pathname_len 3 based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 4-76 ref 317 373 protect_info based structure level 1 dcl 73 set ref 153 155 164 180 187 220 protect_info_ptr 000212 automatic pointer dcl 61 set ref 150* 153 153 155* 157 158 160 162 162 164 168 168 170 172 178 179* 180 187 194 208* 211 212 213 213 216 216 216 216 220 232* 235 235 237* 239 241 241 243 247 247 249 251 257 258* 259 266 273 291* 294 295 299 299 301 protect_msf_info based structure level 1 dcl 79 set ref 235 237 243 259 266 286 301 segment_acl_entry based structure level 1 dcl 2-45 star_BRANCHES_ONLY constant fixed bin(2,0) initial dcl 4-110 ref 358 star_LINK constant fixed bin(2,0) initial unsigned dcl 4-119 ref 317 373 star_LINKS_ONLY_WITH_LINK_PATHS constant fixed bin(3,0) initial dcl 4-112 ref 317 373 star_SEGMENT constant fixed bin(2,0) initial unsigned dcl 4-120 ref 384 406 star_branch_count 000234 automatic fixed bin(17,0) dcl 4-13 set ref 317 317 317 317 318 359* 373 373 373 373 374 381 383 398 401 402 405 star_component 000214 automatic bit(1) dcl 62 set ref 330* 334* 340* 347 398 438 star_dir_list_branch based structure array level 1 dcl 4-59 ref 318 374 star_entry 000215 automatic bit(1) dcl 63 set ref 323* 328* 347 star_link_count 000240 automatic fixed bin(17,0) dcl 4-17 set ref 317 317 317 317 318 359* 373 373 373 373 374 star_links based structure array level 1 dcl 4-76 star_list_branch_ptr 000236 automatic pointer dcl 4-16 set ref 313* 317 317 317 317 318 318 359* 373 373 373 373 374 384 384 387 406 406 star_list_names based char(32) array unaligned dcl 4-92 set ref 317 373 387 406* star_list_names_ptr 000242 automatic pointer dcl 4-20 set ref 313* 317 317 359* 373 387 406 star_select_sw 000244 automatic fixed bin(3,0) dcl 4-21 set ref 317 358* 359* 373 star_star_component 000216 automatic bit(1) dcl 64 set ref 341* 398 445 starname_index 000217 automatic fixed bin(17,0) dcl 65 set ref 383* 384 384 387* 405* 406 406* starname_info based structure level 1 dcl 83 set ref 316 349 371 382 404 480 483 486 523 starname_info_max_entries 000220 automatic fixed bin(17,0) dcl 66 set ref 348* 349 349 381* 382 382 398* 401* 402* 404 404 482* 483 483 starname_info_ptr 000222 automatic pointer dcl 68 set ref 313* 316 316 349* 350 351 352 353 368 369 371 382* 386 386 387 387 389 389 404* 410 475 475 482 484 485 486 487* 490 490 491 491 492 492 504* 505 510 511 521* 523 status_code 75 based fixed bin(35,0) level 3 in structure "protect_info" dcl 73 in procedure "e_multics_files_util_" set ref 168 status_code 12 000176 automatic fixed bin(35,0) level 2 in structure "new_acl" dcl 59 in procedure "e_multics_files_util_" set ref 189 268 status_code 13 based fixed bin(35,0) level 3 in structure "protect_msf_info" dcl 79 in procedure "e_multics_files_util_" set ref 247 system_area based area(1024) dcl 90 ref 155 164 187 220 237 243 266 349 382 404 483 system_area_ptr 000224 automatic pointer dcl 69 set ref 148* 155 164 187 218* 220 230* 237 243 266 345* 349 382 404 441* 483 temp_ptr 000100 automatic pointer initial dcl 477 set ref 477* 480 480 483* 484 485 487 terminate_file_ 000060 constant entry external dcl 136 ref 435 465 type based fixed bin(2,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 4-59 in procedure "e_multics_files_util_" ref 384 406 type based fixed bin(2,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 4-76 in procedure "e_multics_files_util_" ref 317 373 unspec builtin function dcl 102 set ref 538* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 2-77 A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-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 1-33 DIR_ACL_VERSION_1 internal static char(4) initial unaligned dcl 2-67 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 GENERAL_ACL_VERSION_1 internal static char(8) initial unaligned dcl 2-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial unaligned dcl 2-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial unaligned dcl 2-72 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SEG_ACL_VERSION_1 internal static char(4) initial unaligned dcl 2-67 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 5-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 5-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 5-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 5-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 5-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 5-15 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 acl_count automatic fixed bin(17,0) dcl 2-5 acl_ptr automatic pointer dcl 2-4 archive_component_info_ptr automatic pointer dcl 3-4 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 general_acl based structure level 1 dcl 2-7 general_delete_acl based structure level 1 dcl 2-30 general_extended_acl based structure level 1 dcl 2-18 segment_acl based structure level 1 dcl 2-40 segment_acl_array based structure array level 1 dcl 2-46 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 4-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 4-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 4-121 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 4-109 star_entries based structure array level 1 dcl 4-27 star_entry_count automatic fixed bin(17,0) dcl 4-14 star_entry_ptr automatic pointer dcl 4-15 star_link_pathname based char unaligned dcl 4-102 star_linkx automatic fixed bin(17,0) dcl 4-18 star_list_branch based structure array level 1 dcl 4-41 star_names based char(32) array unaligned dcl 4-37 star_names_ptr automatic pointer dcl 4-19 terminate_file_switches based structure level 1 packed unaligned dcl 5-4 NAMES DECLARED BY EXPLICIT CONTEXT. e_multics_files_util_ 000025 constant entry external dcl 32 force_access 000037 constant entry external dcl 142 force_msf_access 000536 constant entry external dcl 227 get_dtcm 001773 constant entry external dcl 527 get_dtcm_file 002035 constant entry external dcl 533 get_dtcm_join 002110 constant label dcl 538 ref 531 nth_star_match 001634 constant entry external dcl 501 restore_access 000375 constant entry external dcl 203 ref 179 restore_msf_access 001003 constant entry external dcl 282 ref 258 star_list_archives 002207 constant entry internal dcl 395 ref 365 star_list_cleanup 001740 constant entry external dcl 516 star_list_comp_add 002757 constant entry internal dcl 470 ref 447 451 461 star_list_components 002307 constant entry internal dcl 414 ref 406 star_list_components_EXIT 002727 constant label dcl 465 ref 443 star_list_files 002117 constant entry internal dcl 378 ref 363 star_list_init 001123 constant entry external dcl 306 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3602 3664 3132 3612 Length 4250 3132 62 347 450 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME e_multics_files_util_ 298 external procedure is an external procedure. on unit on line 151 64 on unit on unit on line 176 68 on unit on unit on line 233 64 on unit on unit on line 255 70 on unit on unit on line 314 67 on unit star_list_files internal procedure shares stack frame of external procedure e_multics_files_util_. star_list_components 151 internal procedure enables or reverts conditions. on unit on line 432 84 on unit star_list_comp_add internal procedure shares stack frame of internal procedure star_list_components. begin block on line 475 73 begin block enables or reverts conditions. on unit on line 478 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 475 000100 temp_ptr begin block on line 475 e_multics_files_util_ 000100 code e_multics_files_util_ 000101 dacl e_multics_files_util_ 000112 dates_array e_multics_files_util_ 000114 dirname e_multics_files_util_ 000166 ename e_multics_files_util_ 000176 new_acl e_multics_files_util_ 000212 protect_info_ptr e_multics_files_util_ 000214 star_component e_multics_files_util_ 000215 star_entry e_multics_files_util_ 000216 star_star_component e_multics_files_util_ 000217 starname_index e_multics_files_util_ 000220 starname_info_max_entries e_multics_files_util_ 000222 starname_info_ptr e_multics_files_util_ 000224 system_area_ptr e_multics_files_util_ 000234 star_branch_count e_multics_files_util_ 000236 star_list_branch_ptr e_multics_files_util_ 000240 star_link_count e_multics_files_util_ 000242 star_list_names_ptr e_multics_files_util_ 000244 star_select_sw e_multics_files_util_ star_list_components 000100 archive_bc star_list_components 000102 archive_component_info_array_ptr star_list_components 000104 archive_ptr star_list_components 000106 code star_list_components 000107 component_index star_list_components 000110 n_components star_list_components THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ge_a enter_begin_block leave_begin_block call_ext_in call_ext_out_desc call_ext_out call_int_this_desc return_mac enable_op ext_entry ext_entry_desc int_entry int_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. archive_$list_components check_star_name_$entry expand_pathname_ get_group_id_ get_system_free_area_ hcs_$add_acl_entries hcs_$delete_acl_entries hcs_$get_dates hcs_$get_dates_ptr hcs_$list_acl hcs_$star_dir_list_ initiate_file_ initiate_file_$component match_star_name_ msf_manager_$acl_add msf_manager_$acl_delete msf_manager_$acl_list terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$argerr error_table_$nomatch error_table_$user_not_found LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 32 000024 35 000032 142 000033 145 000057 146 000106 148 000110 150 000117 151 000121 153 000135 154 000144 155 000145 157 000152 158 000155 160 000160 162 000167 163 000236 164 000240 165 000242 168 000243 170 000253 172 000254 173 000257 174 000261 176 000262 178 000276 179 000303 180 000311 182 000314 184 000315 186 000352 187 000354 188 000356 189 000360 191 000366 194 000367 197 000371 203 000372 206 000405 208 000411 209 000414 211 000416 212 000420 213 000423 214 000461 216 000462 218 000520 220 000527 222 000531 227 000532 230 000550 232 000557 233 000561 235 000575 236 000604 237 000605 239 000612 241 000621 242 000653 243 000655 244 000657 247 000660 249 000670 251 000671 252 000674 253 000676 255 000677 257 000713 258 000720 259 000731 261 000734 263 000735 265 000757 266 000761 267 000763 268 000765 270 000773 273 000774 276 000776 282 000777 285 001013 286 001020 287 001026 289 001027 291 001033 292 001036 294 001040 295 001042 296 001045 297 001067 299 001070 301 001112 303 001114 306 001115 309 001155 310 001156 311 001157 313 001161 314 001165 316 001201 317 001213 318 001260 319 001272 321 001273 322 001274 323 001311 324 001315 325 001317 326 001320 328 001321 330 001323 333 001337 334 001354 335 001360 336 001362 337 001363 340 001364 341 001366 345 001371 347 001400 348 001404 349 001406 350 001420 351 001422 352 001432 353 001442 354 001443 355 001445 358 001446 359 001450 361 001527 363 001531 365 001544 367 001545 368 001547 369 001551 370 001553 371 001554 373 001561 374 001621 376 001626 501 001627 504 001657 505 001662 506 001665 507 001675 508 001705 510 001706 511 001723 514 001735 516 001736 519 001750 521 001754 522 001757 523 001761 525 001766 527 001767 530 002005 531 002027 533 002030 536 002061 538 002110 541 002115 543 002116 378 002117 381 002120 382 002122 383 002134 384 002143 386 002160 387 002162 389 002200 391 002204 393 002206 395 002207 398 002210 401 002220 402 002224 404 002226 405 002240 406 002247 408 002275 410 002277 412 002305 414 002306 431 002322 432 002325 434 002341 435 002352 436 002406 438 002407 439 002412 440 002453 441 002455 443 002501 445 002503 447 002515 448 002540 449 002543 450 002553 451 002602 453 002630 454 002631 456 002633 457 002637 460 002640 461 002706 465 002727 468 002756 470 002757 475 002775 477 003005 478 003007 480 003023 481 003035 482 003036 483 003043 484 003061 485 003066 486 003075 487 003101 488 003105 490 003106 491 003111 492 003122 493 003131 ----------------------------------------------------------- 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