COMPILATION LISTING OF SEGMENT copy_seg_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/25/83 1540.4 mst Tue Options: optimize map 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* ************************************************************** */ 8 9 10 11 copy_seg_: 12 proc (P_source_dir, P_source_name, P_target_dir, P_target_name, P_caller, P_error_sw, P_code); 13 14 /* This is a replacement for the old copy_seg_. It is just a write-around for copy_ 15* 16* Jay Pattin 6/29/83 */ 17 18 declare (P_source_dir, P_source_name, P_target_dir, P_target_name, P_caller) 19 char (*) parameter, 20 P_error_sw bit (1) aligned parameter, 21 P_code fixed bin (35) parameter; 22 23 declare 1 cpo aligned like copy_options, 24 1 cei aligned like copy_error_info, 25 1 ci aligned like condition_info; 26 27 declare brief bit (1) aligned, 28 code fixed bin (35), 29 message char (100) aligned, 30 no_message bit (1) aligned; 31 32 declare error_table_$fatal_error fixed bin (35) external, 33 iox_$error_output ptr external, 34 string builtin, 35 sub_error_ condition; 36 37 declare continue_to_signal_ entry (fixed bin (35)), 38 convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned), 39 copy_ entry (ptr), 40 find_condition_info_ entry (ptr, ptr, fixed bin (35)), 41 ioa_$ioa_switch entry options (variable); 42 1 1 /* BEGIN INCLUDE FILE: copy_options.incl.pl1 */ 1 2 1 3 /* This structure declares the input structure used by the copy_ subroutine. 1 4* 1 5* NOTE: This include file depends on declarations in the include file 1 6* copy_flags.incl.pl1. 1 7* 1 8* Jay Pattin 6/1/83 */ 1 9 1 10 declare copy_options_ptr ptr; 1 11 1 12 declare 1 copy_options aligned based (copy_options_ptr), 1 13 2 version char (8), /* currently COPY_OPTIONS_VERSION_1 */ 1 14 2 caller_name char (32) unal, /* Used in nd_handler_ call */ 1 15 2 source_dir char (168) unal, 1 16 2 source_name char (32) unal, 1 17 2 target_dir char (168) unal, 1 18 2 target_name char (32) unal, 1 19 2 flags, 1 20 3 no_name_dup bit (1) unaligned, /* ON = don't call nd_handler_ */ 1 21 3 raw bit (1) unaligned, /* ON = don't call object_type_, use hcs_ */ 1 22 3 force bit (1) unaligned, /* ON = delete or force access to target */ 1 23 3 delete bit (1) unaligned, /* ON = delete original after copy (for move) */ 1 24 3 target_err_switch bit (1) unaligned, 1 25 3 mbz bit (31) unaligned, 1 26 2 copy_items like copy_flags; /* see copy_flags.incl.pl1 */ 1 27 1 28 declare COPY_OPTIONS_VERSION_1 char (8) static options (constant) init ("CPOPT001"); 1 29 1 30 /* END INCLUDE FILE: copy_options.incl.pl1 */ 43 44 2 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 2 2 2 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 2 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 2 5* 2 6* Jay Pattin 6/23/83 */ 2 7 2 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 2 9 2 names bit (1) unaligned, 2 10 2 acl bit (1) unaligned, 2 11 2 ring_brackets bit (1) unaligned, 2 12 2 max_length bit (1) unaligned, 2 13 2 copy_switch bit (1) unaligned, 2 14 2 safety_switch bit (1) unaligned, 2 15 2 dumper_switches bit (1) unaligned, 2 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 2 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 2 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 2 19 2 mbz bit (26) unaligned; 2 20 2 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 45 46 3 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 3 2 /* format: style2 */ 3 3 3 4 /* The include file condition_info_header must be used with this file */ 3 5 3 6 declare sub_error_info_ptr pointer; 3 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 3 8 2 header aligned like condition_info_header, 3 9 2 retval fixed bin (35), /* return value */ 3 10 2 name char (32), /* module name */ 3 11 2 info_ptr ptr; 3 12 3 13 declare sub_error_info_version_1 3 14 internal static options (constant) fixed bin init (1); 3 15 3 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 47 4 1 /* BEGIN INCLUDE FILE: copy_error_info.incl.pl1 4 2* 4 3* This is the structure pointed to by sub_error_info.info_ptr when copy_ 4 4* signals the sub_err_ condition. 4 5* 4 6* Jay Pattin 6/13/83 */ 4 7 4 8 declare 1 copy_error_info aligned based (sub_error_info.info_ptr), 4 9 2 copy_options_ptr ptr, /* Pointer to input argument of copy_ */ 4 10 2 operation char (32), /* Name of operation that failed. */ 4 11 2 target_err_switch bit (1) aligned; /* ON = error was on the target */ 4 12 4 13 /* END INCLUDE FILE: copy_error_info.incl.pl1 */ 48 5 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 5 2 /* format: style2 */ 5 3 5 4 declare condition_info_header_ptr 5 5 pointer; 5 6 declare 1 condition_info_header 5 7 aligned based (condition_info_header_ptr), 5 8 2 length fixed bin, /* length in words of this structure */ 5 9 2 version fixed bin, /* version number of this structure */ 5 10 2 action_flags aligned, /* tell handler how to proceed */ 5 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 5 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 5 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 5 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 5 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 5 16 3 pad bit (32) unaligned, 5 17 2 info_string char (256) varying, /* may contain printable message */ 5 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 5 19 5 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 49 6 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 6 2 6 3 /* Structure for find_condition_info_. 6 4* 6 5* Written 1-Mar-79 by M. N. Davidoff. 6 6**/ 6 7 6 8 /* automatic */ 6 9 6 10 declare condition_info_ptr pointer; 6 11 6 12 /* based */ 6 13 6 14 declare 1 condition_info aligned based (condition_info_ptr), 6 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 condition_name char (32) varying, /* name of condition */ 6 18 2 info_ptr pointer, /* pointer to the condition data structure */ 6 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 6 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 6 21 2 flags unaligned, 6 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 6 23 3 pad1 bit (35), 6 24 2 pad2 bit (36), 6 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 6 26 2 pad3 (4) bit (36); 6 27 6 28 /* internal static */ 6 29 6 30 declare condition_info_version_1 6 31 fixed binary internal static options (constant) initial (1); 6 32 6 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 50 51 52 brief, no_message = "0"b; 53 goto COMMON; 54 55 copy_seg_$brief: 56 entry (P_source_dir, P_source_name, P_target_dir, P_target_name, P_caller, P_error_sw, P_code); 57 58 brief = "1"b; 59 no_message = "0"b; 60 goto COMMON; 61 62 copy_seg_$no_message: 63 entry (P_source_dir, P_source_name, P_target_dir, P_target_name, P_caller, P_error_sw, P_code); 64 65 brief = "0"b; 66 no_message = "1"b; 67 goto COMMON; 68 69 COMMON: cpo.version = COPY_OPTIONS_VERSION_1; 70 cpo.caller_name = P_caller; 71 cpo.source_dir = P_source_dir; 72 cpo.source_name = P_source_name; 73 cpo.target_name = P_target_name; 74 cpo.target_dir = P_target_dir; 75 76 string (cpo.flags) = ""b; 77 cpo.no_name_dup = no_message; 78 string (cpo.copy_items) = ""b; 79 80 on sub_error_ call sub_err_handler (); 81 82 call copy_ (addr (cpo)); 83 84 P_code = 0; 85 return; 86 87 MAIN_RETURN: 88 P_error_sw = cpo.target_err_switch; 89 if code = 0 then code = error_table_$fatal_error; 90 P_code = code; 91 return; 92 93 sub_err_handler: 94 proc (); 95 96 ci.version = condition_info_version_1; 97 call find_condition_info_ (null (), addr (ci), (0)); 98 sub_error_info_ptr = ci.info_ptr; 99 100 if sub_error_info.name ^= "copy_" | copy_error_info.copy_options_ptr ^= addr (cpo) then do; 101 call continue_to_signal_ ((0)); 102 return; 103 end; 104 105 code = sub_error_info.status_code; 106 107 if sub_error_info.cant_restart then goto MAIN_RETURN; 108 109 if sub_error_info.default_restart & brief then return; 110 111 call convert_status_code_ (code, "", message); 112 call ioa_$ioa_switch (iox_$error_output, "^a: ^a ^a", cpo.caller_name, message, sub_error_info.info_string); 113 114 return; 115 end sub_err_handler; 116 117 end copy_seg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/83 1444.6 copy_seg_.pl1 >spec>on>eod-fix>copy_seg_.pl1 43 1 10/14/83 1606.7 copy_options.incl.pl1 >ldd>include>copy_options.incl.pl1 45 2 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 47 3 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 48 4 10/14/83 1606.7 copy_error_info.incl.pl1 >ldd>include>copy_error_info.incl.pl1 49 5 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 50 6 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_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. COPY_OPTIONS_VERSION_1 000000 constant char(8) initial unaligned dcl 1-28 ref 69 P_caller parameter char unaligned dcl 18 ref 11 55 62 70 P_code parameter fixed bin(35,0) dcl 18 set ref 11 55 62 84* 90* P_error_sw parameter bit(1) dcl 18 set ref 11 55 62 87* P_source_dir parameter char unaligned dcl 18 ref 11 55 62 71 P_source_name parameter char unaligned dcl 18 ref 11 55 62 72 P_target_dir parameter char unaligned dcl 18 ref 11 55 62 74 P_target_name parameter char unaligned dcl 18 ref 11 55 62 73 action_flags 2 based structure level 3 dcl 3-7 brief 000312 automatic bit(1) dcl 27 set ref 52* 58* 65* 109 caller_name 2 000100 automatic char(32) level 2 packed unaligned dcl 23 set ref 70* 112* cant_restart 2 based bit(1) level 4 packed unaligned dcl 3-7 ref 107 ci 000260 automatic structure level 1 dcl 23 set ref 97 97 code 000313 automatic fixed bin(35,0) dcl 27 set ref 89 89* 90 105* 111* condition_info based structure level 1 dcl 6-14 condition_info_header based structure level 1 dcl 5-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 6-30 ref 96 continue_to_signal_ 000014 constant entry external dcl 37 ref 101 convert_status_code_ 000016 constant entry external dcl 37 ref 111 copy_ 000020 constant entry external dcl 37 ref 82 copy_error_info based structure level 1 dcl 4-8 copy_flags based structure level 1 dcl 2-8 copy_items 157 000100 automatic structure level 2 dcl 23 set ref 78* copy_options based structure level 1 dcl 1-12 copy_options_ptr based pointer level 2 dcl 4-8 ref 100 cpo 000100 automatic structure level 1 dcl 23 set ref 82 82 100 default_restart 2(01) based bit(1) level 4 packed unaligned dcl 3-7 ref 109 error_table_$fatal_error 000010 external static fixed bin(35,0) dcl 32 ref 89 find_condition_info_ 000022 constant entry external dcl 37 ref 97 flags 156 000100 automatic structure level 2 dcl 23 set ref 76* header based structure level 2 dcl 3-7 info_ptr 116 based pointer level 2 in structure "sub_error_info" dcl 3-7 in procedure "copy_seg_" ref 100 info_ptr 14 000260 automatic pointer level 2 in structure "ci" dcl 23 in procedure "copy_seg_" set ref 98 info_string 3 based varying char(256) level 3 dcl 3-7 set ref 112* ioa_$ioa_switch 000024 constant entry external dcl 37 ref 112 iox_$error_output 000012 external static pointer dcl 32 set ref 112* message 000314 automatic char(100) dcl 27 set ref 111* 112* name 106 based char(32) level 2 dcl 3-7 ref 100 no_message 000345 automatic bit(1) dcl 27 set ref 52* 59* 66* 77 no_name_dup 156 000100 automatic bit(1) level 3 packed unaligned dcl 23 set ref 77* source_dir 12 000100 automatic char(168) level 2 packed unaligned dcl 23 set ref 71* source_name 64 000100 automatic char(32) level 2 packed unaligned dcl 23 set ref 72* status_code 104 based fixed bin(35,0) level 3 dcl 3-7 ref 105 string builtin function dcl 32 set ref 76* 78* sub_error_ 000346 stack reference condition dcl 32 ref 80 sub_error_info based structure level 1 dcl 3-7 sub_error_info_ptr 000354 automatic pointer dcl 3-6 set ref 98* 100 100 105 107 109 112 target_dir 74 000100 automatic char(168) level 2 packed unaligned dcl 23 set ref 74* target_err_switch 156(04) 000100 automatic bit(1) level 3 packed unaligned dcl 23 set ref 87 target_name 146 000100 automatic char(32) level 2 packed unaligned dcl 23 set ref 73* version 2 000260 automatic fixed bin(17,0) level 2 in structure "ci" dcl 23 in procedure "copy_seg_" set ref 96* version 000100 automatic char(8) level 2 in structure "cpo" dcl 23 in procedure "copy_seg_" set ref 69* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cei automatic structure level 1 dcl 23 condition_info_header_ptr automatic pointer dcl 5-4 condition_info_ptr automatic pointer dcl 6-10 copy_options_ptr automatic pointer dcl 1-10 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 3-13 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000210 constant label dcl 69 ref 53 60 67 MAIN_RETURN 000304 constant label dcl 87 ref 107 copy_seg_ 000034 constant entry external dcl 11 copy_seg_$brief 000100 constant entry external dcl 55 copy_seg_$no_message 000145 constant entry external dcl 62 sub_err_handler 000320 constant entry internal dcl 93 ref 80 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 82 82 97 97 100 null builtin function ref 97 97 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 652 700 471 662 Length 1202 471 26 265 160 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME copy_seg_ 250 external procedure is an external procedure. on unit on line 80 106 on unit sub_err_handler internal procedure shares stack frame of on unit on line 80. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME copy_seg_ 000100 cpo copy_seg_ 000260 ci copy_seg_ 000312 brief copy_seg_ 000313 code copy_seg_ 000314 message copy_seg_ 000345 no_message copy_seg_ 000354 sub_error_info_ptr copy_seg_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext enable ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ convert_status_code_ copy_ find_condition_info_ ioa_$ioa_switch THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$fatal_error iox_$error_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000026 52 000073 53 000075 55 000076 58 000137 59 000141 60 000142 62 000143 65 000204 66 000205 67 000207 69 000210 70 000212 71 000220 72 000225 73 000232 74 000237 76 000244 77 000245 78 000251 80 000252 82 000270 84 000301 85 000303 87 000304 89 000311 90 000316 91 000317 93 000320 96 000321 97 000324 98 000344 100 000350 101 000363 102 000373 105 000374 107 000376 109 000404 111 000414 112 000431 114 000470 ----------------------------------------------------------- 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