COMPILATION LISTING OF SEGMENT pathname_ 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 0958.4 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 /* Construct pathnames and archive component pathnames. 14* 15* Written 9 April 1981 by M. N. Davidoff. 16**/ 17 /* format: style2 */ 18 pathname_: 19 procedure (P_dirname, P_entryname) returns (char (168)); 20 21 declare P_code fixed binary (35); 22 declare P_component_name char (*); 23 declare P_dirname char (*); 24 declare P_entryname char (*); 25 declare P_pathname char (*); 26 27 /* automatic */ 28 29 declare component_name char (32) varying; 30 declare dirname char (168) varying; 31 declare entryname char (32) varying; 32 declare have_code bit (1) aligned; 33 declare pathname char (194) varying; 34 declare return_length fixed binary (21); 35 36 /* builtin */ 37 38 declare (after, index, length, maxlength, min, reverse, rtrim, substr) 39 builtin; 40 41 /* internal static */ 42 43 declare ARCHIVE_SUFFIX char (8) internal static options (constant) initial (".archive"); 44 declare PATHLONG char (20) internal static options (constant) initial (" "); 45 46 /* external static */ 47 48 declare error_table_$pathlong fixed binary (35) external static; 49 50 /* P_dirname (Input) 51* P_entryname (Input) */ 52 53 component_name = ""; 54 return_length = maxlength (dirname); 55 have_code = "0"b; 56 goto join; 57 58 /* P_dirname (Input) 59* P_entryname (Input) 60* P_component_name (Input) */ 61 62 component: 63 entry (P_dirname, P_entryname, P_component_name) returns (char (194)); 64 65 component_name = rtrim (P_component_name); 66 return_length = maxlength (pathname); 67 have_code = "0"b; 68 goto join; 69 70 /* P_dirname (Input) 71* P_entryname (Input) 72* P_component_name (Input) 73* P_pathname (Output) 74* P_code (Output) */ 75 76 component_check: 77 entry (P_dirname, P_entryname, P_component_name, P_pathname, P_code); 78 79 component_name = rtrim (P_component_name); 80 return_length = min (length (P_pathname), maxlength (pathname)); 81 have_code = "1"b; 82 P_pathname = ""; 83 P_code = 0; 84 85 join: 86 dirname = rtrim (P_dirname); 87 entryname = rtrim (P_entryname); 88 89 if component_name ^= "" & index (reverse (entryname), reverse (ARCHIVE_SUFFIX)) = 1 90 then entryname = reverse (after (reverse (entryname), reverse (ARCHIVE_SUFFIX))); 91 92 if dirname = ">" 93 then pathname = dirname || entryname; 94 95 else begin; 96 declare max_pathname_length fixed binary (21); 97 98 if component_name = "" 99 then max_pathname_length = return_length; 100 else max_pathname_length = return_length - length ("::") - length (component_name); 101 102 pathname = dirname || ">" || entryname; 103 104 if length (dirname) + length (">") + length (entryname) > max_pathname_length 105 then if have_code 106 then P_code = error_table_$pathlong; 107 else pathname = substr (pathname, 1, max_pathname_length - length (PATHLONG)) || PATHLONG; 108 end; 109 110 if component_name ^= "" 111 then pathname = pathname || "::" || component_name; 112 113 if have_code 114 then P_pathname = pathname; 115 else return (pathname); 116 end pathname_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.5 pathname_.pl1 >spec>install>1111>pathname_.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ARCHIVE_SUFFIX 000006 constant char(8) initial packed unaligned dcl 43 ref 89 89 PATHLONG 000000 constant char(20) initial packed unaligned dcl 44 ref 107 107 P_code parameter fixed bin(35,0) dcl 21 set ref 76 83* 104* P_component_name parameter char packed unaligned dcl 22 ref 62 65 76 79 P_dirname parameter char packed unaligned dcl 23 ref 18 62 76 85 P_entryname parameter char packed unaligned dcl 24 ref 18 62 76 87 P_pathname parameter char packed unaligned dcl 25 set ref 76 80 82* 113* after builtin function dcl 38 ref 89 component_name 000100 automatic varying char(32) dcl 29 set ref 53* 65* 79* 89 98 100 110 110 dirname 000111 automatic varying char(168) dcl 30 set ref 54 85* 92 92 102 104 entryname 000164 automatic varying char(32) dcl 31 set ref 87* 89 89* 89 92 102 104 error_table_$pathlong 000010 external static fixed bin(35,0) dcl 48 ref 104 have_code 000175 automatic bit(1) dcl 32 set ref 55* 67* 81* 104 113 index builtin function dcl 38 ref 89 length builtin function dcl 38 ref 80 100 100 104 104 104 107 max_pathname_length 000262 automatic fixed bin(21,0) dcl 96 set ref 98* 100* 104 107 maxlength builtin function dcl 38 ref 54 66 80 min builtin function dcl 38 ref 80 pathname 000176 automatic varying char(194) dcl 33 set ref 66 80 92* 102* 107* 107 110* 110 113 115 return_length 000260 automatic fixed bin(21,0) dcl 34 set ref 54* 66* 80* 98 100 reverse builtin function dcl 38 ref 89 89 89 89 89 rtrim builtin function dcl 38 ref 65 79 85 87 substr builtin function dcl 38 ref 107 NAMES DECLARED BY EXPLICIT CONTEXT. component 000062 constant entry external dcl 62 component_check 000145 constant entry external dcl 76 join 000240 constant label dcl 85 ref 56 68 pathname_ 000026 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 716 730 642 726 Length 1074 642 12 130 53 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pathname_ 191 external procedure is an external procedure. begin block on line 95 begin block shares stack frame of external procedure pathname_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pathname_ 000100 component_name pathname_ 000111 dirname pathname_ 000164 entryname pathname_ 000175 have_code pathname_ 000176 pathname pathname_ 000260 return_length pathname_ 000262 max_pathname_length begin block on line 95 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars return_mac signal_op shorten_stack ext_entry_desc reverse_cs set_chars_eis fetch_chars_eis index_after_cs ix_rev_chars NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$pathlong LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000022 53 000050 54 000051 55 000053 56 000054 62 000055 65 000111 66 000134 67 000136 68 000137 76 000140 79 000200 80 000223 81 000230 82 000232 83 000237 85 000240 87 000263 89 000305 92 000365 95 000417 98 000420 100 000430 102 000434 104 000470 107 000503 108 000525 110 000526 113 000567 115 000602 116 000630 ----------------------------------------------------------- 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