COMPILATION LISTING OF SEGMENT imft_transmit_object_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/14/88 1512.4 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 /* Transmit a storage system object to a remote Multics system */ 10 11 /* Created: October 1980 by G. Palter */ 12 /* Modified: 27 February 1981 by G. Palter to better report errors from remote system and access validation errors */ 13 /* Modified: 28 February 1981 by G. Palter to add an RQO handler to permit dumping of segments with zero pages */ 14 /* Modified: April 1982 by G. Palter to complete initial implementation */ 15 /* Modified: July 1982 by G. Palter for true AIM support and to properly process I/O error abort control records */ 16 /* Modified: March 1983 by Robert Coren to check for local_io_error */ 17 /* Modified: April 1983 by Robert Coren to implement request for remote transfer ("pull") */ 18 /* Modified: June 1983 by Robert Coren to enforce defer_time */ 19 /* Modified: August 1983 by Robert Coren to enforce minimum_access_class */ 20 /* Modified: November 1983 by Robert Coren to upgrade objects to requestor's authorization */ 21 /* Modified: February 23, 1985 by C. Marker to use version 5 message segments */ 22 23 /****^ HISTORY COMMENTS: 24* 1) change(87-11-15,Oke), approve(88-08-01,MCR7948), audit(88-10-17,Farley), 25* install(88-10-14,MR12.2-1165): 26* Revise time estimation and calculation to reduce variance. Time 27* estimate is held in static to preserve it across reinits and other 28* restarting occurances. 29* 2) change(88-06-21,Beattie), approve(88-08-01,MCR7948), 30* audit(88-10-17,Farley), install(88-10-14,MR12.2-1165): 31* The following changes were made. 32* a. Change rate averaging to be the same as that used by do_prt_request_. 33* b. Set up imft_driver_info.min_time_to_log to control "Estimated .." 34* display to log. 35* c. Add support for the -delete option. 36* d. Add support to reject requests based on other system's driver software 37* version if -extend or -update options are used. 38* e. Change all access checking to look for explicit ACLs for both user and 39* driver. 40* f. Add access checks on all objects in a subtree if a subtree is to be 41* transfered. 42* 3) change(88-10-21,Beattie), approve(88-08-19,MCR7911), 43* audit(88-10-26,Wallman), install(88-10-28,MR12.2-1199): 44* Add iod_tables_hdr.incl.pl1 to support version 5 iod tables. 45* 4) change(88-11-10,Beattie), approve(88-08-01,PBF7948), 46* audit(88-11-14,Farley), install(88-11-14,MR12.2-1214): 47* Change declaration of local_request_number to match up with what is 48* coming from request_descriptor structure to prevent size condtions. 49* END HISTORY COMMENTS */ 50 51 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 52 53 imft_transmit_object_: 54 procedure (P_data_iocb_ptr, P_stat_p, P_imft_driver_info_ptr, P_code); 55 56 system_area_ptr = get_system_free_area_ (); 57 58 /**** One time initialization */ 59 60 if first_call then do; 61 process_dname = get_pdir_ (); /* place for access checking errors */ 62 accessfile_ename = "IMFT.access." || unique_chars_ (""b); 63 accessfile_path = pathname_ (process_dname, accessfile_ename); 64 call hcs_$make_seg (process_dname, accessfile_ename, "", RW_ACCESS_BIN, accessfile_ptr, code); 65 if accessfile_ptr = null () then do; /* shouldn't happen, but... */ 66 call iodd_msg_ (code, MASTER, "Creating ^a to hold access check errors.", accessfile_path); 67 return; 68 end; 69 call hcs_$terminate_noname (accessfile_ptr, ignore_code); 70 71 process_dname = get_pdir_ (); /* create error file for notifications */ 72 errfile_ename = "IMFT." || unique_chars_ (""b); 73 errfile_pathname = pathname_ (process_dname, errfile_ename); 74 call hcs_$make_seg (process_dname, errfile_ename, "", 01010b, errfile_ptr, code); 75 if errfile_ptr = null () then do; /* shouldn't happen, but... */ 76 call iodd_msg_ (ERROR, MASTER, code, IMFT_TRANSMIT_OBJECT_, 77 "Creating ^a as error file for notifications.", errfile_pathname); 78 P_code = code; 79 return; 80 end; 81 call hcs_$terminate_noname (errfile_ptr, ignore_code); 82 83 first_call = "0"b; /* all set */ 84 end; /* if first_call */ 85 else do; 86 call hcs_$truncate_file (process_dname, accessfile_ename, 0, ignore_code); 87 call hcs_$set_bc (process_dname, accessfile_ename, 0, ignore_code); 88 end; 89 90 /**** Setup for operation */ 91 92 data_iocb_ptr = P_data_iocb_ptr; 93 stat_p = P_stat_p; 94 imft_driver_info_ptr = P_imft_driver_info_ptr; 95 P_code = 0; 96 97 foreign_system_name = rtrim (imft_driver_info.foreign_system.name); 98 foreign_system_version = convert (foreign_system_version, imft_driver_info.foreign_system.imft_version); 99 100 ds_ptr = iodd_static.driver_ptr; 101 rd_ptr = addr (ds_ptr -> driver_status.descriptor); 102 mseg_message_info_ptr = addr (rd_ptr -> request_descriptor.mseg_message_info_copy); 103 ft_request_ptr = addr (ds_ptr -> driver_status.message); 104 105 acl_ptr, afs_ptr, errfile_ptr = null (); /* keeps cleanup handler happy */ 106 errfile_attached, send_abort_command = "0"b; 107 108 my_group_id = get_group_id_ (); /* Person.Project.Tag for access checking */ 109 current_ring = get_ring_ (); 110 111 on condition (cleanup) call cleanup_handler (); 112 113 abort_request_label = ABORT_REQUEST; /* for driver's unclaimed signal handler */ 114 115 /**** Build local description of request */ 116 117 local_notify = ft_request.notify; 118 local_request_number = rd_ptr -> request_descriptor.seq_id; 119 120 if ft_request.remote_transfer then do; 121 122 /**** Set up remote to local transfer request. */ 123 124 unspec (local_rr) = ""b; 125 local_rr.priority_request = rd_ptr -> request_descriptor.priority_request; 126 local_rr.queue = rd_ptr -> request_descriptor.q; 127 local_rr.request_number = rd_ptr -> request_descriptor.seq_id; 128 129 local_rr.notify = ft_request.notify; 130 131 local_rr.local_user = 132 substr (mseg_message_info.sender_id, 1, (length (rtrim (mseg_message_info.sender_id)) - 2)); 133 local_rr.local_user_authorization = mseg_message_info.sender_authorization; 134 local_rr.local_user_ring = mseg_message_info.sender_level; 135 136 mail_destination = local_rr.local_user; /* user to receive notifications at this end */ 137 mail_access_class = local_rr.local_user_authorization; 138 local_rr.request_info = ft_request; 139 source_full_pathname = pathname_ ((ft_request.dirname), (ft_request.ename)); 140 if ft_request.foreign_path_given then 141 target_full_pathname = pathname_ (ft_request.foreign_dirname, ft_request.foreign_ename); 142 else target_full_pathname = source_full_pathname; 143 144 if ((ft_request.extend | ft_request.update) & foreign_system_version < 4.0) then do; 145 call ioa_$rsnnl ("Driver on ^a system does not support the ^[-extend^;-update^] option.", 146 abort_message, ignore_fb21, foreign_system_name, ft_request.extend); 147 call abort_request_notify (FLUSH_REQUEST, error_table_$unimplemented_version, abort_message); 148 end; 149 150 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 151 "Request ^d ^a output q^d: receive^[ extension to^]^[ update to^] ^a^/^2xfor ^a^[ from ^a^;^s^]^[^/^2xoriginally ^a^]", 152 local_rr.request_number, foreign_system_name, local_rr.queue, local_rr.extend, local_rr.update, 153 target_full_pathname, local_rr.local_user, local_rr.foreign_user_given, local_rr.foreign_user, 154 local_rr.foreign_path_given, source_full_pathname); 155 156 if (local_rr.notify | ((foreign_system_version < 4.0) & local_rr.delete)) then 157 call notify_user ( 158 "Requesting transfer of ^a from ^a (queue ^d)^[ even though driver on the other system does not support deletion of objects^].", 159 source_full_pathname, foreign_system_name, local_rr.queue, 160 ((foreign_system_version < 4.0) & local_rr.delete)); 161 162 local_icri.record_type = IMFT_REMOTE_REQUEST; 163 local_icri.record_ptr = addr (local_rr); 164 local_icri.record_lth = 4 * currentsize (local_rr); 165 end; 166 167 else do; 168 169 /**** Set up local transfer to remote */ 170 171 unspec (local_bof_command) = ""b; 172 173 local_bof_command.continued = rd_ptr -> request_descriptor.continued; 174 local_bof_command.restarted = rd_ptr -> request_descriptor.restarted; 175 local_bof_command.priority_request = rd_ptr -> request_descriptor.priority_request; 176 local_bof_command.queue = rd_ptr -> request_descriptor.q; 177 local_bof_command.request_number = rd_ptr -> request_descriptor.seq_id; 178 179 local_bof_command.notify = ft_request.notify; 180 local_bof_command.local_dirname = ft_request.dirname; 181 local_bof_command.local_ename = ft_request.ename; 182 /* pathname of object on local system */ 183 local_full_pathname = pathname_ (local_bof_command.local_dirname, local_bof_command.local_ename); 184 185 local_bof_command.local_user = 186 substr (mseg_message_info.sender_id, 1, (length (rtrim (mseg_message_info.sender_id)) - 2)); 187 local_bof_command.local_user_authorization = mseg_message_info.sender_authorization; 188 local_bof_command.local_user_ring = mseg_message_info.sender_level; 189 190 mail_destination = local_bof_command.local_user; 191 /* user to receive notifications at this end */ 192 mail_access_class = local_bof_command.local_user_authorization; 193 194 local_bof_command.foreign_system = ft_request.request; 195 196 if local_bof_command.foreign_path_given then 197 foreign_full_pathname = 198 pathname_ (local_bof_command.foreign_dirname, local_bof_command.foreign_ename); 199 else foreign_full_pathname = local_full_pathname; 200 /* same pathname wanted on both systems */ 201 202 if ((ft_request.extend | ft_request.update) & foreign_system_version < 4.0) then do; 203 call ioa_$rsnnl ("Driver on ^a system does not support the ^[-extend^;-update^] option.", 204 abort_message, ignore_fb21, foreign_system_name, ft_request.extend); 205 call abort_request_notify (FLUSH_REQUEST, error_table_$unimplemented_version, abort_message); 206 end; 207 208 209 /**** Validate that the object exists */ 210 211 call hcs_$status_minf (local_bof_command.local_dirname, local_bof_command.local_ename, 0b, 212 local_bof_command.object_type, local_bit_count, code); 213 if code ^= 0 then do; 214 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 215 "Request ^d ^a output q^d: transmit^[ extension object^]^[ update object^] ^a^/^2xfrom ^a^[ for ^a^;^s^]^[^/^2xas ^a^]", 216 local_bof_command.request_number, foreign_system_name, local_bof_command.queue, 217 local_bof_command.extend, local_bof_command.update, local_full_pathname, 218 local_bof_command.local_user, local_bof_command.foreign_user_given, 219 local_bof_command.foreign_user, local_bof_command.foreign_path_given, foreign_full_pathname); 220 call abort_request_notify (FLUSH_REQUEST, code, "Determining type of object."); 221 end; 222 223 if local_bof_command.object_type = DIRECTORY then 224 /* be sure to notice MSFs */ 225 if local_bit_count ^= 0 then local_bof_command.object_type = MSF; 226 227 228 229 /**** Log beginning of transmission, inform user if requested, and validate access */ 230 231 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 232 "Request ^d ^a output q^d: transmit^[ extension^]^[ update^] ^a ^a^/^2xfrom ^a^[ for ^a^;^s^]^[^/^2xas ^a^]", 233 local_bof_command.request_number, foreign_system_name, local_bof_command.queue, 234 local_bof_command.extend, local_bof_command.update, OBJECT_TYPES (local_bof_command.object_type), 235 local_full_pathname, local_bof_command.local_user, local_bof_command.foreign_user_given, 236 local_bof_command.foreign_user, local_bof_command.foreign_path_given, foreign_full_pathname); 237 238 if local_bof_command.object_type = LINK then 239 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, "Object to be transmitted can not be a link."); 240 241 allow_delete = "1"b; /* until proven otherwise */ 242 call validate_access (); /* doesn't return if access isn't OK */ 243 244 call estimate_time (object_length, time_needed_to_transmit); 245 time_pict = float (time_needed_to_transmit) / float (ONE_MINUTE); 246 if ds_ptr -> driver_status.defer_time_limit > 0 247 /* should we be checking against time limit? */ 248 then 249 if time_needed_to_transmit > ds_ptr -> driver_status.defer_time_limit then 250 call abort_request_notify (KEEP_REQUEST, NO_ERROR, 251 "Request deferred automatically because it would exceed time limit. (estimated time " 252 || time_pict || " minutes.)"); 253 254 if local_bof_command.notify then 255 call notify_user ( 256 "Beginning transmission of^[ extension^]^[ update^] ^a ^a to ^a (queue ^d). Estimated time: ^.1f minutes.", 257 local_bof_command.extend, local_bof_command.update, OBJECT_TYPES (local_bof_command.object_type), 258 local_full_pathname, foreign_system_name, local_bof_command.queue, 259 float (time_needed_to_transmit) / float (ONE_MINUTE)); 260 261 262 /**** Establish handlers for various error conditions which might arise */ 263 264 on condition (daemon_again), condition (daemon_again_slave) 265 begin; /* restart current request */ 266 if send_abort_command then /* need to cleanup after ourselves */ 267 call write_abort_command (IMFT_ABORT_RESTARTED, 0); 268 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "Restarting request."); 269 go to RESTART_THIS_REQUEST; 270 end; 271 272 on condition (daemon_save) 273 begin; /* save this request */ 274 if send_abort_command then /* started doing something */ 275 call write_abort_command (IMFT_ABORT_SAVED, 0); 276 call cleanup_handler (); /* cleanup the mess */ 277 end; 278 279 on condition (daemon_defer) 280 begin; /* operator request deferral */ 281 if send_abort_command then /* indicate what happened */ 282 call write_abort_command (IMFT_ABORT_DEFERRED, 0); 283 call abort_request (KEEP_REQUEST, NO_ERROR, "Operator deferred request until a later time."); 284 end; 285 286 on condition (daemon_cancel), condition (daemon_kill) 287 begin; /* operator has cancelled request */ 288 if send_abort_command then /* explain to foreign system */ 289 call write_abort_command (IMFT_ABORT_CANCELLED, 0); 290 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, "Operator cancelled the request."); 291 end; 292 293 on condition (imft_write_abort_) call analyze_write_abort; 294 295 iodd_static.request_in_progress = "1"b; /* as of now, it's running */ 296 297 go to START_REQUEST; /* get the ball started */ 298 299 300 /**** Control arrives here to RESTART the current request */ 301 302 RESTART_THIS_REQUEST: 303 local_bof_command.continued = "1"b; /* looks like it's being continued */ 304 305 /**** Control arrives here to START the current request */ 306 307 /**** 308* Prepare to invoke backup_dump_: construct description of the dump and terminate the backup system to cleanup from last 309* use in this process (if any) 310**/ 311 312 START_REQUEST: 313 call estimate_time (object_length, time_needed_to_transmit); 314 time_pict = float (time_needed_to_transmit) / float (ONE_MINUTE); 315 if ds_ptr -> driver_status.defer_time_limit > 0 316 /* should we be checking against time limit? */ 317 then 318 if time_needed_to_transmit > ds_ptr -> driver_status.defer_time_limit then 319 call abort_request_notify (KEEP_REQUEST, NO_ERROR, 320 "Request deferred automatically after restart because it would exceed time limit. (estimated time " 321 || time_pict || " minutes.)"); 322 323 /**** All set to transmit. */ 324 325 if time_needed_to_transmit > imft_driver_info.min_time_to_log then 326 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "^2xEstimated time: ^.1f minutes.", 327 float (time_needed_to_transmit) / float (ONE_MINUTE)); 328 329 static_backup_control.version = BACKUP_CONTROL_VERSION_5; 330 static_backup_control.tape_entry = nulle; 331 332 string (static_backup_control.options) = ""b; 333 static_backup_control.debug_sw = "1"b; 334 static_backup_control.error_file = "1"b; 335 static_backup_control.caller_handles_conditions = "1"b; 336 337 static_backup_control.preattached = "1"b; /* we supply the I/O switch */ 338 static_backup_control.data_iocb = data_iocb_ptr; 339 340 static_backup_control.enforce_max_access_class = "1"b; 341 static_backup_control.maximum_access_class = imft_driver_info.local_system.access_ceiling; 342 /* nothing higher than this class is dumped */ 343 static_backup_control.enforce_min_access_class = "1"b; 344 static_backup_control.minimum_access_class = imft_driver_info.local_system.access_floor; 345 /* nothing lower than this class is dumped */ 346 347 static_backup_control.dont_dump_upgraded_dirs = "1"b; 348 static_backup_control.maximum_dir_access_class = local_bof_command.object_access_class; 349 /* don't dump any upgraded directories */ 350 351 static_backup_control.check_effective_access = "1"b; 352 static_backup_control.user_for_access_check.id = rtrim (local_bof_command.local_user) || ".*"; 353 static_backup_control.user_for_access_check.authorization = local_bof_command.local_user_authorization; 354 static_backup_control.user_for_access_check.ring = local_bof_command.local_user_ring; 355 /* don't dump it if the user can't access it either */ 356 static_backup_control.upgrade_to_user_auth = "1"b; 357 /* don't allow creation of objects at lower level than user's */ 358 /* authorization */ 359 360 static_backup_control.request_count = 1; /* one and only one object to dump */ 361 362 static_backup_control.object.path = local_full_pathname; 363 static_backup_control.object.new_path = ""; 364 string (static_backup_control.object.switches) = ""b; 365 static_backup_control.object.no_primary_sw = "1"b; 366 367 call term_$refname ("backup_dump_", ignore_code); 368 call term_$refname ("backup_map_", ignore_code); 369 call term_$refname ("bk_ss_", ignore_code); 370 371 call ios_$attach ("err_file", "file", errfile_pathname, "w", ios_status); 372 if ios_status.code ^= 0 then /* not the user's fault */ 373 call abort_request (KEEP_REQUEST, ios_status.code, "Setting up backup error file."); 374 errfile_attached = "1"b; /* got one */ 375 376 377 /**** Send a BOF command to inform the remote system that we have a file/subtree ready for transmission */ 378 379 local_icri.record_type = IMFT_BOF; 380 local_icri.record_ptr = addr (local_bof_command); 381 local_icri.record_lth = 4 * currentsize (local_bof_command); 382 end; /* if ^ft_request.remote_transfer */ 383 384 local_icri.version = ICRI_VERSION_1; 385 local_icri.timeout = 5 * ONE_MINUTE; 386 387 call iox_$control (data_iocb_ptr, "write_command_record", addr (local_icri), code); 388 if code ^= 0 then /* something's wrong */ 389 if code = imft_et_$reply_pending then do; /* ... an unsolicited reply: analyze it */ 390 local_icri.record_ptr = addr (input_buffer); 391 local_icri.record_max_lth = length (input_buffer); 392 call iox_$control (data_iocb_ptr, "read_reply_record", addr (local_icri), code); 393 if code = 0 then 394 call analyze_unsolicited_reply (); 395 else call io_error (code, "Attempting to read from " || foreign_system_name || "."); 396 end; 397 else call io_error (code, "Attempting to write to " || foreign_system_name || "."); 398 399 send_abort_command = "1"b; /* any errors now must be reflected to the remote system */ 400 401 402 /* 403* Wait for a reply from the remote system: if the remote system rejected our BOF command, the reply will contain the 404* reason in a format suitable for notifying the user 405**/ 406 407 local_icri.record_ptr = addr (input_buffer); /* a place for the reply */ 408 local_icri.record_max_lth = length (input_buffer); 409 410 call iox_$control (data_iocb_ptr, "read_reply_record", addr (local_icri), code); 411 if code ^= 0 then call io_error (code, "Attempting to read from " || foreign_system_name || "."); 412 413 if local_icri.record_type = IMFT_BOF then do; /* it's a reply to the BOF command all right ... */ 414 bof_reply_ptr = addr (input_buffer); /* ... need to know where it is */ 415 416 if bof_reply.request_number ^= local_request_number then 417 call abort_request_fatal (KEEP_REQUEST, NO_ERROR, 418 "Reply received from " || foreign_system_name || " for wrong request."); 419 420 else if bof_reply.abort_request then do; /* ... didn't like our request */ 421 send_abort_command = "0"b; /* ... ... no need to confuse the remote system */ 422 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, 423 "Message from " || foreign_system_name || ": " || bof_reply.abort_message); 424 end; 425 end; 426 427 else call analyze_unsolicited_reply (); /* weren't expecting this reply */ 428 429 if ft_request.remote_transfer /* all we have to send is the control record */ 430 then do; 431 if local_rr.notify then 432 call notify_user ("Transfer of ^a queued at ^a", source_full_pathname, foreign_system_name); 433 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "^2x^a", bof_reply.abort_message); 434 end; 435 436 else do; /* Transmit the file/subtree using the hierarchy dumper */ 437 438 on condition (record_quota_overflow) ; /* can happen on zero pages in segments being transferred */ 439 440 time_started = clock (); 441 call backup_dump_ (addr (static_backup_control), code); 442 call iox_$control (data_iocb_ptr, "runout", null (), ignore_code); 443 /* force all data out */ 444 time_taken = divide (clock () - time_started, ONE_MILLION, 35, 0); 445 /* get elapsed time in seconds */ 446 call analyze_backup_results (code); 447 448 /**** 449* Send an EOF command to indicate completion of the file/subtree and notify the user if requested. 450**/ 451 452 local_icri.version = ICRI_VERSION_1; 453 local_icri.timeout = 5 * ONE_MINUTE; /* give the other side a chance */ 454 local_icri.record_type = IMFT_EOF; 455 local_icri.record_ptr = addr (local_eof_command); 456 local_icri.record_lth = 4 * currentsize (local_eof_command); 457 458 local_eof_command.request_number = local_request_number; 459 local_eof_command.backup_errors = backup_errors_detected | local_bof_command.delete & ^allow_delete; 460 /* this will flag user at other end to */ 461 /* check his messages here */ 462 463 call iox_$control (data_iocb_ptr, "write_command_record", addr (local_icri), code); 464 if code ^= 0 then /* something's wrong */ 465 if code = imft_et_$reply_pending then do; 466 /* ... an unsolicited reply: analyze it */ 467 local_icri.record_ptr = addr (input_buffer); 468 local_icri.record_max_lth = length (input_buffer); 469 call iox_$control (data_iocb_ptr, "read_reply_record", addr (local_icri), code); 470 if code = 0 then 471 call analyze_unsolicited_reply (); 472 else call io_error (code, "Attempting to read from " || foreign_system_name || "."); 473 end; 474 else call io_error (code, "Attempting to write to " || foreign_system_name || "."); 475 476 477 foreign_backup_errors = "0"b; 478 if ^imft_driver_info.old_version then do; /* EOF reply will tell us whether object arrived successfully */ 479 local_icri.record_ptr = addr (input_buffer); 480 /* a place for the reply */ 481 local_icri.record_max_lth = length (input_buffer); 482 483 call iox_$control (data_iocb_ptr, "read_reply_record", addr (local_icri), code); 484 if code ^= 0 then call io_error (code, "Attempting to read from " || foreign_system_name || "."); 485 486 if local_icri.record_type = IMFT_EOF then do; 487 /* it's a reply to the EOF command all right ... */ 488 eof_reply_ptr = addr (input_buffer); 489 /* ... need to know where it is */ 490 491 if eof_reply.request_number ^= local_request_number then 492 call abort_request_fatal (KEEP_REQUEST, NO_ERROR, 493 "Reply received from " || foreign_system_name || " for wrong request."); 494 495 if eof_reply.error /* foreign system wasn't happy */ 496 then do; 497 call notify_user ("Errors in reception of ^a; See your messages at ^a.", 498 local_full_pathname, foreign_system_name); 499 foreign_backup_errors = "1"b; 500 end; 501 end; 502 503 else call analyze_unsolicited_reply (); 504 505 /**** Update time estimate after transmission has been validated. */ 506 507 if time_taken > MINIMUM_TIME_TO_AVERAGE /* did it take long enough not to be lost in noise? */ 508 then 509 call revise_time_estimate (object_length); 510 end; 511 512 if local_bof_command.delete & allow_delete & ^backup_errors_detected & ^foreign_backup_errors then do; 513 unspec (delete_options) = ""b; 514 delete_options.force = "1"b; 515 delete_options.directory = "1"b; 516 delete_options.segment = "1"b; 517 delete_options.link = "1"b; 518 deleting_object = "1"b; 519 call delete_$path (local_bof_command.local_dirname, local_bof_command.local_ename, 520 string (delete_options), "", code); 521 deleting_object = "0"b; 522 if code ^= 0 then do; 523 call convert_status_code_ (code, shortinfo, code_message); 524 call notify_user ("Error occured while attempting to delete ^a^/(^a)", local_full_pathname, 525 code_message); 526 end; 527 end; 528 529 RESUME_AFTER_DELETE: 530 if local_bof_command.notify then /* made it ... */ 531 if ^backup_errors_detected & ^foreign_backup_errors then 532 /* ... and user not informed because of backup errors */ 533 call notify_user ("Transmitted^[ extension^]^[ update^] ^a ^a without errors to ^a (queue ^d).", 534 local_bof_command.extend, local_bof_command.update, 535 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, foreign_system_name, 536 local_bof_command.queue); 537 538 if backup_errors_detected | foreign_backup_errors | local_bof_command.delete & ^allow_delete then do; 539 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", 540 "^2xNonfatal errors in transfer detected at ^[^a^;^s^]^[ and ^]^[^a^].", 541 backup_errors_detected | local_bof_command.delete & ^allow_delete, 542 imft_driver_info.local_system.name, backup_errors_detected & foreign_backup_errors, 543 foreign_backup_errors, foreign_system_name); 544 545 if local_bof_command.delete then 546 call notify_user ("Unable to delete ^a ^a due to access errors at ^a.", 547 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, 548 imft_driver_info.local_system.name); 549 end; 550 551 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "^2xTransmitted request ^d.", local_request_number); 552 553 end; /* if ^ft_request.remote_transfer */ 554 555 send_abort_command = "0"b; /* all done with this request */ 556 557 rd_ptr -> request_descriptor.keep_in_queue = "0"b;/* done with it */ 558 559 560 /**** Cleanup and return to caller */ 561 562 RETURN_FROM_TRANSMIT_OBJECT: 563 call cleanup_handler (); /* clean things up */ 564 565 rd_ptr -> request_descriptor.dont_delete = "1"b; /* delete done in driver */ 566 rd_ptr -> request_descriptor.finished = "1"b; /* all done */ 567 iodd_static.request_in_progress = "0"b; 568 569 return; 570 571 572 573 /* 574* Abort the request: The entry is called from the driver's any_other handler if an unexpected condition is detected 575* during processing of a request 576**/ 577 578 abort_running_request: 579 entry (P_condition_name); 580 581 condition_name = P_condition_name; 582 583 go to abort_request_label; /* unwind the stack */ 584 585 586 ABORT_REQUEST: 587 if deleting_object then do; 588 deleting_object = "0"b; 589 call notify_user ("The ""^a"" condition was signalled during the deletion of object,^/^a.", condition_name, 590 local_full_pathname); 591 go to RESUME_AFTER_DELETE; 592 end; 593 else call abort_request_notify (FLUSH_REQUEST, NO_ERROR, 594 """" || rtrim (condition_name) || """ condition occurred during processing of request."); 595 596 /* 597* Handler for imft_write_abort_: This condition is raised during writing of backup records because of an I/O error or an 598* unsolicited reply from the remote system 599**/ 600 601 analyze_write_abort: 602 procedure (); 603 604 local_icri.version = ICRI_VERSION_1; 605 local_icri.timeout = 5 * ONE_MINUTE; /* give the remote system a chance */ 606 local_icri.record_ptr = addr (input_buffer); 607 local_icri.record_max_lth = length (input_buffer); 608 609 call iox_$control (data_iocb_ptr, "get_abort_info", addr (local_icri), code); 610 if code ^= 0 then call io_error (code, "Attempting to read from " || foreign_system_name || "."); 611 612 call analyze_unsolicited_reply (); 613 614 go to RETURN_FROM_TRANSMIT_OBJECT; /* shouldn't get here */ 615 end analyze_write_abort; 616 617 /**** Analyze an unexpected reply from the remote system */ 618 619 analyze_unsolicited_reply: 620 procedure (); 621 622 dcl abort_code_picture picture "(9)9"; 623 624 rd_ptr -> request_descriptor.keep_in_queue = "1"b;/* not the user's fault: try this one again later */ 625 626 send_abort_command = "0"b; /* other side caused termination: no need to acknowledge */ 627 628 if local_icri.record_type = IMFT_LOGOUT then do; 629 if local_notify then 630 call notify_user ("Request for ^[^a^s^;^s^a^] deferred: ^a's input driver disconnected.", 631 ft_request.remote_transfer, source_full_pathname, local_full_pathname, foreign_system_name); 632 signal condition (imft_remote_logout_); 633 end; 634 635 else if local_icri.record_type = IMFT_RESYNCHRONIZE then do; 636 if local_notify then 637 call notify_user ("Request for ^[^a^s^;^s^a^] deferred: ^a requested driver to reinitialize.", 638 ft_request.remote_transfer, source_full_pathname, local_full_pathname, foreign_system_name); 639 signal condition (imft_resynchronize_driver_); 640 end; 641 642 else if local_icri.record_type = IMFT_ABORT then do; 643 abort_command_ptr = local_icri.record_ptr; /* an I/O error most likely */ 644 if abort_command.reason = IMFT_ABORT_IO_ERROR | abort_command.reason = IMFT_ABORT_LOCAL_IO_ERROR then do; 645 if abort_command.reason = IMFT_ABORT_IO_ERROR 646 /* came from foreign system */ 647 then 648 abort_command.code = imft_convert_status_code_$decode (abort_command.code); 649 call io_error (abort_command.code, "Attempting to write to " || foreign_system_name || "."); 650 end; 651 else call abort_request_fatal (KEEP_REQUEST, NO_ERROR, 652 "Unexpected abort code " || ltrim (convert (abort_code_picture, abort_command.reason)) 653 || " from " || foreign_system_name || "."); 654 end; 655 656 else call abort_request_fatal (KEEP_REQUEST, NO_ERROR, "Unexpected reply code ^d from ^a."); 657 658 end analyze_unsolicited_reply; 659 660 /**** Cleanup after a request */ 661 662 cleanup_handler: 663 procedure (); 664 665 if acl_ptr ^= null () then do; 666 free general_acl in (system_area); 667 acl_ptr = null (); 668 end; 669 670 if afs_ptr ^= null () then do; 671 call hcs_$truncate_file (process_dname, accessfile_ename, 0, ignore_code); 672 call hcs_$set_bc (process_dname, accessfile_ename, 0, ignore_code); 673 afs_ptr = null (); 674 end; 675 676 iodd_static.segptr = null (); /* have finished with it */ 677 678 if errfile_ptr ^= null () then do; 679 call hcs_$terminate_noname (errfile_ptr, ignore_code); 680 errfile_ptr = null (); 681 end; 682 683 if errfile_attached then do; 684 call ios_$detach ("err_file", "", "", ios_status); 685 call hcs_$truncate_file (process_dname, errfile_ename, 0, ignore_code); 686 call hcs_$set_bc (process_dname, errfile_ename, 0, ignore_code); 687 errfile_attached = "0"b; 688 end; 689 690 if send_abort_command then /* indicate the request wasn't finished */ 691 call write_abort_command (IMFT_ABORT_ABORTED, 0); 692 693 return; 694 695 end cleanup_handler; 696 697 /**** Abort the current request */ 698 699 abort_request: 700 procedure (p_keep_request, p_code, p_message); 701 702 dcl p_keep_request bit (1) aligned parameter; 703 dcl p_code fixed binary (35) parameter; 704 dcl p_message character (*) parameter; 705 706 dcl (notify, fatal) bit (1) aligned; 707 708 notify, fatal = "0"b; /* tell user only if start of transmission message was sent */ 709 go to ABORT_REQUEST_COMMON; 710 711 712 /**** Abort the current request and reinitialize the driver */ 713 714 abort_request_fatal: 715 entry (p_keep_request, p_code, p_message); 716 717 notify = "0"b; /* tell user only if start of transmission message was sent */ 718 fatal = "1"b; 719 go to ABORT_REQUEST_COMMON; 720 721 722 /**** Abort the current request and inform the user */ 723 724 abort_request_notify: 725 entry (p_keep_request, p_code, p_message); 726 727 notify = "1"b; /* tell the user no matter what */ 728 fatal = "0"b; 729 730 731 ABORT_REQUEST_COMMON: 732 if send_abort_command then /* need to report that an abort happened */ 733 call write_abort_command (IMFT_ABORT_ABORTED, 0); 734 735 if p_code ^= 0 then 736 call convert_status_code_ (p_code, shortinfo, code_message); 737 else code_message = ""; 738 739 if (notify | local_notify) then /* let them know what happened */ 740 call notify_user (USER_REQ_DEF_OR_TERM, p_keep_request, p_code ^= 0, code_message, p_message, 741 ft_request.remote_transfer, source_full_pathname, local_full_pathname); 742 743 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "**Request ^d: ^a ^a", local_request_number, code_message, p_message) 744 ; 745 746 call iodd_msg_ (LOG, MASTER, NO_ERROR, "", "Processing of request ^d ^[deferred^;terminated^].", 747 local_request_number, p_keep_request); 748 749 rd_ptr -> request_descriptor.keep_in_queue = p_keep_request; 750 751 if fatal then do; 752 P_code = error_table_$fatal_error; /* forces the driver to reinitialize */ 753 if imft_driver_info.debug_mode then /* ... but give the programmer a look first */ 754 signal condition (imft_debug_); 755 end; 756 757 go to RETURN_FROM_TRANSMIT_OBJECT; 758 759 end abort_request; 760 761 /**** Report an I/O error during the processing of a request */ 762 763 io_error: 764 procedure (p_io_code, p_message); 765 766 dcl p_io_code fixed binary (35) parameter; 767 dcl p_message character (*); 768 769 if send_abort_command then /* try to cleanup the transmission */ 770 call write_abort_command (IMFT_ABORT_IO_ERROR, imft_convert_status_code_$encode (p_io_code)); 771 772 if local_notify then do; /* they were told it started: tell them it was stopped */ 773 if p_io_code ^= 0 then 774 call convert_status_code_ (p_io_code, shortinfo, code_message); 775 else code_message = ""; 776 call notify_user ("Processing of request ^[^a^s^;^s^a^] deferred: ^a ^a", ft_request.remote_transfer, 777 source_full_pathname, local_full_pathname, code_message, p_message); 778 end; 779 780 call iodd_msg_ (ERROR, MASTER, p_io_code, IMFT_TRANSMIT_OBJECT_, "^a", p_message); 781 782 rd_ptr -> request_descriptor.keep_in_queue = "1"b; 783 784 P_code = p_io_code; /* let our caller reinitiatilze the driver */ 785 786 if imft_driver_info.debug_mode & (p_io_code ^= imft_et_$timeout) then signal condition (imft_debug_); 787 /* give programmer a look: timeouts are handled by imft_io_ */ 788 789 go to RETURN_FROM_TRANSMIT_OBJECT; 790 791 end io_error; 792 793 /**** Send a notification to the user */ 794 795 notify_user: 796 procedure () options (variable); 797 798 dcl notify_msg character (notify_msg_buffer_used) based (addr (notify_msg_buffer)); 799 dcl notify_msg_buffer_used fixed binary (21); 800 801 call ioa_$general_rs (cu_$arg_list_ptr (), 1, 2, notify_msg_buffer, notify_msg_buffer_used, "0"b, "1"b); 802 803 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, INTERACTIVE_DELIVERY, "", 804 notify_msg, mail_access_class, ignore_code); 805 806 return; 807 808 end notify_user; 809 810 /**** Write an abort command to the remote system */ 811 812 write_abort_command: 813 procedure (p_abort_type, p_code); 814 815 dcl p_abort_type fixed binary parameter; 816 dcl p_code fixed binary (35) parameter; 817 818 local_abort_command.reason = p_abort_type; 819 local_abort_command.code = p_code; 820 821 local_icri.version = ICRI_VERSION_1; 822 local_icri.timeout = 5 * ONE_MINUTE; /* give it a chance to get there */ 823 local_icri.record_type = IMFT_ABORT; 824 local_icri.record_ptr = addr (local_abort_command); 825 local_icri.record_lth = 4 * currentsize (local_abort_command); 826 827 call iox_$control (data_iocb_ptr, "write_command_record", addr (local_icri), ignore_code); 828 829 send_abort_command = "0"b; /* we sent it */ 830 831 return; 832 833 end write_abort_command; 834 835 /****^ 836* Validates access to transfer a file/subtree: Let SPerson.SProj be the user who is sending the file/subtree, 837* let MPerson.MProj be the user who is running the daemon, and let SPath be the pathname of the file/subtree to be 838* transmitted. Then: 839* 840* (1) SPerson.SProj and MPerson.MProj must have explicit "r" access to SPath if it is a file or explicit "s" 841* access if it is a subtree, 842* 843* (2) the access class of SPath must be less than or equal to the access ceiling computed by the driver, and 844* 845* (3) the access class of SPath must be less than or equal to the process authorization of SPerson.SProj. 846* 847* To perform these checks, MPerson.MProj requires explicit "s" access to the parent of SPath. 848* 849* Access to each of the individual branches within a subtree is validated here. 850**/ 851 852 validate_access: 853 procedure () options (non_quick); /* it has a rather large amount of automatic storage */ 854 855 dcl access_file character (accessfile_lth) based (accessfile_ptr); 856 dcl local_error_message character (1024); 857 dcl local_pathname character (168); 858 dcl local_user_id character (32) varying; 859 dcl message_len fixed bin (21); 860 dcl my_user_id character (32) varying; 861 dcl parent_dirname character (168); 862 dcl parent_ename character (32); 863 dcl transfer_ring fixed binary (3); 864 dcl idx fixed binary; 865 866 local_user_id = rtrim (local_bof_command.local_user); 867 my_user_id = substr (my_group_id, 1, (length (rtrim (my_group_id)) - 2)); 868 869 acl_count = 2; 870 allocate general_acl in (system_area) set (acl_ptr); 871 general_acl.version = GENERAL_ACL_VERSION_1; 872 general_acl.count = acl_count; 873 general_acl (DRIVER_ACL_IDX).access_name = my_user_id || ".*"; 874 general_acl (USER_ACL_IDX).access_name = local_user_id || ".*"; 875 876 local_pathname = pathname_ (local_bof_command.local_dirname, local_bof_command.local_ename); 877 transfer_ring = max (current_ring, local_bof_command.local_user_ring); 878 879 if local_bof_command.local_dirname = ">" then 880 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, "IMFT can not transfer branches under the root."); 881 882 /**** User and driver must have explicit S access to parent directory. */ 883 884 call expand_pathname_ (local_bof_command.local_dirname, parent_dirname, parent_ename, ignore_code); 885 886 imft_chk_acl.version = IMFT_CHECK_ACL_VERSION_1; 887 imft_chk_acl.foreign_sys_name = foreign_system_name; 888 imft_chk_acl.dirname = parent_dirname; 889 imft_chk_acl.ename = parent_ename; 890 imft_chk_acl.gen_acl_ptr = acl_ptr; 891 imft_chk_acl.effective_ring = transfer_ring; 892 imft_chk_acl.sys_auth_ceiling = imft_driver_info.local_system.access_ceiling; 893 imft_chk_acl.sys_auth_floor = imft_driver_info.local_system.access_floor; 894 imft_chk_acl.user_auth = local_bof_command.local_user_authorization; 895 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* errors are initially driver's */ 896 imft_chk_acl.dir_access = S_ACCESS; 897 imft_chk_acl.seg_access = R_ACCESS; 898 imft_chk_acl.accessfile_pathname = accessfile_path; 899 imft_chk_acl.check_aim = "0"b; 900 901 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 902 if code = 0 then code = imft_chk_acl.error_code; 903 if code ^= 0 then do; /* unable to fully check access if code ^= 0 */ 904 if code = error_table_$unimplemented_version then 905 call abort_request_fatal (KEEP_REQUEST, code, BAD_CHK_OBJ_ACL_STR); 906 call set_dir_s_error_message (imft_chk_acl.bad_acl_idx); 907 call abort_request_notify (FLUSH_REQUEST, code, substr (local_error_message, 1, message_len)); 908 end; /* if code ^= 0 */ 909 910 code = 0; 911 do idx = 1 to hbound (general_acl.entries, 1); 912 if general_acl (idx).status_code ^= 0 then do; 913 code = general_acl (idx).status_code; 914 call convert_status_code_ (code, shortinfo, code_message); 915 call set_dir_s_error_message (idx); 916 call notify_user (USER_REQ_DEF_OR_TERM, FLUSH_REQUEST, code ^= 0, code_message, local_error_message, 917 ft_request.remote_transfer, source_full_pathname, local_full_pathname); 918 end; 919 end; 920 921 if code ^= 0 then 922 call abort_request (FLUSH_REQUEST, NO_ERROR, "Insufficient access to parent directory of object."); 923 924 /**** User and driver must need explicit SMA on parent directory if deletion is selected. */ 925 926 if local_bof_command.delete then do; 927 928 imft_chk_acl.dir_access = SMA_ACCESS; 929 imft_chk_acl.seg_access = RW_ACCESS; 930 imft_chk_acl.check_aim = "0"b; 931 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* errors are initially driver's */ 932 933 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 934 if code = 0 then code = imft_chk_acl.error_code; 935 if code ^= 0 then do; /* unable to fully check access if code ^= 0 */ 936 if code = error_table_$unimplemented_version then 937 call abort_request_fatal (KEEP_REQUEST, code, BAD_CHK_OBJ_ACL_STR); 938 call notify_dir_sma_error (imft_chk_acl.bad_acl_idx); 939 end; /* if code ^= 0 */ 940 941 do idx = 1 to hbound (general_acl.entries, 1); 942 if general_acl (idx).status_code ^= 0 then do; 943 code = general_acl (idx).status_code; 944 call notify_dir_sma_error (idx); 945 end; 946 end; 947 948 end; /* if local_bof_command.delete */ 949 950 /**** Check access to object. */ 951 952 imft_chk_acl.dirname = local_bof_command.local_dirname; 953 imft_chk_acl.ename = local_bof_command.local_ename; 954 imft_chk_acl.dir_access = S_ACCESS; 955 imft_chk_acl.seg_access = R_ACCESS; 956 imft_chk_acl.check_aim = "1"b; 957 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* errors are initially driver's */ 958 959 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 960 if code = 0 then code = imft_chk_acl.error_code; 961 if code ^= 0 /* error_message already contains expansion of "code" */ 962 then do; /* unable to fully check access if code ^= 0 */ 963 if code = error_table_$unimplemented_version then 964 call abort_request_fatal (KEEP_REQUEST, code, BAD_CHK_OBJ_ACL_STR); 965 966 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, 967 (imft_chk_acl (imft_chk_acl.bad_acl_idx).error_message)); 968 end; 969 970 if imft_chk_acl.type = ENTRY_TYPE_LINK then 971 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, "Object to be transmitted can not be a link."); 972 973 code = 0; 974 do idx = 1 to hbound (general_acl.entries, 1); 975 if general_acl (idx).status_code ^= 0 then do; 976 code = general_acl (idx).status_code; 977 call notify_user (USER_REQ_DEF_OR_TERM, FLUSH_REQUEST, "0"b, "", imft_chk_acl (idx).error_message, 978 ft_request.remote_transfer, source_full_pathname, local_full_pathname); 979 end; 980 end; 981 982 if code ^= 0 then call abort_request (FLUSH_REQUEST, NO_ERROR, "Insufficient driver or user access to object."); 983 984 if imft_chk_acl.type = ENTRY_TYPE_DIRECTORY then do; 985 /* now to check the subtree */ 986 imft_chk_acl.dir_access = S_ACCESS; 987 imft_chk_acl.seg_access = R_ACCESS; 988 imft_chk_acl.check_aim = "1"b; 989 imft_chk_acl.bad_acl_idx = DRIVER_ACL_IDX; /* errors are initially driver's */ 990 991 call imft_util_$check_subtree_acl (addr (imft_chk_acl), code); 992 if code = 0 then code = imft_chk_acl.error_code; 993 if code ^= 0 then do; /* unable to fully check access if code ^= 0 */ 994 if code = error_table_$unimplemented_version then 995 call abort_request_fatal (KEEP_REQUEST, code, "Attempted to call imft_util_$check_subtree_acl"); 996 997 call abort_request_notify (FLUSH_REQUEST, code, "Error while checking access to objects in subtree."); 998 end; 999 1000 /**** All access errors are in file. */ 1001 1002 call hcs_$initiate_count (process_dname, accessfile_ename, "", accessfile_bc, ignore_fb2, accessfile_ptr, 1003 ignore_code); 1004 if accessfile_ptr ^= null then 1005 if accessfile_bc ^= 0 then do; 1006 accessfile_lth = divide ((accessfile_bc + 8), 9, 21, 0); 1007 call ioa_$rsnnl ("Access errors detected for request to ^a (queue ^d)", mail_subject, 1008 ignore_fb21, foreign_system_name, local_bof_command.queue); 1009 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, 1010 ORDINARY_DELIVERY, (mail_subject), access_file, mail_access_class, ignore_code); 1011 call hcs_$truncate_file (process_dname, accessfile_ename, 0, ignore_code); 1012 call hcs_$set_bc (process_dname, accessfile_ename, 0, ignore_code); 1013 end; /* if accessfile_ptr ^null and accessfile_bc ^=0 */ 1014 1015 if imft_chk_acl.allow_transfer then do; 1016 if ^imft_chk_acl.objects_to_transfer then 1017 call abort_request (FLUSH_REQUEST, NO_ERROR, 1018 "There is nothing to transfer due to errors detected while checking access of objects in subtree." 1019 ); 1020 if imft_chk_acl.found_inner_ring_object & local_bof_command.delete then do; 1021 allow_delete = "0"b; 1022 call notify_user ( 1023 "Unable to delete subtree due to presense of inner-ring objects found in subtree.^/^2x(^a)", 1024 local_pathname); 1025 end; 1026 end; 1027 1028 else call abort_request (FLUSH_REQUEST, NO_ERROR, 1029 "Unable to allow transfer of object due to access errors."); 1030 end; /* if type = direcotry */ 1031 1032 local_bof_command.object_access_class = local_bof_command.local_user_authorization; 1033 /* this is access class it will really be sent at */ 1034 1035 return; 1036 1037 set_dir_s_error_message: 1038 proc (p_idx); 1039 1040 dcl p_idx fixed binary parameter; 1041 1042 if code = error_table_$moderr | code = error_table_$user_not_found then 1043 call ioa_$rsnnl ( 1044 "^[Driver^;User^] (^a) must have an explicit ACL entry of S to parent directory of object.", 1045 local_error_message, message_len, (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name); 1046 else call ioa_$rsnnl ( 1047 "Could not determine driver's (^a) and user's (^a) access to parent directory of object.", 1048 local_error_message, message_len, my_user_id, local_user_id); 1049 1050 end set_dir_s_error_message; 1051 1052 notify_dir_sma_error: 1053 proc (p_idx); 1054 1055 dcl p_idx fixed binary parameter; 1056 1057 call convert_status_code_ (code, shortinfo, code_message); 1058 if code = error_table_$moderr | code = error_table_$user_not_found then 1059 call notify_user ( 1060 "Warning: ^[Driver^;User^] (^a) must have an explicit ACL entry of SMA to parent directory of object to be deleted.^/^2xDeletion will not be performed.^/^2x(^a)", 1061 (p_idx = DRIVER_ACL_IDX), general_acl (p_idx).access_name, local_pathname); 1062 else call notify_user ( 1063 "Warning: ^a^/^2xCould not determine driver's (^a) and user's (^a) access to delete object.^/^2x(^a)^/Object will not be deleted.", 1064 code_message, my_user_id, local_user_id, local_pathname); 1065 allow_delete = "0"b; /* this will flag user at other end to check message here */ 1066 /* about lack of deletion access */ 1067 1068 end notify_dir_sma_error; 1069 end validate_access; 1070 1071 /* 1072* Analyze results of using backup_dump_: assumes any possible errors will be reflected both in the error file and return 1073* code from the backup_dump_ call 1074**/ 1075 1076 analyze_backup_results: 1077 procedure (p_code); 1078 1079 dcl p_code fixed binary (35) parameter; /* return from backup_dump_ */ 1080 1081 dcl errfile_bc fixed binary (24); 1082 1083 backup_errors_detected = "0"b; /* until proven otherwise */ 1084 1085 call ios_$detach ("err_file", "", "", ios_status); 1086 1087 call hcs_$initiate_count (process_dname, errfile_ename, "", errfile_bc, 00b, errfile_ptr, ignore_code); 1088 1089 if errfile_ptr ^= null () then /* there is an error file there */ 1090 if errfile_bc ^= 0 then /* it's not empty: something went wrong */ 1091 call report_backup_errors (); 1092 1093 call hcs_$truncate_file (process_dname, errfile_ename, 0, ignore_code); 1094 call hcs_$set_bc (process_dname, errfile_ename, 0, ignore_code); 1095 1096 errfile_attached = "0"b; 1097 1098 return; 1099 1100 1101 /**** 1102* Internal to analyze_backup_results: reports errors detected by 1103* backup_dump_ and recorded in the error file. 1104**/ 1105 1106 report_backup_errors: 1107 procedure (); 1108 1109 dcl error_file character (errfile_lth) based (errfile_ptr); 1110 dcl errfile_lth fixed binary (21); 1111 1112 backup_errors_detected = "1"b; /* let top-level know not to notify */ 1113 1114 errfile_lth = divide ((errfile_bc + 8), 9, 21, 0); 1115 1116 call ioa_$rsnnl ("Transmitted^[ extension^]^[ update^] ^a ^a with errors to ^a (queue ^d)", mail_subject, 1117 ignore_fb21, local_bof_command.extend, local_bof_command.update, 1118 OBJECT_TYPES (local_bof_command.object_type), local_full_pathname, foreign_system_name, 1119 local_bof_command.queue); 1120 1121 call imft_mail_interface_$deliver_message ((foreign_system_name), mail_destination, ORDINARY_DELIVERY, 1122 (mail_subject), error_file, mail_access_class, ignore_code); 1123 1124 return; 1125 1126 end report_backup_errors; 1127 1128 end analyze_backup_results; 1129 1130 /**** 1131* Subroutines for enforcing defer_time limit: one to estimate how long a given 1132* object will take to transmit, and another to set the estimated bit rate based 1133* on how long the last transfer took. 1134**/ 1135 1136 estimate_time: 1137 procedure (length_in_bits, time_needed); 1138 1139 /**** returns the length in bits and expected time in seconds, factoring in overhead */ 1140 1141 dcl length_in_bits fixed binary (35) parameter; 1142 dcl time_needed fixed binary (35) parameter; 1143 1144 dcl code fixed binary (35); 1145 dcl quota_used fixed bin (18); 1146 1147 if local_bof_command.object_type = SEGMENT then do; 1148 /* use current length */ 1149 call hcs_$status_long (local_bof_command.local_dirname, local_bof_command.local_ename, 1, 1150 addr (auto_status_branch), null (), code); 1151 if code ^= 0 & code ^= error_table_$no_s_permission then do; 1152 CANT_GET_LENGTH: 1153 call iodd_msg_ (LOG, MASTER, code, "", "Could not determine length of ^a.", local_full_pathname); 1154 length_in_bits = 0; 1155 time_needed = -1; 1156 return; 1157 end; 1158 1159 else do; 1160 length_in_bits = BITS_PER_RECORD * auto_status_branch.current_length; 1161 /* current length rather than records_used because */ 1162 /* backup dumps zero pages */ 1163 time_needed = divide (length_in_bits, ds_ptr -> driver_status.bit_rate_est, 35, 0) + FILE_OVERHEAD; 1164 return; 1165 end; 1166 end; 1167 1168 else do; 1169 call hcs_$quota_read (local_full_pathname, (0), (0), (""b), (""b), (0), quota_used, code); 1170 if code ^= 0 then go to CANT_GET_LENGTH; 1171 1172 length_in_bits = BITS_PER_RECORD * quota_used; 1173 time_needed = 1174 divide (length_in_bits, ds_ptr -> driver_status.bit_rate_est, 35, 0) 1175 + FILE_OVERHEAD * divide (quota_used, EST_RECORDS_PER_FILE, 18, 0); 1176 return; 1177 end; 1178 1179 revise_time_estimate: 1180 entry (length_in_bits); 1181 1182 dcl factor float bin int static options (constant) init (0.75e0); 1183 /* smoothing factor for rate estimate */ 1184 1185 /**** 1186* Uses the time taken by the segment just transmitted to revise the 1187* estimate of the bit rate. 1188**/ 1189 1190 old_rate = ds_ptr -> driver_status.bit_rate_est; 1191 1192 if time_taken < 1 /* taking no chances */ 1193 then 1194 new_rate = old_rate; 1195 else new_rate = divide (length_in_bits, time_taken, 17, 0); 1196 1197 if old_rate > 0 then new_rate = fixed (old_rate * factor + new_rate * (1e0 - factor)); 1198 1199 ds_ptr -> driver_status.bit_rate_est = new_rate; 1200 1201 return; 1202 end estimate_time; 1203 1204 /**** Represents the null entry value: if called, the current request is aborted */ 1205 1206 nulle: 1207 procedure () options (variable); 1208 1209 call abort_request_notify (FLUSH_REQUEST, NO_ERROR, "Backup system requested tape label."); 1210 1211 return; 1212 1213 end nulle; 1214 1215 /* Parameters */ 1216 1217 dcl P_data_iocb_ptr pointer parameter; /* -> IOCB over which file is transmitted */ 1218 dcl P_stat_p pointer parameter; /* -> caller's iodd_static */ 1219 dcl P_imft_driver_info_ptr pointer parameter; /* -> description of the IMFT driver */ 1220 dcl P_code fixed binary (35) parameter; 1221 1222 dcl P_condition_name character (*) parameter; /* abort_running_request: condition detected */ 1223 1224 1225 /* Remaining declarations */ 1226 1227 dcl data_iocb_ptr pointer; /* -> I/O switch for file transmission */ 1228 1229 dcl code fixed binary (35); 1230 dcl ignore_code fixed binary (35); 1231 dcl ignore_fb2 fixed binary (2); 1232 dcl ignore_fb21 fixed binary (21); 1233 dcl new_rate fixed binary (35); 1234 dcl old_rate fixed binary (35); 1235 dcl foreign_system_version float binary; 1236 1237 dcl 1 local_icri aligned like icri automatic; 1238 dcl 1 local_bof_command aligned like bof_command; 1239 dcl 1 local_eof_command aligned like eof_command; 1240 dcl 1 local_abort_command aligned like abort_command; 1241 dcl 1 local_rr aligned like remote_request; 1242 1243 dcl 1 ios_status aligned, /* for calling ios_$* */ 1244 2 code fixed binary (35), /* actual error code */ 1245 2 io_status bit (36); /* status bits from last I/O operation */ 1246 1247 dcl system_area area based (system_area_ptr); 1248 dcl system_area_ptr pointer; 1249 1250 dcl input_buffer character (2048); /* for reading replies */ 1251 dcl notify_msg_buffer character (2048); /* for construction user notifications */ 1252 1253 dcl ds_ptr pointer; /* -> driver_status structure */ 1254 dcl rd_ptr pointer; /* -> request_descriptor for this request */ 1255 1256 dcl errfile_ptr pointer; /* -> error file generated by backup */ 1257 dcl errfile_attached bit (1) aligned; /* ON => error file is setup */ 1258 1259 dcl allow_delete bit (1); /* ON => turned off if no access to delete object */ 1260 dcl deleting_object bit (1) static; /* ON => in process of deleting object after transfer */ 1261 dcl send_abort_command bit (1) aligned; /* ON => something has been sent to foreign system */ 1262 dcl backup_errors_detected bit (1) aligned; /* ON => some errors occured in backup_dump_ */ 1263 dcl foreign_backup_errors bit (1) aligned; /* ON => foreign system reported errors in backup_load_ */ 1264 1265 dcl mail_destination character (32); /* user to receive notifications */ 1266 dcl mail_access_class bit (72) aligned; 1267 1268 dcl (local_full_pathname, foreign_full_pathname) character (168); 1269 dcl foreign_system_name character (32) varying; 1270 dcl local_bit_count fixed binary (24); 1271 dcl source_full_pathname character (168); 1272 dcl target_full_pathname character (168); 1273 dcl local_notify bit (1) aligned; 1274 dcl local_request_number fixed binary (35); 1275 1276 dcl time_needed_to_transmit fixed binary (35); /* number of seconds it would take to transmit this object */ 1277 dcl time_pict picture "zzz9v.9"; /* minutes of transmit time */ 1278 dcl time_started fixed binary (71); /* clock time at start of transmission */ 1279 dcl time_taken fixed binary (35); /* number of seconds it took to tranmsit current object */ 1280 dcl object_length fixed bin (35); /* length of object in bits */ 1281 1282 dcl 1 auto_status_branch aligned like status_branch; 1283 dcl 1 imft_chk_acl aligned like imft_check_acl; 1284 1285 dcl my_group_id character (32); 1286 dcl current_ring fixed binary (3); 1287 1288 dcl IMFT_TRANSMIT_OBJECT_ character (32) static options (constant) initial ("imft_transmit_object_"); 1289 1290 dcl BAD_CHK_OBJ_ACL_STR character (46) init ("Attempted to call imft_util_$check_object_acl") internal static 1291 options (constant); 1292 dcl NO_ERROR fixed binary (35) internal static options (constant) initial (0); 1293 dcl ONE_MINUTE fixed binary static options (constant) initial (60); 1294 dcl ONE_MILLION fixed binary (35) static options (constant) initial (1000000); 1295 dcl BITS_PER_RECORD fixed binary (35) static options (constant) initial (36 * 1024); 1296 dcl FILE_OVERHEAD fixed binary static options (constant) initial (10); 1297 /* assume 10 seconds per file */ 1298 dcl EST_RECORDS_PER_FILE fixed binary static options (constant) initial (3); 1299 /* for guessing how many files there are in a */ 1300 /* subtree based on quota */ 1301 dcl MINIMUM_TIME_TO_AVERAGE fixed binary static options (constant) initial (30); 1302 /* if it took less than a half minute, don't */ 1303 /* use it for estimate */ 1304 dcl KEEP_REQUEST bit (1) aligned static options (constant) initial ("1"b); 1305 /* keep the request in the queue */ 1306 dcl FLUSH_REQUEST bit (1) aligned static options (constant) initial ("0"b); 1307 /* flush the request from the queue */ 1308 dcl USER_REQ_DEF_OR_TERM character (73) 1309 init ("Request ^[deferred^;terminated^]: ^[^a^/^2x^;^s^]^a^/^2x(^[^a^s^;^s^a^])") internal static 1310 options (constant); 1311 1312 dcl first_call bit (1) aligned static initial ("1"b); 1313 1314 dcl 1 static_backup_control aligned static, /* control structure for backup_dump_ */ 1315 2 header like backup_control.header, /* ... global data */ 1316 2 object like backup_control.requests; /* ... the actual object to be dumped */ 1317 1318 dcl accessfile_bc fixed bin (24); 1319 dcl accessfile_ename char (32) static; 1320 dcl accessfile_lth fixed bin (21); 1321 dcl accessfile_path char (168) static; 1322 dcl accessfile_ptr pointer; 1323 dcl afs_ptr pointer; 1324 1325 dcl abort_message character (100); 1326 dcl code_message character (100) aligned; 1327 dcl errfile_ename character (32) static; 1328 dcl errfile_pathname character (168) static; 1329 dcl mail_subject character (1024) varying; 1330 dcl process_dname character (168) static; /* name of process directory which holds files for */ 1331 /* access errors and hierarchy dump errors */ 1332 dcl shortinfo character (8) aligned; 1333 1334 dcl abort_request_label label static; /* used by driver's any_other handler */ 1335 dcl condition_name character (32) static; /* condition causing request to abort */ 1336 1337 dcl error_table_$fatal_error fixed binary (35) external; 1338 dcl error_table_$moderr fixed binary (35) external; 1339 dcl error_table_$no_s_permission fixed binary (35) external; 1340 dcl error_table_$unimplemented_version fixed binary (35) external; 1341 dcl error_table_$user_not_found fixed binary (35) external; 1342 1343 dcl imft_et_$reply_pending fixed binary (35) external; 1344 dcl imft_et_$timeout fixed binary (35) external; 1345 1346 dcl backup_dump_ entry (pointer, fixed binary (35)); 1347 dcl convert_status_code_ entry (fixed binary (35), character (8) aligned, character (100) aligned); 1348 dcl cu_$arg_list_ptr entry () returns (pointer); 1349 dcl delete_$path entry (char (*), char (*), bit (36), char (*), fixed bin (35)); 1350 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 1351 dcl get_group_id_ entry () returns (character (32)); 1352 dcl get_pdir_ entry () returns (character (168)); 1353 dcl get_ring_ entry () returns (fixed binary (3)); 1354 dcl get_system_free_area_ entry () returns (pointer); 1355 dcl hcs_$quota_read 1356 entry (char (*), fixed bin (18), fixed bin (71), bit (36) aligned, bit (36), fixed bin (1), fixed bin (18), 1357 fixed bin (35)); 1358 dcl hcs_$initiate_count 1359 entry (character (*), character (*), character (*), fixed binary (24), fixed binary (2), pointer, 1360 fixed binary (35)); 1361 dcl hcs_$make_seg entry (character (*), character (*), character (*), fixed binary (5), pointer, fixed binary (35)); 1362 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 1363 dcl hcs_$status_minf 1364 entry (character (*), character (*), fixed binary (1), fixed binary (2), fixed binary (24), fixed binary (35)); 1365 dcl hcs_$set_bc entry (character (*), character (*), fixed binary (24), fixed binary (35)); 1366 dcl hcs_$terminate_noname entry (pointer, fixed binary (35)); 1367 dcl hcs_$truncate_file entry (character (*), character (*), fixed binary (19), fixed binary (35)); 1368 dcl imft_convert_status_code_$decode entry (fixed binary (35)) returns (fixed binary (35)); 1369 dcl imft_convert_status_code_$encode entry (fixed binary (35)) returns (fixed binary (35)); 1370 dcl imft_mail_interface_$deliver_message 1371 entry (character (*), character (*), fixed binary, character (*), character (*), bit (72) aligned, 1372 fixed binary (35)); 1373 dcl imft_util_$check_object_acl entry (ptr, fixed bin (35)); 1374 dcl imft_util_$check_subtree_acl entry (ptr, fixed bin (35)); 1375 dcl ioa_$general_rs entry (pointer, fixed binary, fixed binary, character (*), fixed binary (21), bit (1), bit (1)); 1376 dcl ioa_$rsnnl entry () options (variable); 1377 dcl iodd_msg_ entry () options (variable); 1378 dcl ios_$attach entry (character (*), character (*), character (*), character (*), 1 aligned like ios_status); 1379 dcl ios_$detach entry (character (*), character (*), character (*), 1 aligned like ios_status); 1380 dcl iox_$control entry (pointer, character (*), pointer, fixed binary (35)); 1381 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 1382 dcl term_$refname entry (character (*), fixed binary (35)); 1383 dcl unique_chars_ entry (bit (*)) returns (character (15)); 1384 1385 dcl (cleanup, daemon_again, daemon_again_slave, daemon_cancel, daemon_defer, daemon_kill, daemon_save, imft_debug_, 1386 imft_remote_logout_, imft_resynchronize_driver_, imft_write_abort_, record_quota_overflow) condition; 1387 1388 dcl (addr, clock, convert, currentsize, divide, fixed, float, hbound, ltrim, length, max, null, rtrim, string, substr, 1389 unspec) builtin; 1390 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1391 1392 2 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 2 2 /* format: style3,indcomtxt,idind30 */ 2 3 2 4 declare acl_ptr pointer; 2 5 declare acl_count fixed bin; 2 6 2 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 2 8 2 version char (8) aligned, 2 9 2 count fixed bin, 2 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 2 11 2 12 declare 1 general_acl_entry based, 2 13 2 access_name character (32) unaligned, 2 14 2 mode bit (36) aligned, 2 15 2 status_code fixed bin (35); 2 16 2 17 2 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 2 19 2 version char (8) aligned, 2 20 2 count fixed bin, 2 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 2 22 2 23 declare 1 general_extended_acl_entry aligned based, 2 24 2 access_name character (32) unaligned, 2 25 2 mode bit (36) aligned, 2 26 2 extended_mode bit (36) aligned, 2 27 2 status_code fixed bin (35); 2 28 2 29 2 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 2 31 2 version char (8) aligned, 2 32 2 count fixed bin, 2 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 2 34 2 35 declare 1 general_delete_acl_entry aligned based, 2 36 2 access_name character (32) unaligned, 2 37 2 status_code fixed bin (35); 2 38 2 39 2 40 declare 1 segment_acl aligned based (acl_ptr), 2 41 2 version fixed bin, 2 42 2 count fixed bin, 2 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 2 44 2 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 2 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 2 47 2 48 2 49 declare 1 directory_acl aligned based (acl_ptr), 2 50 2 version fixed bin, 2 51 2 count fixed bin, 2 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 2 53 2 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 2 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 2 56 2 57 2 58 declare 1 delete_acl based (acl_ptr) aligned, 2 59 2 version fixed bin, 2 60 2 count fixed bin, 2 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 2 62 2 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 2 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 2 65 2 66 2 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 2 68 DIR_ACL_VERSION_1 init ("dra1"), 2 69 DELETE_ACL_VERSION_1 init ("dla1")) 2 70 char (4) int static options (constant); 2 71 2 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 2 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 2 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 2 75 char (8) internal static options (constant); 2 76 2 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 2 78 2 79 /* End include file acl_structures.incl.pl1 */ 1393 1394 3 1 /* BEGIN INCLUDE FILE ... backup_control.incl.pl1 */ 3 2 /* Modified: July 1982 by G. Palter to add features for proper support of AIM in IMFT (version 4) */ 3 3 /* Modified: August 1983 by Robert Coren to add minimum access class enforcement */ 3 4 /* Modified: November 1983 by Robert Coren to add "upgrade_to_user_auth" flag */ 3 5 3 6 /* Hierarchy dumper/reloader subroutine control structure */ 3 7 3 8 dcl 1 backup_control aligned based (backup_control_ptr), 3 9 2 header, /* allows people to use like (!) */ 3 10 3 version character (8) unaligned, 3 11 3 tape_entry entry (character (*)) variable, /* returns next tape label */ 3 12 3 data_iocb pointer, /* -> I/O switch to use for dumping/loading if preattached */ 3 13 3 maximum_access_class bit (72) aligned, /* maximum access class for anything to be dumped */ 3 14 3 minimum_access_class bit (72) aligned, /* minimum access class for anything to be dumped */ 3 15 3 maximum_dir_access_class bit (72) aligned, /* no directory above this access class is dumped */ 3 16 3 user_for_access_check, /* data required to validate user's access */ 3 17 4 id character (32) unaligned, /* Person.Project.tag */ 3 18 4 authorization bit (72), /* the user's process authorization */ 3 19 4 ring fixed binary, /* the user's ring o execution */ 3 20 3 minimum_ring fixed binary, /* no ring bracket is set below this value */ 3 21 3 aim_translations, /* data required to translate AIM attributes on the tape */ 3 22 4 source_attributes_ptr pointer, 3 23 4 target_attributes_ptr pointer, 3 24 3 options aligned, 3 25 4 map_sw bit(1) unaligned, /* ON to write map segment */ 3 26 4 debug_sw bit (1) unaligned, /* ON to check quotas and not trim subtrees */ 3 27 4 no_reload_sw bit (1) unaligned, /* ON to not load for backup_load_ */ 3 28 4 hold_sw bit (1) unaligned, /* ON to not demount tape afterwards */ 3 29 4 preattached bit (1) unaligned, /* ON => perform loading/dumping to supplied I/O switch */ 3 30 4 error_file bit (1) unaligned, /* ON => generate an error file anyway */ 3 31 4 first bit (1) unaligned, /* ON => for reload, stop after all requests satisfied */ 3 32 4 caller_handles_conditions bit (1) unaligned, /* ON => caller of backup_dump_ handles faults */ 3 33 4 allow_dir_overwrite bit (1) unaligned, /* ON => allow reloaded seg to overwrite a dir */ 3 34 4 enforce_max_access_class bit (1) unaligned, /* ON => do not dump anything above given access class */ 3 35 4 dont_dump_upgraded_dirs bit (1) unaligned, /* ON => do not dump directories above given access class */ 3 36 4 check_effective_access bit (1) unaligned, /* ON => do not dump branches specified user can't touch */ 3 37 4 restore_access_class bit (1) unaligned, /* ON => restore AIM attributes even in debug mode */ 3 38 4 enforce_minimum_ring bit (1) unaligned, /* ON => do not give anything ring bracket below minimum */ 3 39 4 translate_access_class bit (1) unaligned, /* ON => translate access classes read from tape */ 3 40 4 enforce_min_access_class bit (1) unaligned, /* ON => do not dump anything below given access class */ 3 41 4 upgrade_to_user_auth bit (1) unaligned, /* ON => set access class of branch being dumped to user's authorization */ 3 42 4 pad bit (19) unaligned, 3 43 3 request_count fixed binary, /* # of entries to load or dump */ 3 44 2 requests (backup_control_request_count refer (backup_control.request_count)), 3 45 3 path character (168) unaligned, /* pathname of object to be dumped/loaded */ 3 46 3 new_path character (168) unaligned, /* pathname for object when reloading if not same as above */ 3 47 3 switches aligned, 3 48 4 no_primary_sw bit (1) unaligned, /* do not use primary pathname */ 3 49 4 trim_sw bit (1) unaligned, /* trim target directories */ 3 50 4 pad bit (34) unaligned, 3 51 3 found bit(1) aligned, /* ON => found on tape by backup_load_ (output) */ 3 52 3 loaded bit (1) aligned, /* ON => loaded by backup_load_ (output) */ 3 53 3 status_code fixed binary (35), /* ON => per-entry status code (output) */ 3 54 3 error_name character (65) unaligned; /* ON => some information about what happened (output) */ 3 55 3 56 dcl backup_control_ptr pointer; 3 57 3 58 dcl backup_control_request_count fixed binary; /* for allocations */ 3 59 3 60 dcl BACKUP_CONTROL_VERSION_5 character (8) static options (constant) initial ("hbc_0005"); 3 61 3 62 /* END INCLUDE FILE ... backup_control.incl.pl1 */ 1395 1396 4 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 4 2 4 3 /* control flag bit string passed to delete_$path and delete_$ptr 4 4* 4 5* Jay Pattin 6/6/83 */ 4 6 4 7 declare 1 delete_options, 4 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 4 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 4 10 2 directory bit (1) unaligned, /* ON = delete directories */ 4 11 2 segment bit (1) unaligned, /* ON = delete segments */ 4 12 2 link bit (1) unaligned, /* ON = delete links */ 4 13 2 chase bit (1) unaligned, /* ON = delete through links */ 4 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 4 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 4 16 2 mbz bit (28) unaligned; 4 17 4 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 1397 1398 5 1 /* BEGIN INCLUDE FILE...driver_status.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 5 7* Ancient History 5 8* Coded by Robert S. Coren August 1973 5 9* Modified by J. Whitmore to structure data for the Access Isolation Mechanism 5 10* Modified by J. C. Whitmore, 5/78, for IO Daemon extensions 5 11* Modified by J. C. Whitmore, 8/79, to add the generic_type variable 5 12* 2) change(88-08-19,Brunelle), approve(88-08-19,MCR7911), 5 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 5 14* Upgraded for version 5 iod tables. Changed the minor_args ftom string to 5 15* text_offset. Changed acct_ptr to acct_entry. Added have_accounting bit 5 16* to denote accounting ^= nothing. 5 17* END HISTORY COMMENTS */ 5 18 5 19 5 20 /* status data for a logical device driver */ 5 21 5 22 /* format: style4 */ 5 23 5 24 dcl driver_status_ptr ptr; 5 25 dcl 1 driver_status aligned based (driver_status_ptr), 5 26 2 req_type_label char (32), /* string to describe the request type */ 5 27 2 dev_name_label char (32), /* string to describe the device */ 5 28 2 device_id char (32), /* minor device name used by this logical driver */ 5 29 2 device_class_id char (32), /* device class name used by this logical driver */ 5 30 2 coord_chan fixed bin (71), /* ipc event channel for signals to coord. */ 5 31 2 driver_chan fixed bin (71), /* ipc event channel for signals from coord. */ 5 32 2 last_wake_time fixed bin (71), /* time last wakeup sent to coord */ 5 33 2 request_pending bit (36), /* locking word for communication with coord */ 5 34 /* 0 = ready for a request */ 5 35 /* driver pid = don't bug me */ 5 36 /* coord pid = got a request */ 5 37 2 status_flags, 5 38 3 attached bit (1) unal, /* minor device is attached for i/o */ 5 39 3 busy bit (1) unal, /* driver doing request..tell coord when done */ 5 40 3 ready bit (1) unal, /* driver is ready to handle requests */ 5 41 3 acknowledge bit (1) unal, /* coordinator must reply to all wakeups */ 5 42 3 have_accounting bit (1) unal, /* ON if accounting ^= nothing */ 5 43 3 pad bit (31) unal, 5 44 2 list_index fixed bin, /* index of this driver in the driver ptr list */ 5 45 2 dev_index fixed bin, /* index in iod_device_tab of this minor device */ 5 46 2 maj_index fixed bin, /* index in iod_device_tab of the corresponding major device */ 5 47 2 dev_class_index fixed bin, /* index of device_class entry */ 5 48 2 minor_args unaligned like text_offset, /* descriptive string for this minor device */ 5 49 2 min_banner bit (72) aligned, /* min banner access class for marking output */ 5 50 2 acct_entry entry (char (*), char (*), ptr, fixed bin (35)) variable, /* entry variable to accounting procedure */ 5 51 /* for this logical driver */ 5 52 2 rqti_ptr ptr, /* pointer to the request type info seg */ 5 53 2 dev_out_iocbp ptr, /* iocb pointer for dev_out_stream */ 5 54 2 dev_in_iocbp ptr, /* iocb pointer for dev_in_stream */ 5 55 2 dev_out_stream char (32), /* output stream for minor device */ 5 56 2 dev_in_stream char (32), /* input stream for minor device */ 5 57 2 elem_size fixed bin, /* element size for the stream */ 5 58 2 message_type fixed bin, /* expected format of user request */ 5 59 2 form_wait_time fixed bin (71), /* average time needed to write ctl term msg */ 5 60 2 forms_validation_ptr ptr, /* forms validation data */ 5 61 2 dev_ptr1 ptr, /* another one */ 5 62 2 dev_fb1 fixed bin, /* a spare fixed bin variable for the driver */ 5 63 2 dev_fb2 fixed bin, /* and another */ 5 64 2 dev_fb3 fixed bin, /* and another */ 5 65 2 dev_fb4 fixed bin, /* and the last spare fixed bin */ 5 66 2 dev_fb71 fixed bin (71), /* a spare fixed bin 71 variable */ 5 67 2 dev_ctl_ptr ptr, /* pointer to control structure for this device */ 5 68 2 bit_rate_est fixed bin (35), /* output rate estimate - bits per second */ 5 69 2 defer_time_limit fixed bin (35), /* max time allowed for a request - in seconds (0 = no limit) */ 5 70 2 generic_type char (32), /* generic type of this minor device */ 5 71 2 status_pad (2) fixed bin (35), /* save some room for later */ 5 72 2 descriptor like request_descriptor, /* copy of request descriptor */ 5 73 2 desc_pad (13) fixed bin, 5 74 2 message fixed bin; /* place-holder for copy of request message */ 5 75 5 76 5 77 /* END INCLUDE FILE...driver_status.incl.pl1 */ 1399 1400 6 1 /* BEGIN: fs_star_.incl.pl1 * * * * * * * * * * * * */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(88-07-15,GDixon), approve(88-09-20,MCR7987), 6 5* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 6 6* Initial version corresponding to MTB781-00. 6 7* 2) change(88-08-25,GDixon), approve(88-09-20,MCR7987), 6 8* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 6 9* Modifications corresponding to MTB781-01 correcting minor problems 6 10* found during the review of the earlier MTB. 6 11* 3) change(88-09-19,GDixon), approve(88-09-20,MCR8007), 6 12* audit(88-10-03,Beattie), install(88-10-06,MR12.2-1139): 6 13* Final changes reflecting MTB781-02. This is the MR12.2 version. 6 14* END HISTORY COMMENTS */ 6 15 6 16 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 17 /* */ 6 18 /* This include file declares structures and named constants used when calling the fs_star_ */ 6 19 /* subroutine. */ 6 20 /* */ 6 21 /* star_options: */ 6 22 /* defines star matching, selection and sorting criteria. */ 6 23 /* */ 6 24 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 25 6 26 dcl 1 star_options aligned based (star_optionsP), 6 27 2 version char(8), /* = STAR_OPTIONS_VERSION_1 */ 6 28 6 29 2 caller, 6 30 3 ssu_sciP ptr, /* subsystem sci_ptr, used to get */ 6 31 /* areas & temp segs, report errors. */ 6 32 /* null => use other elements as below */ 6 33 3 fs_star_dataP ptr, /* ptr to fs_star_ internal data. */ 6 34 6 35 2 selection, 6 36 3 star_pathsP ptr, /* ptr to input pathname array. */ 6 37 /* Starred paths select starting ents. */ 6 38 3 path_allow bit(36) aligned, /* type of paths allowed in star_paths */ 6 39 /* See PATH_ALLOW_xxx constants below. */ 6 40 3 entry_type, /* selection/expansion of standard */ 6 41 4 ( /* entry types. See ENTRY_xxx */ 6 42 links, /* constants below. */ 6 43 segs, 6 44 dirs, 6 45 msfs, 6 46 msf_comps, 6 47 dm_files, 6 48 archives, 6 49 arch_comps, 6 50 extended_entries) bit(36) aligned, 6 51 3 extended_entry_typesP ptr, /* ptr to entry type selection array. */ 6 52 /* ^=null => only paths matching one */ 6 53 /* extended entry type are */ 6 54 /* selected. */ 6 55 3 match_namesP ptr, /* ptr to added starname match array. */ 6 56 /* ^=null => only paths matching one */ 6 57 /* or more matchnames are */ 6 58 /* selected. */ 6 59 3 exclude_namesP ptr, /* ptr to starname exclusion array. */ 6 60 /* ^=null => selected paths matching */ 6 61 /* one or more excludenames */ 6 62 /* are de-selected. */ 6 63 6 64 2 per_entry, /* For each selected entry: */ 6 65 3 sorting (6), /* major/minor sort keys, by locator */ 6 66 4 ( /* within selected subtree. */ 6 67 dirs, /* Sorting of dirs in selected subtree */ 6 68 dir_ents, /* Sorting of ents in selected dirs. */ 6 69 comps) fixed bin, /* Sorting of archive and msf */ 6 70 /* components in selected ents. */ 6 71 /* Lower-numbered array elements are */ 6 72 /* major keys. See SORT_xxx */ 6 73 /* constants below. */ 6 74 3 handler /* call this proc to handle entry. */ 6 75 entry (ptr, char(*), (*)char(32), char(*), fixed bin), 6 76 /* call handler (star_dataP, dir, ent_names, comp_name, action); */ 6 77 3 error /* call this proc if error occurs. */ 6 78 entry (ptr, char(*), (*)char(32), char(*), 6 79 fixed bin(35), char(*), fixed bin), 6 80 /* call error (star_dataP, dir, ent_names, comp_name, */ 6 81 /* code, message, action); */ 6 82 /* =ssu_$null_entry => */ 6 83 /* use ssu_$print_error */ 6 84 3 handler_dataP ptr, /* ptr to caller-provided data passed */ 6 85 /* on to .handler and .error. */ 6 86 3 data_desired fixed bin, /* type of info to pass to .handler */ 6 87 /* for each selected entry. See */ 6 88 /* DATA_xxx constants below. */ 6 89 3 data_version char(8) unal, /* Version of star_data structure */ 6 90 /* that .handler expects to receive. */ 6 91 /* Only STAR_DATA_VERSION_1 allowed. */ 6 92 2 mbz bit(36) aligned, /* Reserved for future use. */ 6 93 star_optionsP ptr; /* ptr to star_options structure. */ 6 94 6 95 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 96 /* */ 6 97 /* Named Constant for star_options.version: */ 6 98 /* version of star_options the caller is prepared to deal with. */ 6 99 /* */ 6 100 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 101 6 102 dcl STAR_OPTIONS_VERSION_1 init("STAROPT1") char(8) int static options(constant); 6 103 6 104 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 105 /* */ 6 106 /* star_paths: */ 6 107 /* array of directory entry pathnames (or archive component pathnames) which does initial */ 6 108 /* pathname selection, based upon starnames in dir part (dir>**>ent), final entryname (dir>**), */ 6 109 /* and/or archive component part (dir>ent.archive::**) of pathname. These starnames select the */ 6 110 /* initial set of entries to which further selection criteria are applied. */ 6 111 /* star_options.path_allow setting controls which type of pathname (dir entry or archive */ 6 112 /* component) is allowed, and which parts may contain stars. */ 6 113 /* */ 6 114 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 115 6 116 dcl 1 star_paths aligned based (star_options.star_pathsP), 6 117 2 version char(8), /* = STAR_PATHS_VERSION_1 */ 6 118 2 max_count fixed bin, /* maximum size of value array for the */ 6 119 /* current allocation of star_paths. */ 6 120 2 count fixed bin, /* current size of value array. */ 6 121 2 value (star_paths_size refer (star_paths.max_count)) char(202) unal, 6 122 /* dir>**>ent>**::** */ 6 123 star_paths_size fixed bin auto, 6 124 STAR_PATHS_VERSION_1 init("STARPTH1") char(8) int static options(constant); 6 125 6 126 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 127 /* */ 6 128 /* Named Constants for star_options.path_allow: */ 6 129 /* select the types of pathnames are allowed, and which pathname components may contain stars. */ 6 130 /* */ 6 131 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 132 6 133 dcl (PATH_ALLOW_DIR_STAR_NAMES init("1"b), /* dir>**>ent */ 6 134 PATH_ALLOW_ENTRY_STAR_NAMES init("01"b), /* dir>** */ 6 135 PATH_ALLOW_ARCHIVE_COMPONENTS init("001"b), /* dir>ent::comp */ 6 136 PATH_ALLOW_ARCHIVE_STAR_NAMES init("0001"b), /* dir>ent::** */ 6 137 PATH_ALLOW_ARCHIVE_COMP_STAR_NAMES init("0011"b), /* dir>ent::** or dir>ent::comp */ 6 138 PATH_ALLOW_NONDIR_STAR_NAMES init("0111"b), /* dir>**::** */ 6 139 PATH_ALLOW_BRANCH_STAR_NAMES init("1100"b), /* dir>**>** */ 6 140 PATH_ALLOW_ALL_STAR_NAMES init("1111"b)) /* dir>**>**::** */ 6 141 bit(36) aligned int static options(constant); 6 142 6 143 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 144 /* */ 6 145 /* Named Constants for star_options.selection.entry_type: */ 6 146 /* for entries matching the starname, selection by entry type, control expansion, etc. */ 6 147 /* One named constant from each group may be ORed together to form a value to be assigned to */ 6 148 /* each star_options.entry_type.XXX value (eg, star_options.entry_type.segs). */ 6 149 /* */ 6 150 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 151 6 152 dcl (ENTRY_DONT_RETURN init("1"b), /* Don't return entries of this type. */ 6 153 ENTRY_RETURN init("0"b), /* Return entries of this type. */ 6 154 6 155 ENTRY_LIST_SUBENTRIES init("01"b), /* List components of matching ents. */ 6 156 ENTRY_DONT_LIST_SUBENTRIES init("00"b), /* Don't list components of match ents. */ 6 157 /* Applies to: dirs, archives, msfs */ 6 158 6 159 ENTRY_INAEE init("001"b), /* Interpret as extended ent (-inaee). */ 6 160 ENTRY_INASE init("000"b), /* Interpret as standard ent (-inase). */ 6 161 /* Applies to: segs, dirs, msfs, & */ 6 162 /* dm_files. */ 6 163 6 164 ENTRY_DONT_SELECT_NULL init("0001"b), /* Select only nonnull entries. */ 6 165 ENTRY_DONT_SELECT_NONNULL init("00001"b), /* Select only null entries. */ 6 166 ENTRY_SELECT_NULL_NONNULL init("00000"b), /* Select both null and nonnull entries.*/ 6 167 /* Applies to: links, segs, msfs, */ 6 168 /* msf_comps, archives, arch_comps */ 6 169 6 170 ENTRY_CHASE_NONSTAR_LINKS init("000001"b), /* Chase links only if link was not */ 6 171 /* selected by a starname. */ 6 172 ENTRY_CHASE_ALL_LINKS init("0000001"b), /* Chase all links. (-chase) */ 6 173 ENTRY_DONT_CHASE_LINKS init("0000000"b), /* Don't chase links. (-no_chase) */ 6 174 /* Applies to: links */ 6 175 6 176 ENTRY_DONT_SELECT_OBJECTS init("00000001"b), /* Select only nonobject files. */ 6 177 ENTRY_DONT_SELECT_NONOBJECTS init("000000001"b), /* Select only object files. */ 6 178 ENTRY_SELECT_ALL_FILES init("000000000"b), /* Select both objects and nonobjects. */ 6 179 /* Applies to: segs, msfs, arch_comps */ 6 180 6 181 ENTRY_DONT_SELECT_MDIRS init("0000000001"b), /* Select only nonmaster dirs. */ 6 182 ENTRY_DONT_SELECT_NON_MDIRS init("00000000001"b),/* Select only master dirs. */ 6 183 ENTRY_SELECT_ALL_DIRS init("00000000000"b))/* Select both masters and nonmasters. */ 6 184 /* Applies to: dirs */ 6 185 bit(36) aligned int static options(constant); 6 186 6 187 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 188 /* */ 6 189 /* extended_entry_types: */ 6 190 /* array of extended entry types applied to entries selected from the star_paths array. If an */ 6 191 /* entry matches any of the given extended types, that entry is included for further selection. */ 6 192 /* */ 6 193 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 194 6 195 dcl 1 extended_entry_types aligned based (star_options.extended_entry_typesP), 6 196 2 version char(8), /* = STAR_EXTENDED_ENTRY_VERSION_1 */ 6 197 2 max_count fixed bin, /* maximum size of value array for the */ 6 198 /* current allocation of */ 6 199 /* extended_entry_types. */ 6 200 2 count fixed bin, /* current size of value array. */ 6 201 2 value (extended_entry_types_size refer (extended_entry_types.max_count)) char(32) unal, 6 202 /* -slet EXTENDED_TYPE */ 6 203 extended_entry_types_size fixed bin auto, 6 204 STAR_EXTENDED_ENTRY_VERSION_1 init("STARETP1") char(8) int static options(constant); 6 205 6 206 6 207 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 208 /* */ 6 209 /* match_names: */ 6 210 /* array of additional starnames which are applied to entries selected from the star_paths */ 6 211 /* and extended_entry_types arrays. If any name on an entry matches any match_name, that entry */ 6 212 /* is included for further selection. */ 6 213 /* */ 6 214 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 215 6 216 dcl 1 match_names aligned based (star_options.match_namesP), 6 217 2 version char(8), /* = STAR_MATCH_NAMES_VERSION_1 */ 6 218 2 max_count fixed bin, /* maximum size of value array for the */ 6 219 /* current allocation of match_names. */ 6 220 2 count fixed bin, /* current size of value array. */ 6 221 2 value (match_names_size refer (match_names.max_count)) char(32) unal, 6 222 /* -match ** */ 6 223 match_names_size fixed bin auto, 6 224 STAR_MATCH_NAMES_VERSION_1 init("STARMNM1") char(8) int static options(constant); 6 225 6 226 6 227 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 228 /* */ 6 229 /* exclude_names: */ 6 230 /* array of starnames which are applied to entries selected from star_paths, */ 6 231 /* extended_entry_types and match_names arrays. If any name on an entry matches an exclude */ 6 232 /* name, that entry is excluded from further selection. */ 6 233 /* */ 6 234 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 235 6 236 dcl 1 exclude_names aligned based (star_options.exclude_namesP), 6 237 2 version char(8), /* = STAR_EXCLUDE_NAMES_VERSION_1 */ 6 238 2 max_count fixed bin, /* maximum size of value array for the */ 6 239 /* current allocation of exclude_names */ 6 240 2 count fixed bin, /* current size of value array. */ 6 241 2 value (exclude_names_size refer (exclude_names.max_count)) char(32) unal, 6 242 /* -exclude ** */ 6 243 exclude_names_size fixed bin auto, 6 244 STAR_EXCLUDE_NAMES_VERSION_1 init("STARENM1") char(8) int static options(constant); 6 245 6 246 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 247 /* */ 6 248 /* Named Constants for star_options.handler: */ 6 249 /* handler procedure's action parameter to control the further progress of searching. */ 6 250 /* */ 6 251 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 252 6 253 dcl (HANDLER_OK init (0), /* no error when handling entry. */ 6 254 HANDLER_REJECT init (1), /* no error, but handler does not */ 6 255 /* accept entry; it should not be */ 6 256 /* counted, expanded, etc. */ 6 257 HANDLER_DONT_EXPAND init (2), /* no error, but handler does not want */ 6 258 /* dir/archive entry expanded. */ 6 259 HANDLER_EXPAND init (3), /* no error, but expand dir/archive */ 6 260 /* even if contrary to .entry_type. */ 6 261 HANDLER_EXPAND_DONT_COUNT init (4), /* no error, but handler does not accept */ 6 262 /* entry; it should not be counted, but */ 6 263 /* should be expanded. */ 6 264 HANDLER_DONT_COUNT init (5), /* no error, but handler does not accept */ 6 265 /* entry; it should not be counted. Its */ 6 266 /* expansion depends upon .entry_type */ 6 267 /* setting for this type of entry. */ 6 268 HANDLER_STOP init (6), /* no error, but the selection process */ 6 269 /* process terminates immediately. */ 6 270 /* Entry should be counted, then */ 6 271 /* fs_star_$select returns to caller. */ 6 272 HANDLER_ABORT init (7) /* error, entry not counted, selection */ 6 273 /* process terminates immediately, */ 6 274 /* handler reports any error, then */ 6 275 /* fs_star_$select returns to caller. */ 6 276 ) fixed bin internal static options(constant); 6 277 6 278 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 279 /* */ 6 280 /* Named Constants for star_options.error: */ 6 281 /* error procedure's action parameter. */ 6 282 /* */ 6 283 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 284 6 285 dcl (ERROR_OK init (0), /* error was processed successfully. */ 6 286 /* Entry causing error should be */ 6 287 /* counted as a match, but should not */ 6 288 /* be passed to handler for processing */ 6 289 /* nor expanded. */ 6 290 ERROR_REJECT init (1), /* error was processed successfully. */ 6 291 /* Entry causing error was rejected, */ 6 292 /* should not be counted as a match, */ 6 293 /* expanded, nor passed to handler. */ 6 294 ERROR_STOP init (6), /* error was processed successfully, */ 6 295 /* but error routine wants to stop the */ 6 296 /* selection process immediately. */ 6 297 /* Entry should be counted as a match, */ 6 298 /* but not expanded nor passed to the */ 6 299 /* handler routine for processing. */ 6 300 ERROR_ABORT init (7) /* error processing was unsuccessful. */ 6 301 /* Error routine wants to stop the */ 6 302 /* selection process immediately. */ 6 303 /* Entry should not be counted as a */ 6 304 /* match, expanded, nor passed to the */ 6 305 /* handler routine. */ 6 306 ) fixed bin internal static options(constant); 6 307 6 308 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 309 /* */ 6 310 /* Named Constants for star_options.sorting: */ 6 311 /* */ 6 312 /* fs_star_ can sort the selected entries before they are passed to the caller-provided handler */ 6 313 /* routine. Sorting of selected entries can be based upon three categories of sorting: */ 6 314 /* - the attributes of selected archive or MSF components (the component's name or its position */ 6 315 /* within the archive/msf); or */ 6 316 /* - the attributes of the selected directory entry (matching entryname, entry type or position */ 6 317 /* within the directory); or */ 6 318 /* - the selected entry's location within the selected subtree, or the matching entrynames in the */ 6 319 /* directory part of the pathname of a selected entry. */ 6 320 /* */ 6 321 /* To provide flexibility, any of the sorting categories above can be used singly, or in */ 6 322 /* combination. If used in combination, component sorting occurs before entry sorting, which occurs */ 6 323 /* before directory pathname sorting. Within a given category, several sorting operations are */ 6 324 /* possible. These include: */ 6 325 /* - sorting by name; */ 6 326 /* - sorting by (standard or extended) entry type; */ 6 327 /* - sorting of children entries with respect to their parent; */ 6 328 /* - sorting in ascending or descending sequence (forward or reverse); or */ 6 329 /* - sorting can be disabled for the category. */ 6 330 /* */ 6 331 /* Within a sort category, each sorting operation can be used singly, or in combinations of one to*/ 6 332 /* four sort operations in a caller-defined order. Order sort operations are specified by filling in*/ 6 333 /* the elements of the star_options.sorting arrays. For example: */ 6 334 /* star_options.selection.entry_type = ENTRY_RETURN; */ 6 335 /* star_options.sorting(*) = SORT_OFF; */ 6 336 /* star_options.sorting(1) = SORT_FORWARD; */ 6 337 /* star_options.sorting(1).comps = SORT_BY_NAME; */ 6 338 /* passes all directories and directory entries in the selected subtree to the handler routine in the*/ 6 339 /* order they were returned by hcs_$star_. Selected components of archives and MSFs are passed to */ 6 340 /* the handler routine, sorted by component name. */ 6 341 /* star_options.selection.entry_type = ENTRY_RETURN; */ 6 342 /* star_options.sorting(*) = SORT_OFF; */ 6 343 /* star_options.sorting(1) = SORT_FORWARD; */ 6 344 /* star_options.sorting(1).comps = SORT_REVERSE; */ 6 345 /* star_options.sorting(2).comps = SORT_BY_NAME; */ 6 346 /* passes the components to the handler sorted by component name, in reverse ASCII collating */ 6 347 /* sequence. */ 6 348 /* star_options.selection.entry_type = ENTRY_DONT_RETURN; */ 6 349 /* star_options.selection.entry_type.dirs = ENTRY_DONT_RETURN | ENTRY_LIST_SUBENTRIES; */ 6 350 /* star_options.selection.entry_type.archives = ENTRY_DONT_RETURN | ENTRY_LIST_SUBENTRIES; */ 6 351 /* star_options.selection.entry_type.arch_comps = ENTRY_RETURN; */ 6 352 /* star_options.sorting(*) = SORT_OFF; */ 6 353 /* star_options.sorting(1).comps = SORT_BY_NAME; */ 6 354 /* passes the archive components to the handler sorted by component name, irrespective of the archive*/ 6 355 /* the component resides in. That is, components in all archives selected from the subtree are found*/ 6 356 /* and sorted by name, and then passed to the handler in that order. */ 6 357 /* */ 6 358 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 359 6 360 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 361 /* */ 6 362 /* star_options.selection.entry_type = ENTRY_RETURN; */ 6 363 /* star_options.selection.entry_type.dirs = ENTRY_LIST_SUBENTRIES; */ 6 364 /* star_options.selection.entry_type.arch_comps = ENTRY_DONT_RETURN; */ 6 365 /* star_options.selection.entry_type.msf_comps = ENTRY_DONT_RETURN; */ 6 366 /* star_options.sorting(*) = SORT_OFF; */ 6 367 /* star_options.sorting(1).dirs = SORT_BY_NAME; */ 6 368 /* star_options.sorting(1).dir_ents = SORT_BY_STANDARD_TYPE */ 6 369 /* star_options.sorting(2).dir_ents = SORT_BY_NAME; */ 6 370 /* star_options.sorting(3).dir_ents = SORT_ENTRIES_BEFORE_SUBENTRIES; */ 6 371 /* passes selected entries to the handler routine sorted by directory, and within a directory sorted */ 6 372 /* by matching entryname within entry type groupings. For entries in a single directory, this is the*/ 6 373 /* type of grouping and sorting performed by the command: */ 6 374 /* list -sort name -all */ 6 375 /* */ 6 376 /* Sorting is based upon the location of the item within the selected subtree. If sorting by */ 6 377 /* dirs(*) is SORT_OFF, then the entire subtree must be selected and sorted before any data can be */ 6 378 /* passed to the handler. If sorting by dirs(*) is not SORT_OFF, then the contents of each dir is */ 6 379 /* sorted and passed to handler before processing subdirs. This provides more immediate response. */ 6 380 /* */ 6 381 /* Elements of the star_data.matched minor structure below are counts of the total entries found, */ 6 382 /* divided by entry type. If sorting.dirs(*) is SORT_OFF, then these counts represent the total of */ 6 383 /* all entries selected within the entire subtree. Otherwise, they represent only the entries */ 6 384 /* selected and sorted within the current node of the subtree and all previously handled nodes. */ 6 385 /* */ 6 386 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 387 6 388 dcl (SORT_OFF init(0), /* Don't sort by this subtree locator. */ 6 389 SORT_FORWARD init(1), /* Sort entries in order returned by */ 6 390 /* hcs_$star_ or archive_ subrs. */ 6 391 SORT_REVERSE init(2), /* Reverse ordering specified by */ 6 392 /* sort_sel elements with higher */ 6 393 /* index values. */ 6 394 SORT_BY_NAME init(3), /* Sort by primary matching ent name. */ 6 395 SORT_BY_STANDARD_ENTRY_TYPE init(4), /* Sort by standard entry type. */ 6 396 SORT_BY_EXTENDED_ENTRY_TYPE init(5), /* Sort by extended entry type. */ 6 397 SORT_ENTRIES_BEFORE_SUBENTRIES init(6)) /* Sort all entries in a directory before*/ 6 398 /* looking for any subentries. By */ 6 399 /* default, subentries below an entry */ 6 400 /* are expanded immediately after the */ 6 401 /* entry is encountered in the sorted */ 6 402 /* sequence of directory entries. */ 6 403 fixed bin int static options(constant); 6 404 6 405 6 406 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 407 /* */ 6 408 /* Named Constants for star_options.data_desired: */ 6 409 /* values control the amount of data returned to caller's entry handler routine in */ 6 410 /* star_data.entry_data. */ 6 411 /* */ 6 412 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 413 6 414 dcl (DATA_TYPE init (1), /* Entry type, only. */ 6 415 DATA_INITIATE init (2)) /* Entry type, length and count */ 6 416 fixed bin int static options(constant); 6 417 6 418 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 419 /* */ 6 420 /* Named constant for star_options.data_version: */ 6 421 /* caller-specified version of star_data he is willing to accept. */ 6 422 /* */ 6 423 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 424 6 425 dcl STAR_DATA_VERSION_1 init ("STARDAT1") char(8) int static options(constant); 6 426 /* star_data version 1 structure. */ 6 427 6 428 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 429 /* */ 6 430 /* star_data: */ 6 431 /* information provided to caller-supplied entry handler routine for each selected entry. */ 6 432 /* */ 6 433 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 434 6 435 dcl 1 star_data aligned based (star_dataP), 6 436 2 version char(8), /* = STAR_DATA_VERSION_1 */ 6 437 2 star_optionsP ptr, /* ptr to caller-supplied star_options */ 6 438 /* structure. This makes */ 6 439 /* star_options.handler_dataP */ 6 440 /* available to the handler routine. */ 6 441 2 matched, /* count of matching entries: */ 6 442 3 ( 6 443 current, /* index of current entry in sort list */ 6 444 total, /* count of total entries. */ 6 445 links, /* count of total links. */ 6 446 segs, /* count of total non-archive, */ 6 447 /* non-extended entry segments. */ 6 448 dirs, /* count of total directories. */ 6 449 msfs, /* count of total multisegment files. */ 6 450 msf_comps, /* count of total msf components. */ 6 451 dm_files, /* count of total data mgt files. */ 6 452 archives, /* count of total archives. */ 6 453 arch_comps, /* count of total archive components. */ 6 454 extended_entries) fixed bin, /* count of total extended entries. */ 6 455 /* See Named Constants for */ 6 456 /* sort_options.sorting above. */ 6 457 3 mbz_matched (4) fixed bin, /* reserved for future use. */ 6 458 6 459 2 entry_data, /* Beginning of DATA_xxx return items. */ 6 460 3 data_desired fixed bin, /* amount of data in entry_data minor */ 6 461 /* structure which is valid. */ 6 462 3 depth fixed bin, /* depth of this entry below its */ 6 463 /* corresponding parent in */ 6 464 /* star_paths.value. */ 6 465 3 type char(32) unal, /* extended entry type for matching */ 6 466 /* entry. See ENTRY_TYPE_xxx */ 6 467 /* constants below for standard entry */ 6 468 /* types. Extended types are given */ 6 469 /* by entry type suffix (eg, mbx). */ 6 470 /* Data above available when */ 6 471 /* data_desired set to DATA_TYPE. */ 6 472 6 473 3 length fixed bin(35), /* length of entry (by entry type): */ 6 474 /* link => 0 */ 6 475 /* seg => bit count */ 6 476 /* dir => 0 */ 6 477 /* msf => sum of comp bit counts */ 6 478 /* msf comp => msf comp bit count */ 6 479 /* dm_file => 0 */ 6 480 /* arch => bit count of archive */ 6 481 /* arch comp => bit count of component */ 6 482 /* ext entry => 0 */ 6 483 3 count fixed bin(35), /* length of entry (by entry type): */ 6 484 /* link => 0 */ 6 485 /* seg => 0 */ 6 486 /* dir => inferior entry count */ 6 487 /* msf => number of components */ 6 488 /* msf comp => total msf components */ 6 489 /* dm_file => 0 */ 6 490 /* arch => number of components */ 6 491 /* arch comp => total arch components */ 6 492 /* ext entry => 0 */ 6 493 3 entryP ptr, /* ptr to an entry: */ 6 494 /* link => null */ 6 495 /* seg => ptr to segment */ 6 496 /* dir => null */ 6 497 /* msf => ptr to msf_manager_ */ 6 498 /* fcb_ptr argument */ 6 499 /* msf comp => ptr to msf component */ 6 500 /* dm_file => null */ 6 501 /* arch => ptr to archive */ 6 502 /* arch comp => ptr to component */ 6 503 /* ext entry => null */ 6 504 /* Data above available when */ 6 505 /* data_desired set to DATA_INITIATE. */ 6 506 6 507 star_dataP ptr automatic; /* ptr to star_data structure. */ 6 508 6 509 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 510 /* */ 6 511 /* Named constants for star_data.type: */ 6 512 /* type values describing the type of entry passed to caller-supplied handler routine. Type */ 6 513 /* strings for file system standard entry types (links, segments, dirs, dm_files, msfs) agree */ 6 514 /* with those returned by fs_util_$get_type. */ 6 515 /* */ 6 516 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 517 6 518 dcl (ENTRY_TYPE_ARCHIVE init ("-archive"), 6 519 ENTRY_TYPE_ARCHIVE_COMP init ("-archive_component"), 6 520 ENTRY_TYPE_DIRECTORY init ("-directory"), 6 521 ENTRY_TYPE_DM_FILE init ("-dm_file"), 6 522 ENTRY_TYPE_LINK init ("-link"), 6 523 ENTRY_TYPE_MSF init ("-multisegment_file"), 6 524 ENTRY_TYPE_MSF_COMP init ("-msf_component"), 6 525 ENTRY_TYPE_SEGMENT init ("-segment"), 6 526 ENTRY_TYPE_UNKNOWN init ("-unknown"), 6 527 ENTRY_TYPE_UNSET init ("") 6 528 ) char (32) unaligned int static options (constant); 6 529 6 530 dcl STANDARD_ENTRY_TYPES (9) char (32) unal/* array of standard entry type values. */ 6 531 int static options(constant) init ( 6 532 "-link", 6 533 "-segment", 6 534 "-directory", 6 535 "-multisegment_file", 6 536 "-msf_component", 6 537 "-dm_file", 6 538 "-archive", 6 539 "-archive_component", 6 540 "-unknown"); 6 541 6 542 /* END OF: fs_star_.incl.pl1 * * * * * * * * * * * * */ 1401 1402 7 1 /* BEGIN INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 7 2 7 3 /* format: style4 */ 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(88-09-21,Beattie), approve(88-08-01,MCR7948), 7 7* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 7 8* Created to support IMFT ACL checking. 7 9* END HISTORY COMMENTS */ 7 10 7 11 dcl 1 imft_check_acl aligned based (imft_check_acl_ptr), 7 12 2 version character (8), /* version of this structure */ 7 13 2 flags, 7 14 3 allow_transfer bit (1) unaligned, /* indicates that transfer is allowed to start */ 7 15 3 objects_to_transfer bit (1) unaligned, /* indicates that objects were found in subtree that passed all checks */ 7 16 3 check_aim bit (1) unaligned, /* do aim checks */ 7 17 3 found_inner_ring_object bit (1) unaligned, /* an inner ring object was detected */ 7 18 3 pad bit (32) unaligned, 7 19 2 dirname character (168), /* containing directory of object */ 7 20 2 ename character (32), /* entry name of object */ 7 21 2 type character (32), /* type of object */ 7 22 2 object_ring fixed binary (3), /* first ring bracket of object */ 7 23 2 sys_auth_ceiling bit (72), /* system auth ceiling */ 7 24 2 sys_auth_floor bit (72), /* system auth floor */ 7 25 2 user_auth bit (72), /* user's authorization */ 7 26 2 foreign_sys_name character (32), /* for error message */ 7 27 2 gen_acl_ptr pointer, /* ptr to general ACL array */ 7 28 2 dir_access bit (3), /* desired ACL for directories */ 7 29 2 seg_access bit (3), /* desired ACL for segments */ 7 30 2 effective_ring, /* minimum ring for object to allow transfer */ 7 31 2 bad_acl_idx fixed bin, /* index in ACL array which failed ACL checks */ 7 32 2 error_code fixed bin (35), /* standard error code */ 7 33 2 error_message (2) character (512) varying, /* contains an error message */ 7 34 2 accessfile_pathname character (168); /* collect access error mesages here if subtree checking */ 7 35 7 36 dcl imft_check_acl_ptr pointer; 7 37 7 38 dcl DRIVER_ACL_IDX fixed binary int static options (constant) initial (1); 7 39 dcl USER_ACL_IDX fixed binary int static options (constant) initial (2); 7 40 7 41 dcl IMFT_CHECK_ACL_VERSION_1 character (8) init ("IMFTCA01") internal static options (constant); 7 42 7 43 /* END INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 1403 1404 8 1 /* BEGIN INCLUDE FILE ... _imft_cri.incl.pl1 */ 8 2 /* Created: April 1982 by G. Palter */ 8 3 8 4 /* Data structure used by read/write_command/reply_record and get_abort_info control orders */ 8 5 8 6 dcl 1 icri aligned based (icri_ptr), 8 7 2 version character (8), 8 8 2 timeout fixed binary (35), /* # of seconds to wait for read/write to complete */ 8 9 2 pad bit (36), 8 10 2 record_info, 8 11 3 record_ptr pointer, /* -> record to write or buffer where it will be read */ 8 12 3 record_type fixed binary, /* type of record read/written */ 8 13 3 record_max_lth fixed binary (21), /* size of buffer when reading records */ 8 14 3 record_lth fixed binary (21); /* length of record read/written in characters */ 8 15 8 16 dcl icri_ptr pointer; 8 17 8 18 dcl ICRI_VERSION_1 character (8) static options (constant) initial ("cri_1.00"); 8 19 8 20 /* END INCLUDE FILE ... _imft_cri.incl.pl1 */ 1405 1406 9 1 /* BEGIN INCLUDE FILE ... _imft_driver_info.incl.pl1 */ 9 2 9 3 /* Created: April 1982 by G. Palter */ 9 4 /* Modified: July 1982 by G. Palter for true AIM support */ 9 5 /* Modified: February 1983 by Robert Coren to add single_switch and old_version flags */ 9 6 /* Modified: August 1983 by Robert Coren to add access_floor */ 9 7 9 8 /* format: style4 */ 9 9 9 10 9 11 /****^ HISTORY COMMENTS: 9 12* 1) change(87-11-15,Oke), approve(88-08-01,MCR7948), audit(88-10-14,Farley), 9 13* install(88-10-14,MR12.2-1165): 9 14* Added variables to support in-dial and out-dial driver configurations. 9 15* 2) change(88-07-12,Beattie), approve(88-08-01,MCR7948), 9 16* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 9 17* Add imft_version to local and foreign system structures. 9 18* END HISTORY COMMENTS */ 9 19 9 20 9 21 /* Description of an IMFT driver process */ 9 22 9 23 dcl 1 imft_driver_info aligned based (imft_driver_info_ptr), 9 24 2 function fixed binary, /* type of driver (file transfer) */ 9 25 2 flags, 9 26 3 input_driver bit (1) unaligned, /* ON => this driver is receiving input */ 9 27 3 debug_mode bit (1) unaligned, /* ON => someone is debugging the driver in test mode */ 9 28 3 automatic_operation bit (1) unaligned, /* ON => running without operator intervention */ 9 29 3 auto_go bit (1) unaligned, /* ON => start processing output requests immediately */ 9 30 3 auto_receive bit (1) unaligned, /* ON => start receiving input requests immediately */ 9 31 3 single_switch bit (1) unaligned, /* ON => same switch for input and output */ 9 32 3 old_version bit (1) unaligned, /* ON => foreign system uses old (HASP-only) software */ 9 33 3 copy_data bit (1) unaligned, /* ON => imft_io_ will copy all data records to vfiles */ 9 34 3 remote_request_allowed bit (1) unaligned, /* ON => foreign system is allowed to request transfers */ 9 35 3 explicit_access_required bit (1) unaligned, /* ON => remote request requires explicit ACL term for driver */ 9 36 3 idle_line_drop bit (1) unaligned, /* ON => drop when idle and dialup when something to do */ 9 37 3 validate_system_id bit (1) unaligned, /* ON => validate foreign system ident/pass in PNT */ 9 38 3 debug_connect bit (1) unaligned, /* ON => display data during connection phase in master log */ 9 39 3 dial_service bit (1) unaligned, /* ON => connect only when there are requests to transfer */ 9 40 3 pad bit (22) unaligned, 9 41 2 sleep_time fixed bin, /* connect retry wait */ 9 42 2 idle_delay_count fixed bin, /* number of idles til line drop */ 9 43 2 idle_delay fixed bin, /* the idle counter */ 9 44 2 min_time_to_log fixed bin (35), /* transfer must take at least this time to put est time in log */ 9 45 2 io_info, /* data required to connect to the remote system */ 9 46 3 input_attach_description character (256) unaligned, 9 47 3 output_attach_description character (256) unaligned, 9 48 3 in_dial_qualifier character (256) unaligned, 9 49 3 out_dial_text character (256) unaligned, 9 50 3 trigger_text character (256) unaligned, 9 51 2 local_system, /* our system's description ... */ 9 52 3 name character (32) unaligned, /* ... system name */ 9 53 3 password character (8) aligned, /* ... card input password */ 9 54 3 imft_version character (8), /* ... version of driver software */ 9 55 3 access_ceiling bit (72), /* ... maximum AIM level permitted for transfer */ 9 56 3 access_floor bit (72), /* ... minimum AIM level permitted for transfer */ 9 57 3 aim_attributes_ptr pointer, /* ... -> definition of AIM attributes on system */ 9 58 2 foreign_system, /* descirption of foreign system (see above) */ 9 59 3 name character (32) unaligned, 9 60 3 password character (8) aligned, 9 61 3 imft_version character (8), 9 62 3 access_ceiling bit (72), 9 63 3 access_floor bit (72), 9 64 3 aim_attributes_ptr pointer; 9 65 9 66 dcl imft_driver_info_ptr pointer; 9 67 9 68 9 69 /* Presently available types of IMFT driver (with short descriptions) */ 9 70 9 71 dcl FILE_TRANSFER initial (1) /* file transfer driver */ 9 72 fixed binary static options (constant); 9 73 9 74 dcl FUNCTION_NAMES (1) character (32) static options (constant) initial ( 9 75 "file transfer"); 9 76 9 77 /* END INCLUDE FILE ... _imft_driver_info.incl.pl1 */ 1407 1408 10 1 /* BEGIN INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 10 2 10 3 /* Created: April 1982 by G. Palter */ 10 4 /* Modified: March 1983 by Robert Coren, for requests for remote transfer */ 10 5 10 6 10 7 /****^ HISTORY COMMENTS: 10 8* 1) change(88-06-22,Beattie), approve(88-08-01,MCR7948), 10 9* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 10 10* Add flags to support extend, update and delete operations. 10 11* END HISTORY COMMENTS */ 10 12 10 13 10 14 /* IMFT file transfer request definition */ 10 15 10 16 dcl 1 ft_request aligned based (ft_request_ptr), 10 17 2 header like queue_msg_hdr, 10 18 2 request, /* see _imft_ft_commands.incl.pl1 */ 10 19 3 version character (8), 10 20 3 foreign_user character (32) unaligned, /* Person.Project at other Multics for reload access check */ 10 21 3 foreign_dirname character (168) unaligned, /* where to put the branch on the other system */ 10 22 3 foreign_ename character (32) unaligned, /* ... */ 10 23 3 flags, 10 24 4 foreign_user_given bit (1) unaligned, /* ON => forreign_user different from local user */ 10 25 4 foreign_path_given bit (1) unaligned, /* ON => foreign pathname different from local */ 10 26 4 directory_creation_mode bit (2) unaligned, /* controls whether directories are replaced/merged */ 10 27 4 remote_transfer bit (1) unaligned, /* ON => request for transfer from foreign system */ 10 28 4 include_files bit (1) unaligned, /* ON => match files when interpreting starname */ 10 29 4 include_subtrees bit (1) unaligned, /* ON => match subtrees when interpreting starname */ 10 30 4 chase_control bit (2) unaligned, /* controls chasing of links when submitting remote request */ 10 31 4 delete bit (1) unaligned, /* delete source object after good transfer */ 10 32 4 extend bit (1) unaligned, /* place this data at end of current segment */ 10 33 4 update bit (1) unaligned, /* replace contents of current segment with this data */ 10 34 4 pad bit (24) unaligned; 10 35 10 36 dcl ft_request_ptr pointer; 10 37 10 38 dcl FT_REQUEST_VERSION_1 character (8) static options (constant) initial ("ftr_1.00"); 10 39 10 40 dcl FT_GENERIC_TYPE character (32) static options (constant) initial ("imft"); 10 41 dcl FT_MESSAGE_TYPE fixed binary static options (constant) initial (5); 10 42 10 43 dcl (REPLACE_DIRECTORIES initial ("10"b), /* replace entry on target if namedup and source is a dir */ 10 44 MERGE_DIRECTORIES initial ("11"b)) /* merge target and source dirs; replace if target not dir */ 10 45 bit (2) aligned static options (constant); 10 46 10 47 dcl (DEFAULT_CHASE initial ("00"b), /* chase non-starnames; don't chase starnames */ 10 48 NEVER_CHASE initial ("01"b), /* never chase any links */ 10 49 ALWAYS_CHASE initial ("10"b)) /* always chase links */ 10 50 bit (2) aligned static options (constant); 10 51 10 52 /* END INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 1409 1410 11 1 /* BEGIN INCLUDE FILE ... _imft_ft_commands.incl.pl1 */ 11 2 11 3 /* Created: April 1982 by G. Palter */ 11 4 /* Modified: July 1982 by G. Palter for true AIM support */ 11 5 /* Modified: March 1983 by Robert Coren to add remote request record */ 11 6 /* Modified: April 1983 by Robert Coren to add eof_reply record */ 11 7 11 8 11 9 /****^ HISTORY COMMENTS: 11 10* 1) change(88-11-10,Beattie), approve(88-08-01,PBF7948), 11 11* audit(88-11-14,Farley), install(88-11-14,MR12.2-1214): 11 12* Change declaration of request_number to match up with what is 11 13* coming from request_descriptor structure to prevent size condtions. 11 14* END HISTORY COMMENTS */ 11 15 11 16 11 17 /* Command and reply control records used by the IMFT file transfer protocol */ 11 18 11 19 11 20 /* Command/reply types */ 11 21 11 22 dcl (IMFT_BOF initial (11), /* start a file/subtree transfer */ 11 23 IMFT_EOF initial (12), /* end of a file/subtree transfer */ 11 24 IMFT_REMOTE_REQUEST initial (13)) /* request for remote transfer */ 11 25 fixed binary (7) unaligned unsigned static options (constant); 11 26 11 27 11 28 /* File/subtree transfer command record */ 11 29 11 30 dcl 1 bof_command aligned based (bof_command_ptr), 11 31 2 global, /* data pertaining to both systems */ 11 32 3 object_type fixed binary (2), /* type of object (segment/directory/MSF) */ 11 33 3 object_access_class bit (72), /* access class of the object we transmitted */ 11 34 3 request_number fixed binary (35), /* daemon's sequence number for this request */ 11 35 3 queue fixed binary, /* priority queue */ 11 36 3 flags aligned, 11 37 4 notify bit (1) unaligned, /* ON => send notifications when successfull */ 11 38 4 continued bit (1) unaligned, /* ON => this is continuation of a previous request */ 11 39 4 restarted bit (1) unaligned, /* ON => this is a restart of a previous request */ 11 40 4 priority_request bit (1) unaligned, /* ON => this request was given high priority */ 11 41 4 pad bit (32) unaligned, 11 42 2 local_system, /* data pertaining to local (source) system */ 11 43 3 local_user character (32) unaligned, /* Person.Project of user who requested the transfer */ 11 44 3 local_user_authorization bit (72), /* process authorization of the user who issued request */ 11 45 3 local_user_ring fixed binary, /* ring of execution of user when he issued request */ 11 46 3 local_dirname character (168) unaligned, /* where the branch is on the local system */ 11 47 3 local_ename character (32) unaligned, /* ... */ 11 48 2 foreign_system like ft_request.request; /* data pertaining to foreign (target) system */ 11 49 11 50 dcl bof_command_ptr pointer; 11 51 11 52 11 53 /* Remote request command record */ 11 54 11 55 dcl 1 remote_request aligned based (rem_req_ptr), 11 56 2 global, 11 57 3 request_number fixed binary (35), /* sequence # of this request */ 11 58 3 queue fixed binary, /* priority queue in which this request was submitted */ 11 59 3 flags, 11 60 4 priority_request bit (1) unaligned, 11 61 4 pad bit (35) unaligned, 11 62 2 local_system, 11 63 3 local_user character (32) aligned, /* Person.Project of user who submitted the request */ 11 64 3 local_user_authorization bit (72), /* process authorization of user who issued the request */ 11 65 3 local_user_ring fixed binary, /* ring of execution of user when request issued */ 11 66 2 request_info like ft_request; /* defined in _imft_ft_request.incl.pl1 */ 11 67 11 68 dcl rem_req_ptr pointer; 11 69 11 70 11 71 /* File/subtree transfer reply record */ 11 72 11 73 dcl 1 bof_reply aligned based (bof_reply_ptr), 11 74 2 request_number fixed binary (35), /* sequence # of the request for which this is the reply */ 11 75 2 abort_request bit (1) aligned, /* ON => remote system refuses to accept this file/subtree */ 11 76 2 abort_message character (1024) varying; /* reason why the remote system rejects the request */ 11 77 11 78 dcl bof_reply_ptr pointer; 11 79 11 80 11 81 /* File_subtree end-of-file command record */ 11 82 11 83 dcl 1 eof_command aligned based (eof_command_ptr), 11 84 2 request_number fixed binary (35), 11 85 2 backup_errors bit (1) aligned; /* ON => errors reported by backup_dump_ */ 11 86 11 87 dcl eof_command_ptr pointer; 11 88 11 89 11 90 /* File/subtree end-of-file reply record */ 11 91 11 92 dcl 1 eof_reply aligned based (eof_reply_ptr), 11 93 2 request_number fixed binary (35), /* sequence # of the request whose completion this acknowledges */ 11 94 2 error bit (1) aligned; /* ON => remote system was unable to load the object successfully */ 11 95 11 96 dcl eof_reply_ptr pointer; 11 97 11 98 11 99 /* Types of objects which can be transmitted by IMFT */ 11 100 11 101 dcl (LINK initial (0), /* links actually aren't allowed, but... */ 11 102 SEGMENT initial (1), 11 103 DIRECTORY initial (2), /* actually the entire subtree is transferred */ 11 104 MSF initial (3)) 11 105 fixed binary (2) static options (constant); 11 106 11 107 dcl OBJECT_TYPES (0:3) character (32) static options (constant) initial ( 11 108 "link", "segment", "subtree", "multisegment file"); 11 109 11 110 /* END INCLUDE FILE ... _imft_ft_commands.incl.pl1 */ 1411 1412 12 1 /* BEGIN INCLUDE FILE ... _imft_std_commands.incl.pl1 */ 12 2 12 3 /* Created: April 1982 by G. Palter */ 12 4 /* Modified: July 1982 by G. Palter to add true AIM support */ 12 5 /* Modified: March 1983 by Robert Coren to add local_io_error abort code */ 12 6 /* Modified: August 1983 by Robert Coren to add access_floor to AIM2 record */ 12 7 12 8 12 9 /****^ HISTORY COMMENTS: 12 10* 1) change(88-08-12,Beattie), approve(88-08-01,MCR7948), 12 11* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 12 12* Add imft_version to sync_record structure to inform other driver of this 12 13* driver's version of the IMFT software. 12 14* END HISTORY COMMENTS */ 12 15 12 16 12 17 /* Standard command and reply control records used by IMFT drivers */ 12 18 12 19 12 20 /* Standard command/reply types */ 12 21 12 22 dcl (IMFT_DATA initial (0), /* data record */ 12 23 IMFT_SYNC1 initial (1), /* first half of synchronization sequence */ 12 24 IMFT_SYNC2 initial (2), /* second half of synchronization sequence */ 12 25 IMFT_ABORT initial (3), /* abort the current operation */ 12 26 IMFT_LOGOUT initial (4), /* one side requests that the other logout */ 12 27 IMFT_RESYNCHRONIZE initial (5), /* reply requesting resynchronization */ 12 28 IMFT_AIM1 initial (6), /* first half of establsihing AIM ceiling */ 12 29 IMFT_AIM2 initial (7)) /* second half of establishing AIM ceiling */ 12 30 fixed binary (7) unaligned unsigned static options (constant); 12 31 12 32 12 33 /* Synchronization control record: sent as the SYNC1 command and reply and as the SYNC2 command; the SYNC2 reply is a 12 34* zero-length record which is only sent if the SYNC2 command indicates success */ 12 35 12 36 dcl 1 sync_record aligned based (sync_record_ptr), 12 37 2 my_userid character (32), /* Person_id of system sending this record */ 12 38 2 my_password character (8), /* scrambled card input passowrd */ 12 39 2 code fixed binary (35), /* non-zero code => validation failed; break the connection */ 12 40 2 correct_userid character (32), /* Person_id that was expected if incorrect */ 12 41 2 imft_version character (8); /* version of IMFT being used by driver */ 12 42 12 43 dcl sync_record_ptr pointer; 12 44 12 45 12 46 /* Abort command record */ 12 47 12 48 dcl 1 abort_command aligned based (abort_command_ptr), 12 49 2 reason fixed binary, /* reason to abort this operation */ 12 50 2 code fixed binary (35); /* real error code for an I/O error */ 12 51 12 52 dcl abort_command_ptr pointer; 12 53 12 54 dcl (IMFT_ABORT_IO_ERROR initial (1), /* I/O error */ 12 55 IMFT_ABORT_ABORTED initial (2), /* random fault */ 12 56 IMFT_ABORT_DEFERRED initial (3), /* operator deferred request */ 12 57 IMFT_ABORT_CANCELLED initial (4), /* operator cancelled request */ 12 58 IMFT_ABORT_SAVED initial (5), /* operator saved the request silently */ 12 59 IMFT_ABORT_RESTARTED initial (6), /* operator restarted the request */ 12 60 IMFT_ABORT_LOCAL_IO_ERROR initial (7)) /* I/O error on local system */ 12 61 fixed binary static options (constant); 12 62 12 63 12 64 /* AIM ceiling control records: the AIM1 command and reply are the aim_attributes structures defining the attributes on 12 65* the system; the AIM2 command/reply record follows */ 12 66 12 67 dcl 1 aim2_record aligned based (aim2_record_ptr), 12 68 2 code fixed binary (35), /* non-zero => AIM ceiling can not be established */ 12 69 2 computed_ceiling bit (72), /* ceiling computed by other system (before translation) */ 12 70 2 computed_floor bit (72), /* floor computed by other system (before translation) */ 12 71 2 flags unaligned, 12 72 3 explicit_ceiling_given bit (1), /* ON => an explicit access ceiling follows */ 12 73 3 explicit_floor_given bit (1), /* ON => an explicit access floor follows */ 12 74 3 pad bit (34), 12 75 2 explicit_ceiling bit (72), /* the explicitly requested ceiling (before translation) */ 12 76 2 explicit_floor bit (72); /* the explicitly requested floor (before translation) */ 12 77 12 78 /* The following version of the structure is used for pre-version 3.0 IMFT */ 12 79 12 80 dcl 1 v2_aim2_record aligned based (aim2_record_ptr), 12 81 2 code fixed binary (35), /* non-zero => AIM ceiling can not be established */ 12 82 2 computed_ceiling bit (72), /* ceiling computed by other system (before translation) */ 12 83 2 explicit_ceiling_given bit (1), /* ON => an explicit access ceiling follows */ 12 84 2 explicit_ceiling bit (72); /* the explicitly requested ceiling (before translation) */ 12 85 12 86 dcl aim2_record_ptr pointer; 12 87 12 88 /* END INCLUDE FILE ... _imft_std_commands.incl.pl1 */ 1413 1414 13 1 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 13 2 13 3 13 4 13 5 /****^ HISTORY COMMENTS: 13 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 13 7* Ancient History 13 8* Created by J. Stern, 1/20/75 13 9* Modified by J. C. Whitmore April 1978 for enhancements 13 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 13 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 13 12* q_group_tab 13 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 13 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 13 15* Change version number to reflect changes in q_group_tab and 13 16* iod_device_tab for laser printer support. Added font tables. 13 17* END HISTORY COMMENTS */ 13 18 13 19 13 20 /* format: style4 */ 13 21 13 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 13 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 13 24 2 version char (8), /* version of this structure */ 13 25 2 date_time_compiled fixed bin (71), 13 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 13 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 13 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 13 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 13 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 13 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 13 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 13 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 13 34 2 text_strings_offset fixed bin (18), 13 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 13 36 13 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 13 38 dcl text_strings_ptr ptr; 13 39 dcl 1 text_strings aligned based (text_strings_ptr), 13 40 2 length fixed bin, 13 41 2 chars char (1 refer (text_strings.length)) unaligned; 13 42 13 43 /* this defines text offsets used to locate i/o daemon tables strings in 13 44* the text_strings structure */ 13 45 dcl 1 text_offset based, 13 46 2 first_char fixed bin (18) unsigned unaligned, 13 47 2 total_chars fixed bin (18) unsigned unaligned; 13 48 13 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 13 50 13 51 13 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 1415 1416 14 1 /* BEGIN INCLUDE FILE ... iodd_msg_constants.incl.pl1 */ 14 2 /* Created: April 1982 by G. Palter */ 14 3 14 4 /* Types of messages which may be written by iodd_msg_ */ 14 5 14 6 dcl (LOG initial (0), /* log the message */ 14 7 NORMAL initial (1), /* normal message */ 14 8 ERROR initial (2)) /* an error message */ 14 9 fixed binary static options (constant); 14 10 14 11 14 12 /* Where the message is to be written */ 14 13 14 14 dcl (BOTH initial (0), /* write message to master and slave */ 14 15 MASTER initial (1), /* write message to master only */ 14 16 SLAVE initial (2)) /* write message to slave only */ 14 17 fixed binary static options (constant); 14 18 14 19 /* END INCLUDE FILE ... iodd_msg_constants.incl.pl1 */ 1417 1418 15 1 /* BEGIN INCLUDE FILE...iodd_static.incl.pl1 */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(85-02-14,Homan), approve(87-04-06,MCR7656), 15 6* audit(87-06-13,Beattie), install(87-08-06,MR12.1-1068): 15 7* Add support for logout_on_hangup option. 15 8* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 15 9* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 15 10* Add head/tail_sheet entry variables and paper_type variable. 15 11* END HISTORY COMMENTS */ 15 12 15 13 /* format: style4 */ 15 14 15 15 dcl stat_p int static ptr; 15 16 15 17 dcl 1 iodd_static based (stat_p) aligned, 15 18 15 19 /* The first part is set only once for a device driver */ 15 20 15 21 2 ithp ptr, /* pointer to iod tables header */ 15 22 2 ltp ptr, /* pointer to line table */ 15 23 2 idtp ptr, /* pointer to device tab */ 15 24 2 mdtp ptr, /* pointer to minor device table */ 15 25 2 qgtp ptr, /* pointer to q_group table */ 15 26 2 dev_class_ptr ptr, /* pointer to device class table */ 15 27 2 text_strings_ptr ptr, /* pointer to iod tables text strings */ 15 28 2 driver_list_ptr ptr, /* pointer to list of driver status seg pointers */ 15 29 2 chan_list_ptr ptr, /* pointer to list of event channels for blocking */ 15 30 2 sys_dir_ptr ptr, /* ptr to 168 char string defining sys_dir */ 15 31 2 coord_proc_id bit (36), /* process id of coordinator for wakeups */ 15 32 2 driver_proc_id bit (36), /* process id of driver for locking */ 15 33 2 re_init_label label, /* where to go after "re_init" or "slave_logout" */ 15 34 2 no_coord_label label, /* where to go for a no_coord condition */ 15 35 2 log_stream char (32), /* stream name used for log output */ 15 36 2 master_input char (32), /* master console input stream for commands */ 15 37 2 master_output char (32), /* master console output stream for messages */ 15 38 2 master_out ptr, /* master output iocbp */ 15 39 2 master_in ptr, /* master input iocbp */ 15 40 2 log_iocbp ptr, /* log output iocbp */ 15 41 2 error_io ptr, /* error i/o iocbp */ 15 42 2 dev_io_stream char (32), /* stream used to attach the major device */ 15 43 2 dev_in_stream char (32), /* input stream if different from dev_io_stream */ 15 44 2 dev_out_stream char (32), /* output stream if different from dev_io_stream */ 15 45 2 device_dim char (32), /* dim which drives the major device */ 15 46 2 attach_name char (32), /* channel or dial id for attaching major device */ 15 47 2 attach_type fixed bin, /* what previous is: 1 = iom, 2 = tty, 3 = dial, 4 = variable line */ 15 48 2 dev_dial_id char (8), /* non null if device is to be dialed to driver */ 15 49 2 line_tab_idx fixed bin, /* for attach type 4, this is the entry index, else 0 */ 15 50 2 dial_ev_chan fixed bin (71), /* IPC chan for dial control */ 15 51 2 major_device char (32), /* name of the major device */ 15 52 2 major_args unaligned like text_offset, /* descriptive string for the major device */ 15 53 2 coord_cmd_chan fixed bin (71), /* IPC chan to send commands to coord through coord_comm.ms */ 15 54 2 cmd_ack_chan fixed bin (71), /* IPC chan for coord to return command status code */ 15 55 2 timer_chan fixed bin (71), /* IPC chan for unblocking if nothing happens */ 15 56 2 io_daemon_version char (8), /* current version number of the io daemon driver */ 15 57 2 extra_static (8) fixed bin (35), /* unused space - non_dynamic */ 15 58 2 dummy_ptr ptr, /* a dummy pointer for the driver module */ 15 59 15 60 /* driver module entrypoints are defined by the following entry variables */ 15 61 15 62 2 driver_init entry variable options (variable), 15 63 2 driver_request entry variable options (variable), 15 64 2 driver_command entry variable options (variable), 15 65 2 driver_default_handler entry variable options (variable), 15 66 15 67 /* entrypoints for head/tail_sheet_ entries */ 15 68 2 print_head_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 15 69 2 print_head_separator entry (ptr, ptr, char (*), fixed bin (35)) variable, 15 70 2 print_tail_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 15 71 15 72 2 paper_type fixed bin, /* type of paper being used */ 15 73 /* 1 = single sheet */ 15 74 /* 2 = continuous forms */ 15 75 15 76 /* The remainder of the data may be dynamic during the device driver's existence */ 15 77 15 78 2 extra_dynamic (14) fixed bin (35), /* unused space - dynamic */ 15 79 2 auto_logout_interval fixed bin, /* minutes to wait for inactivity logout */ 15 80 2 requests_til_cmd fixed bin, /* number of requests to go before returning to cmd level */ 15 81 2 assigned_devices fixed bin, /* number of minor devices assigned to major device */ 15 82 2 current_devices fixed bin, /* number of devices currently active in process */ 15 83 2 output_device char (32), /* name of minor device currently in use */ 15 84 2 wakeup_time fixed bin (71), /* time interval between timer wakeups */ 15 85 2 auto_start_delay fixed bin (71), /* time to wait before performing an auto-start after quit */ 15 86 2 driver_ptr ptr, /* pointer to driver status seg currently in use */ 15 87 2 segptr ptr, /* ptr to current user segment being processed */ 15 88 2 flags, /* control flags */ 15 89 3 initialized bit (1) unal, /* all driver data bases are initialized */ 15 90 3 test_entry bit (1) unal, /* driver test entry was called */ 15 91 3 request_in_progress bit (1) unal, /* driver executing a request */ 15 92 3 recursion_flag bit (1) unal, /* recursive unclaimed signal */ 15 93 3 no_coord_flag bit (1) unal, /* process is ready to accept a no_coord signal */ 15 94 3 logout_pending bit (1) unal, /* logout after all pending requests are done */ 15 95 3 master_hold bit (1) unal, /* master_hold at command level */ 15 96 3 slave_hold bit (1) unal, /* slave hold at command level */ 15 97 3 step bit (1) unal, /* run in step mode */ 15 98 3 quit_during_request bit (1) unal, /* a quit occured, don't wait for wakeup */ 15 99 3 runout_requests bit (1) unal, /* hold after all pending requests are done */ 15 100 3 re_init_in_progress bit (1) unal, /* driver processing a re_init signal */ 15 101 3 quit_signaled bit (1) unal, /* set to "1"b by quit handler for anyone who is curious */ 15 102 3 auto_logout_pending bit (1) unal, /* inactivity limit exceeded, logout after next wakeup */ 15 103 3 logout_on_hangup bit (1) unal, /* logout instead of reinit if set */ 15 104 3 pad bit (21) unal, /* unused space */ 15 105 2 slave, /* slave control device data (ctl term or remote reader) */ 15 106 3 slave_input char (32), /* slave input stream name */ 15 107 3 slave_output char (32), /* slave output stream name */ 15 108 3 slave_pad fixed bin, /* allocation breakage */ 15 109 3 slave_in ptr, /* slave input iocbp */ 15 110 3 slave_out ptr, /* slave output iocbp */ 15 111 3 slave_ev_chan fixed bin (71), /* event channel the slave device blocks on */ 15 112 3 active bit (1) unal, /* on if there is a slave */ 15 113 3 accept_input bit (1) unal, /* on if commands may come from the slave */ 15 114 3 allow_quits bit (1) unal, /* on if we allow slave to send quits */ 15 115 3 print_errors bit (1) unal, /* on if errors will be sent to the slave */ 15 116 3 log_msg bit (1) unal, /* on if log messages are to be sent to the slave */ 15 117 3 priv1 bit (1) unal, /* driver_module defined slave privileges */ 15 118 3 priv2 bit (1) unal, 15 119 3 priv3 bit (1) unal, 15 120 3 echo_cmd bit (1) unal, /* on if each slave cmd should be written back */ 15 121 3 slave_bit_pad bit (27) unal, /* unused space */ 15 122 2 ctl_term, /* control terminal data */ 15 123 3 ctl_attach_name char (32), /* dial id, tty chan, or mrd_ device */ 15 124 3 ctl_attach_type fixed bin, /* attach name meaning: 1=line, 2=dial, 3=mrd_source */ 15 125 3 ctl_pad fixed bin, /* allocation breakage */ 15 126 3 ctl_dial_chan fixed bin (71), /* ipc event channel for dial comm */ 15 127 3 ctl_input char (32), /* ctl input stream name */ 15 128 3 ctl_output char (32), /* ctl output stream name */ 15 129 3 ctl_io char (32), /* ctl i/o stream name */ 15 130 3 ctl_dev_dim char (32), /* ctl_io attached with this dim */ 15 131 3 ctl_ev_chan fixed bin (71), /* IPC event chan ctl term blocks on */ 15 132 3 ctl_device char (32), /* ctl terminal device name */ 15 133 3 form_type char (16), /* format type if printing forms */ 15 134 3 attached bit (1) unal, /* ctl term attached to process */ 15 135 3 forms bit (1) unal, /* on if printing forms */ 15 136 3 pad bit (34) unal, 15 137 2 admin_ec_name char (32), /* name of the ec to use with the "x" command */ 15 138 2 expansion_space (100) fixed bin; /* reserved space...use at your own risk */ 15 139 15 140 /* END INCLUDE FILE ... iodd_static.incl.pl1 */ 1419 1420 16 1 /* BEGIN INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 16 2 /* Created: June 1983 by G. Palter */ 16 3 16 4 /* Options for the mail_system_$deliver_message and mail_system_$redistribute_message entrypoints */ 16 5 16 6 dcl 1 deliver_options aligned based (deliver_options_ptr), 16 7 2 version character (8) unaligned, 16 8 2 delivery_mode fixed binary, /* deliver as an ordinary/interactive/express message */ 16 9 2 queueing_mode fixed binary, /* when to queue the message */ 16 10 2 queued_notification_mode fixed binary, /* when to notify sender about queued mail success/failure */ 16 11 2 flags, 16 12 3 abort bit (1) unaligned, /* ON => don't send it if any fatal errors are detected */ 16 13 3 send_if_empty bit (1) unaligned, /* ON => send the message even if its body is empty */ 16 14 3 recipient_notification bit (1) unaligned, /* ON => send "You have mail." notification */ 16 15 3 acknowledge bit (1) unaligned, /* ON => request ACK message when recipients read it */ 16 16 3 queue_mailing_lists bit (1) unaligned, /* ON => always queue the message for mailing lists */ 16 17 3 mbz bit (31) unaligned; /* must be set to ""b by the caller */ 16 18 16 19 dcl DELIVER_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsdlo02"); 16 20 16 21 dcl deliver_options_ptr pointer; 16 22 16 23 /* Defined modes of delivery */ 16 24 16 25 dcl (ORDINARY_DELIVERY initial (1), /* send as an ordinary message */ 16 26 INTERACTIVE_DELIVERY initial (2), /* send as an interactive message */ 16 27 EXPRESS_DELIVERY initial (3)) /* send as an express interactive message; ie: deliver the 16 28* message only if the user is logged in */ 16 29 fixed binary static options (constant); 16 30 16 31 /* Defined modes for queuing mail on transient errors */ 16 32 16 33 dcl (NEVER_QUEUE initial (1), /* never queue: convert into a fatal error */ 16 34 QUEUE_FOREIGN_WHEN_NEEDED initial (2), /* never queue local mail; queue foreign mail on error */ 16 35 QUEUE_WHEN_NEEDED initial (3), /* queue all mail on any transient error */ 16 36 ALWAYS_QUEUE_FOREIGN initial (4), /* queue local mail on error; always queue foreign mail */ 16 37 ALWAYS_QUEUE initial (5)) /* always queue all mail */ 16 38 fixed binary static options (constant); 16 39 16 40 /* Defined modes of notification of success/failure to deliver queued mail */ 16 41 16 42 dcl (NEVER_NOTIFY initial (1), /* never notify the sender */ 16 43 NOTIFY_ON_ERROR initial (2), /* notify the sender only if it can not be delivered */ 16 44 ALWAYS_NOTIFY initial (3)) /* always notify the sender */ 16 45 fixed binary static options (constant); 16 46 16 47 /* Definition of the recipients of a message and the results of the attempted transmission */ 16 48 16 49 dcl 1 recipients_info aligned based (recipients_info_ptr), 16 50 2 header, 16 51 3 version character (8) unaligned, 16 52 3 area_ptr pointer, /* -> area for following structures; null => system free */ 16 53 3 expanded_recipients_result_list_ptr pointer, /* set -> expanded_recipients_result_list (if any) */ 16 54 3 n_recipients fixed binary, /* set to total # of recipients after expanding lists */ 16 55 3 n_unique_recipients fixed binary, /* set to total # of unique recipients */ 16 56 3 n_failed_recipients fixed binary, /* set to # of recipients that failed or would fail */ 16 57 3 n_lists fixed binary, /* # of address lists of recipients */ 16 58 2 lists (recipients_info_n_lists refer (recipients_info.n_lists)), 16 59 3 address_list_ptr pointer, /* -> an address list containing recipients */ 16 60 3 recipients_result_list_ptr pointer; /* set -> recipients_result_list for this address list */ 16 61 16 62 dcl RECIPIENTS_INFO_VERSION_2 character (8) static options (constant) initial ("mlsrcpt2"); 16 63 16 64 dcl (recipients_info_ptr, recipients_result_list_ptr, expanded_recipients_result_list_ptr) pointer; 16 65 16 66 dcl (recipients_info_n_lists, recipients_result_list_n_addresses, expanded_recipients_result_list_n_entries) 16 67 fixed binary; /* used to allocate these structures */ 16 68 16 69 16 70 /* Data structure returned by the mail system recording the results of the mailing for one of the input address lists */ 16 71 16 72 dcl 1 recipients_result_list aligned based (recipients_result_list_ptr), 16 73 2 n_addresses fixed binary, /* set to # of address in corresponding address list */ 16 74 2 pad bit (36), 16 75 2 results (recipients_result_list_n_addresses refer (recipients_result_list.n_addresses)), 16 76 3 code fixed binary (35), /* set to describe results of attempted delivery */ 16 77 3 expanded_list_info, /* set to identify any failing addresses found in the 16 78* expansion of this address ... */ 16 79 4 first_entry_idx fixed binary (18) unaligned unsigned, 16 80 /* ... index of first such address in structure below ... */ 16 81 4 n_entries fixed binary (18) unaligned unsigned,/* ... # of such addresses there for this address */ 16 82 3 duplicate_info, /* set to identify the prior address (if any) for which this 16 83* is a duplicate ... */ 16 84 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 16 85 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 16 86 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 16 87* being queued due to a transient error */ 16 88 16 89 16 90 /* Describes fatal or transient errors for those recipients which are part of mailing lists of named groups in one of the 16 91* caller's address lists */ 16 92 16 93 dcl 1 expanded_recipients_result_list aligned based (expanded_recipients_result_list_ptr), 16 94 2 n_entries fixed binary, /* set to # of failing expanded recipients */ 16 95 2 pad bit (36), 16 96 2 entries (expanded_recipients_result_list_n_entries refer (expanded_recipients_result_list.n_entries)), 16 97 3 address_ptr pointer, /* -> the failing address from the list/group */ 16 98 3 code fixed binary (35), /* set to describe why delivery failed */ 16 99 3 parent_address, /* set to identify the original recipient of whose expansion 16 100* this address is a part ... */ 16 101 4 list_idx fixed binary (18) unaligned unsigned, /* ... in which list ... */ 16 102 4 address_idx fixed binary (18) unaligned unsigned, /* ... and which address in that list */ 16 103 3 explanation character (128) varying; /* explanation associated with a fatal error or the message 16 104* being queued due to a transient error */ 16 105 16 106 /* END INCLUDE FILE ... mlsys_deliver_info.incl.pl1 */ 1421 1422 17 1 /* BEGIN INCLUDE FILE . . . mseg_message_info.incl.pl1 BIM 1984-10-10 */ 17 2 /* format: style3,idind30 */ 17 3 17 4 /* structure returned when message is read from a message segment */ 17 5 17 6 17 7 dcl mseg_message_info_ptr pointer; 17 8 17 9 dcl 1 mseg_message_info based (mseg_message_info_ptr) aligned, 17 10 2 version char (8) aligned, 17 11 2 message_code fixed bin, 17 12 2 control_flags unaligned, 17 13 3 own bit (1), 17 14 3 delete bit (1), 17 15 3 pad bit (34), 17 16 2 ms_ptr ptr, /* pointer to message */ 17 17 2 ms_len fixed bin (24), /* length of message in bits */ 17 18 2 ms_id bit (72), /* unique ID of message */ 17 19 /* input in some cases */ 17 20 2 ms_access_class bit (72), /* message access class */ 17 21 2 sender_id char (32) unaligned,/* process-group ID of sender */ 17 22 2 sender_process_id bit (36) aligned, /* if nonzero, process that sent */ 17 23 2 sender_level fixed bin, /* validation level of sender */ 17 24 2 sender_authorization bit (72), /* access authorization of message sender */ 17 25 2 sender_max_authorization bit (72), /* max authorization of sending process */ 17 26 2 sender_audit bit (36) aligned; /* audit flags */ 17 27 17 28 declare MSEG_MESSAGE_INFO_V1 char (8) aligned init ("msegmi01") int static options (constant); 17 29 17 30 declare ( 17 31 MSEG_READ_FIRST init (1), 17 32 MSEG_READ_LAST init (2), 17 33 MSEG_READ_SPECIFIED init (3), 17 34 MSEG_READ_BEFORE_SPECIFIED init (4), 17 35 MSEG_READ_AFTER_SPECIFIED init (5)) 17 36 fixed bin int static options (constant); 17 37 17 38 declare (MSEG_READ_OWN init ("1"b), 17 39 MSEG_READ_DELETE init ("01"b) 17 40 ) bit (36) aligned internal static options (constant); 17 41 17 42 /* END INCLUDE FILE . . . mseg_message_info.incl.pl1 */ 1423 1424 18 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 18 2 18 3 /* This is the message header used for standard system queue messages, namely: 18 4* IO daemon requests, absentee requests, retrieval requests. 18 5**/ 18 6 18 7 /* Written by Jerry Whitmore, Spring 1978. 18 8* Modified by T. Casey, November 1978, to add values for state. 18 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 18 10**/ 18 11 18 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 18 13 2 msg_time fixed bin (71), /* date and time of request */ 18 14 2 hdr_version fixed bin, /* version of this declaration */ 18 15 2 dirname char (168), /* directory name */ 18 16 2 ename char (32), /* entry name of file requested */ 18 17 2 message_type fixed bin, /* message format descriptor */ 18 18 /* 0 = absentee request */ 18 19 /* 1 = print request */ 18 20 /* 2 = punch request */ 18 21 /* 3 = tape request */ 18 22 /* 4 = retrieval request */ 18 23 2 bit_flags, 18 24 3 delete_sw bit (1) unal, /* delete file when done */ 18 25 3 notify bit (1) unal, /* user wants to be notified */ 18 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 18 27 3 padding bit (33) unal, 18 28 2 state fixed bin, /* stage of processing after being queued: 18 29* 0 = initial unprocessed state, 1 = deferred, 18 30* 2 = in state transition, 3 = eligible, 4 = running, 18 31* 5 = bumped, 6 = deferred_until_process_termination */ 18 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 18 33 2 std_length fixed bin, /* length of std msg for this type */ 18 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 18 35 2 hdr_pad (3) fixed bin; 18 36 18 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 18 38 18 39 /* Values for queue_msg_hdr.state */ 18 40 18 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 18 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 18 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 18 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 18 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 18 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 18 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 18 48 18 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1425 1426 19 1 /* BEGIN INCLUDE FILE...request_descriptor.incl.pl1 */ 19 2 19 3 /* Descriptor associated with an I/O daemon request */ 19 4 /* Coded August 1973 by Robert S. Coren */ 19 5 /* Modified by J. C. Whitmore, 5/78, to extend driver_data to 7 words */ 19 6 /* Modified by C. Marker, 2/23/85, changed to use mseg_message_info */ 19 7 19 8 dcl 1 request_descriptor based aligned, 19 9 2 mseg_message_info_copy like mseg_message_info, 19 10 2 seq_id fixed bin(35), /* sequential number assigned by coordinator */ 19 11 2 q fixed bin, /* priority queue in which request was submitted */ 19 12 2 contd_seq_id fixed bin(35), /* if nonzero, this is previous seq_id of continued request */ 19 13 2 prev_seq_id fixed bin(35), /* if nonzero, this is previous seq_id of restarted request */ 19 14 2 dev_class_index fixed bin, /* index of device_class entry */ 19 15 2 spare_fb fixed bin (17) unal, /* save half a word for later */ 19 16 2 charge_q fixed bin (17) unal, /* priority to use for charging */ 19 17 2 time_done fixed bin(71), /* clock time when request was completed */ 19 18 2 prev_done fixed bin(18), /* descriptor threaded ahead of this one in saved list */ 19 19 2 next_done fixed bin(18), /* " " behind " " " */ 19 20 2 driver_data bit(252), /* driver maintained data */ 19 21 2 flags, 19 22 (3 continued, /* unfinished by one driver and given to another */ 19 23 3 finished, 19 24 3 restarted, 19 25 3 cancelled, 19 26 3 dont_delete, 19 27 3 saved, /* not to be freed */ 19 28 3 keep_in_queue, /* keep request in queue */ 19 29 3 series_restart, /* this request is part of restarted series */ 19 30 3 priority_request) bit (1) unal, /* this request was given extra priority */ 19 31 3 pad bit(27) unal, 19 32 2 next_pending fixed bin(18); /* thread to next pending descriptor */ 19 33 19 34 /* END INCLUDE FILE...request_descriptor.incl.pl1 */ 1427 1428 20 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 20 2 20 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 20 4 20 5 /* This include file contains branch and link structures returned by 20 6* hcs_$status_ and hcs_$status_long. */ 20 7 20 8 dcl 1 status_branch aligned based (status_ptr), 20 9 2 short aligned, 20 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 20 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 20 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 20 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 20 14 3 dtu bit (36) unaligned, /* date/time last used */ 20 15 3 mode bit (5) unaligned, /* caller's effective access */ 20 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 20 17 3 pad1 bit (8) unaligned, 20 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 20 19 20 20 /* Limit of information returned by hcs_$status_ */ 20 21 20 22 2 long aligned, 20 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 20 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 20 25 3 lvid bit (36) unaligned, /* logical volume ID */ 20 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 20 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 20 28 3 pad2 bit (8) unaligned, 20 29 3 copy_switch bit (1) unaligned, /* copy switch */ 20 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 20 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 20 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 20 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 20 34 3 pad3 bit (5) unaligned, 20 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 20 36 3 uid bit (36) unaligned; /* unique ID */ 20 37 20 38 dcl 1 status_link aligned based (status_ptr), 20 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 20 40 2 nnames fixed bin (16) unaligned unsigned, 20 41 2 names_relp bit (18) unaligned, 20 42 2 dtem bit (36) unaligned, 20 43 2 dtd bit (36) unaligned, 20 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 20 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 20 46 20 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 20 48 based (pointer (status_area_ptr, status_branch.names_relp)), 20 49 /* array of names returned */ 20 50 status_pathname character (status_link.pathname_length) aligned 20 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 20 52 /* link target path */ 20 53 status_area_ptr pointer, 20 54 status_ptr pointer; 20 55 20 56 dcl (Link initial (0), 20 57 Segment initial (1), 20 58 Directory initial (2)) fixed bin internal static options (constant); 20 59 /* values for type fields declared above */ 20 60 20 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 1429 1430 21 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 21 2 21 3 /* This include file contains structures for the hcs_$star_, 21 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 21 5* 21 6* Written 23 October 1978 by Monte Davidoff. 21 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 21 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 21 9**/ 21 10 21 11 /* automatic */ 21 12 21 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 21 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 21 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 21 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 21 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 21 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 21 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 21 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 21 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 21 22 21 23 /* based */ 21 24 21 25 /* hcs_$star_ entry structure */ 21 26 21 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 21 28 2 type fixed binary (2) unsigned unaligned, 21 29 /* storage system type */ 21 30 2 nnames fixed binary (16) unsigned unaligned, 21 31 /* number of names of entry that match star_name */ 21 32 2 nindex fixed binary (18) unsigned unaligned; 21 33 /* index of first name in star_names */ 21 34 21 35 /* hcs_$star_ name structure */ 21 36 21 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 21 38 21 39 /* hcs_$star_list_ branch structure */ 21 40 21 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 21 42 2 type fixed binary (2) unsigned unaligned, 21 43 /* storage system type */ 21 44 2 nnames fixed binary (16) unsigned unaligned, 21 45 /* number of names of entry that match star_name */ 21 46 2 nindex fixed binary (18) unsigned unaligned, 21 47 /* index of first name in star_list_names */ 21 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 21 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 21 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 21 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 21 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 21 53 2 pad bit (7) unaligned, 21 54 2 records fixed binary (18) unsigned unaligned; 21 55 /* records used by branch */ 21 56 21 57 /* hcs_$star_dir_list_ branch structure */ 21 58 21 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 21 60 2 type fixed binary (2) unsigned unaligned, 21 61 /* storage system type */ 21 62 2 nnames fixed binary (16) unsigned unaligned, 21 63 /* number of names of entry that match star_name */ 21 64 2 nindex fixed binary (18) unsigned unaligned, 21 65 /* index of first name in star_list_names */ 21 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 21 67 2 pad bit (36) unaligned, 21 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 21 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 21 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 21 71 2 bit_count fixed binary (24) unaligned; 21 72 /* bit count of the branch */ 21 73 21 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 21 75 21 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 21 77 2 type fixed binary (2) unsigned unaligned, 21 78 /* storage system type */ 21 79 2 nnames fixed binary (16) unsigned unaligned, 21 80 /* number of names of entry that match star_name */ 21 81 2 nindex fixed binary (18) unsigned unaligned, 21 82 /* index of first name in star_list_names */ 21 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 21 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 21 85 2 pathname_len fixed binary (18) unsigned unaligned, 21 86 /* length of the pathname of the link */ 21 87 2 pathname_index fixed binary (18) unsigned unaligned; 21 88 /* index of start of pathname in star_list_names */ 21 89 21 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 21 91 21 92 declare star_list_names char (32) based (star_list_names_ptr) 21 93 dimension (star_links (star_branch_count + star_link_count).nindex 21 94 + star_links (star_branch_count + star_link_count).nnames 21 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 21 96 * binary ( 21 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 21 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 21 99 21 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 21 101 21 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 21 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 21 104 21 105 /* internal static */ 21 106 21 107 /* star_select_sw values */ 21 108 21 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 21 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 21 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 21 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 21 113 fixed binary (3) internal static options (constant) initial (5); 21 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 21 115 fixed binary (3) internal static options (constant) initial (7); 21 116 21 117 /* storage system types */ 21 118 21 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 21 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 21 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 21 122 21 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 1431 1432 1433 end imft_transmit_object_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/14/88 1511.2 imft_transmit_object_.pl1 >spec>install>MR12.2-1214>imft_transmit_object_.pl1 1391 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1393 2 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 1395 3 11/21/83 1219.2 backup_control.incl.pl1 >ldd>include>backup_control.incl.pl1 1397 4 10/14/83 1606.7 delete_options.incl.pl1 >ldd>include>delete_options.incl.pl1 1399 5 11/09/88 0759.7 driver_status.incl.pl1 >ldd>include>driver_status.incl.pl1 1401 6 10/10/88 0909.4 fs_star_.incl.pl1 >ldd>include>fs_star_.incl.pl1 1403 7 10/18/88 1204.1 _imft_check_acl.incl.pl1 >ldd>include>_imft_check_acl.incl.pl1 1405 8 05/28/82 1334.9 _imft_cri.incl.pl1 >ldd>include>_imft_cri.incl.pl1 1407 9 10/18/88 1204.1 _imft_driver_info.incl.pl1 >ldd>include>_imft_driver_info.incl.pl1 1409 10 10/18/88 1204.1 _imft_ft_request.incl.pl1 >ldd>include>_imft_ft_request.incl.pl1 1411 11 11/14/88 1511.0 _imft_ft_commands.incl.pl1 >spec>install>MR12.2-1214>_imft_ft_commands.incl.pl1 1413 12 10/18/88 1204.1 _imft_std_commands.incl.pl1 >ldd>include>_imft_std_commands.incl.pl1 1415 13 11/09/88 0759.7 iod_tables_hdr.incl.pl1 >ldd>include>iod_tables_hdr.incl.pl1 1417 14 05/28/82 1334.9 iodd_msg_constants.incl.pl1 >ldd>include>iodd_msg_constants.incl.pl1 1419 15 11/09/88 0759.7 iodd_static.incl.pl1 >ldd>include>iodd_static.incl.pl1 1421 16 10/27/83 2104.2 mlsys_deliver_info.incl.pl1 >ldd>include>mlsys_deliver_info.incl.pl1 1423 17 01/10/85 2002.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 1425 18 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 1427 19 03/15/85 0953.1 request_descriptor.incl.pl1 >ldd>include>request_descriptor.incl.pl1 1429 20 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 1431 21 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. BACKUP_CONTROL_VERSION_5 000064 constant char(8) initial packed unaligned dcl 3-60 ref 329 BAD_CHK_OBJ_ACL_STR 000114 constant char(46) initial packed unaligned dcl 1290 set ref 904* 936* 963* BITS_PER_RECORD constant fixed bin(35,0) initial dcl 1295 ref 1160 1172 DIRECTORY constant fixed bin(2,0) initial dcl 11-101 ref 223 DRIVER_ACL_IDX constant fixed bin(17,0) initial dcl 7-38 ref 873 895 931 957 989 1042 1058 ENTRY_TYPE_DIRECTORY 000054 constant char(32) initial packed unaligned dcl 6-518 ref 984 ENTRY_TYPE_LINK 000044 constant char(32) initial packed unaligned dcl 6-518 ref 970 ERROR 000267 constant fixed bin(17,0) initial dcl 14-6 set ref 76* 780* EST_RECORDS_PER_FILE constant fixed bin(17,0) initial dcl 1298 ref 1173 FILE_OVERHEAD constant fixed bin(17,0) initial dcl 1296 ref 1163 1173 FLUSH_REQUEST 000246 constant bit(1) initial dcl 1306 set ref 147* 205* 220* 238* 290* 422* 593* 879* 907* 916* 921* 966* 970* 977* 982* 997* 1016* 1028* 1209* GENERAL_ACL_VERSION_1 000066 constant char(8) initial packed unaligned dcl 2-72 ref 871 ICRI_VERSION_1 000040 constant char(8) initial packed unaligned dcl 8-18 ref 384 452 604 821 IMFT_ABORT constant fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 ref 642 823 IMFT_ABORT_ABORTED 000267 constant fixed bin(17,0) initial dcl 12-54 set ref 690* 731* IMFT_ABORT_CANCELLED 000264 constant fixed bin(17,0) initial dcl 12-54 set ref 288* IMFT_ABORT_DEFERRED 000266 constant fixed bin(17,0) initial dcl 12-54 set ref 281* IMFT_ABORT_IO_ERROR 000270 constant fixed bin(17,0) initial dcl 12-54 set ref 644 645 769* IMFT_ABORT_LOCAL_IO_ERROR constant fixed bin(17,0) initial dcl 12-54 ref 644 IMFT_ABORT_RESTARTED 000262 constant fixed bin(17,0) initial dcl 12-54 set ref 266* IMFT_ABORT_SAVED 000206 constant fixed bin(17,0) initial dcl 12-54 set ref 274* IMFT_BOF constant fixed bin(7,0) initial packed unsigned unaligned dcl 11-22 ref 379 413 IMFT_CHECK_ACL_VERSION_1 000042 constant char(8) initial packed unaligned dcl 7-41 ref 886 IMFT_EOF constant fixed bin(7,0) initial packed unsigned unaligned dcl 11-22 ref 454 486 IMFT_LOGOUT constant fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 ref 628 IMFT_REMOTE_REQUEST constant fixed bin(7,0) initial packed unsigned unaligned dcl 11-22 ref 162 IMFT_RESYNCHRONIZE constant fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 ref 635 IMFT_TRANSMIT_OBJECT_ 000130 constant char(32) initial packed unaligned dcl 1288 set ref 76* 780* INTERACTIVE_DELIVERY 000267 constant fixed bin(17,0) initial dcl 16-25 set ref 803* KEEP_REQUEST 000223 constant bit(1) initial dcl 1304 set ref 246* 283* 315* 372* 416* 491* 651* 656* 904* 936* 963* 994* LINK constant fixed bin(2,0) initial dcl 11-101 ref 238 LOG 000246 constant fixed bin(17,0) initial dcl 14-6 set ref 150* 214* 231* 268* 325* 433* 539* 551* 743* 746* 1152* MASTER 000270 constant fixed bin(17,0) initial dcl 14-14 set ref 66* 76* 150* 214* 231* 268* 325* 433* 539* 551* 743* 746* 780* 1152* MINIMUM_TIME_TO_AVERAGE constant fixed bin(17,0) initial dcl 1301 ref 507 MSF constant fixed bin(2,0) initial dcl 11-101 ref 223 NO_ERROR 000246 constant fixed bin(35,0) initial dcl 1292 set ref 150* 214* 231* 238* 246* 268* 283* 290* 315* 325* 416* 422* 433* 491* 539* 551* 593* 651* 656* 743* 746* 879* 921* 966* 970* 982* 1016* 1028* 1209* OBJECT_TYPES 000000 constant char(32) initial array packed unaligned dcl 11-107 set ref 231* 254* 529* 545* 1116* ONE_MILLION 000113 constant fixed bin(35,0) initial dcl 1294 ref 444 ONE_MINUTE constant fixed bin(17,0) initial dcl 1293 ref 245 254 314 325 385 453 605 822 ORDINARY_DELIVERY 000270 constant fixed bin(17,0) initial dcl 16-25 set ref 1009* 1121* P_code parameter fixed bin(35,0) dcl 1220 set ref 53 78* 95* 752* 784* P_condition_name parameter char packed unaligned dcl 1222 ref 578 581 P_data_iocb_ptr parameter pointer dcl 1217 ref 53 92 P_imft_driver_info_ptr parameter pointer dcl 1219 ref 53 94 P_stat_p parameter pointer dcl 1218 ref 53 93 RW_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 929 RW_ACCESS_BIN 000255 constant fixed bin(5,0) initial dcl 1-36 set ref 64* R_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 897 955 987 SEGMENT constant fixed bin(2,0) initial dcl 11-101 ref 1147 SMA_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 928 S_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 896 954 986 USER_ACL_IDX constant fixed bin(17,0) initial dcl 7-39 ref 874 USER_REQ_DEF_OR_TERM 000070 constant char(73) initial packed unaligned dcl 1308 set ref 739* 916* 977* abort_code_picture automatic picture(9) packed unaligned dcl 622 ref 651 abort_command based structure level 1 dcl 12-48 abort_command_ptr 004510 automatic pointer dcl 12-52 set ref 643* 644 644 645 645 645 649 651 abort_message 003720 automatic char(100) packed unaligned dcl 1325 in procedure "imft_transmit_object_" set ref 145* 147* 203* 205* abort_message 2 based varying char(1024) level 2 in structure "bof_reply" dcl 11-73 in procedure "imft_transmit_object_" set ref 422 433* abort_request 1 based bit(1) level 2 dcl 11-73 ref 420 abort_request_label 000442 internal static label variable dcl 1334 set ref 113* 583 access_ceiling 522 based bit(72) level 3 dcl 9-23 ref 341 892 access_file based char packed unaligned dcl 855 set ref 1009* access_floor 524 based bit(72) level 3 dcl 9-23 ref 344 893 access_name 3 based char(32) array level 3 packed packed unaligned dcl 2-7 set ref 873* 874* 1042* 1058* accessfile_bc 003712 automatic fixed bin(24,0) dcl 1318 set ref 1002* 1004 1006 accessfile_ename 000223 internal static char(32) packed unaligned dcl 1319 set ref 62* 63* 64* 86* 87* 671* 672* 1002* 1011* 1012* accessfile_lth 003713 automatic fixed bin(21,0) dcl 1320 set ref 1006* 1009 1009 accessfile_path 000233 internal static char(168) packed unaligned dcl 1321 set ref 63* 66* 898 accessfile_pathname 525 003102 automatic char(168) level 2 dcl 1283 set ref 898* accessfile_ptr 003714 automatic pointer dcl 1322 set ref 64* 65 69* 1002* 1004 1009 acl_count 004476 automatic fixed bin(17,0) dcl 2-5 set ref 869* 870 870 872 acl_ptr 004474 automatic pointer dcl 2-4 set ref 105* 665 666 667* 870* 871 872 873 874 890 911 912 913 941 942 943 974 975 976 1042 1058 addr builtin function dcl 1388 ref 101 102 103 163 380 387 387 390 392 392 407 410 410 414 441 441 455 463 463 467 469 469 479 483 483 488 606 609 609 803 824 827 827 901 901 933 933 959 959 991 991 1149 1149 afs_ptr 003716 automatic pointer dcl 1323 set ref 105* 670 673* allow_delete 002555 automatic bit(1) packed unaligned dcl 1259 set ref 241* 459 512 538 539 1021* 1065* allow_transfer 2 003102 automatic bit(1) level 3 packed packed unaligned dcl 1283 set ref 1015 authorization 26 000012 internal static bit(72) level 4 dcl 1314 set ref 353* auto_status_branch 003070 automatic structure level 1 dcl 1282 set ref 1149 1149 backup_control based structure level 1 dcl 3-8 backup_dump_ 000476 constant entry external dcl 1346 ref 441 backup_errors 1 000324 automatic bit(1) level 2 dcl 1239 set ref 459* backup_errors_detected 002557 automatic bit(1) dcl 1262 set ref 459 512 529 538 539 539 1083* 1112* bad_acl_idx 121 003102 automatic fixed bin(17,0) level 2 dcl 1283 set ref 895* 906* 931* 938* 957* 966 989* bit_flags 66 based structure level 3 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" bit_flags 104 000330 automatic structure level 4 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" bit_rate_est 132 based fixed bin(35,0) level 2 dcl 5-25 set ref 1163 1173 1190 1199* bof_command based structure level 1 dcl 11-30 bof_reply based structure level 1 dcl 11-73 bof_reply_ptr 004504 automatic pointer dcl 11-78 set ref 414* 416 420 422 433 caller_handles_conditions 36(07) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 335* check_aim 2(02) 003102 automatic bit(1) level 3 packed packed unaligned dcl 1283 set ref 899* 930* 956* 988* check_effective_access 36(11) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 351* cleanup 004406 stack reference condition dcl 1385 ref 111 clock builtin function dcl 1388 ref 440 444 code 1 000326 automatic fixed bin(35,0) level 2 in structure "local_abort_command" dcl 1240 in procedure "imft_transmit_object_" set ref 819* code 000542 automatic fixed bin(35,0) level 2 in structure "ios_status" dcl 1243 in procedure "imft_transmit_object_" set ref 372 372* code 1 based fixed bin(35,0) level 2 in structure "abort_command" dcl 12-48 in procedure "imft_transmit_object_" set ref 645* 645* 649* code 000102 automatic fixed bin(35,0) dcl 1229 in procedure "imft_transmit_object_" set ref 64* 66* 74* 76* 78 211* 213 220* 387* 388 388 392* 393 395* 397* 410* 411 411* 441* 446* 463* 464 464 469* 470 472* 474* 483* 484 484* 519* 522 523* 609* 610 610* 901* 902 902* 903 904 904* 907* 910* 913* 914* 916 921 933* 934 934* 935 936 936* 943* 959* 960 960* 961 963 963* 973* 976* 982 991* 992 992* 993 994 994* 997* 1042 1042 1057* 1058 1058 code 004542 automatic fixed bin(35,0) dcl 1144 in procedure "estimate_time" set ref 1149* 1151 1151 1152* 1169* 1170 code_message 003751 automatic char(100) dcl 1326 set ref 523* 524* 735* 737* 739* 743* 773* 775* 776* 914* 916* 1057* 1062* condition_name 000446 internal static char(32) packed unaligned dcl 1335 set ref 581* 589* 593 continued 53 based bit(1) level 3 in structure "request_descriptor" packed packed unaligned dcl 19-8 in procedure "imft_transmit_object_" ref 173 continued 5(01) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 173* 302* convert builtin function dcl 1388 ref 98 651 convert_status_code_ 000500 constant entry external dcl 1347 ref 523 735 773 914 1057 count 2 based fixed bin(17,0) level 2 dcl 2-7 set ref 666 870* 872* 911 941 974 cu_$arg_list_ptr 000502 constant entry external dcl 1348 ref 801 801 current_length 7 003070 automatic fixed bin(12,0) level 3 packed packed unsigned unaligned dcl 1282 set ref 1160 current_ring 003711 automatic fixed bin(3,0) dcl 1286 set ref 109* 877 currentsize builtin function dcl 1388 ref 164 381 456 825 daemon_again 004414 stack reference condition dcl 1385 ref 264 daemon_again_slave 004422 stack reference condition dcl 1385 ref 264 daemon_cancel 004430 stack reference condition dcl 1385 ref 286 daemon_defer 004436 stack reference condition dcl 1385 ref 279 daemon_kill 004444 stack reference condition dcl 1385 ref 286 daemon_save 004452 stack reference condition dcl 1385 ref 272 data_iocb 6 000012 internal static pointer level 3 dcl 1314 set ref 338* data_iocb_ptr 000100 automatic pointer dcl 1227 set ref 92* 338 387* 392* 410* 442* 463* 469* 483* 609* 827* debug_mode 1(01) based bit(1) level 3 packed packed unaligned dcl 9-23 ref 753 786 debug_sw 36(01) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 333* defer_time_limit 133 based fixed bin(35,0) level 2 dcl 5-25 ref 246 246 315 315 delete 177(09) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 459 512 538 539 545 926 1020 delete 210(09) 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 156 156 delete_$path 000504 constant entry external dcl 1349 ref 519 delete_acl_entry based structure level 1 dcl 2-63 delete_options 004477 automatic structure level 1 packed packed unaligned dcl 4-7 set ref 513* 519 519 deleting_object 000010 internal static bit(1) packed unaligned dcl 1260 set ref 518* 521* 586 588* descriptor 146 based structure level 2 dcl 5-25 set ref 101 dir_access 116 003102 automatic bit(3) level 2 dcl 1283 set ref 896* 928* 954* 986* directory 0(02) 004477 automatic bit(1) level 2 packed packed unaligned dcl 4-7 set ref 515* directory_acl_entry based structure level 1 dcl 2-54 dirname 3 based char(168) level 3 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" ref 139 180 dirname 3 003102 automatic char(168) level 2 in structure "imft_chk_acl" dcl 1283 in procedure "imft_transmit_object_" set ref 888* 952* divide builtin function dcl 1388 ref 444 1006 1114 1163 1173 1173 1195 dont_delete 53(04) based bit(1) level 3 packed packed unaligned dcl 19-8 set ref 565* dont_dump_upgraded_dirs 36(10) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 347* driver_ptr 304 based pointer level 2 dcl 15-17 ref 100 driver_status based structure level 1 dcl 5-25 ds_ptr 002546 automatic pointer dcl 1253 set ref 100* 101 103 246 246 315 315 1163 1173 1190 1199 effective_ring 120 003102 automatic fixed bin(17,0) level 2 dcl 1283 set ref 891* ename 55 based char(32) level 3 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" ref 139 181 ename 55 003102 automatic char(32) level 2 in structure "imft_chk_acl" dcl 1283 in procedure "imft_transmit_object_" set ref 889* 953* enforce_max_access_class 36(09) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 340* enforce_min_access_class 36(15) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 343* entries 3 based structure array level 2 dcl 2-7 set ref 911 941 974 eof_command based structure level 1 dcl 11-83 eof_reply based structure level 1 dcl 11-92 eof_reply_ptr 004506 automatic pointer dcl 11-96 set ref 488* 491 495 errfile_attached 002554 automatic bit(1) dcl 1257 set ref 106* 374* 683 687* 1096* errfile_bc 004522 automatic fixed bin(24,0) dcl 1081 set ref 1087* 1089 1114 errfile_ename 000305 internal static char(32) packed unaligned dcl 1327 set ref 72* 73* 74* 685* 686* 1087* 1093* 1094* errfile_lth 004532 automatic fixed bin(21,0) dcl 1110 set ref 1114* 1121 1121 errfile_pathname 000315 internal static char(168) packed unaligned dcl 1328 set ref 73* 76* 371* errfile_ptr 002552 automatic pointer dcl 1256 set ref 74* 75 81* 105* 678 679* 680* 1087* 1089 1121 error 1 based bit(1) level 2 dcl 11-92 ref 495 error_code 122 003102 automatic fixed bin(35,0) level 2 dcl 1283 set ref 902 934 960 992 error_file based char packed unaligned dcl 1109 in procedure "report_backup_errors" set ref 1121* error_file 36(05) 000012 internal static bit(1) level 4 in structure "static_backup_control" packed packed unaligned dcl 1314 in procedure "imft_transmit_object_" set ref 334* error_message 123 003102 automatic varying char(512) array level 2 dcl 1283 set ref 966 977* error_table_$fatal_error 000460 external static fixed bin(35,0) dcl 1337 ref 752 error_table_$moderr 000462 external static fixed bin(35,0) dcl 1338 ref 1042 1058 error_table_$no_s_permission 000464 external static fixed bin(35,0) dcl 1339 ref 1151 error_table_$unimplemented_version 000466 external static fixed bin(35,0) dcl 1340 set ref 147* 205* 904 936 963 994 error_table_$user_not_found 000470 external static fixed bin(35,0) dcl 1341 ref 1042 1058 expand_pathname_ 000506 constant entry external dcl 1350 ref 884 extend 172(10) based bit(1) level 4 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" set ref 144 145* 202 203* extend 177(10) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 214* 231* 254* 529* 1116* extend 210(10) 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 150* factor constant float bin(27) initial dcl 1182 ref 1197 1197 fatal 000101 automatic bit(1) dcl 706 set ref 708* 718* 728* 751 finished 53(01) based bit(1) level 3 packed packed unaligned dcl 19-8 set ref 566* first_call 000011 internal static bit(1) initial dcl 1312 set ref 60 83* fixed builtin function dcl 1388 ref 1197 flags 310 based structure level 2 in structure "iodd_static" dcl 15-17 in procedure "imft_transmit_object_" flags 177 000123 automatic structure level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" flags 2 003102 automatic structure level 2 in structure "imft_chk_acl" dcl 1283 in procedure "imft_transmit_object_" flags 1 based structure level 2 in structure "imft_driver_info" dcl 9-23 in procedure "imft_transmit_object_" flags 2 000330 automatic structure level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" flags 53 based structure level 2 in structure "request_descriptor" dcl 19-8 in procedure "imft_transmit_object_" flags 172 based structure level 3 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" flags 210 000330 automatic structure level 4 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" flags 5 000123 automatic structure level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" float builtin function dcl 1388 ref 245 245 254 254 314 314 325 325 force 004477 automatic bit(1) level 2 packed packed unaligned dcl 4-7 set ref 514* foreign_backup_errors 002560 automatic bit(1) dcl 1263 set ref 477* 499* 512 529 538 539 539* foreign_dirname 110 based char(168) level 3 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" set ref 140* foreign_dirname 115 000123 automatic char(168) level 3 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 196* foreign_ename 162 based char(32) level 3 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" set ref 140* foreign_ename 167 000123 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 196* foreign_full_pathname 002646 automatic char(168) packed unaligned dcl 1268 set ref 196* 199* 214* 231* foreign_path_given 177(01) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 196 214* 231* foreign_path_given 210(01) 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 150* foreign_path_given 172(01) based bit(1) level 4 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" ref 140 foreign_sys_name 104 003102 automatic char(32) level 2 dcl 1283 set ref 887* foreign_system 530 based structure level 2 in structure "imft_driver_info" dcl 9-23 in procedure "imft_transmit_object_" foreign_system 103 000123 automatic structure level 2 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" set ref 194* foreign_system_name 002720 automatic varying char(32) dcl 1269 set ref 97* 145* 150* 156* 203* 214* 231* 254* 395 397 411 416 422 431* 472 474 484 491 497* 529* 539* 610 629* 636* 649 651 803 887 1007* 1009 1116* 1121 foreign_system_version 000110 automatic float bin(27) dcl 1235 set ref 98* 98 144 156 156 202 foreign_user 105 000123 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 214* 231* foreign_user 116 000330 automatic char(32) level 4 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 150* foreign_user_given 210 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 150* foreign_user_given 177 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 214* 231* found_inner_ring_object 2(03) 003102 automatic bit(1) level 3 packed packed unaligned dcl 1283 set ref 1020 ft_request based structure level 1 dcl 10-16 set ref 138 ft_request_ptr 004502 automatic pointer dcl 10-36 set ref 103* 117 120 129 138 139 139 140 140 140 144 144 145 179 180 181 194 202 202 203 429 629 636 739 776 916 977 gen_acl_ptr 114 003102 automatic pointer level 2 dcl 1283 set ref 890* general_acl based structure level 1 dcl 2-7 set ref 666 870 general_acl_entry based structure level 1 unaligned dcl 2-12 general_delete_acl_entry based structure level 1 dcl 2-35 general_extended_acl_entry based structure level 1 dcl 2-23 get_group_id_ 000510 constant entry external dcl 1351 ref 108 get_pdir_ 000512 constant entry external dcl 1352 ref 61 71 get_ring_ 000514 constant entry external dcl 1353 ref 109 get_system_free_area_ 000516 constant entry external dcl 1354 ref 56 global 000330 automatic structure level 2 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" global 000123 automatic structure level 2 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" hbound builtin function dcl 1388 ref 911 941 974 hcs_$initiate_count 000522 constant entry external dcl 1358 ref 1002 1087 hcs_$make_seg 000524 constant entry external dcl 1361 ref 64 74 hcs_$quota_read 000520 constant entry external dcl 1355 ref 1169 hcs_$set_bc 000532 constant entry external dcl 1365 ref 87 672 686 1012 1094 hcs_$status_long 000526 constant entry external dcl 1362 ref 1149 hcs_$status_minf 000530 constant entry external dcl 1363 ref 211 hcs_$terminate_noname 000534 constant entry external dcl 1366 ref 69 81 679 hcs_$truncate_file 000536 constant entry external dcl 1367 ref 86 671 685 1011 1093 header based structure level 2 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" header 000012 internal static structure level 2 in structure "static_backup_control" dcl 1314 in procedure "imft_transmit_object_" header 16 000330 automatic structure level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" header based structure level 2 in structure "backup_control" dcl 3-8 in procedure "imft_transmit_object_" icri based structure level 1 dcl 8-6 id 16 000012 internal static char(32) level 4 packed packed unaligned dcl 1314 set ref 352* idx 000660 automatic fixed bin(17,0) dcl 864 set ref 911* 912 913 915* 941* 942 943 944* 974* 975 976 977* ignore_code 000103 automatic fixed bin(35,0) dcl 1230 set ref 69* 81* 86* 87* 367* 368* 369* 442* 671* 672* 679* 685* 686* 803* 827* 884* 1002* 1009* 1011* 1012* 1087* 1093* 1094* 1121* ignore_fb2 000104 automatic fixed bin(2,0) dcl 1231 set ref 1002* ignore_fb21 000105 automatic fixed bin(21,0) dcl 1232 set ref 145* 203* 1007* 1116* imft_check_acl based structure level 1 dcl 7-11 imft_chk_acl 003102 automatic structure level 1 dcl 1283 set ref 901 901 933 933 959 959 991 991 imft_convert_status_code_$decode 000540 constant entry external dcl 1368 ref 645 imft_convert_status_code_$encode 000542 constant entry external dcl 1369 ref 769 769 imft_debug_ 000000 stack reference condition dcl 1385 ref 753 786 imft_driver_info based structure level 1 dcl 9-23 imft_driver_info_ptr 004500 automatic pointer dcl 9-66 set ref 94* 97 98 325 341 344 478 539 545 753 786 892 893 imft_et_$reply_pending 000472 external static fixed bin(35,0) dcl 1343 ref 388 464 imft_et_$timeout 000474 external static fixed bin(35,0) dcl 1344 ref 786 imft_mail_interface_$deliver_message 000544 constant entry external dcl 1370 ref 803 1009 1121 imft_remote_logout_ 000000 stack reference condition dcl 1385 ref 632 imft_resynchronize_driver_ 000000 stack reference condition dcl 1385 ref 639 imft_util_$check_object_acl 000546 constant entry external dcl 1373 ref 901 933 959 imft_util_$check_subtree_acl 000550 constant entry external dcl 1374 ref 991 imft_version 542 based char(8) level 3 dcl 9-23 ref 98 imft_write_abort_ 004460 stack reference condition dcl 1385 ref 293 input_buffer 000546 automatic char(2048) packed unaligned dcl 1250 set ref 390 391 407 408 414 467 468 479 481 488 606 607 ioa_$general_rs 000552 constant entry external dcl 1375 ref 801 ioa_$rsnnl 000554 constant entry external dcl 1376 ref 145 203 1007 1042 1046 1116 iodd_msg_ 000556 constant entry external dcl 1377 ref 66 76 150 214 231 268 325 433 539 551 743 746 780 1152 iodd_static based structure level 1 dcl 15-17 ios_$attach 000560 constant entry external dcl 1378 ref 371 ios_$detach 000562 constant entry external dcl 1379 ref 684 1085 ios_status 000542 automatic structure level 1 dcl 1243 set ref 371* 684* 1085* iox_$control 000564 constant entry external dcl 1380 ref 387 392 410 442 463 469 483 609 827 keep_in_queue 53(06) based bit(1) level 3 packed packed unaligned dcl 19-8 set ref 557* 624* 749* 782* length builtin function dcl 1388 ref 131 185 391 408 468 481 607 867 length_in_bits parameter fixed bin(35,0) dcl 1141 set ref 1136 1154* 1160* 1163 1172* 1173 1179 1195 link 0(04) 004477 automatic bit(1) level 2 packed packed unaligned dcl 4-7 set ref 517* local_abort_command 000326 automatic structure level 1 dcl 1240 set ref 824 825 local_bit_count 002731 automatic fixed bin(24,0) dcl 1270 set ref 211* 223 local_bof_command 000123 automatic structure level 1 dcl 1238 set ref 171* 380 381 local_dirname 21 000123 automatic char(168) level 3 packed packed unaligned dcl 1238 set ref 180* 183* 211* 519* 876* 879 884* 952 1149* local_ename 73 000123 automatic char(32) level 3 packed packed unaligned dcl 1238 set ref 181* 183* 211* 519* 876* 953 1149* local_eof_command 000324 automatic structure level 1 dcl 1239 set ref 455 456 local_error_message 000100 automatic char(1024) packed unaligned dcl 856 set ref 907 907 916* 1042* 1046* local_full_pathname 002574 automatic char(168) packed unaligned dcl 1268 set ref 183* 199 214* 231* 254* 362 497* 524* 529* 545* 589* 629* 636* 739* 776* 916* 977* 1116* 1152* 1169* local_icri 000112 automatic structure level 1 dcl 1237 set ref 387 387 392 392 410 410 463 463 469 469 483 483 609 609 827 827 local_notify 003056 automatic bit(1) dcl 1273 set ref 117* 629 636 739 772 local_pathname 000500 automatic char(168) packed unaligned dcl 857 set ref 876* 1022* 1058* 1062* local_request_number 003057 automatic fixed bin(35,0) dcl 1274 set ref 118* 416 458 491 551* 743* 746* local_rr 000330 automatic structure level 1 dcl 1241 set ref 124* 163 164 local_system 506 based structure level 2 in structure "imft_driver_info" dcl 9-23 in procedure "imft_transmit_object_" local_system 6 000123 automatic structure level 2 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" local_system 3 000330 automatic structure level 2 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" local_user 3 000330 automatic char(32) level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" set ref 131* 136 150* local_user 6 000123 automatic char(32) level 3 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 185* 190 214* 231* 352 866 local_user_authorization 16 000123 automatic bit(72) level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" set ref 187* 192 353 894 1032 local_user_authorization 13 000330 automatic bit(72) level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" set ref 133* 137 local_user_id 000552 automatic varying char(32) dcl 858 set ref 866* 874 1046* 1062* local_user_ring 15 000330 automatic fixed bin(17,0) level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" set ref 134* local_user_ring 20 000123 automatic fixed bin(17,0) level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" set ref 188* 354 877 long 4 003070 automatic structure level 2 dcl 1282 ltrim builtin function dcl 1388 ref 651 mail_access_class 002572 automatic bit(72) dcl 1266 set ref 137* 192* 803* 1009* 1121* mail_destination 002561 automatic char(32) packed unaligned dcl 1265 set ref 136* 190* 803* 1009* 1121* mail_subject 004002 automatic varying char(1024) dcl 1329 set ref 1007* 1009 1116* 1121 max builtin function dcl 1388 ref 877 maximum_access_class 10 000012 internal static bit(72) level 3 dcl 1314 set ref 341* maximum_dir_access_class 14 000012 internal static bit(72) level 3 dcl 1314 set ref 348* message 240 based fixed bin(17,0) level 2 dcl 5-25 set ref 103 message_len 000563 automatic fixed bin(21,0) dcl 859 set ref 907 907 1042* 1046* min_time_to_log 5 based fixed bin(35,0) level 2 dcl 9-23 ref 325 minimum_access_class 12 000012 internal static bit(72) level 3 dcl 1314 set ref 344* mseg_message_info based structure level 1 dcl 17-9 mseg_message_info_copy based structure level 2 dcl 19-8 set ref 102 mseg_message_info_ptr 004512 automatic pointer dcl 17-7 set ref 102* 131 131 133 134 185 185 187 188 my_group_id 003701 automatic char(32) packed unaligned dcl 1285 set ref 108* 867 867 my_user_id 000564 automatic varying char(32) dcl 860 set ref 867* 873 1046* 1062* name 506 based char(32) level 3 in structure "imft_driver_info" packed packed unaligned dcl 9-23 in procedure "imft_transmit_object_" set ref 539* 545* name 530 based char(32) level 3 in structure "imft_driver_info" packed packed unaligned dcl 9-23 in procedure "imft_transmit_object_" ref 97 new_path 112 000012 internal static char(168) level 3 packed packed unaligned dcl 1314 set ref 363* new_rate 000106 automatic fixed bin(35,0) dcl 1233 set ref 1192* 1195* 1197* 1197 1199 no_primary_sw 164 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 365* notify 5 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 179* 254 529 notify 000100 automatic bit(1) dcl 706 in procedure "abort_request" set ref 708* 717* 727* 739 notify 104(01) 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 129* 156 431 notify 66(01) based bit(1) level 4 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" ref 117 129 179 notify_msg based char packed unaligned dcl 798 set ref 803* notify_msg_buffer 001546 automatic char(2048) packed unaligned dcl 1251 set ref 801* 803 notify_msg_buffer_used 000100 automatic fixed bin(21,0) dcl 799 set ref 801* 803 803 null builtin function dcl 1388 ref 65 75 105 442 442 665 667 670 673 676 678 680 1004 1089 1149 1149 object 40 000012 internal static structure level 2 dcl 1314 object_access_class 1 000123 automatic bit(72) level 3 dcl 1238 set ref 348 1032* object_length 003067 automatic fixed bin(35,0) dcl 1280 set ref 244* 312* 507* object_type 000123 automatic fixed bin(2,0) level 3 dcl 1238 set ref 211* 223 223* 231 238 254 529 545 1116 1147 objects_to_transfer 2(01) 003102 automatic bit(1) level 3 packed packed unaligned dcl 1283 set ref 1016 old_rate 000107 automatic fixed bin(35,0) dcl 1234 set ref 1190* 1192 1197 1197 old_version 1(06) based bit(1) level 3 packed packed unaligned dcl 9-23 ref 478 options 36 000012 internal static structure level 3 dcl 1314 set ref 332* p_abort_type parameter fixed bin(17,0) dcl 815 ref 812 818 p_code parameter fixed bin(35,0) dcl 1079 in procedure "analyze_backup_results" ref 1076 p_code parameter fixed bin(35,0) dcl 816 in procedure "write_abort_command" ref 812 819 p_code parameter fixed bin(35,0) dcl 703 in procedure "abort_request" set ref 699 714 724 735 735* 739 p_idx parameter fixed bin(17,0) dcl 1055 in procedure "notify_dir_sma_error" ref 1052 1058 1058 p_idx parameter fixed bin(17,0) dcl 1040 in procedure "set_dir_s_error_message" ref 1037 1042 1042 p_io_code parameter fixed bin(35,0) dcl 766 set ref 763 769* 769* 773 773* 780* 784 786 p_keep_request parameter bit(1) dcl 702 set ref 699 714 724 739* 746* 749 p_message parameter char packed unaligned dcl 767 in procedure "io_error" set ref 763 776* 780* p_message parameter char packed unaligned dcl 704 in procedure "abort_request" set ref 699 714 724 739* 743* parent_dirname 000575 automatic char(168) packed unaligned dcl 861 set ref 884* 888 parent_ename 000647 automatic char(32) packed unaligned dcl 862 set ref 884* 889 path 40 000012 internal static char(168) level 3 packed packed unaligned dcl 1314 set ref 362* pathname_ 000566 constant entry external dcl 1381 ref 63 73 139 140 183 196 876 preattached 36(04) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 337* priority_request 5(03) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 175* priority_request 53(08) based bit(1) level 3 in structure "request_descriptor" packed packed unaligned dcl 19-8 in procedure "imft_transmit_object_" ref 125 175 priority_request 2 000330 automatic bit(1) level 4 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 125* process_dname 000367 internal static char(168) packed unaligned dcl 1330 set ref 61* 63* 64* 71* 73* 74* 86* 87* 671* 672* 685* 686* 1002* 1011* 1012* 1087* 1093* 1094* q 33 based fixed bin(17,0) level 2 dcl 19-8 ref 126 176 queue 1 000330 automatic fixed bin(17,0) level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" set ref 126* 150* 156* queue 4 000123 automatic fixed bin(17,0) level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" set ref 176* 214* 231* 254* 529* 1007* 1116* queue_msg_hdr based structure level 1 dcl 18-12 quota_used 004543 automatic fixed bin(18,0) dcl 1145 set ref 1169* 1172 1173 rd_ptr 002550 automatic pointer dcl 1254 set ref 101* 102 118 125 126 127 173 174 175 176 177 557 565 566 624 749 782 reason based fixed bin(17,0) level 2 in structure "abort_command" dcl 12-48 in procedure "imft_transmit_object_" ref 644 644 645 651 reason 000326 automatic fixed bin(17,0) level 2 in structure "local_abort_command" dcl 1240 in procedure "imft_transmit_object_" set ref 818* record_info 4 000112 automatic structure level 2 dcl 1237 record_lth 10 000112 automatic fixed bin(21,0) level 3 dcl 1237 set ref 164* 381* 456* 825* record_max_lth 7 000112 automatic fixed bin(21,0) level 3 dcl 1237 set ref 391* 408* 468* 481* 607* record_ptr 4 000112 automatic pointer level 3 dcl 1237 set ref 163* 380* 390* 407* 455* 467* 479* 606* 643 824* record_quota_overflow 004466 stack reference condition dcl 1385 ref 438 record_type 6 000112 automatic fixed bin(17,0) level 3 dcl 1237 set ref 162* 379* 413 454* 486 628 635 642 823* remote_request based structure level 1 dcl 11-55 remote_transfer 172(04) based bit(1) level 4 packed packed unaligned dcl 10-16 set ref 120 429 629* 636* 739* 776* 916* 977* request 76 based structure level 2 in structure "ft_request" dcl 10-16 in procedure "imft_transmit_object_" set ref 194 request 114 000330 automatic structure level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" request 114 based structure level 3 in structure "remote_request" dcl 11-55 in procedure "imft_transmit_object_" request_count 37 000012 internal static fixed bin(17,0) level 3 dcl 1314 set ref 360* request_descriptor based structure level 1 dcl 19-8 request_in_progress 310(02) based bit(1) level 3 packed packed unaligned dcl 15-17 set ref 295* 567* request_info 16 000330 automatic structure level 2 dcl 1241 set ref 138* request_number 3 000123 automatic fixed bin(35,0) level 3 in structure "local_bof_command" dcl 1238 in procedure "imft_transmit_object_" set ref 177* 214* 231* request_number 000324 automatic fixed bin(35,0) level 2 in structure "local_eof_command" dcl 1239 in procedure "imft_transmit_object_" set ref 458* request_number based fixed bin(35,0) level 2 in structure "eof_reply" dcl 11-92 in procedure "imft_transmit_object_" ref 491 request_number based fixed bin(35,0) level 2 in structure "bof_reply" dcl 11-73 in procedure "imft_transmit_object_" ref 416 request_number 000330 automatic fixed bin(35,0) level 3 in structure "local_rr" dcl 1241 in procedure "imft_transmit_object_" set ref 127* 150* requests 40 based structure array level 2 dcl 3-8 restarted 53(02) based bit(1) level 3 in structure "request_descriptor" packed packed unaligned dcl 19-8 in procedure "imft_transmit_object_" ref 174 restarted 5(02) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 174* ring 30 000012 internal static fixed bin(17,0) level 4 dcl 1314 set ref 354* rtrim builtin function dcl 1388 ref 97 131 185 352 593 866 867 seg_access 117 003102 automatic bit(3) level 2 dcl 1283 set ref 897* 929* 955* 987* segment 0(03) 004477 automatic bit(1) level 2 packed packed unaligned dcl 4-7 set ref 516* segment_acl_entry based structure level 1 dcl 2-45 segptr 306 based pointer level 2 dcl 15-17 set ref 676* send_abort_command 002556 automatic bit(1) dcl 1261 set ref 106* 266 274 281 288 399* 421* 555* 626* 690 731 769 829* sender_authorization 25 based bit(72) level 2 dcl 17-9 ref 133 187 sender_id 13 based char(32) level 2 packed packed unaligned dcl 17-9 ref 131 131 185 185 sender_level 24 based fixed bin(17,0) level 2 dcl 17-9 ref 134 188 seq_id 32 based fixed bin(35,0) level 2 dcl 19-8 ref 118 127 177 shortinfo 004404 automatic char(8) dcl 1332 set ref 523* 735* 773* 914* 1057* source_full_pathname 002732 automatic char(168) packed unaligned dcl 1271 set ref 139* 142 150* 156* 431* 629* 636* 739* 776* 916* 977* stat_p 000456 internal static pointer dcl 15-15 set ref 93* 100 295 567 676 static_backup_control 000012 internal static structure level 1 dcl 1314 set ref 441 441 status_branch based structure level 1 dcl 20-8 status_code 14 based fixed bin(35,0) array level 3 dcl 2-7 ref 912 913 942 943 975 976 string builtin function dcl 1388 set ref 332* 364* 519 519 substr builtin function dcl 1388 ref 131 185 867 907 907 switches 164 000012 internal static structure level 3 dcl 1314 set ref 364* sys_auth_ceiling 76 003102 automatic bit(72) level 2 dcl 1283 set ref 892* sys_auth_floor 100 003102 automatic bit(72) level 2 dcl 1283 set ref 893* system_area based area(1024) dcl 1247 ref 666 870 system_area_ptr 000544 automatic pointer dcl 1248 set ref 56* 666 870 tape_entry 2 000012 internal static entry variable level 3 dcl 1314 set ref 330* target_full_pathname 003004 automatic char(168) packed unaligned dcl 1272 set ref 140* 142* 150* term_$refname 000570 constant entry external dcl 1382 ref 367 368 369 text_offset based structure level 1 packed packed unaligned dcl 13-45 time_needed parameter fixed bin(35,0) dcl 1142 set ref 1136 1155* 1163* 1173* time_needed_to_transmit 003060 automatic fixed bin(35,0) dcl 1276 set ref 244* 245 246 254 312* 314 315 325 325 time_pict 003062 automatic picture(6) packed unaligned dcl 1277 set ref 245* 246 314* 315 time_started 003064 automatic fixed bin(71,0) dcl 1278 set ref 440* 444 time_taken 003066 automatic fixed bin(35,0) dcl 1279 set ref 444* 507 1192 1195 timeout 2 000112 automatic fixed bin(35,0) level 2 dcl 1237 set ref 385* 453* 605* 822* transfer_ring 000657 automatic fixed bin(3,0) dcl 863 set ref 877* 891 type 65 003102 automatic char(32) level 2 dcl 1283 set ref 970 984 unique_chars_ 000572 constant entry external dcl 1383 ref 62 72 unspec builtin function dcl 1388 set ref 124* 171* 513* update 172(11) based bit(1) level 4 in structure "ft_request" packed packed unaligned dcl 10-16 in procedure "imft_transmit_object_" ref 144 202 update 177(11) 000123 automatic bit(1) level 4 in structure "local_bof_command" packed packed unaligned dcl 1238 in procedure "imft_transmit_object_" set ref 214* 231* 254* 529* 1116* update 210(11) 000330 automatic bit(1) level 5 in structure "local_rr" packed packed unaligned dcl 1241 in procedure "imft_transmit_object_" set ref 150* upgrade_to_user_auth 36(16) 000012 internal static bit(1) level 4 packed packed unaligned dcl 1314 set ref 356* user_auth 102 003102 automatic bit(72) level 2 dcl 1283 set ref 894* user_for_access_check 16 000012 internal static structure level 3 dcl 1314 version based char(8) level 2 in structure "general_acl" dcl 2-7 in procedure "imft_transmit_object_" set ref 871* version 000112 automatic char(8) level 2 in structure "local_icri" dcl 1237 in procedure "imft_transmit_object_" set ref 384* 452* 604* 821* version 000012 internal static char(8) level 3 in structure "static_backup_control" packed packed unaligned dcl 1314 in procedure "imft_transmit_object_" set ref 329* version 003102 automatic char(8) level 2 in structure "imft_chk_acl" dcl 1283 in procedure "imft_transmit_object_" set ref 886* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 2-77 ALWAYS_CHASE internal static bit(2) initial dcl 10-47 ALWAYS_NOTIFY internal static fixed bin(17,0) initial dcl 16-42 ALWAYS_QUEUE internal static fixed bin(17,0) initial dcl 16-33 ALWAYS_QUEUE_FOREIGN internal static fixed bin(17,0) initial dcl 16-33 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 BOTH internal static fixed bin(17,0) initial dcl 14-14 DATA_INITIATE internal static fixed bin(17,0) initial dcl 6-414 DATA_TYPE internal static fixed bin(17,0) initial dcl 6-414 DEFAULT_CHASE internal static bit(2) initial dcl 10-47 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 DELIVER_OPTIONS_VERSION_2 internal static char(8) initial packed unaligned dcl 16-19 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 Directory internal static fixed bin(17,0) initial dcl 20-56 ENTRY_CHASE_ALL_LINKS internal static bit(36) initial dcl 6-152 ENTRY_CHASE_NONSTAR_LINKS internal static bit(36) initial dcl 6-152 ENTRY_DONT_CHASE_LINKS internal static bit(36) initial dcl 6-152 ENTRY_DONT_LIST_SUBENTRIES internal static bit(36) initial dcl 6-152 ENTRY_DONT_RETURN internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_MDIRS internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_NONNULL internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_NONOBJECTS internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_NON_MDIRS internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_NULL internal static bit(36) initial dcl 6-152 ENTRY_DONT_SELECT_OBJECTS internal static bit(36) initial dcl 6-152 ENTRY_INAEE internal static bit(36) initial dcl 6-152 ENTRY_INASE internal static bit(36) initial dcl 6-152 ENTRY_LIST_SUBENTRIES internal static bit(36) initial dcl 6-152 ENTRY_RETURN internal static bit(36) initial dcl 6-152 ENTRY_SELECT_ALL_DIRS internal static bit(36) initial dcl 6-152 ENTRY_SELECT_ALL_FILES internal static bit(36) initial dcl 6-152 ENTRY_SELECT_NULL_NONNULL internal static bit(36) initial dcl 6-152 ENTRY_TYPE_ARCHIVE internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_ARCHIVE_COMP internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_DM_FILE internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_MSF internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_MSF_COMP internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_SEGMENT internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_UNKNOWN internal static char(32) initial packed unaligned dcl 6-518 ENTRY_TYPE_UNSET internal static char(32) initial packed unaligned dcl 6-518 ERROR_ABORT internal static fixed bin(17,0) initial dcl 6-285 ERROR_OK internal static fixed bin(17,0) initial dcl 6-285 ERROR_REJECT internal static fixed bin(17,0) initial dcl 6-285 ERROR_STOP internal static fixed bin(17,0) initial dcl 6-285 EXPRESS_DELIVERY internal static fixed bin(17,0) initial dcl 16-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 FILE_TRANSFER internal static fixed bin(17,0) initial dcl 9-71 FT_GENERIC_TYPE internal static char(32) initial packed unaligned dcl 10-40 FT_MESSAGE_TYPE internal static fixed bin(17,0) initial dcl 10-41 FT_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-38 FUNCTION_NAMES internal static char(32) initial array packed unaligned dcl 9-74 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 HANDLER_ABORT internal static fixed bin(17,0) initial dcl 6-253 HANDLER_DONT_COUNT internal static fixed bin(17,0) initial dcl 6-253 HANDLER_DONT_EXPAND internal static fixed bin(17,0) initial dcl 6-253 HANDLER_EXPAND internal static fixed bin(17,0) initial dcl 6-253 HANDLER_EXPAND_DONT_COUNT internal static fixed bin(17,0) initial dcl 6-253 HANDLER_OK internal static fixed bin(17,0) initial dcl 6-253 HANDLER_REJECT internal static fixed bin(17,0) initial dcl 6-253 HANDLER_STOP internal static fixed bin(17,0) initial dcl 6-253 IMFT_AIM1 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 IMFT_AIM2 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 IMFT_DATA internal static fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 IMFT_SYNC1 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 IMFT_SYNC2 internal static fixed bin(7,0) initial packed unsigned unaligned dcl 12-22 IODT_VERSION_5 internal static char(8) initial packed unaligned dcl 13-49 Link internal static fixed bin(17,0) initial dcl 20-56 MERGE_DIRECTORIES internal static bit(2) initial dcl 10-43 MSEG_MESSAGE_INFO_V1 internal static char(8) initial dcl 17-28 MSEG_READ_AFTER_SPECIFIED internal static fixed bin(17,0) initial dcl 17-30 MSEG_READ_BEFORE_SPECIFIED internal static fixed bin(17,0) initial dcl 17-30 MSEG_READ_DELETE internal static bit(36) initial dcl 17-38 MSEG_READ_FIRST internal static fixed bin(17,0) initial dcl 17-30 MSEG_READ_LAST internal static fixed bin(17,0) initial dcl 17-30 MSEG_READ_OWN internal static bit(36) initial dcl 17-38 MSEG_READ_SPECIFIED internal static fixed bin(17,0) initial dcl 17-30 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 NEVER_CHASE internal static bit(2) initial dcl 10-47 NEVER_NOTIFY internal static fixed bin(17,0) initial dcl 16-42 NEVER_QUEUE internal static fixed bin(17,0) initial dcl 16-33 NORMAL internal static fixed bin(17,0) initial dcl 14-6 NOTIFY_ON_ERROR internal static fixed bin(17,0) initial dcl 16-42 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 PATH_ALLOW_ALL_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_ARCHIVE_COMPONENTS internal static bit(36) initial dcl 6-133 PATH_ALLOW_ARCHIVE_COMP_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_ARCHIVE_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_BRANCH_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_DIR_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_ENTRY_STAR_NAMES internal static bit(36) initial dcl 6-133 PATH_ALLOW_NONDIR_STAR_NAMES internal static bit(36) initial dcl 6-133 QUEUE_FOREIGN_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 16-33 QUEUE_WHEN_NEEDED internal static fixed bin(17,0) initial dcl 16-33 RECIPIENTS_INFO_VERSION_2 internal static char(8) initial packed unaligned dcl 16-62 REPLACE_DIRECTORIES internal static bit(2) initial dcl 10-43 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 SLAVE internal static fixed bin(17,0) initial dcl 14-14 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SORT_BY_EXTENDED_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 6-388 SORT_BY_NAME internal static fixed bin(17,0) initial dcl 6-388 SORT_BY_STANDARD_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 6-388 SORT_ENTRIES_BEFORE_SUBENTRIES internal static fixed bin(17,0) initial dcl 6-388 SORT_FORWARD internal static fixed bin(17,0) initial dcl 6-388 SORT_OFF internal static fixed bin(17,0) initial dcl 6-388 SORT_REVERSE internal static fixed bin(17,0) initial dcl 6-388 STANDARD_ENTRY_TYPES internal static char(32) initial array packed unaligned dcl 6-530 STAR_DATA_VERSION_1 internal static char(8) initial packed unaligned dcl 6-425 STAR_EXCLUDE_NAMES_VERSION_1 internal static char(8) initial packed unaligned dcl 6-236 STAR_EXTENDED_ENTRY_VERSION_1 internal static char(8) initial packed unaligned dcl 6-195 STAR_MATCH_NAMES_VERSION_1 internal static char(8) initial packed unaligned dcl 6-216 STAR_OPTIONS_VERSION_1 internal static char(8) initial packed unaligned dcl 6-102 STAR_PATHS_VERSION_1 internal static char(8) initial packed unaligned dcl 6-116 STATE_BUMPED internal static fixed bin(17,0) initial dcl 18-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 18-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 18-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 18-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 18-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 18-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 18-41 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Segment internal static fixed bin(17,0) initial dcl 20-56 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 aim2_record based structure level 1 dcl 12-67 aim2_record_ptr automatic pointer dcl 12-86 backup_control_ptr automatic pointer dcl 3-56 backup_control_request_count automatic fixed bin(17,0) dcl 3-58 bof_command_ptr automatic pointer dcl 11-50 delete_acl based structure level 1 dcl 2-58 delete_acl_array based structure array level 1 dcl 2-64 deliver_options based structure level 1 dcl 16-6 deliver_options_ptr automatic pointer dcl 16-21 directory_acl based structure level 1 dcl 2-49 directory_acl_array based structure array level 1 dcl 2-55 driver_status_ptr automatic pointer dcl 5-24 eof_command_ptr automatic pointer dcl 11-87 exclude_names based structure level 1 dcl 6-236 exclude_names_size automatic fixed bin(17,0) dcl 6-236 expanded_recipients_result_list based structure level 1 dcl 16-93 expanded_recipients_result_list_n_entries automatic fixed bin(17,0) dcl 16-66 expanded_recipients_result_list_ptr automatic pointer dcl 16-64 extended_entry_types based structure level 1 dcl 6-195 extended_entry_types_size automatic fixed bin(17,0) dcl 6-195 general_delete_acl based structure level 1 dcl 2-30 general_extended_acl based structure level 1 dcl 2-18 icri_ptr automatic pointer dcl 8-16 imft_check_acl_ptr automatic pointer dcl 7-36 iod_tables_hdr based structure level 1 dcl 13-23 ithp automatic pointer dcl 13-22 match_names based structure level 1 dcl 6-216 match_names_size automatic fixed bin(17,0) dcl 6-216 queue_msg_hdr_version_1 internal static fixed bin(17,0) initial dcl 18-37 recipients_info based structure level 1 dcl 16-49 recipients_info_n_lists automatic fixed bin(17,0) dcl 16-66 recipients_info_ptr automatic pointer dcl 16-64 recipients_result_list based structure level 1 dcl 16-72 recipients_result_list_n_addresses automatic fixed bin(17,0) dcl 16-66 recipients_result_list_ptr automatic pointer dcl 16-64 rem_req_ptr automatic pointer dcl 11-68 segment_acl based structure level 1 dcl 2-40 segment_acl_array based structure array level 1 dcl 2-46 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 21-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 21-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 21-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 21-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 21-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 21-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 21-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 21-120 star_branch_count automatic fixed bin(17,0) dcl 21-13 star_data based structure level 1 dcl 6-435 star_dataP automatic pointer dcl 6-435 star_dir_list_branch based structure array level 1 dcl 21-59 star_entries based structure array level 1 dcl 21-27 star_entry_count automatic fixed bin(17,0) dcl 21-14 star_entry_ptr automatic pointer dcl 21-15 star_link_count automatic fixed bin(17,0) dcl 21-17 star_link_pathname based char packed unaligned dcl 21-102 star_links based structure array level 1 dcl 21-76 star_linkx automatic fixed bin(17,0) dcl 21-18 star_list_branch based structure array level 1 dcl 21-41 star_list_branch_ptr automatic pointer dcl 21-16 star_list_names based char(32) array packed unaligned dcl 21-92 star_list_names_ptr automatic pointer dcl 21-20 star_names based char(32) array packed unaligned dcl 21-37 star_names_ptr automatic pointer dcl 21-19 star_options based structure level 1 dcl 6-26 star_optionsP automatic pointer dcl 6-26 star_paths based structure level 1 dcl 6-116 star_paths_size automatic fixed bin(17,0) dcl 6-116 star_select_sw automatic fixed bin(3,0) dcl 21-21 status_area_ptr automatic pointer dcl 20-47 status_entry_names based char(32) array dcl 20-47 status_link based structure level 1 dcl 20-38 status_pathname based char dcl 20-47 status_ptr automatic pointer dcl 20-47 sync_record based structure level 1 dcl 12-36 sync_record_ptr automatic pointer dcl 12-43 text_strings based structure level 1 dcl 13-39 text_strings_ptr automatic pointer dcl 13-38 v2_aim2_record based structure level 1 dcl 12-80 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_REQUEST 007314 constant label dcl 586 ref 113 ABORT_REQUEST_COMMON 010472 constant label dcl 731 ref 709 719 CANT_GET_LENGTH 014201 constant label dcl 1152 ref 1170 RESTART_THIS_REQUEST 004636 constant label dcl 302 set ref 269 RESUME_AFTER_DELETE 006765 constant label dcl 529 ref 591 RETURN_FROM_TRANSMIT_OBJECT 007247 constant label dcl 562 ref 614 757 789 START_REQUEST 004640 constant label dcl 312 set ref 297 abort_request 010415 constant entry internal dcl 699 ref 283 372 921 982 1016 1028 abort_request_fatal 010434 constant entry internal dcl 714 ref 416 491 651 656 904 936 963 994 abort_request_notify 010454 constant entry internal dcl 724 ref 147 205 220 238 246 290 315 422 593 879 907 966 970 997 1209 abort_running_request 007270 constant entry external dcl 578 analyze_backup_results 013567 constant entry internal dcl 1076 ref 446 analyze_unsolicited_reply 007547 constant entry internal dcl 619 ref 393 427 470 503 612 analyze_write_abort 007424 constant entry internal dcl 601 ref 293 cleanup_handler 010136 constant entry internal dcl 662 ref 111 276 562 estimate_time 014125 constant entry internal dcl 1136 ref 244 312 imft_transmit_object_ 002102 constant entry external dcl 53 io_error 010765 constant entry internal dcl 763 ref 395 397 411 472 474 484 610 649 notify_dir_sma_error 013442 constant entry internal dcl 1052 ref 938 944 notify_user 011206 constant entry internal dcl 795 ref 156 254 431 497 524 529 545 589 629 636 739 776 916 977 1022 1058 1062 nulle 014415 constant entry internal dcl 1206 ref 330 report_backup_errors 013747 constant entry internal dcl 1106 ref 1089 revise_time_estimate 014353 constant entry internal dcl 1179 ref 507 set_dir_s_error_message 013332 constant entry internal dcl 1037 ref 906 915 validate_access 011433 constant entry internal dcl 852 ref 242 write_abort_command 011351 constant entry internal dcl 812 ref 266 274 281 288 690 731 769 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 15376 16172 14507 15406 Length 17232 14507 574 1024 666 450 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME imft_transmit_object_ 2902 external procedure is an external procedure. on unit on line 111 64 on unit on unit on line 264 96 on unit on unit on line 272 74 on unit on unit on line 279 102 on unit on unit on line 286 90 on unit on unit on line 293 97 on unit on unit on line 438 64 on unit analyze_write_abort internal procedure shares stack frame of on unit on line 293. analyze_unsolicited_reply 150 internal procedure is called by several nonquick procedures. cleanup_handler 86 internal procedure is called by several nonquick procedures. abort_request 148 internal procedure is called during a stack extension. io_error 128 internal procedure is called during a stack extension. notify_user 106 internal procedure is declared options(variable). write_abort_command 90 internal procedure is called by several nonquick procedures. validate_access 682 internal procedure is declared options(non_quick). set_dir_s_error_message internal procedure shares stack frame of internal procedure validate_access. notify_dir_sma_error internal procedure shares stack frame of internal procedure validate_access. analyze_backup_results internal procedure shares stack frame of external procedure imft_transmit_object_. report_backup_errors internal procedure shares stack frame of external procedure imft_transmit_object_. estimate_time internal procedure shares stack frame of external procedure imft_transmit_object_. nulle 90 internal procedure is assigned to an entry variable, and is declared options(variable). STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 deleting_object imft_transmit_object_ 000011 first_call imft_transmit_object_ 000012 static_backup_control imft_transmit_object_ 000223 accessfile_ename imft_transmit_object_ 000233 accessfile_path imft_transmit_object_ 000305 errfile_ename imft_transmit_object_ 000315 errfile_pathname imft_transmit_object_ 000367 process_dname imft_transmit_object_ 000442 abort_request_label imft_transmit_object_ 000446 condition_name imft_transmit_object_ 000456 stat_p imft_transmit_object_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME abort_request 000100 notify abort_request 000101 fatal abort_request imft_transmit_object_ 000100 data_iocb_ptr imft_transmit_object_ 000102 code imft_transmit_object_ 000103 ignore_code imft_transmit_object_ 000104 ignore_fb2 imft_transmit_object_ 000105 ignore_fb21 imft_transmit_object_ 000106 new_rate imft_transmit_object_ 000107 old_rate imft_transmit_object_ 000110 foreign_system_version imft_transmit_object_ 000112 local_icri imft_transmit_object_ 000123 local_bof_command imft_transmit_object_ 000324 local_eof_command imft_transmit_object_ 000326 local_abort_command imft_transmit_object_ 000330 local_rr imft_transmit_object_ 000542 ios_status imft_transmit_object_ 000544 system_area_ptr imft_transmit_object_ 000546 input_buffer imft_transmit_object_ 001546 notify_msg_buffer imft_transmit_object_ 002546 ds_ptr imft_transmit_object_ 002550 rd_ptr imft_transmit_object_ 002552 errfile_ptr imft_transmit_object_ 002554 errfile_attached imft_transmit_object_ 002555 allow_delete imft_transmit_object_ 002556 send_abort_command imft_transmit_object_ 002557 backup_errors_detected imft_transmit_object_ 002560 foreign_backup_errors imft_transmit_object_ 002561 mail_destination imft_transmit_object_ 002572 mail_access_class imft_transmit_object_ 002574 local_full_pathname imft_transmit_object_ 002646 foreign_full_pathname imft_transmit_object_ 002720 foreign_system_name imft_transmit_object_ 002731 local_bit_count imft_transmit_object_ 002732 source_full_pathname imft_transmit_object_ 003004 target_full_pathname imft_transmit_object_ 003056 local_notify imft_transmit_object_ 003057 local_request_number imft_transmit_object_ 003060 time_needed_to_transmit imft_transmit_object_ 003062 time_pict imft_transmit_object_ 003064 time_started imft_transmit_object_ 003066 time_taken imft_transmit_object_ 003067 object_length imft_transmit_object_ 003070 auto_status_branch imft_transmit_object_ 003102 imft_chk_acl imft_transmit_object_ 003701 my_group_id imft_transmit_object_ 003711 current_ring imft_transmit_object_ 003712 accessfile_bc imft_transmit_object_ 003713 accessfile_lth imft_transmit_object_ 003714 accessfile_ptr imft_transmit_object_ 003716 afs_ptr imft_transmit_object_ 003720 abort_message imft_transmit_object_ 003751 code_message imft_transmit_object_ 004002 mail_subject imft_transmit_object_ 004404 shortinfo imft_transmit_object_ 004474 acl_ptr imft_transmit_object_ 004476 acl_count imft_transmit_object_ 004477 delete_options imft_transmit_object_ 004500 imft_driver_info_ptr imft_transmit_object_ 004502 ft_request_ptr imft_transmit_object_ 004504 bof_reply_ptr imft_transmit_object_ 004506 eof_reply_ptr imft_transmit_object_ 004510 abort_command_ptr imft_transmit_object_ 004512 mseg_message_info_ptr imft_transmit_object_ 004522 errfile_bc analyze_backup_results 004532 errfile_lth report_backup_errors 004542 code estimate_time 004543 quota_used estimate_time notify_user 000100 notify_msg_buffer_used notify_user validate_access 000100 local_error_message validate_access 000500 local_pathname validate_access 000552 local_user_id validate_access 000563 message_len validate_access 000564 my_user_id validate_access 000575 parent_dirname validate_access 000647 parent_ename validate_access 000657 transfer_ring validate_access 000660 idx validate_access THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_l_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac fl2_to_fx1 tra_ext_1 tra_ext_2 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc real_to_real_truncate_ any_to_any_round_ divide_fx3 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. backup_dump_ convert_status_code_ cu_$arg_list_ptr delete_$path expand_pathname_ get_group_id_ get_pdir_ get_ring_ get_system_free_area_ hcs_$initiate_count hcs_$make_seg hcs_$quota_read hcs_$set_bc hcs_$status_long hcs_$status_minf hcs_$terminate_noname hcs_$truncate_file imft_convert_status_code_$decode imft_convert_status_code_$encode imft_mail_interface_$deliver_message imft_util_$check_object_acl imft_util_$check_subtree_acl ioa_$general_rs ioa_$rsnnl iodd_msg_ ios_$attach ios_$detach iox_$control pathname_ term_$refname unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$fatal_error error_table_$moderr error_table_$no_s_permission error_table_$unimplemented_version error_table_$user_not_found imft_et_$reply_pending imft_et_$timeout LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 53 002075 56 002107 60 002115 61 002120 62 002126 63 002157 64 002177 65 002234 66 002240 67 002270 69 002271 71 002302 72 002311 73 002342 74 002362 75 002421 76 002425 78 002464 79 002467 81 002470 83 002501 84 002503 86 002504 87 002531 92 002557 93 002563 94 002567 95 002572 97 002573 98 002613 100 002623 101 002627 102 002631 103 002633 105 002635 106 002641 108 002643 109 002651 111 002660 113 002702 117 002706 118 002713 120 002716 124 002721 125 002724 126 002731 127 002733 129 002735 131 002741 133 002757 134 002763 136 002765 137 002770 138 002773 139 002776 140 003024 142 003051 144 003054 145 003063 147 003121 150 003142 156 003251 162 003326 163 003331 164 003333 165 003335 171 003336 173 003341 174 003346 175 003352 176 003357 177 003361 179 003363 180 003370 181 003373 183 003376 185 003415 187 003433 188 003437 190 003441 192 003444 194 003447 196 003453 199 003477 202 003502 203 003511 205 003547 211 003570 213 003626 214 003630 220 003736 223 003761 231 003770 238 004103 241 004130 242 004132 244 004136 245 004140 246 004164 254 004227 264 004317 266 004333 268 004350 269 004403 264 004406 272 004413 274 004427 276 004444 277 004451 279 004452 281 004466 283 004503 284 004527 286 004530 288 004544 290 004561 291 004605 286 004606 293 004613 295 004631 297 004635 302 004636 312 004640 314 004642 315 004666 325 004731 329 005004 330 005007 332 005012 333 005013 334 005015 335 005017 337 005021 338 005023 340 005025 341 005027 343 005033 344 005035 347 005040 348 005042 351 005044 352 005046 353 005074 354 005100 356 005102 360 005104 362 005106 363 005111 364 005114 365 005115 367 005117 368 005137 369 005161 371 005200 372 005237 374 005264 379 005266 380 005271 381 005273 384 005275 385 005277 387 005301 388 005332 390 005337 391 005341 392 005343 393 005376 395 005405 396 005446 397 005450 399 005511 407 005514 408 005516 410 005520 411 005554 413 005617 414 005624 416 005626 420 005677 421 005702 422 005703 424 005761 425 005762 427 005763 429 005767 431 005773 433 006021 434 006060 438 006061 440 006076 441 006100 442 006113 444 006143 446 006151 452 006153 453 006155 454 006157 455 006162 456 006164 458 006166 459 006170 463 006201 464 006232 467 006237 468 006241 469 006243 470 006276 472 006305 473 006346 474 006350 477 006411 478 006413 479 006417 481 006421 483 006423 484 006457 486 006522 488 006527 491 006531 495 006601 497 006605 499 006630 501 006632 503 006633 507 006637 512 006644 513 006656 514 006657 515 006661 516 006663 517 006665 518 006667 519 006672 521 006724 522 006726 523 006730 524 006742 529 006765 538 007045 539 007063 545 007150 551 007205 555 007243 557 007244 562 007247 565 007253 566 007256 567 007260 569 007264 578 007265 581 007303 583 007312 586 007314 588 007317 589 007320 591 007343 593 007344 1433 007422 601 007424 604 007425 605 007430 606 007432 607 007434 609 007436 610 007470 612 007535 614 007543 619 007546 624 007554 626 007560 628 007561 629 007565 632 007625 633 007630 635 007631 636 007635 639 007675 640 007700 642 007701 643 007705 644 007707 645 007714 649 007727 650 007773 651 007775 654 010106 656 010110 658 010134 662 010135 665 010143 666 010150 667 010156 670 010161 671 010165 672 010213 673 010242 676 010245 678 010251 679 010254 680 010264 683 010267 684 010271 685 010317 686 010346 687 010375 690 010377 693 010413 699 010414 708 010430 709 010432 714 010433 717 010447 718 010450 719 010452 724 010453 727 010467 728 010471 731 010472 735 010507 737 010527 739 010533 743 010614 746 010670 749 010734 751 010744 752 010746 753 010752 757 010761 763 010764 769 011000 772 011025 773 011030 775 011047 776 011052 780 011117 782 011157 784 011163 786 011167 789 011202 795 011205 801 011213 803 011271 806 011346 812 011350 818 011356 819 011362 821 011364 822 011366 823 011370 824 011373 825 011375 827 011377 829 011427 831 011431 852 011432 866 011440 867 011461 869 011502 870 011504 871 011517 873 011522 874 011545 876 011571 877 011612 879 011620 884 011650 886 011675 887 011700 888 011704 889 011707 890 011712 891 011714 892 011716 893 011722 894 011725 895 011730 896 011732 897 011734 898 011736 899 011742 901 011744 902 011756 903 011763 904 011764 906 012010 907 012017 908 012050 910 012051 911 012053 912 012063 913 012071 914 012072 915 012105 916 012107 919 012161 921 012163 926 012212 928 012216 929 012220 930 012222 931 012224 933 012226 934 012241 935 012246 936 012247 938 012273 941 012302 942 012313 943 012321 944 012322 946 012324 952 012326 953 012332 954 012335 955 012337 956 012341 957 012343 959 012345 960 012360 961 012365 963 012366 966 012412 968 012451 970 012452 973 012503 974 012505 975 012515 976 012523 977 012524 980 012576 982 012600 984 012627 986 012634 987 012636 988 012640 989 012642 991 012644 992 012657 993 012664 994 012665 997 012714 1002 012741 1004 013003 1006 013012 1007 013015 1009 013051 1011 013136 1012 013166 1015 013215 1016 013221 1020 013250 1021 013257 1022 013260 1026 013300 1028 013301 1032 013325 1035 013331 1037 013332 1042 013334 1046 013407 1050 013441 1052 013442 1057 013444 1058 013460 1062 013531 1065 013564 1068 013566 1076 013567 1083 013571 1085 013572 1087 013620 1089 013662 1093 013671 1094 013717 1096 013745 1098 013746 1106 013747 1112 013750 1114 013752 1116 013756 1121 014037 1124 014123 1136 014125 1147 014127 1149 014132 1151 014174 1152 014201 1154 014240 1155 014242 1156 014244 1160 014245 1163 014252 1164 014260 1169 014261 1170 014333 1172 014335 1173 014341 1176 014351 1179 014352 1190 014355 1192 014360 1195 014366 1197 014372 1199 014411 1201 014413 1206 014414 1209 014422 1211 014446 ----------------------------------------------------------- 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