COMPILATION LISTING OF SEGMENT reconstruct_registry Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1737.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 reconstruct_registry: proc; 12 13 /* This command brings RCP registries up to date. */ 14 /* Written 01/03/79 by C. D. Tavares */ 15 16 /* automatic */ 17 18 dcl answer char (4) varying, 19 ap pointer, 20 arg_array_ptr pointer, 21 al fixed bin, 22 code fixed bin (35), 23 dtcm_string char (24), 24 found bit (1) aligned, 25 (i, j, k) fixed bin, 26 nargs fixed bin, 27 registry_data_ptr pointer, 28 star_index fixed bin, 29 dirname char (168), 30 temp_ename char (32); 31 32 dcl New_max fixed bin; 33 34 /* static */ 35 36 dcl system_free_ptr pointer initial (null) static; 37 38 dcl sleep_times (4) fixed bin (71) static options (constant) initial (1, 1, 2, 6); 39 40 dcl sys_dirname char (168) static initial (">system_control_1>rcp"); 41 42 /* external static */ 43 44 dcl (error_table_$bad_equal_name, 45 error_table_$noarg, 46 error_table_$resource_unknown, 47 error_table_$badopt, 48 error_table_$file_busy) ext fixed bin (35) static; 49 50 /* based */ 51 52 dcl 1 registry_data aligned based (registry_data_ptr), 53 2 max_entries fixed bin, 54 2 used_entries fixed bin initial (0), 55 2 entry (New_max refer (registry_data.max_entries)) aligned, 56 3 ename char (32) unaligned, 57 3 resource_type char (32) unaligned, 58 3 dtcm fixed bin (71), 59 3 rtde_ptr pointer, 60 3 uid bit (36); 61 62 dcl 1 arg_array aligned based (arg_array_ptr), 63 2 max_entries fixed bin, 64 2 used_entries fixed bin initial (0), 65 2 arg (nargs refer (arg_array.max_entries)) char (32) unaligned; 66 67 dcl arg char (al) based (ap); 68 69 dcl system_free_area area based (system_free_ptr); 70 71 /* entries */ 72 73 dcl check_star_name_$entry ext entry (char (*), fixed bin (35)), 74 com_err_ ext entry options (variable), 75 command_query_ ext entry options (variable), 76 convert_date_to_binary_ ext entry (char (*), fixed bin (71), fixed bin (35)), 77 cu_$arg_count ext entry (fixed bin), 78 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 79 date_time_ ext entry (fixed bin (71), char (*)), 80 absolute_pathname_ ext entry (char (*), char (*), fixed bin (35)), 81 get_equal_name_ ext entry (char (*), char (*), char (*), fixed bin (35)), 82 get_system_free_area_ ext entry returns (pointer), 83 get_wdir_ ext entry returns (char (168)), 84 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 85 hcs_$terminate_noname entry (ptr, fixed bin (35)), 86 hcs_$star_ ext entry (char (*), char (*), fixed bin (2), pointer, fixed bin, pointer, pointer, fixed bin (35)), 87 hcs_$status_long ext entry (char (*), char (*), fixed bin, pointer, pointer, fixed bin (35)), 88 ioa_ ext entry options (variable), 89 suffixed_name_$make entry (char (*), char (*), char (32), fixed bin (35)), 90 timer_manager_$sleep ext entry (fixed bin (71), bit (2) aligned); 91 92 dcl rcp_sys_$reconstruct_registry ext entry 93 (char (*), char (*) dimension (*), pointer dimension (*), fixed bin (35)); 94 95 /* builtins and conditions */ 96 97 dcl (clock, hbound, null, sum) builtin, 98 cleanup condition; 99 1 1 /* --------------- BEGIN include file rtdt.incl.pl1 --------------- */ 1 2 1 3 dcl 1 rtdt aligned based (rtdtp), /* resource type description table */ 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 4 1 5 2 version fixed bin, /* version number */ 1 6 2 installed_under_resource_mgt bit (1) aligned, /* resource mgt. was ON when this was installed */ 1 7 2 charge_type_table_ptr offset, /* points to charge_type_table */ 1 8 2 first_resource offset, /* chain for RTDE's */ 1 9 2 rtdt_area area (RTDT_area_len); /* all following items allocated here */ 1 10 1 11 dcl 1 charge_type_table aligned based (cttp), /* describes charges for resource types */ 1 12 2 n_charge_types fixed bin, /* number of distinct charge types */ 1 13 2 charge_types (N_CHARGE_TYPES refer (charge_type_table.n_charge_types)) aligned char (32), 1 14 2 flagword fixed bin (35) aligned; /* this word simply help us set bitcount properly */ 1 15 1 16 dcl 1 rtde aligned based (rtdep), /* describes one resource type */ 1 17 2 fixed_info aligned, 1 18 3 next_resource offset, /* chains to next type, or nullo */ 1 19 3 name char (32), /* name of resource type, e.g. "tape_drive" */ 1 20 3 syn_to char (32), /* if is_synonym this is master syn */ 1 21 3 precanon_proc char (64), /* name of routine to standardize resource name */ 1 22 3 pad_1 (16) fixed bin (35), 1 23 3 flags unaligned, 1 24 4 (valid, /* resource type hasn't been deleted */ 1 25 is_volume, /* specifies volume or device type */ 1 26 manual_clear, /* volumes of this type to be "degaussed" between owners */ 1 27 addition_pending, /* bookkeeping bit for upd_rtdt_ */ 1 28 deletion_pending, 1 29 is_synonym) bit (1) unaligned, /* ditto */ 1 30 4 pad bit (12) unaligned, 1 31 3 (process_limit, /* how many can you assign at one time */ 1 32 default_time, /* implicit reservations are for how many minutes */ 1 33 max_time, /* how long can you reserve it for */ 1 34 advance_notice_time, /* warn operator to prepare mount ahead of time */ 1 35 pad2, 1 36 n_exclusion_specs, /* number of distinct "name=" fields in attributes */ 1 37 n_mates, /* number of mating devs/vols for this vol/dev */ 1 38 n_subtypes, /* number of registration subtypes */ 1 39 n_defined_attributes) fixed bin (17) unaligned, /* number of defined attributes */ 1 40 3 pad_2 (8) fixed bin (35), 1 41 3 attributes_valid bit (72) aligned, /* "1"b if corresp. attribute undeleted */ 1 42 3 attributes_to_match bit (72) aligned, /* potential mate must possess these attributes */ 1 43 3 attribute_names (72) char (12) aligned, /* all possible attributes for this resource */ 1 44 3 exclusion_specs (36) bit (72) aligned, /* each masks all attrributes of the form "key=val" */ 1 45 3 pad_3 (32) fixed bin (35), 1 46 3 registration_defaults aligned, /* applied at reg. time if none given */ 1 47 4 default_flags aligned, 1 48 5 (potential_attributes_given, /* "1"b = there are default potential_attributes */ 1 49 attributes_given, /* and similarly, etc. */ 1 50 aim_range_given, 1 51 charge_type_given) bit (1) unaligned, 1 52 5 pad bit (31) unaligned, 1 53 4 potential_attributes bit (72) aligned, /* for registration, if given */ 1 54 4 attributes bit (72) aligned, /* for registration and also for runtime "I-don't-care" */ 1 55 4 aim_range (2) bit (72) aligned, /* and similarly, etc. */ 1 56 4 charge_type fixed bin, 1 57 4 pad_4 (8) fixed bin (35) aligned, 1 58 2 mates (N_MATES refer (rtde.n_mates)) char (32) aligned, 1 59 /* the volume type that mounts on this device, or vice versa */ 1 60 2 subtypes (N_SUBTYPES refer (rtde.n_subtypes)) aligned, /* named registration default groups */ 1 61 3 subtype_name char (32), /* name of the group */ 1 62 3 subtype_defaults like rtde.registration_defaults aligned; 1 63 1 64 dcl RTDT_version_3 fixed bin static options (constant) initial (3), 1 65 RTDT_version_2 fixed bin static options (constant) initial (2), 1 66 /* same format, but without precanon_proc */ 1 67 (N_MATES, N_SUBTYPES, N_CHARGE_TYPES) fixed bin, 1 68 RTDT_area_len fixed bin (18); 1 69 1 70 dcl (rtdep, rtdtp, cttp) pointer; 1 71 1 72 /* ---------------- END include file rtdt.incl.pl1 ---------------- */ 100 101 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 102 103 4 1 4 2 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 4 3 4 4 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 4 5 4 6 /* This include file contains branch and link structures returned by 4 7* hcs_$status_ and hcs_$status_long. */ 4 8 4 9 dcl 1 status_branch aligned based (status_ptr), 4 10 2 short aligned, 4 11 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 4 12 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 4 13 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 4 14 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 4 15 3 dtu bit (36) unaligned, /* date/time last used */ 4 16 3 mode bit (5) unaligned, /* caller's effective access */ 4 17 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 4 18 3 pad1 bit (8) unaligned, 4 19 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 4 20 4 21 /* Limit of information returned by hcs_$status_ */ 4 22 4 23 2 long aligned, 4 24 3 dtd bit (36) unaligned, /* date/time last dumped */ 4 25 3 dtem bit (36) unaligned, /* date/time branch last modified */ 4 26 3 lvid bit (36) unaligned, /* logical volume ID */ 4 27 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 4 28 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 4 29 3 pad2 bit (8) unaligned, 4 30 3 copy_switch bit (1) unaligned, /* copy switch */ 4 31 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 4 32 3 mdir_switch bit (1) unaligned, /* is a master dir */ 4 33 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 4 34 3 pad3 bit (6) unaligned, 4 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 4 36 3 uid bit (36) unaligned; /* unique ID */ 4 37 4 38 dcl 1 status_link aligned based (status_ptr), 4 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 4 40 2 nnames fixed bin (16) unaligned unsigned, 4 41 2 names_relp bit (18) unaligned, 4 42 2 dtem bit (36) unaligned, 4 43 2 dtd bit (36) unaligned, 4 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 4 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 4 46 4 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 4 48 based (pointer (status_area_ptr, status_branch.names_relp)), 4 49 /* array of names returned */ 4 50 status_pathname character (status_link.pathname_length) aligned 4 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 4 52 /* link target path */ 4 53 status_area_ptr pointer, 4 54 status_ptr pointer; 4 55 4 56 dcl (Link initial (0), 4 57 Segment initial (1), 4 58 Directory initial (2)) fixed bin internal static options (constant); 4 59 /* values for type fields declared above */ 4 60 4 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 104 105 106 dcl 1 status_branch_long automatic aligned like status_branch; 107 5 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 5 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 5 3 /* version number changed to 4, 08/10/78 WOS */ 5 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 5 5 5 6 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 5 7 2 version fixed bin, /* version of this structure - must be set, see below */ 5 8 2 switches aligned, /* various bit switch values */ 5 9 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 5 10 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 5 11 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 5 12 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 5 13 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 5 14 3 padding bit (31) unaligned init (""b), /* pads it out to t word */ 5 15 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 5 16 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 5 17 5 18 /* Limit of data defined for version 2 */ 5 19 5 20 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 5 21 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 5 22 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 5 23 /* minimum of 30 seconds required for repeat */ 5 24 /* otherwise, no repeat will occur */ 5 25 /* Limit of data defined for version 4 */ 5 26 5 27 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 5 28 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 5 29 5 30 dcl query_info_version_3 fixed bin int static options (constant) init (3); 5 31 dcl query_info_version_4 fixed bin int static options (constant) init (4); 5 32 dcl query_info_version_5 fixed bin int static options (constant) init (5); /* the current version number */ 5 33 5 34 /* END INCLUDE FILE query_info.incl.pl1 */ 108 109 110 call cu_$arg_count (nargs); 111 if nargs = 0 then do; 112 call com_err_ (error_table_$noarg, "reconstruct_registry", "Usage: reconstruct_registry paths"); 113 return; 114 end; 115 116 rtdtp, 117 arg_array_ptr, 118 registry_data_ptr, 119 star_entry_ptr, 120 star_names_ptr = null; 121 122 if system_free_ptr = null then 123 system_free_ptr = get_system_free_area_ (); 124 125 on cleanup call clean_up; 126 127 dirname = sys_dirname; 128 call hcs_$initiate (">system_control_1", "rtdt", "", 0, 0, rtdtp, code); 129 if rtdtp = null then call crump (code, "Cannot initiate >sc1>rtdt."); 130 131 New_max = max (20, nargs); 132 allocate registry_data in (system_free_area); 133 allocate arg_array in (system_free_area); 134 135 do i = 1 to nargs; 136 call cu_$arg_ptr (i, ap, al, code); 137 if code ^= 0 then call crump (code, "Obtaining arguments"); 138 139 if substr (arg, 1, 1) = "-" then do; 140 if arg = "-pn" | arg = "-pathname" then do; 141 i = i + 1; 142 call cu_$arg_ptr (i, ap, al, code); 143 if code ^= 0 then call crump (code, "after -pathname."); 144 call absolute_pathname_ (arg, dirname, code); 145 if code ^= 0 then call crump (code, arg); 146 147 call hcs_$terminate_noname (rtdtp, 0); 148 149 call hcs_$initiate (dirname, "rtdt", "", 0, 0, rtdtp, code); 150 if rtdtp = null then call crump (code, rtrim (dirname) || ">rtdt"); 151 end; 152 else call crump (error_table_$badopt, arg); 153 end; 154 155 else do; 156 arg_array.used_entries = arg_array.used_entries + 1; 157 arg_array.arg (arg_array.used_entries) = arg; 158 end; 159 end; 160 161 do i = 1 to arg_array.used_entries; 162 call suffixed_name_$make (arg_array.arg (i), "rcpr", temp_ename, code); 163 if code ^= 0 then call crump (code, arg_array.arg (i)); 164 165 call check_star_name_$entry (temp_ename, code); 166 if code > 2 then call crump (code, temp_ename); 167 168 if code = 0 then call add_to_list (temp_ename); /* not a starname */ 169 170 else do; /* starname, handle it */ 171 call hcs_$star_ (dirname, temp_ename, star_BRANCHES_ONLY, system_free_ptr, 172 star_entry_count, star_entry_ptr, star_names_ptr, code); 173 174 if code ^= 0 then call crump (code, "^a>^a"); 175 176 do star_index = 1 to star_entry_count; 177 call add_to_list ((star_names (star_entries (star_index).nindex))); 178 end; 179 180 free star_names in (system_free_area), star_entries in (system_free_area); 181 end; 182 end; 183 184 free arg_array in (system_free_area); 185 186 187 /* Now we have all the names. Get status about them all. */ 188 189 do i = 1 to registry_data.used_entries; 190 call hcs_$status_long (dirname, ename (i), 1 /* chase */, addr (status_branch_long), null, code); 191 if code ^= 0 then call crump (code, rtrim (dirname) || ">" || ename (i)); 192 193 registry_data.uid (i) = status_branch_long.uid; 194 registry_data.dtcm (i) = binary (status_branch_long.dtcm || (16) "0"b); /* convert fs time to clock time */ 195 196 do j = 1 to 2 while (rtde_ptr (i) = null); /* two chances to chase down a synonym */ 197 found = ""b; 198 199 do rtdep = pointer (rtdt.first_resource, rtdt.rtdt_area) 200 repeat (pointer (rtde.next_resource, rtdt.rtdt_area)) 201 while (rtdep ^= null); 202 203 if rtde.valid then 204 if rtde.name = resource_type (i) then do; 205 found = "1"b; 206 if ^rtde.is_synonym then 207 rtde_ptr (i) = rtdep; 208 else resource_type = rtde.syn_to; 209 end; 210 end; 211 212 if ^found then 213 call crump (error_table_$resource_unknown, resource_type (i)); 214 end; 215 216 if rtde_ptr (i) = null then 217 call crump (error_table_$resource_unknown, resource_type (i)); 218 end; 219 220 /* Eliminate duplicates that may have arisen from fancy starnames */ 221 222 do i = 1 by 1 while (i ^> registry_data.used_entries); 223 do j = i+1 by 1 while (j ^> registry_data.used_entries); 224 if registry_data.uid (i) = registry_data.uid (j) then do; 225 do k = registry_data.used_entries - 1 to j by -1; 226 unspec (registry_data.entry (k)) = unspec (registry_data.entry (k+1)); 227 end; 228 j = j - 1; /* examine the "current" one again, it's new. */ 229 registry_data.used_entries = registry_data.used_entries - 1; 230 end; 231 end; 232 end; 233 234 /* ------------------------- */ 235 236 clean_up: proc; 237 if star_names_ptr ^= null then free star_names in (system_free_area); 238 /* remember to free names before entries! */ 239 if star_entry_ptr ^= null then free star_entries in (system_free_area); 240 if registry_data_ptr ^= null then free registry_data in (system_free_area); 241 if arg_array_ptr ^= null then free arg_array in (system_free_area); 242 call hcs_$terminate_noname (rtdtp, 0); 243 244 end; 245 246 /* ------------------------- */ 247 248 begin; 249 250 dcl enames (registry_data.used_entries) char (32) automatic, 251 rtde_ptrs (registry_data.used_entries) pointer automatic; 252 253 do i = 1 to hbound (enames, 1); 254 enames (i) = registry_data.ename (i); 255 rtde_ptrs (i) = registry_data.rtde_ptr (i); 256 end; 257 258 do i = 1, i+1 to hbound (sleep_times, 1) + 1 while (code = error_table_$file_busy); 259 260 call rcp_sys_$reconstruct_registry (dirname, enames (*), rtde_ptrs (*), code); 261 262 if code = error_table_$file_busy then 263 if i ^> hbound (sleep_times, 1) then 264 call timer_manager_$sleep (sleep_times (i), "11"b); /* relative seconds */ 265 end; 266 end; 267 268 if code ^= 0 then call com_err_ (code, "reconstruct_registry", "Reconstructing ^a>^a", 269 dirname, temp_ename); 270 271 return; 272 273 add_to_list: proc (arg_ename); 274 275 dcl arg_ename char (32) parameter; 276 277 dcl i fixed bin, 278 tp pointer; 279 280 if registry_data.used_entries = registry_data.max_entries then do; 281 tp = null; 282 283 on cleanup begin; 284 if tp ^= null then free tp -> registry_data in (system_free_area); 285 end; 286 287 New_max = registry_data.max_entries + 20; 288 allocate registry_data in (system_free_area) set (tp); 289 290 unspec (tp -> registry_data.entry (*)) = unspec (registry_data_ptr -> registry_data.entry (*)); 291 tp -> registry_data.used_entries = registry_data_ptr -> registry_data.used_entries; 292 293 free registry_data_ptr -> registry_data in (system_free_area); 294 295 296 registry_data_ptr = tp; 297 tp = null; 298 revert cleanup; 299 end; 300 301 i, registry_data.used_entries = registry_data.used_entries + 1; 302 ename (i) = arg_ename; 303 resource_type (i) = before (arg_ename, ".rcpr"); 304 rtde_ptr (i) = null; 305 306 return; 307 308 end add_to_list; 309 310 311 crump: proc (code, reason); 312 313 dcl code fixed bin (35) parameter, 314 reason char (*) parameter; 315 316 call com_err_ (code, "reconstruct_registry", reason, dirname, temp_ename); 317 goto returner; 318 end crump; 319 320 returner: return; 321 322 end reconstruct_registry; 323 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1522.3 reconstruct_registry.pl1 >dumps>old>recomp>reconstruct_registry.pl1 100 1 11/20/79 2015.6 rtdt.incl.pl1 >ldd>include>rtdt.incl.pl1 1-4 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 102 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 104 4 09/26/79 1144.9 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 108 5 08/12/81 0911.2 query_info_.incl.pl1 >ldd>include>query_info.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. New_max 000201 automatic fixed bin(17,0) dcl 32 set ref 131* 132 132 287* 288 288 absolute_pathname_ 000032 constant entry external dcl 73 ref 144 al 000104 automatic fixed bin(17,0) dcl 18 set ref 136* 139 140 140 142* 144 144 145 145 152 152 157 answer_iocbp 6 000234 automatic pointer initial level 2 dcl 5-6 set ref 5-6* ap 000100 automatic pointer dcl 18 set ref 136* 139 140 140 142* 144 145 152 157 arg based char unaligned dcl 67 in procedure "reconstruct_registry" set ref 139 140 140 144* 145* 152* 157 arg 2 based char(32) array level 2 in structure "arg_array" packed unaligned dcl 62 in procedure "reconstruct_registry" set ref 157* 162* 163* arg_array based structure level 1 dcl 62 set ref 133 184 241 arg_array_ptr 000102 automatic pointer dcl 18 set ref 116* 133* 156 156 157 157 161 162 163 184 241 241 arg_ename parameter char(32) unaligned dcl 275 ref 273 302 303 check_star_name_$entry 000022 constant entry external dcl 73 ref 165 cleanup 000202 stack reference condition dcl 97 ref 125 283 298 code parameter fixed bin(35,0) dcl 313 in procedure "crump" set ref 311 316* code 000105 automatic fixed bin(35,0) dcl 18 in procedure "reconstruct_registry" set ref 128* 129* 136* 137 137* 142* 143 143* 144* 145 145* 149* 150* 162* 163 163* 165* 166 166* 168 171* 174 174* 190* 191 191* 260* 262 265 268 268* com_err_ 000024 constant entry external dcl 73 ref 112 268 316 cp_escape_control 1(02) 000234 automatic bit(2) initial level 3 packed unaligned dcl 5-6 set ref 5-6* cu_$arg_count 000026 constant entry external dcl 73 ref 110 cu_$arg_ptr 000030 constant entry external dcl 73 ref 136 142 dirname 000117 automatic char(168) unaligned dcl 18 set ref 127* 144* 149* 150 171* 190* 191 260* 268* 316* dtcm 22 based fixed bin(71,0) array level 3 in structure "registry_data" dcl 52 in procedure "reconstruct_registry" set ref 194* dtcm 1 000222 automatic bit(36) level 3 in structure "status_branch_long" packed unaligned dcl 106 in procedure "reconstruct_registry" set ref 194 ename 2 based char(32) array level 3 packed unaligned dcl 52 set ref 190* 191 254 302* enames 000100 automatic char(32) array unaligned dcl 250 set ref 253 254* 260* entry 2 based structure array level 2 dcl 52 set ref 226* 226 290* 290 error_table_$badopt 000016 external static fixed bin(35,0) dcl 44 set ref 152* error_table_$file_busy 000020 external static fixed bin(35,0) dcl 44 ref 262 265 error_table_$noarg 000012 external static fixed bin(35,0) dcl 44 set ref 112* error_table_$resource_unknown 000014 external static fixed bin(35,0) dcl 44 set ref 212* 216* explanation_len 14 000234 automatic fixed bin(21,0) initial level 2 dcl 5-6 set ref 5-6* explanation_ptr 12 000234 automatic pointer initial level 2 dcl 5-6 set ref 5-6* first_resource 40 based offset level 2 dcl 1-3 ref 199 fixed_info based structure level 2 dcl 1-16 flags 61 based structure level 3 packed unaligned dcl 1-16 found 000106 automatic bit(1) dcl 18 set ref 197* 205* 212 get_system_free_area_ 000034 constant entry external dcl 73 ref 122 hbound builtin function dcl 97 ref 253 258 262 hcs_$initiate 000036 constant entry external dcl 73 ref 128 149 hcs_$star_ 000042 constant entry external dcl 73 ref 171 hcs_$status_long 000044 constant entry external dcl 73 ref 190 hcs_$terminate_noname 000040 constant entry external dcl 73 ref 147 242 i 000100 automatic fixed bin(17,0) dcl 277 in procedure "add_to_list" set ref 301* 302 303 304 i 000107 automatic fixed bin(17,0) dcl 18 in procedure "reconstruct_registry" set ref 135* 136* 141* 141 142* 161* 162 163* 189* 190 191 193 194 196 203 206 212 216 216* 222* 222* 223 224* 253* 254 254 255 255* 258* 258* 262 262* is_synonym 61(05) based bit(1) level 4 packed unaligned dcl 1-16 ref 206 j 000110 automatic fixed bin(17,0) dcl 18 set ref 196* 223* 223* 224 225 228* 228* k 000111 automatic fixed bin(17,0) dcl 18 set ref 225* 226 226* long 4 000222 automatic structure level 2 dcl 106 max_entries based fixed bin(17,0) level 2 in structure "arg_array" dcl 62 in procedure "reconstruct_registry" set ref 133* 184 241 max_entries based fixed bin(17,0) level 2 in structure "registry_data" dcl 52 in procedure "reconstruct_registry" set ref 132* 208 240 280 284 287 288* 290 290 293 name 1 based char(32) level 3 dcl 1-16 ref 203 nargs 000112 automatic fixed bin(17,0) dcl 18 set ref 110* 111 131 133 133 135 next_resource based offset level 3 dcl 1-16 ref 210 nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 3-27 ref 177 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 3-27 ref 180 237 null builtin function dcl 97 ref 116 122 129 150 190 190 196 199 216 5-6 5-6 5-6 237 239 240 241 281 284 297 304 padding 1(05) 000234 automatic bit(31) initial level 3 packed unaligned dcl 5-6 set ref 5-6* query_code 3 000234 automatic fixed bin(35,0) initial level 2 dcl 5-6 set ref 5-6* query_info 000234 automatic structure level 1 dcl 5-6 question_iocbp 4 000234 automatic pointer initial level 2 dcl 5-6 set ref 5-6* rcp_sys_$reconstruct_registry 000052 constant entry external dcl 92 ref 260 reason parameter char unaligned dcl 313 set ref 311 316* registration_defaults 602 based structure level 3 dcl 1-16 registry_data based structure level 1 dcl 52 set ref 132 240 284 288 293 registry_data_ptr 000114 automatic pointer dcl 18 set ref 116* 132* 189 190 191 193 194 196 203 206 208 212 216 216 222 223 224 224 225 226 226 229 229 240 240 250 250 254 255 280 280 287 290 291 293 296* 301 301 302 303 304 repeat_time 10 000234 automatic fixed bin(71,0) initial level 2 dcl 5-6 set ref 5-6* resource_type 12 based char(32) array level 3 packed unaligned dcl 52 set ref 203 208* 212* 216* 303* rtde based structure level 1 dcl 1-16 rtde_ptr 24 based pointer array level 3 dcl 52 set ref 196 206* 216 255 304* rtde_ptrs 000100 automatic pointer array dcl 250 set ref 255* 260* rtdep 000210 automatic pointer dcl 1-70 set ref 199* 199* 203 203 206 206 208* 210 rtdt based structure level 1 dcl 1-3 rtdt_area 42 based area level 2 dcl 1-3 ref 199 210 rtdtp 000212 automatic pointer dcl 1-70 set ref 116* 128* 129 147* 149* 150 199 199 210 242* short 000222 automatic structure level 2 dcl 106 sleep_times 000052 constant fixed bin(71,0) initial array dcl 38 set ref 258 262 262* star_BRANCHES_ONLY 000111 constant fixed bin(2,0) initial dcl 3-110 set ref 171* star_entries based structure array level 1 dcl 3-27 ref 180 239 star_entry_count 000214 automatic fixed bin(17,0) dcl 3-14 set ref 171* 176 180 180 237 239 star_entry_ptr 000216 automatic pointer dcl 3-15 set ref 116* 171* 177 180 180 237 239 239 star_index 000116 automatic fixed bin(17,0) dcl 18 set ref 176* 177* star_names based char(32) array unaligned dcl 3-37 ref 177 180 237 star_names_ptr 000220 automatic pointer dcl 3-19 set ref 116* 171* 177 180 237 237 status_branch based structure level 1 dcl 4-9 status_branch_long 000222 automatic structure level 1 dcl 106 set ref 190 190 status_code 2 000234 automatic fixed bin(35,0) initial level 2 dcl 5-6 set ref 5-6* suffixed_name_$make 000046 constant entry external dcl 73 ref 162 sum builtin function dcl 97 ref 180 237 suppress_name_sw 1(01) 000234 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* suppress_spacing 1(04) 000234 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* switches 1 000234 automatic structure level 2 dcl 5-6 syn_to 11 based char(32) level 3 dcl 1-16 ref 208 sys_dirname 000000 constant char(168) initial unaligned dcl 40 ref 127 system_free_area based area(1024) dcl 69 ref 132 133 180 180 184 237 239 240 241 284 288 293 system_free_ptr 000010 internal static pointer initial dcl 36 set ref 122 122* 132 133 171* 180 180 184 237 239 240 241 284 288 293 temp_ename 000171 automatic char(32) unaligned dcl 18 set ref 162* 165* 166* 168* 171* 268* 316* timer_manager_$sleep 000050 constant entry external dcl 73 ref 262 tp 000102 automatic pointer dcl 277 set ref 281* 284 284 288* 290 291 296 297* uid 26 based bit(36) array level 3 in structure "registry_data" dcl 52 in procedure "reconstruct_registry" set ref 193* 224 224 uid 11 000222 automatic bit(36) level 3 in structure "status_branch_long" packed unaligned dcl 106 in procedure "reconstruct_registry" set ref 193 used_entries 1 based fixed bin(17,0) initial level 2 in structure "arg_array" dcl 62 in procedure "reconstruct_registry" set ref 133* 156* 156 157 161 used_entries 1 based fixed bin(17,0) initial level 2 in structure "registry_data" dcl 52 in procedure "reconstruct_registry" set ref 132* 189 222 223 225 229* 229 250 250 280 288* 291* 291 301 301* valid 61 based bit(1) level 4 packed unaligned dcl 1-16 ref 203 yes_or_no_sw 1 000234 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Directory internal static fixed bin(17,0) initial dcl 4-56 Link internal static fixed bin(17,0) initial dcl 4-56 N_CHARGE_TYPES automatic fixed bin(17,0) dcl 1-64 N_MATES automatic fixed bin(17,0) dcl 1-64 N_SUBTYPES automatic fixed bin(17,0) dcl 1-64 RTDT_area_len automatic fixed bin(18,0) dcl 1-64 RTDT_version_2 internal static fixed bin(17,0) initial dcl 1-64 RTDT_version_3 internal static fixed bin(17,0) initial dcl 1-64 Segment internal static fixed bin(17,0) initial dcl 4-56 answer automatic varying char(4) dcl 18 charge_type_table based structure level 1 dcl 1-11 clock builtin function dcl 97 command_query_ 000000 constant entry external dcl 73 convert_date_to_binary_ 000000 constant entry external dcl 73 cttp automatic pointer dcl 1-70 date_time_ 000000 constant entry external dcl 73 dtcm_string automatic char(24) unaligned dcl 18 error_table_$bad_equal_name external static fixed bin(35,0) dcl 44 get_equal_name_ 000000 constant entry external dcl 73 get_wdir_ 000000 constant entry external dcl 73 ioa_ 000000 constant entry external dcl 73 query_info_version_3 internal static fixed bin(17,0) initial dcl 5-30 query_info_version_4 internal static fixed bin(17,0) initial dcl 5-31 query_info_version_5 internal static fixed bin(17,0) initial dcl 5-32 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 3-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 3-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 status_area_ptr automatic pointer dcl 4-47 status_entry_names based char(32) array dcl 4-47 status_link based structure level 1 dcl 4-38 status_pathname based char dcl 4-47 status_ptr automatic pointer dcl 4-47 NAMES DECLARED BY EXPLICIT CONTEXT. add_to_list 002340 constant entry internal dcl 273 ref 168 177 clean_up 002233 constant entry internal dcl 236 ref 125 crump 002512 constant entry internal dcl 311 ref 129 137 143 145 150 152 163 166 174 191 212 216 reconstruct_registry 000202 constant entry external dcl 11 returner 002232 constant label dcl 320 ref 317 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 190 190 before builtin function ref 303 binary builtin function ref 194 max builtin function ref 131 pointer builtin function ref 199 210 rtrim builtin function ref 150 191 substr builtin function ref 139 unspec builtin function set ref 226 226 290* 290 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3050 3124 2576 3060 Length 3436 2576 54 275 252 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME reconstruct_registry 285 external procedure is an external procedure. on unit on line 125 78 on unit clean_up internal procedure shares stack frame of on unit on line 125. begin block on line 248 104 begin block uses auto adjustable storage. add_to_list 75 internal procedure enables or reverts conditions. on unit on line 283 64 on unit crump 94 internal procedure is called during a stack extension. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr reconstruct_registry STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add_to_list 000100 i add_to_list 000102 tp add_to_list begin block on line 248 000100 enames begin block on line 248 000100 rtde_ptrs begin block on line 248 reconstruct_registry 000100 ap reconstruct_registry 000102 arg_array_ptr reconstruct_registry 000104 al reconstruct_registry 000105 code reconstruct_registry 000106 found reconstruct_registry 000107 i reconstruct_registry 000110 j reconstruct_registry 000111 k reconstruct_registry 000112 nargs reconstruct_registry 000114 registry_data_ptr reconstruct_registry 000116 star_index reconstruct_registry 000117 dirname reconstruct_registry 000171 temp_ename reconstruct_registry 000201 New_max reconstruct_registry 000210 rtdep reconstruct_registry 000212 rtdtp reconstruct_registry 000214 star_entry_count reconstruct_registry 000216 star_entry_ptr reconstruct_registry 000220 star_names_ptr reconstruct_registry 000222 status_branch_long reconstruct_registry 000234 query_info reconstruct_registry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs enter_begin leave_begin call_ext_out_desc call_ext_out call_int_this_desc call_int_this return tra_ext alloc_auto_adj mpfx2 enable shorten_stack ext_entry int_entry int_entry_desc pointer_hard set_cs_eis alloc_based free_based index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ check_star_name_$entry com_err_ cu_$arg_count cu_$arg_ptr get_system_free_area_ hcs_$initiate hcs_$star_ hcs_$status_long hcs_$terminate_noname rcp_sys_$reconstruct_registry suffixed_name_$make timer_manager_$sleep THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$file_busy error_table_$noarg error_table_$resource_unknown LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000201 5 6 000207 110 000233 111 000241 112 000243 113 000275 116 000276 122 000304 125 000317 127 000335 128 000340 129 000410 131 000433 132 000440 133 000453 135 000466 136 000474 137 000511 139 000535 140 000542 141 000553 142 000554 143 000571 144 000615 145 000641 147 000662 149 000674 150 000741 151 001007 152 001011 153 001031 156 001032 157 001034 159 001043 161 001045 162 001055 163 001111 165 001134 166 001151 168 001170 171 001201 174 001244 176 001264 177 001273 178 001312 180 001314 182 001344 184 001346 189 001353 190 001363 191 001433 193 001514 194 001521 196 001527 197 001543 199 001544 203 001555 205 001572 206 001574 208 001602 210 001622 212 001630 214 001654 216 001656 218 001706 222 001710 223 001716 224 001724 225 001734 226 001744 227 001754 228 001757 229 001761 231 001764 232 001766 248 001770 250 001773 260 002011 253 002031 254 002041 255 002054 256 002063 258 002065 260 002071 262 002117 265 002142 266 002165 268 002166 271 002231 320 002232 236 002233 237 002234 239 002270 240 002277 241 002311 242 002323 244 002336 273 002337 280 002345 281 002352 283 002354 284 002370 285 002402 287 002403 288 002407 290 002424 291 002437 293 002441 296 002446 297 002451 298 002453 301 002454 302 002462 303 002471 304 002505 306 002510 311 002511 316 002525 317 002565 ----------------------------------------------------------- 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