THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT nd_handler_ Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-10-06_0057.33_Tue_mdt Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 8* * * 9* ************************************************************** */ 10 11 12 13 14 15 16 17 /****^ HISTORY COMMENTS: 18* 1) change(92-09-24,Vu), approve(92-09-24,MCR8266), audit(92-09-24,Zimmerman), 19* install(92-10-06,MR12.5-1025): 20* Fix bug for add_name when adding a name to a forum meeting which is the 21* only remaining name of another forum. 22* END HISTORY COMMENTS */ 23 24 25 /* format: style2 */ 26 nd_handler_: 27 proc (caller, pname, ename, code); 28 29 /* this is an updated version of the name_dup 30* handler for SSS commands. It attempts 31* to remove an existing entry name from a directory, 32* asking questions of the console as necessary. */ 33 34 /* initial coding 8 Aug 1969 David Clark */ 35 /* revised 25 Aug 1969 DDC */ 36 37 /* modified on October 30, 1969 at 11:50 A. M. by V Voydock */ 38 /* modified by E Stone on Dec 3 1970 */ 39 /* modified by Dan Bricklin 9 Dec 1970 */ 40 /* Modified by Dennis Capps on 11/04/71 */ 41 /* Modified by Steve Herbst 4/15/76 */ 42 /* Modified by C. D. Tavares 06/22/77 for force and del_force entries */ 43 /* Changed to print link targets 11/02/79 S. Herbst */ 44 /* Made to work on mailboxes and queues 03/28/80 S. Herbst */ 45 /* 09/29/81 by Lindsey Spratt:Changed to return actual error code when 46* unexpected error occurs. Also, changed to ignore 47* error_table_$vtoce_connection_fail from status_long. */ 48 /* New message added "(Target PATH is a null link)" instead of "exists" 07/01/82 S. Herbst */ 49 /* changed for object_type_, added switches entry 2/17/83 Jay Pattin */ 50 /* removed check for connection failure, hardcore does not return entry information in this case. 6/10/83 Jay Pattin */ 51 /* 830924 object_type_ --> fs_util_ BIM */ 52 53 dcl (caller, pname, ename) char (*), 54 options bit (36) aligned, 55 code fixed bin (35); 56 57 /* Link messages */ 58 59 dcl TARGET_NULL_LINK char (64) int static options (constant) 60 init ("^/^8x(Target ^a^[>^]^a is a null link.)"); 61 dcl TARGET_EXISTS char (64) int static options (constant) init ("^/^8x(Target ^a^[>^]^a exists.)"); 62 dcl TARGET_NOT_EXISTS char (64) int static options (constant) 63 init ("^/^8x(Target ^a^[>^]^a does not exist.)"); 64 dcl TARGET_NO_INFO char (64) int static options (constant) 65 init ("^/^8x(Cannot get info for target ^a^[>^]^a)"); 66 dcl TARGET_NO_PATH char (64) int static options (constant) init ("^/^8x(No target pathname.)"); 67 68 dcl LINK_TYPE fixed bin (2) int static options (constant) init (0); 69 70 dcl icode fixed bin (35), 71 type fixed bin, 72 minf_type fixed bin (2), 73 bit fixed bin (24); 74 dcl (link_msg, query_msg) char (256); 75 dcl buff char (132) varying; 76 dcl fs_util_type char (32); 77 dcl target_path char (target_len) based (target_ptr); 78 dcl target_ptr ptr init (null); 79 dcl target_len fixed bin; 80 dcl target_dn char (168); 81 dcl target_en char (32); 82 dcl noun char (18) aligned; 83 dcl verb char (6) aligned; 84 85 dcl ( 86 LINK init (0), 87 SEGMENT init (1) 88 ) fixed bin int static options (constant); 89 1 1 /* BEGIN INCLUDE FILE: nd_handler_options.incl.pl1 */ 1 2 1 3 /* This structure is used as the switches argument to nd_handler_$switches 1 4* 1 5* Jay Pattin 2/27/83 */ 1 6 1 7 declare 1 nd_handler_options, 1 8 2 force bit (1) unaligned, /* ON = delete without query if removing last name */ 1 9 2 delete bit (1) unaligned, /* ON = query to delete regardless of number of names */ 1 10 2 delete_force bit (1) unaligned, /* ON = always delete without query */ 1 11 2 raw bit (1) unaligned, /* ON = call hcs_, not object_type_ */ 1 12 2 library bit (1) unaligned, /* ON = call installation_tools_ for chname */ 1 13 2 mbz bit (31) unaligned; 1 14 1 15 /* END INCLUDE FILE: nd_handler_options.incl.pl1 */ 90 91 2 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 2 2 2 3 /* control flag bit string passed to delete_$path and delete_$ptr 2 4* 2 5* Jay Pattin 6/6/83 */ 2 6 2 7 declare 1 delete_options, 2 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 2 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 2 10 2 directory bit (1) unaligned, /* ON = delete directories */ 2 11 2 segment bit (1) unaligned, /* ON = delete segments */ 2 12 2 link bit (1) unaligned, /* ON = delete links */ 2 13 2 chase bit (1) unaligned, /* ON = delete through links */ 2 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 2 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 2 16 2 mbz bit (28) unaligned; 2 17 2 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 92 93 3 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 3 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 3 3 /* version number changed to 4, 08/10/78 WOS */ 3 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 3 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 3 6 3 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 3 8 2 version fixed bin, /* version of this structure - must be set, see below */ 3 9 2 switches aligned, /* various bit switch values */ 3 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 3 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 3 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 3 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 3 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 3 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 3 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 3 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 3 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 3 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 3 20 3 21 /* Limit of data defined for version 2 */ 3 22 3 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 3 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 3 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 3 26 /* minimum of 30 seconds required for repeat */ 3 27 /* otherwise, no repeat will occur */ 3 28 /* Limit of data defined for version 4 */ 3 29 3 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 3 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 3 32 3 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 3 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 3 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 3 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 3 37 3 38 /* END INCLUDE FILE query_info.incl.pl1 */ 94 95 4 1 declare /* Structure returned by hcs_$status_long */ 4 2 4 3 1 branch_status aligned, /* automatic: hcs_$status uses a pointer */ 4 4 4 5 2 type bit(2) unaligned, /* type of entry: link, segment, dir */ 4 6 2 number_names bit(16) unaligned, /* unused by directory_status_ */ 4 7 2 names_rel_pointer bit(18) unaligned, /* unused by directory_status_ */ 4 8 2 date_time_modified bit(36) unaligned, /* date time modified */ 4 9 2 date_time_used bit(36) unaligned, /* date time entry used */ 4 10 2 mode bit(5) unaligned, /* effective access of caller */ 4 11 2 raw_mode bit(5) unaligned, 4 12 2 pad1 bit(8) unaligned, 4 13 2 records bit(18) unaligned, /* number of records in use */ 4 14 2 date_time_dumped bit(36) unaligned, /* date time last dumped */ 4 15 2 date_time_entry_modified bit(36) unaligned, /* date time entry modified */ 4 16 2 lvid bit(36) unaligned, /* logical volume id */ 4 17 2 current_length bit(12) unaligned, /* number of blocks currently allocated */ 4 18 2 bit_count bit(24) unaligned, /* bit count of entry */ 4 19 2 pad3 bit(8) unaligned, 4 20 2 copy_switch bit(1) unaligned, /* the copy switch */ 4 21 2 tpd bit(1) unaligned, /* transparent to paging device */ 4 22 2 mdir bit(1) unaligned, /* master directory switch */ 4 23 2 damaged_switch bit (1) unaligned, /* true if contents damaged */ 4 24 2 synchronized_switch bit (1) unaligned, /* true if a DM synchronized file */ 4 25 2 pad4 bit(5) unaligned, 4 26 2 ring_brackets (0:2) bit(6) unaligned, /* branch ring brackets */ 4 27 2 unique_id bit(36) unaligned, /* entry unique id */ 4 28 4 29 4 30 /* The types of each class of branch */ 4 31 segment_type bit(2) aligned internal static initial ("01"b), 4 32 directory_type bit(2) aligned internal static initial ("10"b), 4 33 msf_type bit(2) aligned internal static initial ("10"b), /* will eventually be different */ 4 34 link_type bit(2) aligned internal static initial ("00"b); 4 35 4 36 96 97 98 dcl 1 link_status aligned based (addr (branch_status)), 99 ( 2 type bit (2), 100 2 nnames fixed bin (15), 101 2 nrp bit (18), 102 2 dtem bit (36), 103 2 dtd bit (36), 104 2 pnl fixed bin (17), 105 2 pnrp bit (18) 106 ) unaligned; 107 108 dcl names (2) char (32) aligned based (np), 109 np pointer init (null), 110 old_seg char (32) aligned; 111 112 dcl area_ptr ptr int static init (null); 113 dcl area area based (area_ptr); 114 115 dcl error_table_$action_not_performed 116 fixed bin (35) ext; 117 dcl error_table_$improper_data_format 118 fixed bin (35) ext; 119 dcl error_table_$namedup fixed bin (35) ext; 120 dcl error_table_$noentry fixed bin (35) ext; 121 dcl error_table_$nonamerr fixed bin (35) ext; 122 123 dcl (com_err_, command_query_) 124 entry options (variable), 125 delete_$path entry (char (*), char (*), bit (36) aligned, char (*), fixed bin (35)), 126 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 127 get_system_free_area_ entry returns (ptr), 128 hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)), 129 hcs_$get_link_target entry (char (*), char (*), char (*), char (*), fixed bin (35)), 130 hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), 131 fixed bin (35)), 132 hcs_$status_long entry (char (*), char (*), fixed bin, ptr, ptr, fixed bin (35)), 133 installation_tools_$chname_file 134 entry (char (*), char (*), char (*), char (*), fixed bin (35)), 135 fs_util_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 136 137 dcl fs_util_$get_type entry (character (*), character (*), character (*), fixed binary (35)); 138 dcl (addr, fixed, null, ptr, rtrim, string, substr, unspec) 139 builtin; 140 141 dcl cleanup condition; 142 143 string (nd_handler_options) = ""b; 144 goto COMMON; 145 146 force: 147 entry (caller, pname, ename, code); 148 149 /* nd_handler_$force is used to forcibly delete conflicting seg if necessary */ 150 151 string (nd_handler_options) = ""b; 152 nd_handler_options.delete_force = "1"b; 153 goto COMMON; 154 155 switches: 156 entry (caller, pname, ename, options, code); 157 158 string (nd_handler_options) = options; 159 if nd_handler_options.mbz ^= ""b 160 then do; 161 code = error_table_$improper_data_format; 162 return; 163 end; 164 165 if nd_handler_options.delete | nd_handler_options.delete_force 166 then goto COMMON2; 167 nd_handler_options.delete_force = nd_handler_options.force; 168 169 COMMON: 170 code, icode = 0; 171 if area_ptr = null 172 then area_ptr = get_system_free_area_ (); 173 on cleanup call clean_up; 174 175 call hcs_$status_long (pname, ename, 0, addr (branch_status), area_ptr, code); 176 if code ^= 0 177 then do; 178 call com_err_ (code, caller, "^/Unable to get status information about ^a^[>^]^a.", pname, 179 pname ^= ">", ename); 180 return; 181 end; 182 183 code = 0; 184 np = ptr (area_ptr, branch_status.names_rel_pointer); 185 186 if names (1) = ename 187 then if fixed (branch_status.number_names, 17) = 1 188 then go to DELETE; 189 else old_seg = names (2); 190 else old_seg = names (1); 191 192 if nd_handler_options.library 193 then call installation_tools_$chname_file (pname, ename, ename, "", icode); 194 else if nd_handler_options.raw 195 then call hcs_$chname_file (pname, ename, ename, "", icode); 196 else call fs_util_$chname_file (pname, ename, ename, "", icode); 197 /* works even for MSF's ! */ 198 199 if icode = 0 200 then do; 201 call com_err_ (0, caller, "Name duplication. Old name ^a removed from ^a>^a", ename, pname, old_seg); 202 return; 203 end; 204 205 if icode ^= error_table_$nonamerr 206 then do; 207 code = icode; 208 call com_err_ (code, caller, "^/Unable to remove the old name ^a from ^a^[>^]^a.", ename, pname, 209 pname ^= ">", old_seg); 210 return; 211 end; 212 else /* only one name left, delete it */ 213 go to DELETE; 214 215 del: 216 entry (caller, pname, ename, code); 217 218 /* This entry used if caller knows deletion is necessary */ 219 220 string (nd_handler_options) = ""b; 221 goto COMMON2; 222 223 del_force: 224 entry (caller, pname, ename, code); 225 226 /* This entry used if caller wants deletion performed forcibly */ 227 228 string (nd_handler_options) = ""b; 229 nd_handler_options.delete_force = "1"b; 230 231 COMMON2: 232 code = 0; 233 if area_ptr = null 234 then area_ptr = get_system_free_area_ (); 235 on cleanup call clean_up; 236 237 call hcs_$status_long (pname, ename, 0, addr (branch_status), area_ptr, code); 238 if code ^= 0 239 then do; 240 call com_err_ (code, caller, "^/Unable to get status information about ^a^[>^]^a.", pname, 241 pname ^= ">", ename); 242 return; 243 end; 244 code = 0; 245 246 DELETE: 247 type = fixed (branch_status.type, 17); 248 bit = fixed (branch_status.bit_count, 24); 249 string (delete_options) = ""b; 250 delete_options.force = "1"b; 251 delete_options.raw = nd_handler_options.raw; 252 253 if type = SEGMENT 254 then do; 255 verb = "delete"; 256 noun = "segment"; 257 delete_options.segment = "1"b; 258 end; 259 260 else if type = LINK 261 then do; 262 verb = "unlink"; 263 delete_options.link = "1"b; 264 noun = "link"; 265 target_len = link_status.pnl; 266 target_ptr = ptr (area_ptr, link_status.pnrp); 267 if target_path = "" 268 then link_msg = TARGET_NO_PATH; 269 else do; 270 call hcs_$get_link_target (pname, ename, target_dn, target_en, code); 271 if target_dn = "" 272 then call expand_pathname_ (target_path, target_dn, target_en, code); 273 call hcs_$status_minf (target_dn, target_en, 0, minf_type, 0, icode); 274 if icode = 0 275 then if minf_type = LINK_TYPE 276 then link_msg = TARGET_NULL_LINK; 277 else link_msg = TARGET_EXISTS; 278 else if icode = error_table_$noentry 279 then link_msg = TARGET_NOT_EXISTS; 280 else link_msg = TARGET_NO_INFO; 281 end; 282 end; 283 284 else do; 285 if bit ^= 0 286 then do; /* a multi-segment file */ 287 verb = "delete"; 288 noun = "multisegment file"; 289 delete_options.segment = "1"b; 290 end; 291 else do; /* it is a directory */ 292 verb = "delete"; 293 noun = "directory"; 294 call fs_util_$get_type (pname,ename,fs_util_type,code); 295 if code ^= 0 then return; 296 if substr (fs_util_type, 1, 1) ^= "-" then 297 delete_options.segment = "1"b; 298 else delete_options.directory = "1"b; 299 end; 300 end; 301 302 call clean_up; /* free hcs_$status storage */ 303 304 if ^nd_handler_options.delete_force 305 then do; 306 unspec (query_info) = "0"b; 307 query_info.version = query_info_version_4; 308 query_info.yes_or_no_sw = "1"b; 309 query_info.question_iocbp, query_info.answer_iocbp = null; 310 query_info.status_code = error_table_$namedup; 311 query_msg = "Name duplication. Do you want to ^a the old ^a ^a>^a?"; 312 if type = LINK 313 then query_msg = rtrim (query_msg) || link_msg; 314 call command_query_ (addr (query_info), buff, caller, rtrim (query_msg) || "^3x", verb, noun, pname, 315 ename, target_dn, target_dn ^= ">", target_en); 316 if buff = "no" 317 then do; 318 code = error_table_$action_not_performed; 319 return; 320 end; 321 end; 322 323 else do; 324 if type = LINK 325 then call com_err_ (error_table_$namedup, caller, "Unlinking the old link ^a>^a" || link_msg, pname, 326 ename, target_dn, target_dn ^= ">", target_en); 327 else call com_err_ (error_table_$namedup, caller, "Deleting the old ^a ^a>^a", noun, pname, ename); 328 end; 329 330 /* You really must want to get rid of it ... */ 331 332 call delete_$path (pname, ename, string (delete_options), caller, code); 333 if code ^= 0 334 then call com_err_ (code, caller, "^/Unable to remove old entry ^a^[>^]^a.", pname, pname ^= ">", ename); 335 return; 336 337 338 339 clean_up: 340 proc; 341 342 if np ^= null 343 then free names in (area); 344 if target_ptr ^= null 345 then free target_path in (area); 346 347 end clean_up; 348 349 end nd_handler_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/06/92 0057.3 nd_handler_.pl1 >spec>inst>1025>nd_handler_.pl1 90 1 10/14/83 1706.7 nd_handler_options.incl.pl1 >ldd>incl>nd_handler_options.incl.pl1 92 2 10/14/83 1706.7 delete_options.incl.pl1 >ldd>incl>delete_options.incl.pl1 94 3 03/11/83 1304.3 query_info.incl.pl1 >ldd>incl>query_info.incl.pl1 96 4 11/22/82 1055.6 branch_status.incl.pl1 >ldd>incl>branch_status.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. LINK constant fixed bin(17,0) initial dcl 85 ref 260 312 324 LINK_TYPE constant fixed bin(2,0) initial dcl 68 ref 274 SEGMENT constant fixed bin(17,0) initial dcl 85 ref 253 TARGET_EXISTS 000060 constant char(64) initial packed unaligned dcl 61 ref 277 TARGET_NOT_EXISTS 000040 constant char(64) initial packed unaligned dcl 62 ref 278 TARGET_NO_INFO 000020 constant char(64) initial packed unaligned dcl 64 ref 280 TARGET_NO_PATH 000000 constant char(64) initial packed unaligned dcl 66 ref 267 TARGET_NULL_LINK 000100 constant char(64) initial packed unaligned dcl 59 ref 274 addr builtin function dcl 138 ref 175 175 237 237 265 266 314 314 answer_iocbp 6 000454 automatic pointer initial level 2 dcl 3-7 set ref 309* 3-7* area based area(1024) dcl 113 ref 342 344 area_ptr 000010 internal static pointer initial dcl 112 set ref 171 171* 175* 184 233 233* 237* 266 342 344 bit 000103 automatic fixed bin(24,0) dcl 70 set ref 248* 285 bit_count 7(12) 000471 automatic bit(24) level 2 packed packed unaligned dcl 4-1 set ref 248 branch_status 000471 automatic structure level 1 dcl 4-1 set ref 175 175 237 237 265 266 buff 000304 automatic varying char(132) dcl 75 set ref 314* 316 caller parameter char packed unaligned dcl 53 set ref 26 146 155 178* 201* 208* 215 223 240* 314* 324* 327* 332* 333* cleanup 000516 stack reference condition dcl 141 ref 173 235 code parameter fixed bin(35,0) dcl 53 set ref 26 146 155 161* 169* 175* 176 178* 183* 207* 208* 215 223 231* 237* 238 240* 244* 270* 271* 294* 295 318* 332* 333 333* com_err_ 000024 constant entry external dcl 123 ref 178 201 208 240 324 327 333 command_query_ 000026 constant entry external dcl 123 ref 314 cp_escape_control 1(02) 000454 automatic bit(2) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* delete 0(01) 000452 automatic bit(1) level 2 packed packed unaligned dcl 1-7 set ref 165 delete_$path 000030 constant entry external dcl 123 ref 332 delete_force 0(02) 000452 automatic bit(1) level 2 packed packed unaligned dcl 1-7 set ref 152* 165 167* 229* 304 delete_options 000453 automatic structure level 1 packed packed unaligned dcl 2-7 set ref 249* 332 332 directory 0(02) 000453 automatic bit(1) level 2 packed packed unaligned dcl 2-7 set ref 298* ename parameter char packed unaligned dcl 53 set ref 26 146 155 175* 178* 186 192* 192* 194* 194* 196* 196* 201* 208* 215 223 237* 240* 270* 294* 314* 324* 327* 332* 333* error_table_$action_not_performed 000012 external static fixed bin(35,0) dcl 115 ref 318 error_table_$improper_data_format 000014 external static fixed bin(35,0) dcl 117 ref 161 error_table_$namedup 000016 external static fixed bin(35,0) dcl 119 set ref 310 324* 327* error_table_$noentry 000020 external static fixed bin(35,0) dcl 120 ref 278 error_table_$nonamerr 000022 external static fixed bin(35,0) dcl 121 ref 205 expand_pathname_ 000032 constant entry external dcl 123 ref 271 explanation_len 14 000454 automatic fixed bin(21,0) initial level 2 dcl 3-7 set ref 3-7* explanation_ptr 12 000454 automatic pointer initial level 2 dcl 3-7 set ref 3-7* fixed builtin function dcl 138 ref 186 246 248 force 000453 automatic bit(1) level 2 in structure "delete_options" packed packed unaligned dcl 2-7 in procedure "nd_handler_" set ref 250* force 000452 automatic bit(1) level 2 in structure "nd_handler_options" packed packed unaligned dcl 1-7 in procedure "nd_handler_" set ref 167 fs_util_$chname_file 000050 constant entry external dcl 123 ref 196 fs_util_$get_type 000052 constant entry external dcl 137 ref 294 fs_util_type 000346 automatic char(32) packed unaligned dcl 76 set ref 294* 296 get_system_free_area_ 000034 constant entry external dcl 123 ref 171 233 hcs_$chname_file 000036 constant entry external dcl 123 ref 194 hcs_$get_link_target 000040 constant entry external dcl 123 ref 270 hcs_$status_long 000044 constant entry external dcl 123 ref 175 237 hcs_$status_minf 000042 constant entry external dcl 123 ref 273 icode 000100 automatic fixed bin(35,0) dcl 70 set ref 169* 192* 194* 196* 199 205 207 273* 274 278 installation_tools_$chname_file 000046 constant entry external dcl 123 ref 192 library 0(04) 000452 automatic bit(1) level 2 packed packed unaligned dcl 1-7 set ref 192 link 0(04) 000453 automatic bit(1) level 2 packed packed unaligned dcl 2-7 set ref 263* link_msg 000104 automatic char(256) packed unaligned dcl 74 set ref 267* 274* 277* 278* 280* 312 324 link_status based structure level 1 dcl 98 literal_sw 1(05) 000454 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* mbz 0(05) 000452 automatic bit(31) level 2 packed packed unaligned dcl 1-7 set ref 159 minf_type 000102 automatic fixed bin(2,0) dcl 70 set ref 273* 274 names based char(32) array dcl 108 ref 186 189 190 342 names_rel_pointer 0(18) 000471 automatic bit(18) level 2 packed packed unaligned dcl 4-1 set ref 184 nd_handler_options 000452 automatic structure level 1 packed packed unaligned dcl 1-7 set ref 143* 151* 158* 220* 228* noun 000443 automatic char(18) dcl 82 set ref 256* 264* 288* 293* 314* 327* np 000504 automatic pointer initial dcl 108 set ref 108* 184* 186 189 190 342 342 null builtin function dcl 138 ref 78 171 233 309 3-7 3-7 3-7 108 342 344 number_names 0(02) 000471 automatic bit(16) level 2 packed packed unaligned dcl 4-1 set ref 186 old_seg 000506 automatic char(32) dcl 108 set ref 189* 190* 201* 208* options parameter bit(36) dcl 53 ref 155 158 padding 1(07) 000454 automatic bit(29) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* pname parameter char PLouie Multics cY"CO(.n@4"Polischuk Multics ]rIPZk\:nLuk Multics -pQd_Samanani Multics !$c @PdSiler Office edrQ:7T|jLee Multics ]EQq'6&N<Mulhaupt Multics r,@\P/eIBhT Schroth SysMaint Ř2R ޸pHwang HFED &-PjvItani Multics * PR]Leskiw Multics tPJ hV Gee Multics *LPՊ)(:: (!PANakaska Multics WPŸHK Vh !"McDonald Office @`R1D"#Lundgren EngAdmin .+3QȬsG#$Lausen Office %l Q79$p%Platnich Office Z;6Rs( T%B&Haggett SysMaint xSTt=<N&&'WAAnderson SysMaint :VS0!j'@0Ÿz~2rsr@=LSwX dh>6&H &z0&0GtYzzar,Attendees 0RyG`Hca0*@0SysDaemon 0*@0Collin 0Multics 0r&0GsaTransactions 0RoGa0*@0*@0&0Gsa.Proceedings.1 0RozG..a0*@0*@0 000100 icode nd_handler_ 000101 type nd_handler_ 000102 minf_type nd_handler_ 000103 bit nd_handler_ 000104 link_msg nd_handler_ 000204 query_msg nd_handler_ 000304 buff nd_handler_ 000346 fs_util_type nd_handler_ 000356 target_ptr nd_handler_ 000360 target_len nd_handler_ 000361 target_dn nd_handler_ 000433 target_en nd_handler_ 000443 noun nd_handler_ 000450 verb nd_handler_ 000452 nd_handler_options nd_handler_ 000453 delete_options nd_handler_ 000454 query_info nd_handler_ 000471 branch_status nd_handler_ 000504 np nd_handler_ 000506 old_seg nd_handler_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry_desc int_entry op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_ delete_$path expand_pathname_ fs_util_$chname_file fs_util_$get_type get_system_free_area_ hcs_$chname_file hcs_$get_link_target hcs_$status_long hcs_$status_minf installation_tools_$chname_file THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$improper_data_format error_table_$namedup error_table_$noentry error_table_$nonamerr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 78 000313 3 7 000315 108 000344 26 000350 143 000406 144 000407 146 000410 151 000443 152 000444 153 000446 155 000447 158 000505 159 000510 161 000513 162 000516 165 000517 167 000522 169 000527 171 000531 173 000544 175 000566 176 000627 178 000631 180 000702 183 000703 184 000704 186 000712 189 000726 190 000732 192 000735 194 000772 196 001027 199 001060 201 001062 202 001125 205 001126 207 001131 208 001132 210 001206 215 001207 220 001242 221 001243 223 001244 228 001277 229 001300 231 001302 233 001303 235 001316 237 001340 238 001401 240 001403 242 001454 244 001455 246 001456 248 001461 249 001464 250 001465 251 001467 253 001474 255 001477 256 001501 257 001504 258 001506 260 001507 262 001511 263 001513 264 001515 265 001520 266 001523 267 001531 270 001541 271 001573 273 001627 274 001666 277 001676 278 001702 280 001711 282 001714 285 001715 287 001717 288 001721 289 001724 290 001726 292 001727 293 001731 294 001734 295 001763 296 001765 298 001774 302 001776 304 002002 306 002005 307 002010 308 002012 309 002014 310 002017 311 002022 312 002025 314 002055 316 002175 318 002203 319 002206 321 002207 324 002210 327 002275 332 002337 333 002374 335 002447 339 002450 342 002456 344 002465 347 002477 ----------------------------------------------------------- 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