COMPILATION LISTING OF SEGMENT copy_registry Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/13/85 1147.9 mst Wed 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 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 12 copy_registry: proc; 13 14 /* This command copies RCP registries. */ 15 /* Written 01/03/79 by C. D. Tavares */ 16 /* Last modified 10/03/80 by CDT for better error message when copy fails */ 17 /* Modified 02/12/85 by M. M. Pozzo to print out warning message when there 18* are one or more missing components in the original registry. */ 19 20 /* automatic */ 21 22 dcl ap pointer, 23 al fixed bin, 24 arg char (al) based (ap), 25 code fixed bin (35), 26 i fixed bin, 27 from_dirname char (168), 28 to_dirname char (168), 29 from_ename char (32), 30 to_ename char (32), 31 error_msg_arg char (200), 32 nargs fixed bin, 33 reset_journal_sw bit (1) aligned, 34 star_index fixed bin; 35 36 37 /* static */ 38 39 dcl system_free_ptr pointer initial (null) static; 40 41 /* external static */ 42 43 dcl (error_table_$badequal, 44 error_table_$noarg, 45 error_table_$badopt, 46 error_table_$rcp_missing_registry_component) ext fixed bin (35) static; 47 48 /* based */ 49 50 dcl system_free_area area based (system_free_ptr); 51 52 /* entries */ 53 54 dcl check_star_name_$entry ext entry (char (*), fixed bin (35)), 55 com_err_ ext entry options (variable), 56 cu_$arg_count ext entry (fixed bin), 57 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 58 expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)), 59 get_equal_name_ ext entry (char (*), char (*), char (*), fixed bin (35)), 60 hcs_$star_ ext entry (char (*), char (*), fixed bin (2), pointer, fixed bin, pointer, pointer, fixed bin (35)), 61 get_system_free_area_ ext entry returns (pointer), 62 get_wdir_ ext entry returns (char (168)); 63 64 dcl rcp_admin_$copy_registry ext entry 65 (char (*), char (*) dimension (*), char (*), char (*) dimension (*), 66 char (*), bit (1) aligned, fixed bin (35)); 67 68 /* builtins and conditions */ 69 70 dcl (dim, hbound, null, substr, sum) builtin, 71 cleanup condition; 72 1 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 1 2 1 3 /* This include file contains structures for the hcs_$star_, 1 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 1 5* 1 6* Written 23 October 1978 by Monte Davidoff. 1 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 1 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 1 9**/ 1 10 1 11 /* automatic */ 1 12 1 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 1 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 1 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 1 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 1 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 1 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 1 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 1 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 1 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 1 22 1 23 /* based */ 1 24 1 25 /* hcs_$star_ entry structure */ 1 26 1 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 1 28 2 type fixed binary (2) unsigned unaligned, 1 29 /* storage system type */ 1 30 2 nnames fixed binary (16) unsigned unaligned, 1 31 /* number of names of entry that match star_name */ 1 32 2 nindex fixed binary (18) unsigned unaligned; 1 33 /* index of first name in star_names */ 1 34 1 35 /* hcs_$star_ name structure */ 1 36 1 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 1 38 1 39 /* hcs_$star_list_ branch structure */ 1 40 1 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 42 2 type fixed binary (2) unsigned unaligned, 1 43 /* storage system type */ 1 44 2 nnames fixed binary (16) unsigned unaligned, 1 45 /* number of names of entry that match star_name */ 1 46 2 nindex fixed binary (18) unsigned unaligned, 1 47 /* index of first name in star_list_names */ 1 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 1 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 1 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 53 2 pad bit (7) unaligned, 1 54 2 records fixed binary (18) unsigned unaligned; 1 55 /* records used by branch */ 1 56 1 57 /* hcs_$star_dir_list_ branch structure */ 1 58 1 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 60 2 type fixed binary (2) unsigned unaligned, 1 61 /* storage system type */ 1 62 2 nnames fixed binary (16) unsigned unaligned, 1 63 /* number of names of entry that match star_name */ 1 64 2 nindex fixed binary (18) unsigned unaligned, 1 65 /* index of first name in star_list_names */ 1 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 1 67 2 pad bit (36) unaligned, 1 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 71 2 bit_count fixed binary (24) unaligned; 1 72 /* bit count of the branch */ 1 73 1 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 1 75 1 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 77 2 type fixed binary (2) unsigned unaligned, 1 78 /* storage system type */ 1 79 2 nnames fixed binary (16) unsigned unaligned, 1 80 /* number of names of entry that match star_name */ 1 81 2 nindex fixed binary (18) unsigned unaligned, 1 82 /* index of first name in star_list_names */ 1 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 1 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 1 85 2 pathname_len fixed binary (18) unsigned unaligned, 1 86 /* length of the pathname of the link */ 1 87 2 pathname_index fixed binary (18) unsigned unaligned; 1 88 /* index of start of pathname in star_list_names */ 1 89 1 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 1 91 1 92 declare star_list_names char (32) based (star_list_names_ptr) 1 93 dimension (star_links (star_branch_count + star_link_count).nindex 1 94 + star_links (star_branch_count + star_link_count).nnames 1 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 1 96 * binary ( 1 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 1 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 1 99 1 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 1 101 1 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 1 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 1 104 1 105 /* internal static */ 1 106 1 107 /* star_select_sw values */ 1 108 1 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 1 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 1 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 1 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 1 113 fixed binary (3) internal static options (constant) initial (5); 1 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 1 115 fixed binary (3) internal static options (constant) initial (7); 1 116 1 117 /* storage system types */ 1 118 1 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 1 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 1 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 1 122 1 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 73 74 75 reset_journal_sw = ""b; 76 77 call cu_$arg_count (nargs); 78 if nargs < 1 then do; 79 call com_err_ (error_table_$noarg, "copy_registry", "Usage: copy_registry from_path {to_path}"); 80 return; 81 end; 82 83 from_ename = ""; 84 to_dirname = get_wdir_ (); 85 to_ename = "=="; 86 87 do i = 1 to nargs; 88 call cu_$arg_ptr (i, ap, al, code); 89 if code ^= 0 then call crump (code, "Getting argument."); 90 91 if substr (arg, 1, 1) = "-" then do; /* control arg */ 92 if arg = "-reset" | arg = "-rs" then reset_journal_sw = "1"b; 93 else call crump (error_table_$badopt, arg); 94 end; 95 96 else do; /* real argument */ 97 if from_ename = "" then 98 call expand_pathname_$add_suffix (arg, "rcpr", from_dirname, from_ename, code); 99 else call expand_pathname_$add_suffix (arg, "rcpr", to_dirname, to_ename, code); 100 if code ^= 0 then call crump (code, arg); 101 end; 102 end; 103 104 call check_star_name_$entry (from_ename, code); 105 if code > 2 then call crump (code, from_ename); 106 107 if code = 0 then call process ((from_ename)); /* not a starname */ 108 109 else do; /* starname, handle it */ 110 star_entry_ptr, star_names_ptr = null; 111 if system_free_ptr = null then 112 system_free_ptr = get_system_free_area_ (); 113 114 on cleanup call star_cleanup; 115 116 call hcs_$star_ (from_dirname, from_ename, star_BRANCHES_ONLY, system_free_ptr, 117 star_entry_count, star_entry_ptr, star_names_ptr, code); 118 119 if code ^= 0 then call crump (code, "^a>^a"); 120 121 begin; 122 123 dcl enames char (32) dimension (star_entry_count); 124 125 do star_index = 1 to star_entry_count; 126 enames (star_index) = star_names (star_entries (star_index).nindex); 127 end; 128 129 call process (enames (*)); 130 end; 131 132 call star_cleanup; 133 134 /* ------------------------- */ 135 136 star_cleanup: proc; 137 if star_names_ptr ^= null then free star_names in (system_free_area); 138 /* remember to free names before entries! */ 139 if star_entry_ptr ^= null then free star_entries in (system_free_area); 140 141 end; 142 143 /* ------------------------- */ 144 145 end; 146 147 return; 148 149 process: proc (from_enames); 150 151 dcl from_enames char (32) dimension (*) parameter; 152 153 dcl sleep_times (4) fixed bin (71) static options (constant) initial (1, 1, 2, 6), 154 timer_manager_$sleep ext entry (fixed bin (71), bit (2) aligned), 155 error_table_$file_busy ext fixed bin (35) static, 156 i fixed bin, 157 target_names char (32) dimension (dim (from_enames, 1)); 158 159 do i = 1 to hbound (from_enames, 1); 160 call get_equal_name_ (from_enames (i), to_ename, target_names (i), code); 161 if code = error_table_$badequal then code = 0; /* not an equal name but no sweat */ 162 if code ^= 0 then 163 call crump (code, to_ename); /* fatal */ 164 else do; 165 call expand_pathname_$add_suffix ((target_names (i)), "rcpr", "", target_names (i), code); 166 if code ^= 0 then call crump (code, arg); 167 end; 168 end; 169 170 /* Copy the registry and allow time for the file to be busy before giving up. */ 171 172 do i = 1, i+1 to hbound (sleep_times, 1) + 1 while (code = error_table_$file_busy); 173 174 call rcp_admin_$copy_registry 175 (from_dirname, from_enames (*), 176 to_dirname, target_names (*), error_msg_arg, 177 reset_journal_sw, code); 178 179 if code = error_table_$file_busy then 180 if i ^> hbound (sleep_times, 1) then 181 call timer_manager_$sleep (sleep_times (i), "11"b); /* relative seconds */ 182 end; 183 184 if code = error_table_$rcp_missing_registry_component then 185 call com_err_ (code, "copy_registry", error_msg_arg); 186 187 else if code ^= 0 then call com_err_ (code, "copy_registry", 188 "^[^/^-Some registries were not copied, starting with ^;^]^a.^[^/^-The journal has not been truncated.^;^]", 189 (substr (error_msg_arg, 1, 1) = ">"), error_msg_arg, reset_journal_sw); 190 191 return; 192 end process; 193 194 195 crump: proc (code, reason) options (non_quick); 196 197 dcl code fixed bin (35) parameter, 198 reason char (*) parameter; 199 200 call com_err_ (code, "copy_registry", reason, from_dirname, from_ename); 201 goto returner; 202 end crump; 203 204 returner: return; 205 206 end copy_registry; 207 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/13/85 1029.0 copy_registry.pl1 >spec>on>41-11>copy_registry.pl1 73 1 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.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. al 000102 automatic fixed bin(17,0) dcl 22 set ref 88* 91 92 92 93 93 97 97 99 99 100 100 166 166 ap 000100 automatic pointer dcl 22 set ref 88* 91 92 92 93 97 99 100 166 arg based char unaligned dcl 22 set ref 91 92 92 93* 97* 99* 100* 166* check_star_name_$entry 000022 constant entry external dcl 54 ref 104 cleanup 000336 stack reference condition dcl 70 ref 114 code parameter fixed bin(35,0) dcl 197 in procedure "crump" set ref 195 200* code 000103 automatic fixed bin(35,0) dcl 22 in procedure "copy_registry" set ref 88* 89 89* 97* 99* 100 100* 104* 105 105* 107 116* 119 119* 160* 161 161* 162 162* 165* 166 166* 174* 179 182 184 184* 187 187* com_err_ 000024 constant entry external dcl 54 ref 79 184 187 200 cu_$arg_count 000026 constant entry external dcl 54 ref 77 cu_$arg_ptr 000030 constant entry external dcl 54 ref 88 dim builtin function dcl 70 ref 153 enames 000100 automatic char(32) array unaligned dcl 123 set ref 126* 129* error_msg_arg 000251 automatic char(200) unaligned dcl 22 set ref 174* 184* 187 187* error_table_$badequal 000012 external static fixed bin(35,0) dcl 43 ref 161 error_table_$badopt 000016 external static fixed bin(35,0) dcl 43 set ref 93* error_table_$file_busy 000050 external static fixed bin(35,0) dcl 153 ref 179 182 error_table_$noarg 000014 external static fixed bin(35,0) dcl 43 set ref 79* error_table_$rcp_missing_registry_component 000020 external static fixed bin(35,0) dcl 43 ref 184 expand_pathname_$add_suffix 000032 constant entry external dcl 54 ref 97 99 165 from_dirname 000105 automatic char(168) unaligned dcl 22 set ref 97* 116* 174* 200* from_ename 000231 automatic char(32) unaligned dcl 22 set ref 83* 97 97* 104* 105* 107 116* 200* from_enames parameter char(32) array unaligned dcl 151 set ref 149 153 159 160* 174* get_equal_name_ 000034 constant entry external dcl 54 ref 160 get_system_free_area_ 000040 constant entry external dcl 54 ref 111 get_wdir_ 000042 constant entry external dcl 54 ref 84 hbound builtin function dcl 70 ref 159 172 179 hcs_$star_ 000036 constant entry external dcl 54 ref 116 i 000104 automatic fixed bin(17,0) dcl 22 in procedure "copy_registry" set ref 87* 88* i 000100 automatic fixed bin(17,0) dcl 153 in procedure "process" set ref 159* 160 160 165 165* 172* 172* 179 179* nargs 000333 automatic fixed bin(17,0) dcl 22 set ref 77* 78 87 nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 1-27 ref 126 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 1-27 ref 137 null builtin function dcl 70 ref 110 111 137 139 rcp_admin_$copy_registry 000044 constant entry external dcl 64 ref 174 reason parameter char unaligned dcl 197 set ref 195 200* reset_journal_sw 000334 automatic bit(1) dcl 22 set ref 75* 92* 174* 187* sleep_times 000000 constant fixed bin(71,0) initial array dcl 153 set ref 172 179 179* star_BRANCHES_ONLY 000021 constant fixed bin(2,0) initial dcl 1-110 set ref 116* star_entries based structure array level 1 dcl 1-27 ref 139 star_entry_count 000344 automatic fixed bin(17,0) dcl 1-14 set ref 116* 123 125 137 139 star_entry_ptr 000346 automatic pointer dcl 1-15 set ref 110* 116* 126 137 139 139 star_index 000335 automatic fixed bin(17,0) dcl 22 set ref 125* 126 126* star_names based char(32) array unaligned dcl 1-37 ref 126 137 star_names_ptr 000350 automatic pointer dcl 1-19 set ref 110* 116* 126 137 137 substr builtin function dcl 70 ref 91 187 sum builtin function dcl 70 ref 137 system_free_area based area(1024) dcl 50 ref 137 139 system_free_ptr 000010 internal static pointer initial dcl 39 set ref 111 111* 116* 137 139 target_names 000101 automatic char(32) array unaligned dcl 153 set ref 160* 165 165* 174* timer_manager_$sleep 000046 constant entry external dcl 153 ref 179 to_dirname 000157 automatic char(168) unaligned dcl 22 set ref 84* 99* 174* to_ename 000241 automatic char(32) unaligned dcl 22 set ref 85* 99* 160* 162* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 1-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 1-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 1-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 1-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 1-120 star_branch_count automatic fixed bin(17,0) dcl 1-13 star_dir_list_branch based structure array level 1 dcl 1-59 star_link_count automatic fixed bin(17,0) dcl 1-17 star_link_pathname based char unaligned dcl 1-102 star_links based structure array level 1 dcl 1-76 star_linkx automatic fixed bin(17,0) dcl 1-18 star_list_branch based structure array level 1 dcl 1-41 star_list_branch_ptr automatic pointer dcl 1-16 star_list_names based char(32) array unaligned dcl 1-92 star_list_names_ptr automatic pointer dcl 1-20 star_select_sw automatic fixed bin(3,0) dcl 1-21 NAMES DECLARED BY EXPLICIT CONTEXT. copy_registry 000140 constant entry external dcl 12 crump 001510 constant entry internal dcl 195 ref 89 93 100 105 119 162 166 process 001040 constant entry internal dcl 149 ref 107 129 returner 000764 constant label dcl 204 ref 201 star_cleanup 000766 constant entry internal dcl 136 ref 114 132 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2032 2104 1566 2042 Length 2326 1566 52 205 244 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME copy_registry 328 external procedure is an external procedure. on unit on line 114 64 on unit begin block on line 121 82 begin block uses auto adjustable storage. star_cleanup 64 internal procedure is called by several nonquick procedures. process 178 internal procedure uses auto adjustable storage. crump 92 internal procedure is declared options(non_quick). STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr copy_registry STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 121 000100 enames begin block on line 121 copy_registry 000100 ap copy_registry 000102 al copy_registry 000103 code copy_registry 000104 i copy_registry 000105 from_dirname copy_registry 000157 to_dirname copy_registry 000231 from_ename copy_registry 000241 to_ename copy_registry 000251 error_msg_arg copy_registry 000333 nargs copy_registry 000334 reset_journal_sw copy_registry 000335 star_index copy_registry 000344 star_entry_count copy_registry 000346 star_entry_ptr copy_registry 000350 star_names_ptr copy_registry process 000100 i process 000101 target_names process THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as enter_begin leave_begin call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext alloc_auto_adj mpfx2 enable ext_entry int_entry int_entry_desc free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ cu_$arg_count cu_$arg_ptr expand_pathname_$add_suffix get_equal_name_ get_system_free_area_ get_wdir_ hcs_$star_ rcp_admin_$copy_registry timer_manager_$sleep THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badequal error_table_$badopt error_table_$file_busy error_table_$noarg error_table_$rcp_missing_registry_component LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000137 75 000145 77 000146 78 000154 79 000157 80 000207 83 000210 84 000213 85 000222 87 000225 88 000235 89 000252 91 000276 92 000303 93 000317 94 000337 97 000340 99 000403 100 000441 102 000462 104 000464 105 000501 107 000520 110 000547 111 000552 114 000565 116 000607 119 000652 121 000672 123 000675 129 000704 125 000714 126 000724 127 000743 129 000745 130 000756 132 000757 147 000763 204 000764 136 000765 137 000773 139 001027 141 001036 149 001037 153 001045 160 001061 174 001063 159 001073 160 001103 161 001154 162 001162 165 001202 166 001243 168 001266 172 001270 174 001274 179 001337 182 001362 184 001403 187 001435 191 001506 195 001507 200 001523 201 001561 ----------------------------------------------------------- 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