COMPILATION LISTING OF SEGMENT rcprm_registry_mgr_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0937.1 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 14 rcprm_registry_mgr_: 15 proc; 16 return; 17 18 /* This module implements registry management functions of creation and 19* replacement of registry header, for RCP resource management. 20* Written 05/10/78 by C. D. Tavares */ 21 /* Modified 11/21/79 by CDT to fix bug in comparing headers during update. */ 22 /* Modified 12/10/79 by CDT to take advantage of new facility to sleep in ring 23* 1 */ 24 /* Modified 10/03/80 by CDT to fix bug where copy_registry always tried 25* to lock rcp.tcf in source dir even if there wasn't one, to check whether the 26* source and target registries of the copy were the same file, to improve 27* error messages reflected back to ring 4, and to change journal dir's ring 28* brackets to 1,7. */ 29 /* Modified 04/83 by B. Braun to cleanup iocbs left laying about. (TR phx11736) */ 30 /* Modified 12/84 by Keith Loepere for version 2 create_branch_info. */ 31 /* Modified 02/12/85 by Maria Pozzo copy_registry: to create a null 32* component(s) in the new registry when a component(s) is missing in 33* the original. Returns a warning message to the user. */ 34 /* Modified 02/14/85 by Chris Jones for RCP auditing and to clean up better. */ 35 36 dcl p_registry_dir char (*) parameter; 37 dcl p_registry_entry char (*) parameter; 38 dcl p_rtdep ptr; 39 dcl p_code fixed bin (35) parameter; 40 41 /* entries */ 42 43 dcl cu_$level_get entry (fixed bin); 44 dcl cu_$level_set entry (fixed bin); 45 dcl get_group_id_ entry () returns (char (32)); 46 dcl get_process_authorization_ 47 entry () returns (bit (72) aligned); 48 dcl get_ring_ entry () returns (fixed bin (3)); 49 dcl hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), 50 fixed bin (1), fixed bin (24), fixed bin (35)); 51 dcl hcs_$create_branch_ entry (char (*), char (*), ptr, fixed bin (35)); 52 dcl hcs_$set_dir_ring_brackets 53 entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 54 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 55 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 56 dcl rcprm_registry_util_$create_transaction_control_file 57 entry (char (*), fixed bin (35)); 58 dcl rcprm_registry_util_$grab_registry 59 entry (ptr, char (*), char (*), fixed bin (35)); 60 dcl rcprm_registry_util_$grab_registry_create 61 entry (ptr, char (*), char (*), fixed bin (35)); 62 dcl rcprm_registry_util_$grab_registry_old 63 entry (ptr, char (*), char (*), fixed bin (35)); 64 dcl rcprm_registry_util_$grab_registry_no_journalize 65 entry (ptr, char (*), char (*), fixed bin (35)); 66 dcl rcprm_registry_util_$grab_transaction_control_file 67 entry (ptr, char (*), fixed bin (35)); 68 dcl rcprm_registry_util_$release_registry 69 entry (ptr, fixed bin (35)); 70 dcl rcprm_registry_util_$release_transaction_control_file 71 entry (ptr, fixed bin (35)); 72 dcl suffixed_name_$make entry (char (*), char (*), char (32), fixed bin (35)); 73 74 /* automatic */ 75 76 dcl 1 cbi like create_branch_info aligned; 77 dcl code fixed bin (35); 78 dcl cur_level fixed bin; 79 dcl dir_rbs (2) fixed bin (3); 80 dcl error_msg char (256); 81 dcl i fixed bin; 82 dcl ME char (64); 83 dcl operation bit (36) aligned; 84 dcl prev_level fixed bin initial (-1); 85 dcl record_len fixed bin (21); 86 dcl registry_dir char (168); 87 dcl registry_name char (32); 88 dcl (switch_ptr, tcf_switch_ptr) 89 pointer initial (null); 90 91 /* internal static and constants */ 92 93 dcl ( 94 Create initial (0), 95 Locate initial (1) 96 ) fixed bin static options (constant); 97 98 dcl ALL_USERS char (5) static options (constant) init ("*.*.*"); 99 dcl JOURNALS_DIR_ENTRYNAME char (8) static options (constant) init ("journals"); 100 dcl REGISTRY_SUFFIX char (4) static options (constant) init ("rcpr"); 101 dcl REGISTRY_OLD_SUFFIX char (3) static options (constant) init ("old"); 102 dcl RING_7_BRACKETS (3) fixed bin (3) static options (constant) init (7, 7, 7); 103 104 /* external static */ 105 106 dcl access_operations_$rcp_copy_registry 107 bit (36) aligned ext static; 108 dcl access_operations_$rcp_delete_registry 109 bit (36) aligned ext static; 110 dcl access_operations_$rcp_update_registry_header 111 bit (36) aligned ext static; 112 113 dcl ( 114 error_table_$namedup, 115 error_table_$improper_data_format, 116 error_table_$no_record, 117 error_table_$noentry, 118 error_table_$rcp_missing_registry_component 119 ) external fixed bin (35) static; 120 121 dcl sys_info$access_class_ceiling 122 bit (72) aligned ext static; 123 124 /* builtins, etc. */ 125 126 dcl (addr, char, currentsize, length, ltrim, null, unspec) 127 builtin; 128 129 dcl cleanup condition; 130 131 create_registry: 132 entry (p_registry_dir, p_rtdep, p_code); 133 134 registry_dir = p_registry_dir; 135 rtdep = p_rtdep; 136 call cu_$level_get (prev_level); 137 138 on cleanup call clean_up; 139 140 cur_level = get_ring_ (); 141 call cu_$level_set (cur_level); 142 143 operation = ""b; /* no special operation */ 144 ME = "rcprm_registry_mgr_$create_registry"; 145 146 call suffixed_name_$make ((rtde.name), REGISTRY_SUFFIX, registry_name, code); 147 if code ^= 0 then 148 goto error_return; 149 150 151 /* First, check to see that we are really creating a previously nonexistant registry. */ 152 153 call hcs_$status_minf (registry_dir, registry_name, 0 /* no chase */, 0, 0, code); 154 call revise_error (error_table_$noentry, error_table_$namedup); 155 /* accept noentry as OK, reject 0 as namedup */ 156 if code ^= 0 then 157 goto error_return; 158 159 /* Before creating the registry, try creating the transaction control file in 160* case there isn't one yet. */ 161 162 call rcprm_registry_util_$create_transaction_control_file (registry_dir, code); 163 call revise_error (error_table_$namedup, 0); 164 if code ^= 0 then 165 goto error_return; 166 167 /* See if we should create a new journal dir. */ 168 169 call hcs_$append_branchx (registry_dir, JOURNALS_DIR_ENTRYNAME, SMA_ACCESS_BIN, RING_7_BRACKETS, ALL_USERS, 170 1 /* dir */, 0, 0, code); 171 if code = error_table_$namedup then 172 code = 0; 173 else if code ^= 0 then 174 goto error_return; 175 else do; 176 dir_rbs (1) = cur_level; 177 dir_rbs (2) = 7; 178 call hcs_$set_dir_ring_brackets (registry_dir, JOURNALS_DIR_ENTRYNAME, dir_rbs, code); 179 if code ^= 0 then 180 goto error_return; 181 end; 182 183 184 /* Now we create an SSF to serve as the registry. Although the registry will 185* immediately become an MSF (a record file), we want to set certain attributes 186* of it, like multiclass AIM attributes, so that the file will perform 187* properly. Then we just rely on msf_manager_ and make_msf_ to correctly 188* propagate these attributes when it becomes an MSF (and when new components 189* are dynamically added. */ 190 191 call fillin_cbi; 192 call hcs_$create_branch_ (registry_dir, registry_name, addr (cbi), code); 193 if code ^= 0 then 194 goto error_return; 195 196 /* Now, prepare we to transmogrify yon beeste into an MSF. */ 197 198 call rcprm_registry_util_$grab_registry_create (switch_ptr, registry_dir, registry_name, code); 199 if code ^= 0 then 200 goto error_return; 201 202 call write_header (Create); 203 204 /* Now add the necessary keys to the registry. */ 205 206 call add_key (REGISTRY_SYSTEM_KEY, "system"); 207 call add_key (REGISTRY_FREE_KEY, "free"); 208 209 good_return: 210 call clean_up; 211 call audit_success; 212 p_code = 0; 213 return; 214 215 error_return: 216 call clean_up; 217 call audit_failure; 218 p_code = code; 219 return; 220 221 write_header: 222 proc (action); 223 224 dcl action fixed bin parameter; 225 226 dcl 1 auto_header aligned automatic, 227 2 rtde_size fixed bin (18), 228 2 rtde_template (currentsize (rtde)) bit (36) aligned, 229 2 other like registry_header.other aligned; 230 231 unspec (auto_header.rtde_template) = unspec (rtde); 232 unspec (auto_header.other) = ""b; 233 auto_header.rtde_size = currentsize (rtde); 234 235 call iox_$seek_key (switch_ptr, (REGISTRY_HEADER_KEY), 0, code); 236 if action = Create then 237 call revise_error (error_table_$no_record, error_table_$namedup); 238 if code ^= 0 then 239 goto error_return; 240 241 if action = Create then 242 call iox_$write_record (switch_ptr, addr (auto_header), currentsize (auto_header) * 4, code); 243 else call iox_$rewrite_record (switch_ptr, addr (auto_header), currentsize (auto_header) * 4, code); 244 if code ^= 0 then 245 goto error_return; 246 247 return; 248 249 compare_header: 250 entry; 251 252 unspec (auto_header) = ""b; 253 254 call iox_$seek_key (switch_ptr, (REGISTRY_HEADER_KEY), record_len, code); 255 if code ^= 0 then 256 goto error_return; 257 258 if record_len > currentsize (auto_header) * 4 then 259 goto not_format; 260 261 call iox_$read_record (switch_ptr, addr (auto_header), record_len, 0, code); 262 if code ^= 0 then 263 goto error_return; 264 265 if unspec (auto_header.rtde_template) ^= unspec (rtde) then 266 goto not_format; 267 268 end write_header; 269 270 not_format: 271 code = error_table_$improper_data_format; 272 goto error_return; 273 274 revise_error: 275 proc (ok_code, zero_becomes_code); 276 277 dcl (ok_code, zero_becomes_code) 278 fixed bin (35) parameter; 279 280 if code = ok_code then 281 code = 0; 282 else if code = 0 then 283 code = zero_becomes_code; 284 285 end revise_error; 286 287 add_key: 288 proc (key, string_arg); 289 290 dcl key char (*) varying parameter; 291 dcl string_arg char (*) parameter; 292 293 call iox_$seek_key (switch_ptr, rtrim (key), 0, code); 294 call revise_error (error_table_$no_record, error_table_$namedup); 295 if code ^= 0 then 296 goto error_return; 297 298 call iox_$write_record (switch_ptr, addr (string_arg), length (string_arg), code); 299 if code ^= 0 then 300 goto error_return; 301 302 end add_key; 303 304 update_registry_header: 305 entry (p_registry_dir, p_rtdep, p_code); 306 307 /* This entry updates the header record in the registry with a new RTDE. */ 308 309 dcl mylocked bit (1) aligned; 310 311 mylocked = ""b; 312 goto update_header_common; 313 314 update_registry_header_mylock: 315 entry (p_registry_dir, p_rtdep, p_code); 316 317 mylocked = "1"b; 318 319 update_header_common: 320 registry_dir = p_registry_dir; 321 rtdep = p_rtdep; 322 call cu_$level_get (prev_level); 323 324 325 on cleanup call clean_up; 326 327 operation = access_operations_$rcp_update_registry_header; 328 ME = "rcprm_registry_mgr_$update_registry_header"; 329 330 call suffixed_name_$make ((rtde.name), REGISTRY_SUFFIX, registry_name, code); 331 if code ^= 0 then 332 goto error_return; 333 call cu_$level_set (get_ring_ ()); 334 335 if ^mylocked then do; 336 call rcprm_registry_util_$grab_transaction_control_file (tcf_switch_ptr, registry_dir, code); 337 if code ^= 0 then 338 goto error_return; 339 end; 340 341 call rcprm_registry_util_$grab_registry_no_journalize (switch_ptr, registry_dir, registry_name, code); 342 if code ^= 0 then 343 goto error_return; 344 345 call iox_$seek_key (switch_ptr, (REGISTRY_HEADER_KEY), record_len, code); 346 if code ^= 0 then 347 goto not_format; 348 349 begin; 350 351 /* Read the current header and make sure that the position of all currently 352* known attributes is preserved. Later on we might write a procedure to 353* reformat all records to free up attribute positions, but for now it is 354* an error of the worst kind. */ 355 356 dcl record_buffer char (record_len) aligned; 357 dcl rbp ptr; 358 dcl rtde_copyp ptr; 359 360 rbp = addr (record_buffer); 361 362 call iox_$read_record (switch_ptr, rbp, record_len, 0, code); 363 if code ^= 0 then 364 goto error_return; 365 366 rtde_copyp = addr (rbp -> registry_header.rtde_copy); 367 368 if rtde_copyp -> rtde.n_defined_attributes > rtdep -> rtde.n_defined_attributes then 369 goto not_format; 370 371 do i = 1 to rtde_copyp -> rtde.n_defined_attributes; 372 if rtde_copyp -> rtde.attribute_names (i) ^= rtdep -> rtde.attribute_names (i) then 373 goto not_format; 374 end; 375 end; 376 377 call write_header (Locate); 378 379 goto good_return; 380 381 validate_registry: 382 entry (p_registry_dir, p_rtdep, p_code); 383 384 /* This entry checks to make sure that the RTDE in the RTDT agrees with the 385* RTDE in the registry. If they are different (could happen in the case of a 386* partial reload or other calamity) RCP would otherwise be mighty confused. */ 387 388 registry_dir = p_registry_dir; 389 rtdep = p_rtdep; 390 call cu_$level_get (prev_level); 391 operation = ""b; 392 ME = "rcprm_registry_mgr_$validate_registry"; 393 394 call suffixed_name_$make ((rtde.name), REGISTRY_SUFFIX, registry_name, code); 395 if code ^= 0 then 396 goto error_return; 397 on cleanup call clean_up; 398 399 call rcprm_registry_util_$grab_registry (switch_ptr, registry_dir, registry_name, code); 400 if code ^= 0 then 401 goto error_return; 402 403 call compare_header; 404 405 call rcprm_registry_util_$release_registry (switch_ptr, code); 406 if code ^= 0 then 407 goto error_return; 408 409 goto good_return; 410 411 delete_registry: 412 entry (p_registry_dir, p_registry_entry, p_code); 413 414 /* automatic */ 415 416 dcl cur_ring fixed bin; 417 418 /* entries */ 419 420 dcl hcs_$get_dir_ring_brackets 421 entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 422 dcl admin_gate_$syserr entry () options (variable); 423 dcl delete_$path entry (char (*), char (*), bit (36) aligned, char (*), fixed bin (35)); 424 425 /* external static */ 426 427 dcl error_table_$not_seg_type 428 ext fixed bin (35); 429 430 registry_dir = p_registry_dir; 431 call cu_$level_get (prev_level); 432 433 on cleanup call clean_up; 434 435 cur_ring = get_ring_ (); 436 call cu_$level_set (cur_ring); 437 438 operation = access_operations_$rcp_delete_registry; 439 ME = "rcprm_registry_mgr_$delete_registry"; 440 441 call suffixed_name_$make (p_registry_entry, REGISTRY_OLD_SUFFIX, registry_name, code); 442 if code ^= 0 then 443 goto error_return; 444 445 call hcs_$get_dir_ring_brackets (registry_dir, registry_name, dir_rbs, code); 446 if code ^= 0 then 447 goto error_return; 448 449 if (dir_rbs (1) ^= cur_ring) | (dir_rbs (2) ^= cur_ring) then do; 450 code = error_table_$not_seg_type; 451 goto error_return; 452 end; 453 454 call rcprm_registry_util_$grab_registry_old (switch_ptr, registry_dir, registry_name, code); 455 if code ^= 0 then 456 goto error_return; 457 458 call iox_$seek_key (switch_ptr, (REGISTRY_HEADER_KEY), 0, code); 459 if code ^= 0 then /* this may not be a registry, or it */ 460 call admin_gate_$syserr (BEEP, /* may just be a screwed-up registry */ 461 "rcprm_registry_mgr_$delete_registry: Deleting (possibly bogus) registry ^a for ^a.", 462 pathname_ (registry_dir, registry_name), get_group_id_ ()); 463 /* so be a suspicious bugger */ 464 465 call rcprm_registry_util_$release_registry (switch_ptr, code); 466 if code ^= 0 then 467 goto error_return; 468 469 call delete_$path (registry_dir, registry_name, "101100"b /* force, brief, dir or seg, no chase */, 470 "rcprm_registry_mgr_", code); 471 if code ^= 0 then 472 goto error_return; 473 474 goto good_return; 475 476 remove_registry: 477 entry (p_registry_dir, p_registry_entry, p_code); 478 479 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 480 dcl suffixed_name_$new_suffix 481 entry (char (*), char (*), char (*), char (32), fixed bin (35)); 482 483 dcl new_name char (32); 484 485 registry_dir = p_registry_dir; 486 call cu_$level_get (prev_level); 487 488 on cleanup call clean_up; 489 490 cur_ring = get_ring_ (); 491 call cu_$level_set (cur_ring); 492 493 operation = ""b; 494 ME = "rcprm_registry_mgr_$remove_registry"; 495 496 call suffixed_name_$make (p_registry_entry, REGISTRY_SUFFIX, registry_name, code); 497 if code ^= 0 then 498 goto error_return; 499 500 call suffixed_name_$new_suffix (registry_name, REGISTRY_SUFFIX, REGISTRY_OLD_SUFFIX, new_name, code); 501 if code ^= 0 then 502 goto error_return; 503 504 call hcs_$chname_file (registry_dir, registry_name, registry_name, new_name, code); 505 if code ^= 0 then 506 goto error_return; 507 508 goto good_return; 509 510 copy_registry: 511 entry (p_registry_dir, p_registry_names, p_target_dir, p_target_names, p_error_msg, p_reset_journal_sw, p_code); 512 513 /* This entry copies any number of registries from one directory to another. 514* It also allows the caller to delete the old journal and make a fresh one 515* after all the registries have been successfully copied. */ 516 517 dcl p_registry_names dimension (*) char (*) parameter; 518 dcl p_target_names dimension (*) char (*) parameter; 519 dcl p_target_dir char (*) parameter; 520 dcl p_error_msg char (*) parameter; 521 dcl p_reset_journal_sw bit (1) parameter; 522 523 dcl target_dir char (168); 524 dcl target_name char (32); 525 dcl (registry_path, target_path) 526 char (168); 527 dcl regno fixed bin; 528 dcl (from_msf_fcbp, to_msf_fcbp) 529 pointer initial (null); 530 dcl increment fixed bin; 531 dcl save_uid bit (36); 532 dcl bc fixed bin (24); 533 dcl (newsegp, comp1p, to_ptr, from_ptr) 534 pointer; 535 dcl copy_message char (168); 536 dcl missing_component fixed bin; 537 dcl bit_count fixed bin (24); 538 539 dcl 1 auto_requestor_info like requestor_info aligned; 540 dcl 1 auto_resource_info like resource_info aligned; 541 dcl 1 auto_status like status_branch automatic aligned; 542 543 dcl based_seg bit (bc) aligned based; 544 545 dcl (dim, lbound, hbound, rtrim) 546 builtin; 547 548 dcl ( 549 error_table_$bad_arg, 550 error_table_$no_s_permission, 551 error_table_$sameseg 552 ) ext fixed bin (35) static; 553 554 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 555 dcl msf_manager_$get_ptr entry (pointer, fixed bin, bit (1) aligned, pointer, fixed bin (24), fixed bin (35)); 556 dcl msf_manager_$close entry (pointer); 557 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 558 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 559 dcl rcp_audit entry (char (*), bit (36) aligned, ptr, ptr, char (*), bit (3), bit (3), 560 (2) fixed bin (3), bit (1), bit (1), fixed bin (35)); 561 dcl rcprm_journalize_$make_fresh_journal 562 ext entry (char (*), fixed bin (35)); 563 564 registry_dir = p_registry_dir; 565 target_dir = p_target_dir; 566 if dim (p_registry_names, 1) ^= dim (p_target_names, 1) 567 | lbound (p_registry_names, 1) ^= lbound (p_target_names, 1) then do; 568 error_msg = "Dimensions of arrays do not match"; 569 code = error_table_$bad_arg; 570 return; 571 end; 572 573 call cu_$level_get (prev_level); 574 on cleanup call clean_up; 575 576 cur_level = get_ring_ (); 577 call cu_$level_set (cur_level); 578 579 operation = access_operations_$rcp_copy_registry; 580 ME = "rcprm_registry_mgr_$copy_registry"; 581 582 /* lock the transaction file so no one can update registries while we are 583* trying to copy them. Note that if 584* there is no transaction file, we won't require one (user can be copying 585* registries from any dir, not just system dir-- in fact, user may be copying 586* registries back INTO the system dir). If there is no transaction file in 587* the system dir, we will try the target dir just in case the user IS copying 588* registries back into the system dir (although he SHOULDN'T be doing this 589* except in special session!!) */ 590 591 error_msg = "rcp.tcf in " || registry_dir; 592 call rcprm_registry_util_$grab_transaction_control_file (tcf_switch_ptr, registry_dir, code); 593 if code ^= 0 then do; /* locate failed, try target dir? */ 594 error_msg = "rcp.tcf in " || target_dir; 595 call rcprm_registry_util_$grab_transaction_control_file (tcf_switch_ptr, target_dir, code); 596 if code ^= 0 then do; 597 tcf_switch_ptr = null (); 598 error_msg = "No rcp.tcf. "; 599 end; 600 end; /* if neither exists, so what. */ 601 602 do regno = lbound (p_registry_names, 1) to hbound (p_registry_names, 1); 603 604 registry_name = p_registry_names (regno); 605 call suffixed_name_$make (registry_name, REGISTRY_SUFFIX, registry_name, code); 606 if code ^= 0 then 607 call return_error_msg (pathname_ (registry_dir, registry_name)); 608 609 target_name = p_target_names (regno); 610 call suffixed_name_$make (target_name, REGISTRY_SUFFIX, target_name, code); 611 if code ^= 0 then 612 call return_error_msg (pathname_ (target_dir, target_name)); 613 614 registry_path = pathname_ (registry_dir, registry_name); 615 target_path = pathname_ (target_dir, target_name); 616 617 call hcs_$status_long (registry_dir, registry_name, 1, 618 /* chase */ 619 addr (auto_status), null, code); 620 if code = error_table_$no_s_permission then 621 code = 0; 622 else if code ^= 0 then 623 call return_error_msg (registry_path); 624 625 save_uid = auto_status.uid; 626 auto_status.uid = ""b; /* in case next call fails */ 627 628 call hcs_$status_long (target_dir, target_name, 1, 629 /* chase */ 630 addr (auto_status), null, code); 631 if code = error_table_$no_s_permission then 632 code = 0; 633 else if code = error_table_$noentry then 634 code = 0; 635 else if code ^= 0 then 636 call return_error_msg (target_path); 637 638 if auto_status.uid = save_uid then do; 639 code = error_table_$sameseg; 640 call return_error_msg (registry_path); 641 end; 642 643 call delete_$path (target_dir, target_name, "101111"b, "rcprm_registry_mgr_", code); 644 /* delete everything and don't ask questions */ 645 if code = error_table_$noentry then 646 code = 0; /* ok, wasn't there */ 647 if code ^= 0 then 648 call return_error_msg (target_path); 649 650 call fillin_cbi; 651 652 call hcs_$create_branch_ (target_dir, target_name, addr (cbi), code); 653 if code ^= 0 then 654 call return_error_msg (target_path); 655 656 /* Now we have a properly AIM'ed, ACL'ed and ring'ed registry. Now use 657* msf_manager_ to do the drudge work. */ 658 659 call msf_manager_$open (registry_dir, registry_name, from_msf_fcbp, code); 660 if code ^= 0 then 661 call return_error_msg (registry_path); 662 663 call msf_manager_$open (target_dir, target_name, to_msf_fcbp, code); 664 if code ^= 0 then 665 call return_error_msg (target_path); 666 667 call msf_manager_$get_ptr (to_msf_fcbp, 0, "1"b, newsegp, 0, code); 668 if code ^= 0 then 669 call return_error_msg (target_path); 670 call msf_manager_$get_ptr (to_msf_fcbp, 1, "1"b, comp1p, 0, code); 671 /* this is to make it an MSF right away */ 672 /* Don't ask me why, but copy_seg_ does it this way */ 673 if code ^= 0 then 674 call return_error_msg (target_path); 675 676 call hcs_$status_minf (registry_dir, registry_name, 1, 2, bit_count, code); 677 if code ^= 0 then 678 call return_error_msg (registry_path); 679 copy_message = "Missing Component(s) "; 680 missing_component = -1; /* Since component 0 is valid */ 681 do increment = 0 to (bit_count - 1); 682 call msf_manager_$get_ptr (from_msf_fcbp, increment, "0"b, from_ptr, bc, code); 683 if code = error_table_$noentry then do; 684 copy_message = rtrim (copy_message) || " " || ltrim (char (increment)); 685 missing_component = increment; 686 code = 0; 687 end; 688 if code = 0 then do; 689 if increment = 0 then 690 to_ptr = newsegp; 691 else if increment = 1 then 692 to_ptr = comp1p; 693 else call msf_manager_$get_ptr (to_msf_fcbp, increment, "1"b, to_ptr, 0, code); 694 if code ^= 0 then 695 call return_error_msg (target_path); 696 697 to_ptr -> based_seg = from_ptr -> based_seg; 698 699 call hcs_$set_bc_seg (to_ptr, bc, code); 700 if code ^= 0 then 701 call return_error_msg (target_path); 702 end; 703 end; 704 705 call msf_manager_$close (from_msf_fcbp); 706 from_msf_fcbp = null; 707 708 call msf_manager_$close (to_msf_fcbp); 709 to_msf_fcbp = null; 710 end; 711 712 /* Great. We got this far with no errors. Reset the journal if we've been asked. */ 713 714 if p_reset_journal_sw then do; 715 call rcprm_journalize_$make_fresh_journal (registry_dir, code); 716 if code ^= 0 then 717 call return_error_msg ("Resetting journal in " || pathname_ (registry_dir, JOURNALS_DIR_ENTRYNAME)); 718 end; 719 if missing_component >= 0 then do; 720 copy_message = rtrim (copy_message) || " - null component(s) created in new registry."; 721 error_msg = error_msg || copy_message; 722 code = error_table_$rcp_missing_registry_component; 723 call return_error_msg (error_msg); 724 end; 725 726 goto good_return; 727 728 /* Routine to fill in create_branch_info */ 729 730 fillin_cbi: 731 proc; 732 733 unspec (cbi) = ""b; 734 cbi.version = create_branch_version_2; 735 cbi.priv_upgrade_sw = (cur_level = 1); /* want this to be a multiclass seg */ 736 cbi.parent_ac_sw = ^cbi.priv_upgrade_sw; 737 cbi.mode = RW_ACCESS; 738 cbi.rings (*) = cur_level; 739 cbi.userid = ALL_USERS; 740 cbi.access_class = sys_info$access_class_ceiling; 741 742 end fillin_cbi; 743 744 audit: 745 entry (a_ME, a_operation, a_prev_level, a_reg_dir, a_reg_name, a_success, a_code); 746 747 dcl a_ME char (*); 748 dcl a_operation bit (36) aligned; 749 dcl a_prev_level fixed bin; 750 dcl a_reg_dir char (*); 751 dcl a_reg_name char (*); 752 dcl a_success bit (1); 753 dcl a_code fixed bin (35); 754 755 756 ME = a_ME; 757 operation = a_operation; 758 prev_level = a_prev_level; 759 registry_dir = a_reg_dir; 760 registry_name = a_reg_name; 761 code = a_code; 762 if a_success then 763 call audit_success (); 764 else call audit_failure (); 765 766 return; 767 768 audit_success: 769 proc; 770 771 dcl raw_mode bit (3); 772 dcl rbs (2) fixed bin (3); 773 raw_mode = N_ACCESS; 774 rbs = 0; 775 rbs (1) = -1; 776 777 if operation = ""b then 778 return; /* no auditable event */ 779 780 call setup_audit (raw_mode); 781 call rcp_audit (ME, operation, requestor_info_ptr, resource_info_ptr, "", RW_ACCESS, raw_mode, rbs, "1"b, "0"b, 782 (0)); 783 784 end audit_success; 785 786 audit_failure: 787 proc; 788 789 dcl raw_mode bit (3); 790 dcl rbs (2) fixed bin (3); 791 raw_mode = N_ACCESS; 792 rbs = 0; 793 rbs (1) = -1; 794 795 if operation = ""b then 796 return; 797 798 call setup_audit (raw_mode); 799 call rcp_audit (ME, operation, requestor_info_ptr, resource_info_ptr, "", N_ACCESS, raw_mode, rbs, "1"b, "0"b, 800 code); 801 802 end audit_failure; 803 804 setup_audit: 805 proc (a_raw_mode); 806 807 dcl a_raw_mode bit (3); 808 dcl temp_mode bit (36) aligned; 809 dcl local_code fixed bin (35); 810 811 dcl hcs_$get_user_raw_mode entry (char (*), char (*), char (*), bit (36) aligned, fixed bin (35)); 812 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 813 local_code = 0; 814 815 /* Set up the requestor information */ 816 817 requestor_info_ptr = addr (auto_requestor_info); 818 requestor_info.user_id = get_group_id_ (); 819 requestor_info.current_authorization = get_process_authorization_ (); 820 requestor_info.validation_level = prev_level; 821 822 /* Set up the resource information. */ 823 824 resource_info_ptr = addr (auto_resource_info); 825 resource_info.registry_dir = registry_dir; 826 resource_info.registry_switch_ptr = null (); 827 resource_info.registry_record_ptr = null (); 828 resource_info.resource_type = registry_name; 829 resource_info.resource_name = ""; 830 831 /* Set up the operation. */ 832 833 addr (addr (operation) -> encoded_access_op.detailed_operation) -> detailed_operation.priv_gate_call = "1"b; 834 835 /* Since we don't call the kernel, set up the raw mode for auditing */ 836 /* purposes only. */ 837 838 call hcs_$get_user_raw_mode ((pathname_ (rtrim (registry_dir), registry_name)), "", (requestor_info.user_id), 839 temp_mode, local_code); 840 if local_code ^= 0 then 841 a_raw_mode = ""b; 842 else a_raw_mode = substr (temp_mode, 1, 3); 843 844 end setup_audit; 845 846 return_error_msg: 847 proc (message); 848 849 dcl message char (*); 850 851 p_error_msg = message; 852 goto error_return; 853 854 end return_error_msg; 855 856 clean_up: 857 proc; 858 859 if from_msf_fcbp ^= null then 860 call msf_manager_$close (from_msf_fcbp); 861 862 if to_msf_fcbp ^= null then 863 call msf_manager_$close (to_msf_fcbp); 864 865 if switch_ptr ^= null then 866 call rcprm_registry_util_$release_registry (switch_ptr, (0)); 867 868 if tcf_switch_ptr ^= null then 869 call rcprm_registry_util_$release_transaction_control_file (tcf_switch_ptr, (0)); 870 871 call cu_$level_set (prev_level); 872 873 end clean_up; 874 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 */ 875 876 2 1 /* --------------- BEGIN include file rcp_registry.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 2 5 dcl 1 registry_record aligned based (record_ptr), 2 6 2 dynamic_info aligned, 2 7 3 attributes (2) bit (72) aligned, 2 8 3 (location_desc, 2 9 comment_desc, 2 10 pad (2)) fixed bin (35) aligned, 2 11 2 acquisition_info aligned, 2 12 3 (owner_desc, 2 13 acs_path_desc, 2 14 aim_range_desc) fixed bin (35) aligned, 2 15 3 flags unaligned, 2 16 4 (usage_lock, 2 17 release_lock, 2 18 awaiting_clear, 2 19 user_alloc, 2 20 system, 2 21 free) bit (1) unaligned, 2 22 4 pad bit (12) unaligned, 2 23 3 reserver_chain bit (18) unaligned, 2 24 3 pad (2) fixed bin (35) aligned, 2 25 2 registration_info aligned, 2 26 3 uid bit (36) aligned, 2 27 3 (potential_attributes_desc, 2 28 potential_aim_range_desc, 2 29 charge_type_desc, 2 30 pad (2)) fixed bin (35) aligned, 2 31 3 name unaligned, 2 32 4 n fixed bin (8) unaligned, 2 33 4 string char (rr_strl refer (registry_record.name.n)) unaligned; 2 34 2 35 dcl 1 registry_header aligned based (header_ptr), 2 36 2 rtde_size fixed bin (18), 2 37 2 rtde_copy (RTDE_SIZE refer (registry_header.rtde_size)) bit (36) aligned, 2 38 2 other aligned, 2 39 3 last_transaction_time fixed bin (71), 2 40 3 pad (18) bit (36) aligned; 2 41 2 42 dcl RTDE_SIZE fixed bin (18); 2 43 3 1 /* --------------- BEGIN include file rtdt.incl.pl1 --------------- */ 3 2 3 3 dcl 1 rtdt aligned based (rtdtp), /* resource type description table */ 4 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 4 2 4 3 /* the "author" items must always be the first ones in the table. The 4 4* module which moves the converted table to the System Control process 4 5* fills in these data items and assumes them to be at the head of the segment 4 6* regardless of the specific table's actual declaration. The variables 4 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 4 8* respectively. For tables installed in multiple processes, these 4 9* are to be used to lock out multiple installations. */ 4 10 4 11 /* Lock should be used as a modification lock. Since, in general, 4 12* entries may not be moved in system tables, even by installations, 4 13* it is sufficient for only installers and programs that change threads 4 14* to set or respect the lock. Simply updating data in an entry 4 15* requires no such protection. 4 16* 4 17* Last_install_time is used by readers of system tables to detect 4 18* installations or other serious modifications. By checking it before 4 19* and after copying a block of data, they can be protected against 4 20* modifications. 4 21* 4 22* Modules that set the lock should save proc_group_id, and then 4 23* put their group id there for the time they hold the lock. 4 24* if they do not actually install the, they should restore the group id. 4 25**/ 4 26 4 27 2 author aligned, /* validation data about table's author */ 4 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 4 29 3 lock bit (36), /* installation lock */ 4 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 4 31 3 update_authorization bit (1) unal, /* update only authorizations */ 4 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 4 33 3 pad bit (33) unaligned, 4 34 3 last_install_time fixed bin (71), 4 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 4 36 3 w_dir char (64), /* author's working directory */ 4 37 4 38 /* END INCLUDE FILE author.incl.pl1 */ 3 4 3 5 2 version fixed bin, /* version number */ 3 6 2 installed_under_resource_mgt bit (1) aligned, /* resource mgt. was ON when this was installed */ 3 7 2 charge_type_table_ptr offset, /* points to charge_type_table */ 3 8 2 first_resource offset, /* chain for RTDE's */ 3 9 2 rtdt_area area (RTDT_area_len); /* all following items allocated here */ 3 10 3 11 dcl 1 charge_type_table aligned based (cttp), /* describes charges for resource types */ 3 12 2 n_charge_types fixed bin, /* number of distinct charge types */ 3 13 2 charge_types (N_CHARGE_TYPES refer (charge_type_table.n_charge_types)) aligned char (32), 3 14 2 flagword fixed bin (35) aligned; /* this word simply help us set bitcount properly */ 3 15 3 16 dcl 1 rtde aligned based (rtdep), /* describes one resource type */ 3 17 2 fixed_info aligned, 3 18 3 next_resource offset, /* chains to next type, or nullo */ 3 19 3 name char (32), /* name of resource type, e.g. "tape_drive" */ 3 20 3 syn_to char (32), /* if is_synonym this is master syn */ 3 21 3 precanon_proc char (64), /* name of routine to standardize resource name */ 3 22 3 pad_1 (16) fixed bin (35), 3 23 3 flags unaligned, 3 24 4 (valid, /* resource type hasn't been deleted */ 3 25 is_volume, /* specifies volume or device type */ 3 26 manual_clear, /* volumes of this type to be "degaussed" between owners */ 3 27 addition_pending, /* bookkeeping bit for upd_rtdt_ */ 3 28 deletion_pending, 3 29 is_synonym) bit (1) unaligned, /* ditto */ 3 30 4 pad bit (12) unaligned, 3 31 3 (process_limit, /* how many can you assign at one time */ 3 32 default_time, /* implicit reservations are for how many minutes */ 3 33 max_time, /* how long can you reserve it for */ 3 34 advance_notice_time, /* warn operator to prepare mount ahead of time */ 3 35 pad2, 3 36 n_exclusion_specs, /* number of distinct "name=" fields in attributes */ 3 37 n_mates, /* number of mating devs/vols for this vol/dev */ 3 38 n_subtypes, /* number of registration subtypes */ 3 39 n_defined_attributes) fixed bin (17) unaligned, /* number of defined attributes */ 3 40 3 pad_2 (8) fixed bin (35), 3 41 3 attributes_valid bit (72) aligned, /* "1"b if corresp. attribute undeleted */ 3 42 3 attributes_to_match bit (72) aligned, /* potential mate must possess these attributes */ 3 43 3 attribute_names (72) char (12) aligned, /* all possible attributes for this resource */ 3 44 3 exclusion_specs (36) bit (72) aligned, /* each masks all attrributes of the form "key=val" */ 3 45 3 pad_3 (32) fixed bin (35), 3 46 3 registration_defaults aligned, /* applied at reg. time if none given */ 3 47 4 default_flags aligned, 3 48 5 (potential_attributes_given, /* "1"b = there are default potential_attributes */ 3 49 attributes_given, /* and similarly, etc. */ 3 50 aim_range_given, 3 51 charge_type_given) bit (1) unaligned, 3 52 5 pad bit (31) unaligned, 3 53 4 potential_attributes bit (72) aligned, /* for registration, if given */ 3 54 4 attributes bit (72) aligned, /* for registration and also for runtime "I-don't-care" */ 3 55 4 aim_range (2) bit (72) aligned, /* and similarly, etc. */ 3 56 4 charge_type fixed bin, 3 57 4 pad_4 (8) fixed bin (35) aligned, 3 58 2 mates (N_MATES refer (rtde.n_mates)) char (32) aligned, 3 59 /* the volume type that mounts on this device, or vice versa */ 3 60 2 subtypes (N_SUBTYPES refer (rtde.n_subtypes)) aligned, /* named registration default groups */ 3 61 3 subtype_name char (32), /* name of the group */ 3 62 3 subtype_defaults like rtde.registration_defaults aligned; 3 63 3 64 dcl RTDT_version_3 fixed bin static options (constant) initial (3), 3 65 RTDT_version_2 fixed bin static options (constant) initial (2), 3 66 /* same format, but without precanon_proc */ 3 67 (N_MATES, N_SUBTYPES, N_CHARGE_TYPES) fixed bin, 3 68 RTDT_area_len fixed bin (18); 3 69 3 70 dcl (rtdep, rtdtp, cttp) pointer; 3 71 3 72 /* ---------------- END include file rtdt.incl.pl1 ---------------- */ 2 44 2 45 2 46 dcl (record_ptr, header_ptr) pointer, 2 47 rr_strl fixed bin; 2 48 2 49 /* ---------------- END include file rcp_registry.incl.pl1 ---------------- */ 877 878 5 1 /* START OF: rcprm_registry_keys.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 /* Written January 1985 by Chris Jones. */ 5 3 5 4 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 5 dcl ( 5 6 REGISTRY_ACS_PATH_KEY init ("!ACS_paths"), 5 7 REGISTRY_AIM_RANGE_KEY init ("!AIM_ranges"), 5 8 REGISTRY_ATTRIBUTES_KEY 5 9 init ("!attributes"), 5 10 REGISTRY_CHARGE_TYPE_KEY 5 11 init ("!charge_types"), 5 12 REGISTRY_COMMENT_KEY init ("!comments"), 5 13 REGISTRY_FREE_KEY init ("!free"), 5 14 REGISTRY_HEADER_KEY init ("!header"), 5 15 REGISTRY_LOCATION_KEY init ("!locations"), 5 16 REGISTRY_NAME_KEY_HEAD init ("!N."), 5 17 REGISTRY_OWNER_KEY_HEAD 5 18 init ("!O."), 5 19 REGISTRY_SYSTEM_KEY init ("!system"), 5 20 REGISTRY_UID_KEY_HEAD init ("!U.") 5 21 ) static char (16) varying options (constant); 5 22 5 23 5 24 /* END OF: rcprm_registry_keys.incl.pl1 * * * * * * * * * * * * * * * * */ 879 880 6 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 6 2 6 3 /* Written 05/04/78 by C. D. Tavares */ 6 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 6 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 6 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 6 7 6 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 6 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 6 10 iox_$close entry (pointer, fixed bin (35)), 6 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 6 12 iox_$delete_record entry (pointer, fixed bin (35)), 6 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 6 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 6 15 iox_$err_not_attached entry options (variable), 6 16 iox_$err_not_closed entry options (variable), 6 17 iox_$err_no_operation entry options (variable), 6 18 iox_$err_not_open entry options (variable), 6 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 6 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 6 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 6 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 6 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 6 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 6 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 6 28 iox_$propagate entry (pointer), 6 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 6 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 6 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 6 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 6 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 6 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 6 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 6 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 6 40 6 41 dcl (iox_$user_output, 6 42 iox_$user_input, 6 43 iox_$user_io, 6 44 iox_$error_output) external static pointer; 6 45 6 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 881 882 7 1 /* Begin include file ..... iox_modes.incl.pl1 */ 7 2 7 3 /* Written by C. D. Tavares, 03/17/75 */ 7 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 7 5 7 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 7 7 ("stream_input", "stream_output", "stream_input_output", 7 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 7 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 7 10 "direct_input", "direct_output", "direct_update"); 7 11 7 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 7 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 7 14 7 15 dcl (Stream_input initial (1), 7 16 Stream_output initial (2), 7 17 Stream_input_output initial (3), 7 18 Sequential_input initial (4), 7 19 Sequential_output initial (5), 7 20 Sequential_input_output initial (6), 7 21 Sequential_update initial (7), 7 22 Keyed_sequential_input initial (8), 7 23 Keyed_sequential_output initial (9), 7 24 Keyed_sequential_update initial (10), 7 25 Direct_input initial (11), 7 26 Direct_output initial (12), 7 27 Direct_update initial (13)) fixed bin int static options (constant); 7 28 7 29 /* End include file ..... iox_modes.incl.pl1 */ 883 884 8 1 /* BEGIN INCLUDE FILE - - - create_branch_info.incl.pl1 - - - created January 1975 */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(89-01-16,TLNguyen), approve(89-01-16,MCR8049), 8 6* audit(89-02-03,Parisek), install(89-03-15,MR12.3-1025): 8 7* 1. Declare version constant properly. 8 8* 2. Remove version 1 since it was never referenced and to force 8 9* callers to upgrade their programs. 8 10* END HISTORY COMMENTS */ 8 11 8 12 8 13 /* Modified December 1984 for dir_quota, Keith Loepere. */ 8 14 8 15 /* this include files gives the argument structure for create_branch_ */ 8 16 8 17 dcl 1 create_branch_info aligned based, 8 18 2 version fixed bin, /* set this to the largest value given below */ 8 19 2 switches unaligned, 8 20 3 dir_sw bit (1) unaligned, /* if on, a directory branch is wanted */ 8 21 3 copy_sw bit (1) unaligned, /* if on, initiating segment will be done by copying */ 8 22 3 chase_sw bit (1) unaligned, /* if on, if pathname is a link, it will be chased */ 8 23 3 priv_upgrade_sw bit (1) unaligned, /* privileged creation (ring 1) of upgraded object */ 8 24 3 parent_ac_sw bit (1) unaligned, /* if on, use parent's access class for seg or dir created */ 8 25 3 mbz1 bit (31) unaligned, /* pad to full word */ 8 26 2 mode bit (3) unaligned, /* segment or directory for acl for userid */ 8 27 2 mbz2 bit (33) unaligned, /* pad to full word */ 8 28 2 rings (3) fixed bin (3), /* branch's ring brackets */ 8 29 2 userid char (32), /* user's access control name */ 8 30 2 bitcnt fixed bin (24), /* bit count of the segment */ 8 31 2 quota fixed bin (18), /* for directories, this am't of quota will be moved to it */ 8 32 2 access_class bit (72), /* is the access class of the body of the branch */ 8 33 2 dir_quota fixed bin (18); /* for directories, this am't of dir quota will be moved to it */ 8 34 8 35 dcl create_branch_version_2 fixed bin int static options (constant) init (2); 8 36 8 37 /* END INCLUDE FILE - - - create_branch_info.incl.pl1 - - - */ 8 38 885 886 9 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 9 2 /* Begin include file rcp_requestor_info.incl.pl1 9 3* * 9 4* * This include file gives information about the subject, 9 5* * or requestor of the RCP operation. In one case, absentee 9 6* * requests, the user is the Initializer, so this piece of 9 7* * information tells us about the real requestor of the RCP 9 8* * operation. 9 9**/ 9 10 9 11 dcl requestor_info_ptr ptr; 9 12 9 13 dcl 1 requestor_info aligned based (requestor_info_ptr), 9 14 2 user_id char (32), 9 15 2 current_authorization bit (72) aligned, 9 16 2 validation_level fixed bin (3); 9 17 9 18 /* end include file .. rcp_requestor_info.incl.pl1 */ 887 10 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 10 2 /* Begin include file rcp_resource_info.incl.pl1 10 3* * 10 4* * This include file gives information about the object, 10 5* * or resource for the RCP operation. If RM is enabled this 10 6* * information will provide the registry name and switch pointer 10 7* * for the registry so additional resource information can be 10 8* * determined. If RM is disabled, this information will include 10 9* * the resource name and/or type. 10 10**/ 10 11 10 12 dcl resource_info_ptr ptr; 10 13 10 14 dcl 1 resource_info based (resource_info_ptr), 10 15 2 registry_dir aligned char (64), /* Could be a different if it is reconstruct operation */ 10 16 2 registry_switch_ptr 10 17 ptr, /* Switch to the registry */ 10 18 2 registry_record_ptr 10 19 ptr, /* Pointer to the registry record */ 10 20 2 resource_type char (32), /* Resource type */ 10 21 2 resource_name char (32); /* Resource name */ 10 22 10 23 /* end include file .. rcp_resource_info.incl.pl1 */ 888 889 11 1 /* begin include file - access_audit_encoded_op.incl.pl1 */ 11 2 11 3 dcl 1 encoded_access_op aligned based, 11 4 2 audit_type unal, 11 5 3 object_type fixed bin (4) uns unal, 11 6 3 access_type fixed bin (2) uns unal, 11 7 2 operation_index fixed bin (12) uns unal, 11 8 2 detailed_operation fixed bin (18) uns unal; 11 9 11 10 /* object_type = Seg, Dir, Rcp, Admin, Special, Other 11 11* access_type = None, Modify_Acl, Modify, Read 11 12* operation_index is the index of this code in 11 13* access_operations_$oper_codes and the index of 11 14* the text descriptor in access_operations_$text_offest_table 11 15* (see access_operations_.incl.pl1) 11 16* detailed_operation is additional info inserted by the 11 17* caller of the subsystem performing the operation 11 18**/ 11 19 11 20 /* end include file - access_audit_encoded_op.incl.pl1 */ 890 12 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 12 2 /* BEGIN include rcp_ops.incl.pl1 */ 12 3 12 4 /* Written 02/27/85 by Chris Jones, Maria Pozzo */ 12 5 12 6 dcl ops_ptr ptr; 12 7 12 8 dcl 1 detailed_operation unaligned based (ops_ptr), 12 9 2 given, 12 10 3 potential_attributes 12 11 bit (1), 12 12 3 desired_attributes 12 13 bit (1), 12 14 3 potential_aim_range 12 15 bit (1), 12 16 3 aim_range bit (1), 12 17 3 owner bit (1), 12 18 3 acs_path bit (1), 12 19 3 location bit (1), 12 20 3 comment bit (1), 12 21 3 charge_type bit (1), 12 22 3 usage_lock bit (1), 12 23 3 release_lock bit (1), 12 24 3 user_alloc bit (1), 12 25 2 priv_gate_call bit (1), 12 26 2 search bit (1), 12 27 2 force bit (1), 12 28 2 process bit (1), 12 29 2 owner bit (1), 12 30 2 pad bit (1); 12 31 891 892 13 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 13 2 13 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 13 4 13 5 /* This include file contains branch and link structures returned by 13 6* hcs_$status_ and hcs_$status_long. */ 13 7 13 8 dcl 1 status_branch aligned based (status_ptr), 13 9 2 short aligned, 13 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 13 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 13 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 13 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 13 14 3 dtu bit (36) unaligned, /* date/time last used */ 13 15 3 mode bit (5) unaligned, /* caller's effective access */ 13 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 13 17 3 pad1 bit (8) unaligned, 13 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 13 19 13 20 /* Limit of information returned by hcs_$status_ */ 13 21 13 22 2 long aligned, 13 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 13 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 13 25 3 lvid bit (36) unaligned, /* logical volume ID */ 13 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 13 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 13 28 3 pad2 bit (8) unaligned, 13 29 3 copy_switch bit (1) unaligned, /* copy switch */ 13 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 13 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 13 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 13 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 13 34 3 pad3 bit (5) unaligned, 13 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 13 36 3 uid bit (36) unaligned; /* unique ID */ 13 37 13 38 dcl 1 status_link aligned based (status_ptr), 13 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 13 40 2 nnames fixed bin (16) unaligned unsigned, 13 41 2 names_relp bit (18) unaligned, 13 42 2 dtem bit (36) unaligned, 13 43 2 dtd bit (36) unaligned, 13 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 13 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 13 46 13 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 13 48 based (pointer (status_area_ptr, status_branch.names_relp)), 13 49 /* array of names returned */ 13 50 status_pathname character (status_link.pathname_length) aligned 13 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 13 52 /* link target path */ 13 53 status_area_ptr pointer, 13 54 status_ptr pointer; 13 55 13 56 dcl (Link initial (0), 13 57 Segment initial (1), 13 58 Directory initial (2)) fixed bin internal static options (constant); 13 59 /* values for type fields declared above */ 13 60 13 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 893 894 14 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 14 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 14 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 14 4 14 5 /* This include file has an ALM version. Keep 'em in sync! */ 14 6 14 7 dcl ( 14 8 14 9 /* The following constants define the message action codes. This indicates 14 10*how a message is to be handled. */ 14 11 14 12 SYSERR_CRASH_SYSTEM init (1), 14 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 14 14 14 15 SYSERR_TERMINATE_PROCESS init (2), 14 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 14 17 14 18 SYSERR_PRINT_WITH_ALARM init (3), 14 19 BEEP init (3), /* Beep and print the message on the console. */ 14 20 14 21 SYSERR_PRINT_ON_CONSOLE init (0), 14 22 ANNOUNCE init (0), /* Just print the message on the console. */ 14 23 14 24 SYSERR_LOG_OR_PRINT init (4), 14 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 14 26 14 27 SYSERR_LOG_OR_DISCARD init (5), 14 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 14 29 14 30 14 31 /* The following constants are added to the normal severities to indicate 14 32*different sorting classes of messages. */ 14 33 14 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 14 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 14 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 14 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 14 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 14 39 ) fixed bin internal static options (constant); 14 40 14 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 895 896 897 /* BEGIN MESSAGE DOCUMENTATION 898* 899* Message: 900* rcprm_registry_mgr_$delete_registry: Deleting (possibly bogus) registry PATH for USERID. 901* 902* S: $beep 903* 904* T: $run 905* 906* M: The segment at PATH does not seem to be an RCP registry. It may 907* simply be a damaged registry, or a user may be attempting to use 908* delete_registry to delete a non-registry object. 909* 910* A: $contact_sa 911* 912* 913* END MESSAGE DOCUMENTATION */ 914 915 end rcprm_registry_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0808.7 rcprm_registry_mgr_.pl1 >spec>install>1111>rcprm_registry_mgr_.pl1 875 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 877 2 11/20/79 2015.5 rcp_registry.incl.pl1 >ldd>include>rcp_registry.incl.pl1 2-44 3 11/20/79 2015.6 rtdt.incl.pl1 >ldd>include>rtdt.incl.pl1 3-4 4 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 879 5 03/15/85 0953.1 rcprm_registry_keys.incl.pl1 >ldd>include>rcprm_registry_keys.incl.pl1 881 6 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 883 7 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 885 8 03/16/89 2012.8 create_branch_info.incl.pl1 >ldd>include>create_branch_info.incl.pl1 887 9 03/15/85 0953.1 rcp_requestor_info.incl.pl1 >ldd>include>rcp_requestor_info.incl.pl1 888 10 03/15/85 0953.1 rcp_resource_info.incl.pl1 >ldd>include>rcp_resource_info.incl.pl1 890 11 01/30/85 1523.9 access_audit_encoded_op.incl.pl1 >ldd>include>access_audit_encoded_op.incl.pl1 891 12 03/15/85 0953.1 rcp_ops.incl.pl1 >ldd>include>rcp_ops.incl.pl1 893 13 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 895 14 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.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. ALL_USERS 000030 constant char(5) initial packed unaligned dcl 98 set ref 169* 739 BEEP 000065 constant fixed bin(17,0) initial dcl 14-7 set ref 459* Create 000061 constant fixed bin(17,0) initial dcl 93 set ref 202* 236 241 JOURNALS_DIR_ENTRYNAME 000026 constant char(8) initial packed unaligned dcl 99 set ref 169* 178* 716* Locate 000075 constant fixed bin(17,0) initial dcl 93 set ref 377* ME 000231 automatic char(64) packed unaligned dcl 82 set ref 144* 328* 392* 439* 494* 580* 756* 781* 799* N_ACCESS 000061 constant bit(3) initial packed unaligned dcl 1-11 set ref 773 791 799* REGISTRY_FREE_KEY 000012 constant varying char(16) initial dcl 5-5 set ref 207* REGISTRY_HEADER_KEY 000005 constant varying char(16) initial dcl 5-5 ref 235 254 345 458 REGISTRY_OLD_SUFFIX 000024 constant char(3) initial packed unaligned dcl 101 set ref 441* 500* REGISTRY_SUFFIX 000126 constant char(4) initial packed unaligned dcl 100 set ref 146* 330* 394* 496* 500* 605* 610* REGISTRY_SYSTEM_KEY 000000 constant varying char(16) initial dcl 5-5 set ref 206* RING_7_BRACKETS 000021 constant fixed bin(3,0) initial array dcl 102 set ref 169* RW_ACCESS 000020 constant bit(3) initial packed unaligned dcl 1-11 set ref 737 781* SMA_ACCESS_BIN 000017 constant fixed bin(5,0) initial dcl 1-36 set ref 169* a_ME parameter char packed unaligned dcl 747 ref 744 756 a_code parameter fixed bin(35,0) dcl 753 ref 744 761 a_operation parameter bit(36) dcl 748 ref 744 757 a_prev_level parameter fixed bin(17,0) dcl 749 ref 744 758 a_raw_mode parameter bit(3) packed unaligned dcl 807 set ref 804 840* 842* a_reg_dir parameter char packed unaligned dcl 750 ref 744 759 a_reg_name parameter char packed unaligned dcl 751 ref 744 760 a_success parameter bit(1) packed unaligned dcl 752 ref 744 762 access_class 20 000100 automatic bit(72) level 2 dcl 76 set ref 740* access_operations_$rcp_copy_registry 000056 external static bit(36) dcl 106 ref 579 access_operations_$rcp_delete_registry 000060 external static bit(36) dcl 108 ref 438 access_operations_$rcp_update_registry_header 000062 external static bit(36) dcl 110 ref 327 action parameter fixed bin(17,0) dcl 224 ref 221 236 241 addr builtin function dcl 126 ref 192 192 241 241 243 243 261 261 298 298 360 366 617 617 628 628 652 652 817 824 833 833 admin_gate_$syserr 000102 constant entry external dcl 422 ref 459 attribute_names 102 based char(12) array level 3 dcl 3-16 ref 372 372 auto_header 000100 automatic structure level 1 dcl 226 set ref 241 241 241 243 243 243 252* 258 261 261 auto_requestor_info 000666 automatic structure level 1 dcl 539 set ref 817 auto_resource_info 000702 automatic structure level 1 dcl 540 set ref 824 auto_status 000746 automatic structure level 1 dcl 541 set ref 617 617 628 628 based_seg based bit dcl 543 set ref 697* 697 bc 000600 automatic fixed bin(24,0) dcl 532 set ref 682* 697 697 699* bit_count 000665 automatic fixed bin(24,0) dcl 537 set ref 676* 681 cbi 000100 automatic structure level 1 dcl 76 set ref 192 192 652 652 733* char builtin function dcl 126 ref 684 cleanup 000342 stack reference condition dcl 129 ref 138 325 397 433 488 574 code 000123 automatic fixed bin(35,0) dcl 77 set ref 146* 147 153* 156 162* 164 169* 171 171* 173 178* 179 192* 193 198* 199 218 235* 238 241* 243* 244 254* 255 261* 262 270* 280 280* 282 282* 293* 295 298* 299 330* 331 336* 337 341* 342 345* 346 362* 363 394* 395 399* 400 405* 406 441* 442 445* 446 450* 454* 455 458* 459 465* 466 469* 471 496* 497 500* 501 504* 505 569* 592* 593 595* 596 605* 606 610* 611 617* 620 620* 622 628* 631 631* 633 633* 635 639* 643* 645 645* 647 652* 653 659* 660 663* 664 667* 668 670* 673 676* 677 682* 683 686* 688 693* 694 699* 700 715* 716 722* 761* 799* comp1p 000604 automatic pointer dcl 533 set ref 670* 691 copy_message 000612 automatic char(168) packed unaligned dcl 535 set ref 679* 684* 684 720* 720 721 create_branch_info based structure level 1 dcl 8-17 create_branch_version_2 constant fixed bin(17,0) initial dcl 8-35 ref 734 cu_$level_get 000010 constant entry external dcl 43 ref 136 322 390 431 486 573 cu_$level_set 000012 constant entry external dcl 44 ref 141 333 436 491 577 871 cur_level 000124 automatic fixed bin(17,0) dcl 78 set ref 140* 141* 176 576* 577* 735 738 cur_ring 000351 automatic fixed bin(17,0) dcl 416 set ref 435* 436* 449 449 490* 491* current_authorization 10 based bit(72) level 2 dcl 9-13 set ref 819* currentsize builtin function dcl 126 ref 226 233 241 243 258 delete_$path 000104 constant entry external dcl 423 ref 469 643 detailed_operation based structure level 1 packed packed unaligned dcl 12-8 in procedure "rcprm_registry_mgr_" detailed_operation 0(18) based fixed bin(18,0) level 2 in structure "encoded_access_op" packed packed unsigned unaligned dcl 11-3 in procedure "rcprm_registry_mgr_" set ref 833 dim builtin function dcl 545 ref 566 566 dir_rbs 000126 automatic fixed bin(3,0) array dcl 79 set ref 176* 177* 178* 445* 449 449 encoded_access_op based structure level 1 dcl 11-3 error_msg 000130 automatic char(256) packed unaligned dcl 80 set ref 568* 591* 594* 598* 721* 721 723* error_table_$bad_arg 000114 external static fixed bin(35,0) dcl 548 ref 569 error_table_$improper_data_format 000066 external static fixed bin(35,0) dcl 113 ref 270 error_table_$namedup 000064 external static fixed bin(35,0) dcl 113 set ref 154* 163* 171 236* 294* error_table_$no_record 000070 external static fixed bin(35,0) dcl 113 set ref 236* 294* error_table_$no_s_permission 000116 external static fixed bin(35,0) dcl 548 ref 620 631 error_table_$noentry 000072 external static fixed bin(35,0) dcl 113 set ref 154* 633 645 683 error_table_$not_seg_type 000106 external static fixed bin(35,0) dcl 427 ref 450 error_table_$rcp_missing_registry_component 000074 external static fixed bin(35,0) dcl 113 ref 722 error_table_$sameseg 000120 external static fixed bin(35,0) dcl 548 ref 639 fixed_info based structure level 2 dcl 3-16 from_msf_fcbp 000572 automatic pointer initial dcl 528 set ref 528* 659* 682* 705* 706* 859 859* from_ptr 000610 automatic pointer dcl 533 set ref 682* 697 get_group_id_ 000014 constant entry external dcl 45 ref 459 459 818 get_process_authorization_ 000016 constant entry external dcl 46 ref 819 get_ring_ 000020 constant entry external dcl 48 ref 140 333 333 435 490 576 hbound builtin function dcl 545 ref 602 hcs_$append_branchx 000022 constant entry external dcl 49 ref 169 hcs_$chname_file 000110 constant entry external dcl 479 ref 504 hcs_$create_branch_ 000024 constant entry external dcl 51 ref 192 652 hcs_$get_dir_ring_brackets 000100 constant entry external dcl 420 ref 445 hcs_$get_user_raw_mode 000150 constant entry external dcl 811 ref 838 hcs_$set_bc_seg 000130 constant entry external dcl 557 ref 699 hcs_$set_dir_ring_brackets 000026 constant entry external dcl 52 ref 178 hcs_$status_long 000132 constant entry external dcl 558 ref 617 628 hcs_$status_minf 000030 constant entry external dcl 54 ref 153 676 i 000230 automatic fixed bin(17,0) dcl 81 set ref 371* 372 372* increment 000576 automatic fixed bin(17,0) dcl 530 set ref 681* 682* 684 685 689 691 693* iox_$read_record 000140 constant entry external dcl 6-8 ref 261 362 iox_$rewrite_record 000142 constant entry external dcl 6-8 ref 243 iox_$seek_key 000144 constant entry external dcl 6-8 ref 235 254 293 345 458 iox_$write_record 000146 constant entry external dcl 6-8 ref 241 298 key parameter varying char dcl 290 ref 287 293 293 lbound builtin function dcl 545 ref 566 566 602 length builtin function dcl 126 ref 298 298 local_code 001047 automatic fixed bin(35,0) dcl 809 set ref 813* 838* 840 long 4 000746 automatic structure level 2 dcl 541 ltrim builtin function dcl 126 ref 684 message parameter char packed unaligned dcl 849 ref 846 851 missing_component 000664 automatic fixed bin(17,0) dcl 536 set ref 680* 685* 719 mode 2 000100 automatic bit(3) level 2 packed packed unaligned dcl 76 set ref 737* msf_manager_$close 000126 constant entry external dcl 556 ref 705 708 859 862 msf_manager_$get_ptr 000124 constant entry external dcl 555 ref 667 670 682 693 msf_manager_$open 000122 constant entry external dcl 554 ref 659 663 mylocked 000350 automatic bit(1) dcl 309 set ref 311* 317* 335 n_defined_attributes 65(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 3-16 ref 368 368 371 n_mates 64(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 3-16 ref 226 231 233 265 n_subtypes 65 based fixed bin(17,0) level 3 packed packed unaligned dcl 3-16 ref 226 231 233 265 name 1 based char(32) level 3 dcl 3-16 ref 146 330 394 new_name 000352 automatic char(32) packed unaligned dcl 483 set ref 500* 504* newsegp 000602 automatic pointer dcl 533 set ref 667* 689 null builtin function dcl 126 ref 88 88 528 528 597 617 617 628 628 706 709 826 827 859 862 865 868 ok_code parameter fixed bin(35,0) dcl 277 ref 274 280 operation 000251 automatic bit(36) dcl 83 set ref 143* 327* 391* 438* 493* 579* 757* 777 781* 795 799* 833 other based structure level 2 in structure "registry_header" dcl 2-35 in procedure "rcprm_registry_mgr_" other 000100 automatic structure level 2 in structure "auto_header" dcl 226 in procedure "write_header" set ref 232* p_code parameter fixed bin(35,0) dcl 39 set ref 131 212* 218* 304 314 381 411 476 510 p_error_msg parameter char packed unaligned dcl 520 set ref 510 851* p_registry_dir parameter char packed unaligned dcl 36 ref 131 134 304 314 319 381 388 411 430 476 485 510 564 p_registry_entry parameter char packed unaligned dcl 37 set ref 411 441* 476 496* p_registry_names parameter char array packed unaligned dcl 517 ref 510 566 566 602 602 604 p_reset_journal_sw parameter bit(1) packed unaligned dcl 521 ref 510 714 p_rtdep parameter pointer dcl 38 ref 131 135 304 314 321 381 389 p_target_dir parameter char packed unaligned dcl 519 ref 510 565 p_target_names parameter char array packed unaligned dcl 518 ref 510 566 566 609 parent_ac_sw 1(04) 000100 automatic bit(1) level 3 packed packed unaligned dcl 76 set ref 736* pathname_ 000032 constant entry external dcl 55 in procedure "rcprm_registry_mgr_" ref 459 459 606 606 611 611 614 615 716 pathname_ 000152 constant entry external dcl 812 in procedure "setup_audit" ref 838 prev_level 000252 automatic fixed bin(17,0) initial dcl 84 set ref 84* 136* 322* 390* 431* 486* 573* 758* 820 871* priv_gate_call 0(12) based bit(1) level 2 packed packed unaligned dcl 12-8 set ref 833* priv_upgrade_sw 1(03) 000100 automatic bit(1) level 3 packed packed unaligned dcl 76 set ref 735* 736 raw_mode 001032 automatic bit(3) packed unaligned dcl 789 in procedure "audit_failure" set ref 791* 798* 799* raw_mode 001016 automatic bit(3) packed unaligned dcl 771 in procedure "audit_success" set ref 773* 780* 781* rbp 000100 automatic pointer dcl 357 set ref 360* 362* 366 rbs 001034 automatic fixed bin(3,0) array dcl 790 in procedure "audit_failure" set ref 792* 793* 799* rbs 001020 automatic fixed bin(3,0) array dcl 772 in procedure "audit_success" set ref 774* 775* 781* rcp_audit 000134 constant entry external dcl 559 ref 781 799 rcprm_journalize_$make_fresh_journal 000136 constant entry external dcl 561 ref 715 rcprm_registry_util_$create_transaction_control_file 000034 constant entry external dcl 56 ref 162 rcprm_registry_util_$grab_registry 000036 constant entry external dcl 58 ref 399 rcprm_registry_util_$grab_registry_create 000040 constant entry external dcl 60 ref 198 rcprm_registry_util_$grab_registry_no_journalize 000044 constant entry external dcl 64 ref 341 rcprm_registry_util_$grab_registry_old 000042 constant entry external dcl 62 ref 454 rcprm_registry_util_$grab_transaction_control_file 000046 constant entry external dcl 66 ref 336 592 595 rcprm_registry_util_$release_registry 000050 constant entry external dcl 68 ref 405 465 865 rcprm_registry_util_$release_transaction_control_file 000052 constant entry external dcl 70 ref 868 record_buffer 000100 automatic char dcl 356 set ref 360 record_len 000253 automatic fixed bin(21,0) dcl 85 set ref 254* 258 261* 345* 356 362* registration_defaults 602 based structure level 3 dcl 3-16 registry_dir based char(64) level 2 in structure "resource_info" dcl 10-14 in procedure "rcprm_registry_mgr_" set ref 825* registry_dir 000254 automatic char(168) packed unaligned dcl 86 in procedure "rcprm_registry_mgr_" set ref 134* 153* 162* 169* 178* 192* 198* 319* 336* 341* 388* 399* 430* 445* 454* 459* 459* 469* 485* 504* 564* 591 592* 606* 606* 614* 617* 659* 676* 715* 716* 759* 825 838 838 registry_header based structure level 1 dcl 2-35 registry_name 000326 automatic char(32) packed unaligned dcl 87 set ref 146* 153* 192* 198* 330* 341* 394* 399* 441* 445* 454* 459* 459* 469* 496* 500* 504* 504* 604* 605* 605* 606* 606* 614* 617* 659* 676* 760* 828 838* registry_path 000444 automatic char(168) packed unaligned dcl 525 set ref 614* 622* 640* 660* 677* registry_record_ptr 22 based pointer level 2 dcl 10-14 set ref 827* registry_switch_ptr 20 based pointer level 2 dcl 10-14 set ref 826* regno 000570 automatic fixed bin(17,0) dcl 527 set ref 602* 604 609* requestor_info based structure level 1 dcl 9-13 requestor_info_ptr 000762 automatic pointer dcl 9-11 set ref 781* 799* 817* 818 819 820 838 resource_info based structure level 1 unaligned dcl 10-14 resource_info_ptr 000764 automatic pointer dcl 10-12 set ref 781* 799* 824* 825 826 827 828 829 resource_name 34 based char(32) level 2 packed packed unaligned dcl 10-14 set ref 829* resource_type 24 based char(32) level 2 packed packed unaligned dcl 10-14 set ref 828* rings 3 000100 automatic fixed bin(3,0) array level 2 dcl 76 set ref 738* rtde based structure level 1 dcl 3-16 ref 226 231 233 265 rtde_copy 1 based bit(36) array level 2 dcl 2-35 set ref 366 rtde_copyp 000102 automatic pointer dcl 358 set ref 366* 368 371 372 rtde_size 000100 automatic fixed bin(18,0) level 2 dcl 226 set ref 233* rtde_template 1 000100 automatic bit(36) array level 2 dcl 226 set ref 231* 265 rtdep 000760 automatic pointer dcl 3-70 set ref 135* 146 226 231 233 265 321* 330 368 372 389* 394 rtrim builtin function dcl 545 ref 293 293 684 720 838 838 save_uid 000577 automatic bit(36) packed unaligned dcl 531 set ref 625* 638 status_branch based structure level 1 dcl 13-8 string_arg parameter char packed unaligned dcl 291 set ref 287 298 298 298 298 suffixed_name_$make 000054 constant entry external dcl 72 ref 146 330 394 441 496 605 610 suffixed_name_$new_suffix 000112 constant entry external dcl 480 ref 500 switch_ptr 000336 automatic pointer initial dcl 88 set ref 88* 198* 235* 241* 243* 254* 261* 293* 298* 341* 345* 362* 399* 405* 454* 458* 465* 865 865* switches 1 000100 automatic structure level 2 packed packed unaligned dcl 76 sys_info$access_class_ceiling 000076 external static bit(72) dcl 121 ref 740 target_dir 000362 automatic char(168) packed unaligned dcl 523 set ref 565* 594 595* 611* 611* 615* 628* 643* 652* 663* target_name 000434 automatic char(32) packed unaligned dcl 524 set ref 609* 610* 610* 611* 611* 615* 628* 643* 652* 663* target_path 000516 automatic char(168) packed unaligned dcl 525 set ref 615* 635* 647* 653* 664* 668* 673* 694* 700* tcf_switch_ptr 000340 automatic pointer initial dcl 88 set ref 88* 336* 592* 595* 597* 868 868* temp_mode 001046 automatic bit(36) dcl 808 set ref 838* 842 to_msf_fcbp 000574 automatic pointer initial dcl 528 set ref 528* 663* 667* 670* 693* 708* 709* 862 862* to_ptr 000606 automatic pointer dcl 533 set ref 689* 691* 693* 697 699* uid 11 000746 automatic bit(36) level 3 packed packed unaligned dcl 541 set ref 625 626* 638 unspec builtin function dcl 126 set ref 231* 231 232* 252* 265 265 733* user_id based char(32) level 2 dcl 9-13 set ref 818* 838 userid 6 000100 automatic char(32) level 2 dcl 76 set ref 739* validation_level 12 based fixed bin(3,0) level 2 dcl 9-13 set ref 820* version 000100 automatic fixed bin(17,0) level 2 dcl 76 set ref 734* zero_becomes_code parameter fixed bin(35,0) dcl 277 ref 274 282 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANNOUNCE internal static fixed bin(17,0) initial dcl 14-7 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 CRASH internal static fixed bin(17,0) initial dcl 14-7 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Direct_input internal static fixed bin(17,0) initial dcl 7-15 Direct_output internal static fixed bin(17,0) initial dcl 7-15 Direct_update internal static fixed bin(17,0) initial dcl 7-15 Directory internal static fixed bin(17,0) initial dcl 13-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 JUST_LOG internal static fixed bin(17,0) initial dcl 14-7 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 7-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 7-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 7-15 LOG internal static fixed bin(17,0) initial dcl 14-7 Link internal static fixed bin(17,0) initial dcl 13-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_CHARGE_TYPES automatic fixed bin(17,0) dcl 3-64 N_MATES automatic fixed bin(17,0) dcl 3-64 N_SUBTYPES automatic fixed bin(17,0) dcl 3-64 REGISTRY_ACS_PATH_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_AIM_RANGE_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_ATTRIBUTES_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_CHARGE_TYPE_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_COMMENT_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_LOCATION_KEY internal static varying char(16) initial dcl 5-5 REGISTRY_NAME_KEY_HEAD internal static varying char(16) initial dcl 5-5 REGISTRY_OWNER_KEY_HEAD internal static varying char(16) initial dcl 5-5 REGISTRY_UID_KEY_HEAD internal static varying char(16) initial dcl 5-5 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RTDE_SIZE automatic fixed bin(18,0) dcl 2-42 RTDT_area_len automatic fixed bin(18,0) dcl 3-64 RTDT_version_2 internal static fixed bin(17,0) initial dcl 3-64 RTDT_version_3 internal static fixed bin(17,0) initial dcl 3-64 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed 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 packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 14-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 14-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 14-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 14-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 14-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 14-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 14-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 14-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 14-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 14-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 14-7 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Segment internal static fixed bin(17,0) initial dcl 13-56 Sequential_input internal static fixed bin(17,0) initial dcl 7-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 7-15 Sequential_output internal static fixed bin(17,0) initial dcl 7-15 Sequential_update internal static fixed bin(17,0) initial dcl 7-15 Stream_input internal static fixed bin(17,0) initial dcl 7-15 Stream_input_output internal static fixed bin(17,0) initial dcl 7-15 Stream_output internal static fixed bin(17,0) initial dcl 7-15 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 14-7 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 charge_type_table based structure level 1 dcl 3-11 cttp automatic pointer dcl 3-70 header_ptr automatic pointer dcl 2-46 iox_$attach_loud 000000 constant entry external dcl 6-8 iox_$attach_name 000000 constant entry external dcl 6-8 iox_$attach_ptr 000000 constant entry external dcl 6-8 iox_$close 000000 constant entry external dcl 6-8 iox_$close_file 000000 constant entry external dcl 6-8 iox_$control 000000 constant entry external dcl 6-8 iox_$delete_record 000000 constant entry external dcl 6-8 iox_$destroy_iocb 000000 constant entry external dcl 6-8 iox_$detach 000000 constant entry external dcl 6-8 iox_$detach_iocb 000000 constant entry external dcl 6-8 iox_$err_no_operation 000000 constant entry external dcl 6-8 iox_$err_not_attached 000000 constant entry external dcl 6-8 iox_$err_not_closed 000000 constant entry external dcl 6-8 iox_$err_not_open 000000 constant entry external dcl 6-8 iox_$error_output external static pointer dcl 6-41 iox_$find_iocb 000000 constant entry external dcl 6-8 iox_$find_iocb_n 000000 constant entry external dcl 6-8 iox_$get_chars 000000 constant entry external dcl 6-8 iox_$get_line 000000 constant entry external dcl 6-8 iox_$look_iocb 000000 constant entry external dcl 6-8 iox_$modes 000000 constant entry external dcl 6-8 iox_$move_attach 000000 constant entry external dcl 6-8 iox_$open 000000 constant entry external dcl 6-8 iox_$open_file 000000 constant entry external dcl 6-8 iox_$position 000000 constant entry external dcl 6-8 iox_$propagate 000000 constant entry external dcl 6-8 iox_$put_chars 000000 constant entry external dcl 6-8 iox_$read_key 000000 constant entry external dcl 6-8 iox_$read_length 000000 constant entry external dcl 6-8 iox_$user_input external static pointer dcl 6-41 iox_$user_io external static pointer dcl 6-41 iox_$user_output external static pointer dcl 6-41 iox_modes internal static char(24) initial array dcl 7-6 ops_ptr automatic pointer dcl 12-6 record_ptr automatic pointer dcl 2-46 registry_record based structure level 1 dcl 2-5 rr_strl automatic fixed bin(17,0) dcl 2-46 rtdt based structure level 1 dcl 3-3 rtdtp automatic pointer dcl 3-70 short_iox_modes internal static char(4) initial array dcl 7-12 status_area_ptr automatic pointer dcl 13-47 status_entry_names based char(32) array dcl 13-47 status_link based structure level 1 dcl 13-38 status_pathname based char dcl 13-47 status_ptr automatic pointer dcl 13-47 NAMES DECLARED BY EXPLICIT CONTEXT. add_key 005070 constant entry internal dcl 287 ref 206 207 audit 004370 constant entry external dcl 744 audit_failure 005367 constant entry internal dcl 786 ref 217 764 audit_success 005262 constant entry internal dcl 768 ref 211 762 clean_up 005710 constant entry internal dcl 856 ref 138 209 215 325 397 433 488 574 compare_header 004677 constant entry internal dcl 249 ref 403 copy_registry 002527 constant entry external dcl 510 create_registry 000340 constant entry external dcl 131 delete_registry 001660 constant entry external dcl 411 error_return 001032 constant label dcl 215 ref 147 156 164 173 179 193 199 238 244 255 262 272 295 299 331 337 342 363 395 400 406 442 446 451 455 466 471 497 501 505 852 fillin_cbi 005207 constant entry internal dcl 730 ref 191 650 good_return 001023 constant label dcl 209 ref 379 409 474 508 726 not_format 001042 constant label dcl 270 ref 258 265 346 368 372 rcprm_registry_mgr_ 000325 constant entry external dcl 14 remove_registry 002276 constant entry external dcl 476 return_error_msg 005665 constant entry internal dcl 846 ref 606 611 622 635 640 647 653 660 664 668 673 677 694 700 716 723 revise_error 005047 constant entry internal dcl 274 ref 154 163 236 294 setup_audit 005474 constant entry internal dcl 804 ref 780 798 update_header_common 001114 constant label dcl 319 ref 312 update_registry_header 001050 constant entry external dcl 304 update_registry_header_mylock 001073 constant entry external dcl 314 validate_registry 001465 constant entry external dcl 381 write_header 004506 constant entry internal dcl 221 ref 202 377 NAME DECLARED BY CONTEXT OR IMPLICATION. substr builtin function ref 842 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7150 7324 6111 7160 Length 10200 6111 154 640 1036 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcprm_registry_mgr_ 1057 external procedure is an external procedure. on unit on line 138 64 on unit write_header 150 internal procedure uses auto adjustable storage. revise_error 64 internal procedure is called by several nonquick procedures. add_key internal procedure shares stack frame of external procedure rcprm_registry_mgr_. on unit on line 325 64 on unit begin block on line 349 104 begin block uses auto adjustable storage. on unit on line 397 64 on unit on unit on line 433 64 on unit on unit on line 488 64 on unit on unit on line 574 64 on unit fillin_cbi internal procedure shares stack frame of external procedure rcprm_registry_mgr_. audit_success internal procedure shares stack frame of external procedure rcprm_registry_mgr_. audit_failure internal procedure shares stack frame of external procedure rcprm_registry_mgr_. setup_audit internal procedure shares stack frame of external procedure rcprm_registry_mgr_. return_error_msg internal procedure shares stack frame of external procedure rcprm_registry_mgr_. clean_up 76 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 349 000100 rbp begin block on line 349 000100 record_buffer begin block on line 349 000102 rtde_copyp begin block on line 349 rcprm_registry_mgr_ 000100 cbi rcprm_registry_mgr_ 000123 code rcprm_registry_mgr_ 000124 cur_level rcprm_registry_mgr_ 000126 dir_rbs rcprm_registry_mgr_ 000130 error_msg rcprm_registry_mgr_ 000230 i rcprm_registry_mgr_ 000231 ME rcprm_registry_mgr_ 000251 operation rcprm_registry_mgr_ 000252 prev_level rcprm_registry_mgr_ 000253 record_len rcprm_registry_mgr_ 000254 registry_dir rcprm_registry_mgr_ 000326 registry_name rcprm_registry_mgr_ 000336 switch_ptr rcprm_registry_mgr_ 000340 tcf_switch_ptr rcprm_registry_mgr_ 000350 mylocked rcprm_registry_mgr_ 000351 cur_ring rcprm_registry_mgr_ 000352 new_name rcprm_registry_mgr_ 000362 target_dir rcprm_registry_mgr_ 000434 target_name rcprm_registry_mgr_ 000444 registry_path rcprm_registry_mgr_ 000516 target_path rcprm_registry_mgr_ 000570 regno rcprm_registry_mgr_ 000572 from_msf_fcbp rcprm_registry_mgr_ 000574 to_msf_fcbp rcprm_registry_mgr_ 000576 increment rcprm_registry_mgr_ 000577 save_uid rcprm_registry_mgr_ 000600 bc rcprm_registry_mgr_ 000602 newsegp rcprm_registry_mgr_ 000604 comp1p rcprm_registry_mgr_ 000606 to_ptr rcprm_registry_mgr_ 000610 from_ptr rcprm_registry_mgr_ 000612 copy_message rcprm_registry_mgr_ 000664 missing_component rcprm_registry_mgr_ 000665 bit_count rcprm_registry_mgr_ 000666 auto_requestor_info rcprm_registry_mgr_ 000702 auto_resource_info rcprm_registry_mgr_ 000746 auto_status rcprm_registry_mgr_ 000760 rtdep rcprm_registry_mgr_ 000762 requestor_info_ptr rcprm_registry_mgr_ 000764 resource_info_ptr rcprm_registry_mgr_ 001016 raw_mode audit_success 001020 rbs audit_success 001032 raw_mode audit_failure 001034 rbs audit_failure 001046 temp_mode setup_audit 001047 local_code setup_audit write_header 000100 auto_header write_header THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. admin_gate_$syserr cu_$level_get cu_$level_set delete_$path get_group_id_ get_process_authorization_ get_ring_ hcs_$append_branchx hcs_$chname_file hcs_$create_branch_ hcs_$get_dir_ring_brackets hcs_$get_user_raw_mode hcs_$set_bc_seg hcs_$set_dir_ring_brackets hcs_$status_long hcs_$status_minf iox_$read_record iox_$rewrite_record iox_$seek_key iox_$write_record msf_manager_$close msf_manager_$get_ptr msf_manager_$open pathname_ pathname_ rcp_audit rcprm_journalize_$make_fresh_journal rcprm_registry_util_$create_transaction_control_file rcprm_registry_util_$grab_registry rcprm_registry_util_$grab_registry_create rcprm_registry_util_$grab_registry_no_journalize rcprm_registry_util_$grab_registry_old rcprm_registry_util_$grab_transaction_control_file rcprm_registry_util_$release_registry rcprm_registry_util_$release_transaction_control_file suffixed_name_$make suffixed_name_$new_suffix THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$rcp_copy_registry access_operations_$rcp_delete_registry access_operations_$rcp_update_registry_header error_table_$bad_arg error_table_$improper_data_format error_table_$namedup error_table_$no_record error_table_$no_s_permission error_table_$noentry error_table_$not_seg_type error_table_$rcp_missing_registry_component error_table_$sameseg sys_info$access_class_ceiling LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 84 000313 88 000315 528 000320 14 000324 16 000333 131 000334 134 000357 135 000365 136 000370 138 000377 140 000421 141 000432 143 000441 144 000442 146 000445 147 000476 153 000500 154 000540 156 000551 162 000553 163 000570 164 000602 169 000604 171 000660 173 000666 176 000670 177 000672 178 000674 179 000720 191 000722 192 000723 193 000752 198 000754 199 001001 202 001003 206 001011 207 001016 209 001023 211 001027 212 001030 213 001031 215 001032 217 001036 218 001037 219 001041 270 001042 272 001045 304 001046 311 001067 312 001070 314 001071 317 001112 319 001114 321 001122 322 001125 325 001134 327 001156 328 001161 330 001164 331 001214 333 001216 335 001236 336 001240 337 001261 341 001263 342 001310 345 001312 346 001334 349 001336 356 001341 360 001351 362 001353 363 001373 366 001401 368 001404 371 001423 372 001434 374 001450 375 001453 377 001454 379 001462 381 001463 388 001504 389 001512 390 001515 391 001524 392 001525 394 001530 395 001561 397 001563 399 001605 400 001632 403 001634 405 001640 406 001651 409 001653 411 001654 430 001704 431 001712 433 001721 435 001743 436 001754 438 001763 439 001766 441 001771 442 002017 445 002021 446 002046 449 002050 450 002056 451 002061 454 002062 455 002107 458 002111 459 002134 465 002215 466 002226 469 002230 471 002271 474 002273 476 002274 485 002322 486 002330 488 002337 490 002361 491 002372 493 002401 494 002402 496 002405 497 002434 500 002436 501 002466 504 002470 505 002516 508 002520 510 002521 564 002572 565 002600 566 002605 568 002631 569 002634 570 002637 573 002640 574 002647 576 002671 577 002702 579 002711 580 002714 591 002717 592 002732 593 002753 594 002755 595 002770 596 003012 597 003014 598 003016 602 003021 604 003033 605 003052 606 003076 609 003123 610 003142 611 003166 614 003213 615 003233 617 003253 620 003315 622 003323 625 003330 626 003332 628 003333 631 003375 633 003403 635 003407 638 003414 639 003417 640 003422 643 003425 645 003466 647 003473 650 003500 652 003501 653 003530 659 003535 660 003562 663 003567 664 003614 667 003621 668 003646 670 003653 673 003701 676 003706 677 003747 679 003754 680 003757 681 003761 682 003771 683 004014 684 004020 685 004104 686 004107 688 004110 689 004112 691 004117 693 004124 694 004147 697 004154 699 004162 700 004175 703 004202 705 004204 706 004213 708 004215 709 004224 710 004226 714 004230 715 004236 716 004253 719 004306 720 004310 721 004336 722 004352 723 004356 726 004361 744 004362 756 004416 757 004424 758 004426 759 004430 760 004435 761 004442 762 004444 764 004453 766 004454 226 004456 221 004505 231 004514 232 004530 233 004535 235 004537 236 004562 238 004577 241 004605 243 004640 244 004667 247 004675 249 004676 252 004705 254 004722 255 004745 258 004753 261 004763 262 005006 265 005014 268 005045 274 005046 280 005054 282 005063 285 005067 287 005070 293 005106 294 005147 295 005160 298 005162 299 005204 302 005206 730 005207 733 005210 734 005213 735 005215 736 005224 737 005234 738 005240 739 005251 740 005254 742 005261 768 005262 773 005263 774 005264 775 005274 777 005276 780 005301 781 005303 784 005366 786 005367 791 005370 792 005371 793 005402 795 005404 798 005407 799 005411 802 005473 804 005474 813 005476 817 005477 818 005501 819 005514 820 005523 824 005526 825 005530 826 005533 827 005535 828 005537 829 005543 833 005546 838 005550 840 005646 842 005657 844 005664 846 005665 851 005676 852 005706 856 005707 859 005715 862 005730 865 005744 868 005763 871 006002 873 006012 ----------------------------------------------------------- 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