COMPILATION LISTING OF SEGMENT enter_imft_request Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/14/88 1220.0 mst Fri 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 /* Submits Inter-Multics File Transfer (IMFT) requests */ 10 11 /* Created: April 1982 by G. Palter */ 12 /* Modified: 16 July 1982 by G. Palter to rename "-entry_name" to "-entryname" and correct the error message produced by 13* "-target_pathname" when the target pathname is omitted */ 14 /* Modified: March 1983 by Robert Coren to implement "-source" */ 15 16 17 /****^ HISTORY COMMENTS: 18* 1) change(87-11-15,Oke), approve(88-08-01,MCR7948), audit(88-10-11,Farley), 19* install(88-10-14,MR12.2-1165): 20* Add support for -date_time_after, -skipped and -no_skipped. 21* 2) change(88-06-22,Beattie), approve(88-08-01,MCR7948), 22* audit(88-10-11,Farley), install(88-10-14,MR12.2-1165): 23* Add support for -delete, -no_delete, -extend, -replace and -update. 24* Changed all access checks to look for explicit ACL entries. 25* END HISTORY COMMENTS */ 26 27 28 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 29 30 enter_imft_request: 31 eir: 32 procedure () options (variable); 33 34 call cu_$arg_count (n_arguments, code); 35 if code ^= 0 then do; /* not called as a command */ 36 call com_err_ (code, ENTER_IMFT_REQUEST); 37 return; 38 end; 39 40 if n_arguments = 0 then do; /* must be given some pathnames */ 41 call com_err_$suppress_name (NO_ERROR, ENTER_IMFT_REQUEST, "Usage: ^a transfer_specs {-control_args}", 42 ENTER_IMFT_REQUEST); 43 return; 44 end; 45 46 47 /* Establish defaults */ 48 49 found_transfer_spec = "0"b; /* will need at least one of these */ 50 51 request_type = imft_default_rqt_ (); /* tries to find the real name of the default request type */ 52 foreign_system = after (rtrim (request_type), "To_"); 53 if foreign_system = "" /* name not of standard form */ 54 then 55 foreign_system = rtrim (request_type); /* so fake it */ 56 queue = 0; /* use the default queue */ 57 58 include_files = "1"b; /* default is to send matching files and subtrees */ 59 include_subtrees = "1"b; 60 file_subtree_arg = ""; 61 62 chase_control = DEFAULT_CHASE; /* chase non-starnames; don't chase starnames */ 63 64 long_mode = "1"b; /* default is -long */ 65 long_id = "0"b; /* default is -short_id */ 66 absolute_pathname = "0"b; /* default is -entryname */ 67 notify = "1"b; /* default is -notify */ 68 merge_directories = "1"b; /* default is -merge_directories */ 69 remote = "0"b; /* default -s -destination */ 70 foreign_user = ""; /* default is that user IDs are the same */ 71 72 delete_obj = "0"b; /* default is to not delete */ 73 extend_seg = "0"b; /* default is to replace */ 74 update_seg = "0"b; 75 76 date_time_after = 0; /* any date */ 77 list_skipped = "0"b; 78 79 the_argument_list = cu_$arg_list_ptr (); 80 81 82 MAIN_EIR_BLOCK: 83 begin; 84 85 dcl is_pathname (n_arguments) bit (1) aligned; 86 87 is_pathname (*) = "0"b; /* indicates which arguments are transfer_specs */ 88 89 90 /* Scan the argument list, process all control arguments, and validate the syntax of supplied transfer_specs */ 91 92 do argument_idx = 1 to n_arguments; 93 94 call cu_$arg_ptr_rel (argument_idx, argument_ptr, argument_lth, code, the_argument_list); 95 if code ^= 0 then do; 96 call com_err_ (code, ENTER_IMFT_REQUEST, "Accessing argument #^d.", argument_idx); 97 return; 98 end; 99 100 if index (argument, "-") = 1 then /* a control argument */ 101 if (argument = "-files") | (argument = "-file") | (argument = "-f") then do; 102 include_files = "1"b; /* files only, please */ 103 include_subtrees = "0"b; 104 file_subtree_arg = argument; 105 end; 106 107 else if (argument = "-subtrees") | (argument = "-subtree") | (argument = "-subt") then do; 108 include_subtrees = "1"b; /* subtrees only, please */ 109 include_files = "0"b; 110 file_subtree_arg = argument; 111 end; 112 113 else if argument = "-chase" then chase_control = ALWAYS_CHASE; 114 else if argument = "-no_chase" then chase_control = NEVER_CHASE; 115 116 else if (argument = "-destination") | (argument = "-ds") then do; 117 remote = "0"b; 118 go to FOREIGN_SYSTEM; 119 end; 120 121 else if (argument = "-source") | (argument = "-sc") then do; 122 remote = "1"b; 123 FOREIGN_SYSTEM: 124 call get_next_argument ("A system name", foreign_system); 125 if remote then 126 request_type = "From_" || foreign_system; 127 else request_type = "To_" || foreign_system; 128 129 call iod_info_$generic_type (request_type, generic_type, code); 130 if code ^= 0 then do; /* couldn't lookup the specified destination */ 131 INVALID_DESTINATION_SPECIFICATION: 132 if code = error_table_$id_not_found then 133 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 134 "Unknown ^[source^;destination^]. ""^a""", remote, foreign_system); 135 else call com_err_ (code, ENTER_IMFT_REQUEST, "-^[source^;destination^] ""^a""", 136 remote, foreign_system); 137 return; 138 end; 139 if generic_type ^= FT_GENERIC_TYPE then do; 140 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 141 "Unknown ^[source^;destination^]. ""^a""", remote, foreign_system); 142 return; 143 end; 144 end; 145 146 else if (argument = "-queue") | (argument = "-q") then do; 147 call get_next_argument ("A number", queue_string); 148 queue = cv_dec_check_ (queue_string, code); 149 if code ^= 0 then do; 150 INVALID_QUEUE_SPECIFICATION: 151 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 152 "The queue must be a number between 1 and 4; not ""^a"".", queue_string); 153 return; 154 end; 155 if (queue < 1) | (queue > 4) then go to INVALID_QUEUE_SPECIFICATION; 156 end; /* will check if queue is OK for destination later */ 157 158 else if (argument = "-long") | (argument = "-lg") then long_mode = "1"b; 159 else if (argument = "-brief") | (argument = "-bf") then long_mode = "0"b; 160 161 else if (argument = "-long_id") | (argument = "-lgid") then long_id = "1"b; 162 else if (argument = "-short_id") | (argument = "-shid") then long_id = "0"b; 163 164 else if (argument = "-absolute_pathname") | (argument = "-absp") then absolute_pathname = "1"b; 165 else if (argument = "-entryname") | (argument = "-etnm") then absolute_pathname = "0"b; 166 167 else if (argument = "-notify") | (argument = "-nt") then notify = "1"b; 168 else if (argument = "-no_notify") | (argument = "-nnt") then notify = "0"b; 169 170 else if (argument = "-merge_directories") | (argument = "-mdr") then merge_directories = "1"b; 171 else if (argument = "-replace_directories") | (argument = "-rpdr") then merge_directories = "0"b; 172 173 else if (argument = "-foreign_user") | (argument = "-fu") then do; 174 call get_next_argument ("A user ID", foreign_user); 175 if after (foreign_user, ".") = "" then do; 176 INVALID_FOREIGN_USER_SPECIFICATION: 177 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 178 "Foreign user must be of the form Person.Project; not ""^a"".", foreign_user); 179 return; 180 end; 181 if after (foreign_user, ".") = "*" then go to INVALID_FOREIGN_USER_SPECIFICATION; 182 if before (foreign_user, ".") = "" then go to INVALID_FOREIGN_USER_SPECIFICATION; 183 if before (foreign_user, ".") = "*" then go to INVALID_FOREIGN_USER_SPECIFICATION; 184 if after (after (foreign_user, "."), ".") ^= "" then 185 go to INVALID_FOREIGN_USER_SPECIFICATION; 186 end; 187 188 else if (argument = "-target_pathname") | (argument = "-tpn") then do; 189 call com_err_ (error_table_$noarg, ENTER_IMFT_REQUEST, 190 """^a"" must be preceded by a pathname.", argument); 191 return; 192 end; 193 194 /* Process date_time_after, dtaf control */ 195 196 else if (argument = "-date_time_after") | (argument = "-dtaf") then do; 197 call get_next_argument ("date_time of last mod", date_time_after_string); 198 call convert_date_to_binary_ (date_time_after_string, date_time_after, code); 199 if code ^= 0 then do; 200 call com_err_ (code, ENTER_IMFT_REQUEST, "-dtaf time ""^a"" is not valid.", 201 date_time_after_string); 202 return; 203 end; 204 end; 205 206 else if (argument = "-skipped") | (argument = "-skpd") then list_skipped = "1"b; 207 208 else if (argument = "-no_skipped") | (argument = "-nskpd") then list_skipped = "0"b; 209 210 else if (argument = "-delete") | (argument = "-dl") then delete_obj = "1"b; 211 else if (argument = "-no_delete") | (argument = "-ndl") then delete_obj = "0"b; 212 213 else if (argument = "-extend") then do; 214 extend_seg = "1"b; 215 update_seg = "0"b; 216 include_files = "1"b; 217 include_subtrees = "0"b; 218 file_subtree_arg = argument; 219 end; 220 221 else if (argument = "-replace") | (argument = "-rp") then do; 222 extend_seg = "0"b; 223 update_seg = "0"b; 224 include_files = "1"b; 225 file_subtree_arg = argument; 226 end; 227 228 else if (argument = "-update") | (argument = "-ud") then do; 229 extend_seg = "0"b; 230 update_seg = "1"b; 231 include_files = "1"b; 232 include_subtrees = "0"b; 233 file_subtree_arg = argument; 234 end; 235 236 else do; /* unrecognized control argument */ 237 call com_err_ (error_table_$badopt, ENTER_IMFT_REQUEST, """^a""", argument); 238 return; 239 end; 240 241 else do; /* a transfer_spec: star_path {-tpn equal_path} */ 242 found_transfer_spec = "1"b; 243 is_pathname (argument_idx) = "1"b; /* flag this for later */ 244 call expand_pathname_ (argument, local_dirname, local_starname, code); 245 if code ^= 0 then do; 246 call com_err_ (code, ENTER_IMFT_REQUEST, "^a", argument); 247 return; 248 end; 249 call check_star_name_$entry (local_starname, code); 250 if (code ^= 0) & (code ^= 1) & (code ^= 2) then do; 251 call com_err_ (code, ENTER_IMFT_REQUEST, "^a", pathname_ (local_dirname, local_starname)); 252 return; 253 end; 254 if argument_idx < n_arguments then do; 255 call cu_$arg_ptr_rel ((argument_idx + 1), next_argument_ptr, next_argument_lth, code, 256 the_argument_list); /* peek ahead for -tpn equal_path */ 257 if code ^= 0 then do; 258 call com_err_ (code, ENTER_IMFT_REQUEST, "Accessing argument #^d.", (argument_idx + 1)) 259 ; 260 return; 261 end; 262 if (next_argument = "-target_pathname") | (next_argument = "-tpn") then do; 263 argument_idx = argument_idx + 1; 264 argument_ptr = next_argument_ptr; 265 argument_lth = next_argument_lth; 266 call get_next_argument ("A pathname", foreign_pathname); 267 call expand_pathname_ (foreign_pathname, foreign_dirname, foreign_equalname, code); 268 if code ^= 0 then do; 269 call com_err_ (code, ENTER_IMFT_REQUEST, "-target_pathname ""^a""", 270 foreign_pathname); 271 return; 272 end; 273 call get_equal_name_$check_equal_name_ (foreign_equalname, code); 274 if (code ^= 0) & (code ^= 1) & (code ^= 2) then do; 275 call com_err_ (code, ENTER_IMFT_REQUEST, "-target_pathname ""^a""", 276 pathname_ (foreign_dirname, foreign_equalname)); 277 return; 278 end; 279 end; 280 end; 281 end; 282 end; 283 284 if ^found_transfer_spec then do; /* nothing to transfer (sigh) */ 285 call com_err_ (error_table_$noarg, ENTER_IMFT_REQUEST, "At least one pathname must be supplied."); 286 return; 287 end; 288 289 if (extend_seg | update_seg) & include_subtrees then do; 290 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 291 "The ^[-extend^;-update^] control option cannot be used with the -subtree control option.", 292 extend_seg); 293 return; 294 end; 295 296 call iod_info_$queue_data (request_type, default_queue, max_queues, code); 297 if code ^= 0 then go to INVALID_DESTINATION_SPECIFICATION; 298 299 if queue = 0 then queue = default_queue; /* supply default if needed */ 300 if queue > max_queues then do; /* bad queue number for this request type */ 301 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 302 "^[Source^;Destination^] ^a has only ^d queue^[s^]; you specified queue ^d.", remote, 303 foreign_system, max_queues, (max_queues ^= 1), queue); 304 return; 305 end; 306 307 call iod_info_$driver_access_name (request_type, driver_userid, code); 308 if code ^= 0 then go to INVALID_DESTINATION_SPECIFICATION; 309 310 311 /* Argument parsing completed: open the queue where we will enter the requests and validate our access */ 312 313 system_area_ptr = get_system_free_area_ (); 314 315 queue_index = 0; /* for cleanup handler */ 316 skipped_count, n_requests_submitted = 0; 317 acl_ptr, star_entry_ptr, star_names_ptr = null (); 318 319 on condition (cleanup) call cleanup_handler (); 320 321 queue_ename = rtrim (request_type) || "_" || convert (queue_picture, queue) || ".ms"; 322 323 call message_segment_$open (imft_data_$queue_dirname, queue_ename, queue_index, code); 324 if code ^= 0 then do; 325 call com_err_ (code, ENTER_IMFT_REQUEST, "Opening ^a.", 326 pathname_ (imft_data_$queue_dirname, queue_ename)); 327 go to RETURN_FROM_ENTER_IMFT_REQUEST; 328 end; 329 330 call message_segment_$get_mode_index (queue_index, queue_mode, code); 331 if code ^= 0 then do; 332 call com_err_ (code, ENTER_IMFT_REQUEST, "Determining access to ^a.", 333 pathname_ (imft_data_$queue_dirname, queue_ename)); 334 go to RETURN_FROM_ENTER_IMFT_REQUEST; 335 end; 336 337 if (queue_mode & AS_EXTENDED_ACCESS) = AS_EXTENDED_ACCESS then do; 338 call message_segment_$get_message_count_index (queue_index, previous_queue_total, code); 339 if code ^= 0 then do; 340 call com_err_ (code, ENTER_IMFT_REQUEST, "Determining number of messages in ^a.", 341 pathname_ (imft_data_$queue_dirname, queue_ename)); 342 go to RETURN_FROM_ENTER_IMFT_REQUEST; 343 end; 344 have_previous_queue_total = "1"b; 345 end; 346 347 else if (queue_mode & A_EXTENDED_ACCESS) = A_EXTENDED_ACCESS then have_previous_queue_total = "0"b; 348 349 else do; /* not enough access at all */ 350 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, "You do not have permission to use ^a queue ^d.", 351 request_type, queue); 352 go to RETURN_FROM_ENTER_IMFT_REQUEST; 353 end; 354 355 356 /* Fill in constant portion of the ft_request */ 357 358 unspec (local_ft_request) = ""b; 359 360 local_ft_request.header.hdr_version = queue_msg_hdr_version_1; 361 local_ft_request.header.message_type = FT_MESSAGE_TYPE; 362 local_ft_request.header.notify = notify; 363 local_ft_request.header.orig_queue = queue; 364 local_ft_request.header.std_length = currentsize (local_ft_request); 365 366 local_ft_request.version = FT_REQUEST_VERSION_1; 367 local_ft_request.delete = delete_obj; /* daemon does deletions, not coordinator */ 368 local_ft_request.extend = extend_seg; 369 local_ft_request.update = update_seg; 370 371 acl_count = 2; /* one entry each for driver and user */ 372 allocate general_acl in (system_area) set (acl_ptr); 373 general_acl.version = GENERAL_ACL_VERSION_1; 374 general_acl.count = acl_count; 375 general_acl (DRIVER_ACL_IDX).access_name = driver_userid; 376 general_acl (USER_ACL_IDX).access_name = get_group_id_$tag_star (); 377 imft_chk_acl.version = IMFT_CHECK_ACL_VERSION_1; 378 imft_chk_acl.foreign_sys_name = foreign_system; 379 imft_chk_acl.gen_acl_ptr = acl_ptr; 380 imft_chk_acl.effective_ring = get_ring_ (); 381 imft_chk_acl.check_aim = "0"b; /* aim checking done by output daemon */ 382 imft_chk_acl.accessfile_pathname = ""; 383 384 if foreign_user ^= "" then do; /* foreign user is different from local user */ 385 local_ft_request.foreign_user = foreign_user; 386 local_ft_request.foreign_user_given = "1"b; 387 end; 388 389 if remote then do; /* request for transfer from other system */ 390 local_ft_request.remote_transfer = "1"b; 391 local_ft_request.include_files = include_files; 392 local_ft_request.include_subtrees = include_subtrees; 393 local_ft_request.chase_control = chase_control; 394 end; 395 396 /* Find each transfer_spec and submit the appropriate requests */ 397 398 have_starname = "0"b; /* until we know better */ 399 do argument_idx = 1 to n_arguments; 400 401 if is_pathname (argument_idx) then do; 402 403 call cu_$arg_ptr_rel (argument_idx, argument_ptr, argument_lth, ignore_code, the_argument_list); 404 call expand_pathname_ (argument, local_dirname, local_starname, ignore_code); 405 406 local_ft_request.foreign_path_given = "0"b; 407 if argument_idx < (n_arguments - 1) then do; 408 call cu_$arg_ptr_rel (argument_idx + 1, argument_ptr, argument_lth, ignore_code, 409 the_argument_list); 410 if (argument = "-target_pathname") | (argument = "-tpn") then do; 411 argument_idx = argument_idx + 2; 412 call cu_$arg_ptr_rel (argument_idx, argument_ptr, argument_lth, ignore_code, 413 the_argument_list); 414 call expand_pathname_ (argument, foreign_dirname, foreign_equalname, ignore_code); 415 local_ft_request.foreign_path_given = "1"b; 416 end; 417 end; 418 419 if ^remote then do; /* if transferring from here, interpret starname */ 420 call check_star_name_$entry (local_starname, code); 421 have_starname = (code ^= 0); 422 423 if have_starname then do; /* more than one object */ 424 star_entry_ptr, star_names_ptr = null (); 425 skipped_a_request, submitted_a_request, printed_an_error_message = "0"b; 426 if chase_control = ALWAYS_CHASE then 427 call hcs_$star_ (local_dirname, local_starname, star_ALL_ENTRIES, system_area_ptr, 428 star_entry_count, star_entry_ptr, star_names_ptr, code); 429 else call hcs_$star_ (local_dirname, local_starname, star_BRANCHES_ONLY, 430 system_area_ptr, star_entry_count, star_entry_ptr, star_names_ptr, code); 431 if code ^= 0 then do; 432 call com_err_ (code, ENTER_IMFT_REQUEST, "^a", 433 pathname_ (local_dirname, local_starname)); 434 go to PROCESS_NEXT_TRANSFER_SPEC; 435 end; 436 do entry_idx = 1 to star_entry_count; 437 call process_single_request (local_dirname, 438 star_names (star_entries (entry_idx).nindex)); 439 PROCESS_NEXT_STAR_ENTRY: 440 end; 441 free star_names in (system_area); 442 free star_entries in (system_area); 443 star_entry_ptr, star_names_ptr = null (); 444 if (^submitted_a_request & ^skipped_a_request) & ^printed_an_error_message then 445 call com_err_ (error_table_$nomatch, ENTER_IMFT_REQUEST, "^a", 446 pathname_ (local_dirname, local_starname)); 447 end; 448 449 else call process_single_request (local_dirname, local_starname); 450 end; 451 452 else call process_single_request (local_dirname, local_starname); 453 454 PROCESS_NEXT_TRANSFER_SPEC: 455 end; 456 end; 457 458 459 /* Print the total number of requests entered if in long mode and cleanup */ 460 461 RETURN_FROM_ENTER_IMFT_REQUEST: 462 if long_mode & (n_requests_submitted > 0) then 463 call ioa_ ("^d request^[s^] submitted^[; ^d already in^; to^s^] ^a queue ^d.", n_requests_submitted, 464 (n_requests_submitted > 1), have_previous_queue_total, previous_queue_total, request_type, queue) 465 ; 466 467 CLEANUP: 468 call cleanup_handler (); 469 470 return; 471 472 473 /* Performs all necessary processing to submit a single request */ 474 475 process_single_request: 476 procedure (p_dirname, p_ename); 477 478 dcl (p_dirname, p_ename) character (*) parameter; 479 480 dcl (local_dirname, local_pathname, real_dirname, parent_dirname, dirname_here) character (168); 481 dcl (local_ename, local_type, real_ename, foreign_ename, parent_ename) character (32); 482 dcl message character (512); 483 dcl entry_bit_count fixed binary (24); 484 dcl entry_type fixed binary (2); 485 dcl idx fixed binary; 486 487 dcl request_id character (19); 488 dcl the_message_id bit (72) aligned; 489 490 dcl 1 stat like status_branch; 491 492 local_dirname = p_dirname; 493 local_ename = p_ename; 494 495 /* Construct the foreign pathname if -target_pathname was specified */ 496 497 if local_ft_request.foreign_path_given then do; 498 if remote then 499 foreign_ename = foreign_equalname; /* don't convert the equal name here */ 500 else do; 501 call get_equal_name_ (local_ename, foreign_equalname, foreign_ename, code); 502 if code ^= 0 then do; 503 call com_err_ (code, ENTER_IMFT_REQUEST, "Applying ^a to ^a.", foreign_equalname, local_ename); 504 go to ABORT_SINGLE_REQUEST; 505 end; 506 end; 507 end; 508 509 local_pathname = pathname_ (local_dirname, local_ename); 510 511 if ^remote then do; 512 513 /**** 514* Determine the type of entry and, if requested and the entry is a link, 515* determine its actual target. 516**/ 517 518 call hcs_$status_long (local_dirname, local_ename, HCS_DONT_CHASE, addr (stat), null (), code); 519 entry_type = stat.type; 520 entry_bit_count = stat.bit_count; 521 if code ^= 0 then do; 522 523 COULD_NOT_STATUS_BRANCH: 524 call com_err_ (code, ENTER_IMFT_REQUEST, "^a", pathname_ (local_dirname, local_ename)); 525 go to ABORT_SINGLE_REQUEST; 526 end; 527 528 if (entry_type = star_LINK) then 529 if (^have_starname & (chase_control = DEFAULT_CHASE)) | (chase_control = ALWAYS_CHASE) then do; 530 call hcs_$get_link_target (local_dirname, local_ename, real_dirname, real_ename, code); 531 if code ^= 0 then do; 532 call com_err_ (code, ENTER_IMFT_REQUEST, "Determining link target of ^a.", 533 pathname_ (local_dirname, local_ename)); 534 go to ABORT_SINGLE_REQUEST; 535 end; 536 local_dirname = real_dirname; 537 local_ename = real_ename; 538 local_pathname = pathname_ (local_dirname, local_ename); 539 call hcs_$status_long (local_dirname, local_ename, HCS_DONT_CHASE, addr (stat), null (), code); 540 entry_type = stat.type; 541 entry_bit_count = stat.bit_count; 542 if code ^= 0 then go to COULD_NOT_STATUS_BRANCH; 543 end; 544 else do; 545 call com_err_ (error_table_$link, ENTER_IMFT_REQUEST, "^a", 546 pathname_ (local_dirname, local_ename)); 547 go to ABORT_SINGLE_REQUEST; 548 end; 549 550 /* 551* Pass the dtaf screen to determine if we send it. This will also check 552* directories, but not their contents. 553**/ 554 555 if ^remote & (cv_fstime_ ((stat.dtcm)) <= date_time_after) then do; 556 if list_skipped then 557 call ioa_ ("^[^a^s^;^s^a^] not changed after dtaf.", absolute_pathname, local_pathname, 558 local_ename, date_time_after_string); 559 skipped_count = skipped_count + 1; 560 skipped_a_request = "1"b; 561 goto SKIP_THIS_REQUEST; 562 end; 563 564 /**** 565* Check the user's and the daemon's access to object. Both must have 566* explicit non-null access to the branch. 567**/ 568 569 imft_chk_acl.dirname = local_dirname; 570 imft_chk_acl.ename = local_ename; 571 imft_chk_acl.dir_access = S_ACCESS; 572 imft_chk_acl.seg_access = R_ACCESS; 573 imft_chk_acl.bad_acl_idx = USER_ACL_IDX; /* by default, error is user's */ 574 575 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 576 if code = 0 then code = imft_chk_acl.error_code; 577 if code ^= 0 then 578 if code = error_table_$unimplemented_version then do; 579 call com_err_ (code, ENTER_IMFT_REQUEST, BAD_CHK_OBJ_ACL_STR); 580 go to CLEANUP; 581 end; 582 else do; 583 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, "^a^/^2x(^a)", 584 imft_chk_acl (imft_chk_acl.bad_acl_idx).error_message, local_pathname); 585 go to ABORT_SINGLE_REQUEST; 586 end; 587 588 do idx = 1 to hbound (general_acl.entries, 1); 589 if general_acl (idx).status_code ^= 0 then 590 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, "^a^/^2x(^a)", imft_chk_acl (idx).error_message, 591 local_pathname); 592 end; 593 594 if ^imft_chk_acl.allow_transfer | ^imft_chk_acl.objects_to_transfer then go to ABORT_SINGLE_REQUEST; 595 596 /* If -file or -subtree was specified, verify that the branch is of the appropriate type */ 597 598 if ^(imft_chk_acl.type = ENTRY_TYPE_DIRECTORY) & ^include_files then do; 599 if ^have_starname then 600 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 601 "Files may not be specified when ""^a"" is used. ^a", file_subtree_arg, local_pathname); 602 return; 603 end; 604 605 if (imft_chk_acl.type = ENTRY_TYPE_DIRECTORY) & ^include_subtrees then do; 606 if ^have_starname then 607 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 608 "Subtrees may not be specified when ""^a"" is used. ^a", file_subtree_arg, local_pathname); 609 return; 610 end; 611 612 if (extend_seg | update_seg) 613 & ^((imft_chk_acl.type = ENTRY_TYPE_SEGMENT) | (imft_chk_acl.type = ENTRY_TYPE_MSF)) then do; 614 615 if index (imft_chk_acl.type, "-") = 1 then 616 local_type = substr (imft_chk_acl.type, 2); 617 else local_type = imft_chk_acl.type; 618 619 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 620 "Can only ^[extend^]^[update^] with segments or MSFs, not with ^a type objects:^/^2x^a", 621 extend_seg, update_seg, local_type, local_pathname); 622 go to ABORT_SINGLE_REQUEST; 623 end; 624 625 626 end; /* if ^remote */ 627 628 if remote & local_ft_request.foreign_path_given /* in this case, "foreign" path is really local */ 629 then 630 dirname_here = foreign_dirname; 631 else dirname_here = local_dirname; 632 call expand_pathname_ (dirname_here, parent_dirname, parent_ename, ignore_code); 633 634 /**** 635* Must always have S access to containing or parent directory for both 636* driver and user. 637* 638* If the -delete option was used or local object is being extended or 639* updated, both driver and user must have explicit SMA. 640**/ 641 642 imft_chk_acl.dirname = parent_dirname; 643 imft_chk_acl.ename = parent_ename; 644 imft_chk_acl.dir_access = S_ACCESS; 645 imft_chk_acl.seg_access = R_ACCESS; 646 imft_chk_acl.bad_acl_idx = USER_ACL_IDX; /* by default, error is user's */ 647 648 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 649 if code = 0 then code = imft_chk_acl.error_code; 650 if code ^= 0 then do; 651 if code = error_table_$unimplemented_version then do; 652 call com_err_ (code, ENTER_IMFT_REQUEST, BAD_CHK_OBJ_ACL_STR); 653 go to CLEANUP; 654 end; 655 call set_dir_s_error_message (imft_chk_acl.bad_acl_idx); 656 call com_err_ (code, ENTER_IMFT_REQUEST, message); 657 go to PROCESS_NEXT_TRANSFER_SPEC; /* cannot win here for any starname */ 658 659 end; /* if code ^= 0 */ 660 661 code = 0; 662 do idx = 1 to hbound (general_acl.entries, 1); /* see if general_acl has any errors to report */ 663 if general_acl (idx).status_code ^= 0 then do; 664 code = general_acl (idx).status_code; 665 call set_dir_s_error_message (idx); 666 call com_err_ (code, ENTER_IMFT_REQUEST, message); 667 end; 668 end; 669 670 if code ^= 0 then go to PROCESS_NEXT_TRANSFER_SPEC; 671 /* cannot win here with any starname */ 672 673 if remote | delete_obj then do; /* need SMA to parent directory for this case */ 674 675 imft_chk_acl.dir_access = SMA_ACCESS; 676 imft_chk_acl.seg_access = RW_ACCESS; 677 imft_chk_acl.bad_acl_idx = USER_ACL_IDX; /* by default, error is user's */ 678 679 call imft_util_$check_object_acl (addr (imft_chk_acl), code); 680 if code = 0 then code = imft_chk_acl.error_code; 681 if code ^= 0 then do; 682 if code = error_table_$unimplemented_version then do; 683 call com_err_ (code, ENTER_IMFT_REQUEST, BAD_CHK_OBJ_ACL_STR); 684 go to CLEANUP; 685 end; 686 else do; 687 call set_dir_sma_error_message (imft_chk_acl.bad_acl_idx); 688 call command_query_$yes_no (Yes, code, ENTER_IMFT_REQUEST, explanation, 689 "^[^/^2x^]^a" || question, ll_query () < 100, message); 690 if Yes then go to CONTINUE_SINGLE_REQUEST; 691 end; 692 go to PROCESS_NEXT_TRANSFER_SPEC; /* cannot win here with any starname */ 693 694 end; /* if code ^= 0 */ 695 696 code = 0; 697 do idx = 1 to hbound (general_acl.entries, 1); 698 if general_acl (idx).status_code ^= 0 then do; 699 code = general_acl (idx).status_code; 700 call set_dir_sma_error_message (idx); 701 call com_err_ (code, ENTER_IMFT_REQUEST, message); 702 end; 703 end; 704 705 if code ^= 0 then do; 706 call command_query_$yes_no (Yes, NO_ERROR, ENTER_IMFT_REQUEST, explanation, "^a" || question, 707 "An access error occured."); 708 if Yes then go to CONTINUE_SINGLE_REQUEST; 709 go to PROCESS_NEXT_TRANSFER_SPEC; /* cannot win here with any starname */ 710 end; 711 712 713 end; /* if remote or delete_obj */ 714 715 /* Submit the request */ 716 717 CONTINUE_SINGLE_REQUEST: 718 local_ft_request.header.msg_time = clock (); 719 720 local_ft_request.header.dirname = local_dirname; 721 local_ft_request.header.ename = local_ename; 722 723 if local_ft_request.foreign_path_given then do; 724 local_ft_request.foreign_dirname = foreign_dirname; 725 local_ft_request.foreign_ename = foreign_ename; 726 end; 727 728 if ^remote & (entry_type = star_DIRECTORY) | remote & ^(extend_seg | update_seg) then 729 if merge_directories then /* record the user's desire for treatment of namedups */ 730 local_ft_request.directory_creation_mode = MERGE_DIRECTORIES; 731 else local_ft_request.directory_creation_mode = REPLACE_DIRECTORIES; 732 else local_ft_request.directory_creation_mode = "00"b; 733 734 call message_segment_$add_index (queue_index, addr (local_ft_request), (36 * currentsize (local_ft_request)), 735 the_message_id, code); 736 if code ^= 0 then do; /* grumble */ 737 call com_err_ (code, ENTER_IMFT_REQUEST, "Attempting to add request for ^a.", local_pathname); 738 go to RETURN_FROM_ENTER_IMFT_REQUEST; /* this is fatal */ 739 end; 740 741 if long_mode then do; /* print a message about the success */ 742 request_id = request_id_ (local_ft_request.header.msg_time); 743 call ioa_ ("^[^a^s^;^s^a^]; ID: ^[^a^;^s^a^]", absolute_pathname, local_pathname, local_ename, long_id, 744 request_id, (substr (request_id, 7, 8))); 745 end; 746 747 n_requests_submitted = n_requests_submitted + 1; 748 submitted_a_request = "1"b; /* needed by starname processor */ 749 750 return; 751 752 /* An error occurred processing this request: proceed to the next one */ 753 754 ABORT_SINGLE_REQUEST: 755 printed_an_error_message = "1"b; /* needed by starname processor */ 756 757 SKIP_THIS_REQUEST: 758 if have_starname then 759 go to PROCESS_NEXT_STAR_ENTRY; 760 761 else go to PROCESS_NEXT_TRANSFER_SPEC; 762 763 /**** Support internal procedures to construct appropriate error messages. */ 764 765 set_dir_s_error_message: 766 proc (p_idx); 767 768 dcl p_idx fixed binary; 769 770 if code = error_table_$moderr | code = error_table_$user_not_found then 771 call ioa_$rsnnl ( 772 "^[^/^2x^]^[Driver^;User^] (^a) must have an explicit ACL entry of S to parent directory of object to be ^[received^s^;^[deleted^;sent^]^].^/^2x(^a)", 773 message, ignore_fb21, ll_query () < 100, (p_idx = DRIVER_ACL_IDX), 774 general_acl (p_idx).access_name, remote, delete_obj, dirname_here); 775 else call ioa_$rsnnl ( 776 "^[^/^2x^]Unable to determine S access of ^[driver^;user^] (^a) to the parent directory of object to be ^[received^s^;^[deleted^;sent^]^].^/^2x(^a)", 777 message, ignore_fb21, ll_query () < 100, (p_idx = DRIVER_ACL_IDX), 778 general_acl (p_idx).access_name, remote, delete_obj, dirname_here); 779 780 end set_dir_s_error_message; 781 782 set_dir_sma_error_message: 783 proc (p_idx); 784 785 dcl p_idx fixed binary; 786 787 if code = error_table_$moderr | code = error_table_$user_not_found then 788 call ioa_$rsnnl ( 789 "^[^/^2x^]^[Driver^;User^] (^a) must have an explicit ACL entry of SMA to parent directory of object to be ^[received^;deleted^].^/^2x(^a)", 790 message, ignore_fb21, ll_query () < 100, (p_idx = DRIVER_ACL_IDX), 791 general_acl (p_idx).access_name, remote, dirname_here); 792 else call ioa_$rsnnl ( 793 "^[^/^2x^]Unable to determine SMA access of ^[driver^;user^] (^a) to the parent directory of object to be ^[received^;deleted^].^/^2x(^a)", 794 message, ignore_fb21, ll_query () < 100, (p_idx = DRIVER_ACL_IDX), 795 general_acl (p_idx).access_name, remote, dirname_here); 796 797 end set_dir_sma_error_message; 798 799 end process_single_request; 800 801 end MAIN_EIR_BLOCK; 802 803 804 /* Fetch the next argument */ 805 806 get_next_argument: 807 procedure (p_arg_description, p_argument); 808 809 dcl p_arg_description character (*) parameter; 810 dcl p_argument character (*) parameter; 811 dcl control_argument character (32); 812 813 control_argument = argument; /* save control arg's name for error messages */ 814 815 if argument_idx = n_arguments then do; /* there is no next argument */ 816 call com_err_ (error_table_$noarg, ENTER_IMFT_REQUEST, "^a must follow ""^a"".", p_arg_description, 817 control_argument); 818 go to ABORT_ARGUMENT_PARSE; 819 end; 820 821 argument_idx = argument_idx + 1; 822 823 call cu_$arg_ptr_rel (argument_idx, argument_ptr, argument_lth, code, the_argument_list); 824 if code ^= 0 then do; 825 call com_err_ (code, ENTER_IMFT_REQUEST, "Accessing argument #^d.", argument_idx); 826 go to ABORT_ARGUMENT_PARSE; 827 end; 828 829 if argument_lth > length (p_argument) then do; /* it's too long */ 830 call com_err_ (NO_ERROR, ENTER_IMFT_REQUEST, 831 "Value after ""^a"" may not be longer than ^d characters. ""^a""", control_argument, 832 length (p_argument), argument); 833 go to ABORT_ARGUMENT_PARSE; 834 end; 835 836 p_argument = argument; /* it's OK */ 837 838 return; 839 840 end get_next_argument; 841 842 ABORT_ARGUMENT_PARSE: 843 return; 844 845 /* Cleanup after an invocation of enter_imft_request */ 846 847 cleanup_handler: 848 procedure (); 849 850 if acl_ptr ^= null () then do; 851 free general_acl in (system_area); 852 acl_ptr = null (); 853 end; 854 855 if star_names_ptr ^= null () then do; 856 free star_names in (system_area); 857 star_names_ptr = null (); 858 end; 859 860 if star_entry_ptr ^= null () then do; 861 free star_entries in (system_area); 862 star_entry_ptr = null (); 863 end; 864 865 if queue_index ^= 0 then do; 866 call message_segment_$close (queue_index, ignore_code); 867 queue_index = 0; 868 end; 869 870 return; 871 872 end cleanup_handler; 873 874 /* A little help from eor to help pretty up output. */ 875 876 ll_query: 877 procedure () returns (fixed bin) reducible; 878 879 if line_length_query = 0 then line_length_query = get_line_length_$switch (iox_$user_io, 0); 880 return (line_length_query); 881 882 end ll_query; 883 884 885 /* Sets the directory pathname where the IMFT user commands (eir, lir, mir, cir) will find the request queues */ 886 887 test_imft: 888 entry () options (variable); 889 890 call cu_$arg_count (n_arguments, code); 891 if code ^= 0 then do; 892 call com_err_ (code, TEST_IMFT); 893 return; 894 end; 895 896 if n_arguments = 0 then /* reset to the default */ 897 imft_data_$queue_dirname = imft_data_$default_queue_dirname; 898 899 else if n_arguments = 1 then do; 900 call cu_$arg_ptr (1, argument_ptr, argument_lth, code); 901 if code ^= 0 then do; 902 call com_err_ (code, TEST_IMFT, "Accessing argument #1."); 903 return; 904 end; 905 call absolute_pathname_ (argument, imft_data_$queue_dirname, code); 906 if code ^= 0 then do; 907 call com_err_ (code, TEST_IMFT, "^a", argument); 908 return; 909 end; 910 end; 911 912 else do; 913 call com_err_$suppress_name (NO_ERROR, TEST_IMFT, "Usage: ^a {queue_dir_path}", TEST_IMFT); 914 return; 915 end; 916 917 call iod_info_$test (imft_data_$queue_dirname); /* here if we changed it */ 918 919 return; 920 921 922 dcl system_area area based (system_area_ptr); 923 dcl system_area_ptr pointer; 924 925 dcl the_argument_list pointer; 926 927 dcl argument character (argument_lth) unaligned based (argument_ptr); 928 dcl explain_array (2) char (159) int static options (constant) init ("yes, y 929 the request will be submitted, in spite of the problem reported above. 930 The caller can take corrective action after the request is submitted, 931 or", " can do nothing in the hope that the IMFT daemon will not encounter 932 an error. 933 no, n 934 do not submit the request. 935 936 Do you still wish to submit the request?"); 937 dcl explanation char (317) based (addr (explain_array)); 938 dcl next_argument character (next_argument_lth) unaligned based (next_argument_ptr); 939 dcl (argument_lth, next_argument_lth) fixed binary (21); 940 dcl (argument_ptr, next_argument_ptr) pointer; 941 dcl (n_arguments, argument_idx) fixed binary; 942 943 dcl 1 imft_chk_acl aligned like imft_check_acl; 944 dcl 1 local_ft_request aligned like ft_request; 945 946 dcl foreign_system character (19); 947 dcl request_type character (24); 948 dcl (generic_type, driver_userid, queue_string, queue_ename) character (32); 949 dcl (queue, queue_index, default_queue, max_queues) fixed binary; 950 dcl queue_mode bit (36) aligned; 951 dcl queue_picture picture "9"; 952 953 dcl (local_dirname, foreign_dirname, foreign_pathname) character (168); 954 dcl (local_starname, foreign_equalname) character (32); 955 956 dcl foreign_user character (32); 957 dcl date_time_after_string character (32); 958 dcl date_time_after fixed bin (71); 959 dcl file_subtree_arg character (32); 960 dcl found_transfer_spec bit (1) aligned; 961 dcl remote bit (1) aligned; 962 dcl list_skipped bit (1); /* list dtaf skipped entries */ 963 dcl skipped_count fixed bin; 964 dcl delete_obj bit (1) aligned; 965 dcl extend_seg bit (1) aligned; 966 dcl update_seg bit (1) aligned; 967 dcl (include_files, include_subtrees) bit (1) aligned; 968 dcl (long_mode, long_id, absolute_pathname, notify, merge_directories) bit (1) aligned; 969 970 dcl chase_control bit (2) aligned; 971 972 dcl entry_idx fixed binary; 973 dcl Yes bit (1) aligned; 974 dcl have_starname bit (1) aligned; 975 976 dcl (n_requests_submitted, previous_queue_total) fixed binary; 977 dcl (have_previous_queue_total, skipped_a_request, submitted_a_request, printed_an_error_message) bit (1) aligned; 978 979 dcl code fixed binary (35); 980 dcl ignore_code fixed binary (35); 981 dcl ignore_fb21 fixed binary (21); 982 dcl line_length_query fixed binary init (0); 983 984 dcl BAD_CHK_OBJ_ACL_STR character (46) init ("Attempted to call imft_util_$check_object_acl.") static options (constant); 985 dcl ENTER_IMFT_REQUEST character (32) static options (constant) initial ("enter_imft_request"); 986 dcl TEST_IMFT character (32) static options (constant) initial ("enter_imft_request$test_imft"); 987 dcl NO_ERROR fixed binary (35) static options (constant) initial (0); 988 dcl HCS_DONT_CHASE fixed binary (1) static options (constant) initial (0); 989 dcl AS_EXTENDED_ACCESS initial ("420000000000"b3) bit (36) aligned static options (constant); 990 dcl A_EXTENDED_ACCESS initial ("400000000000"b3) bit (36) aligned static options (constant); 991 dcl question char (41) int static options (constant) init (" 992 Do you still wish to submit the request?"); 993 994 /* format: on */ 995 996 dcl error_table_$badopt fixed binary (35) external; 997 dcl error_table_$id_not_found fixed binary (35) external; 998 dcl error_table_$link fixed binary (35) external; 999 dcl error_table_$moderr fixed binary (35) external; 1000 dcl error_table_$noarg fixed binary (35) external; 1001 dcl error_table_$nomatch fixed binary (35) external; 1002 dcl error_table_$unimplemented_version fixed bin (35) ext static; 1003 dcl error_table_$user_not_found fixed binary (35) external; 1004 1005 dcl imft_data_$queue_dirname character (168) external; 1006 dcl imft_data_$default_queue_dirname character (168) external; 1007 1008 dcl absolute_pathname_ entry (character (*), character (*), fixed binary (35)); 1009 dcl check_star_name_$entry entry (character (*), fixed binary (35)); 1010 dcl com_err_ entry () options (variable); 1011 dcl com_err_$suppress_name entry () options (variable); 1012 dcl command_query_$yes_no entry () options (variable); 1013 dcl convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)); 1014 dcl cu_$arg_count entry (fixed binary, fixed binary (35)); 1015 dcl cu_$arg_list_ptr entry () returns (pointer); 1016 dcl cu_$arg_ptr entry (fixed binary, pointer, fixed binary (21), fixed binary (35)); 1017 dcl cu_$arg_ptr_rel entry (fixed binary, pointer, fixed binary (21), fixed binary (35), pointer); 1018 dcl cv_dec_check_ entry (character (*), fixed binary (35)) returns (fixed binary (35)); 1019 dcl cv_fstime_ entry (bit (36) aligned) returns (fixed bin (71)); 1020 dcl expand_pathname_ entry (character (*), character (*), character (*), fixed binary (35)); 1021 dcl get_equal_name_ entry (character (*), character (*), character (32), fixed binary (35)); 1022 dcl get_equal_name_$check_equal_name_ entry (character (*), fixed binary (35)); 1023 dcl get_group_id_$tag_star entry () returns (character (32)); 1024 dcl get_line_length_$switch entry (ptr, fixed bin (35)) returns (fixed bin); 1025 dcl get_ring_ entry () returns (fixed bin (3)); 1026 dcl get_system_free_area_ entry () returns (pointer); 1027 dcl hcs_$get_link_target entry (character (*), character (*), character (*), character (*), fixed binary (35)); 1028 dcl hcs_$star_ 1029 entry (character (*), character (*), fixed binary (2), pointer, fixed binary, pointer, pointer, 1030 fixed binary (35)); 1031 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 1032 dcl imft_default_rqt_ entry returns (char (*)); 1033 dcl imft_util_$check_object_acl entry (ptr, fixed bin (35)); 1034 dcl ioa_ entry () options (variable); 1035 dcl ioa_$rsnnl entry () options (variable); 1036 dcl iod_info_$driver_access_name entry (character (*), character (32), fixed binary (35)); 1037 dcl iod_info_$generic_type entry (character (*), character (32), fixed binary (35)); 1038 dcl iod_info_$queue_data entry (character (*), fixed binary, fixed binary, fixed binary (35)); 1039 dcl iod_info_$test entry (character (*)); 1040 dcl iox_$user_io ptr ext static; 1041 dcl message_segment_$add_index entry (fixed binary, pointer, fixed binary (24), bit (72) aligned, fixed binary (35)); 1042 dcl message_segment_$close entry (fixed binary, fixed binary (35)); 1043 dcl message_segment_$get_message_count_index entry (fixed binary, fixed binary, fixed binary (35)); 1044 dcl message_segment_$get_mode_index entry (fixed binary, bit (36) aligned, fixed binary (35)); 1045 dcl message_segment_$open entry (character (*), character (*), fixed binary, fixed binary (35)); 1046 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 1047 dcl request_id_ entry (fixed binary (71)) returns (character (19)); 1048 1049 dcl cleanup condition; 1050 1051 dcl (addr, after, before, clock, convert, currentsize, hbound, index, length, null, rtrim, substr, sum, unspec) builtin; 1052 1 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1 2 1 3 /* This is the message header used for standard system queue messages, namely: 1 4* IO daemon requests, absentee requests, retrieval requests. 1 5**/ 1 6 1 7 /* Written by Jerry Whitmore, Spring 1978. 1 8* Modified by T. Casey, November 1978, to add values for state. 1 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 1 10**/ 1 11 1 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 1 13 2 msg_time fixed bin (71), /* date and time of request */ 1 14 2 hdr_version fixed bin, /* version of this declaration */ 1 15 2 dirname char (168), /* directory name */ 1 16 2 ename char (32), /* entry name of file requested */ 1 17 2 message_type fixed bin, /* message format descriptor */ 1 18 /* 0 = absentee request */ 1 19 /* 1 = print request */ 1 20 /* 2 = punch request */ 1 21 /* 3 = tape request */ 1 22 /* 4 = retrieval request */ 1 23 2 bit_flags, 1 24 3 delete_sw bit (1) unal, /* delete file when done */ 1 25 3 notify bit (1) unal, /* user wants to be notified */ 1 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 1 27 3 padding bit (33) unal, 1 28 2 state fixed bin, /* stage of processing after being queued: 1 29* 0 = initial unprocessed state, 1 = deferred, 1 30* 2 = in state transition, 3 = eligible, 4 = running, 1 31* 5 = bumped, 6 = deferred_until_process_termination */ 1 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 1 33 2 std_length fixed bin, /* length of std msg for this type */ 1 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 1 35 2 hdr_pad (3) fixed bin; 1 36 1 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 1 38 1 39 /* Values for queue_msg_hdr.state */ 1 40 1 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 1 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 1 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 1 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 1 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 1 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 1 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 1 48 1 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 1053 1054 2 1 /* BEGIN INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 2 2 2 3 /* format: style4 */ 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(88-09-21,Beattie), approve(88-08-01,MCR7948), 2 7* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 2 8* Created to support IMFT ACL checking. 2 9* END HISTORY COMMENTS */ 2 10 2 11 dcl 1 imft_check_acl aligned based (imft_check_acl_ptr), 2 12 2 version character (8), /* version of this structure */ 2 13 2 flags, 2 14 3 allow_transfer bit (1) unaligned, /* indicates that transfer is allowed to start */ 2 15 3 objects_to_transfer bit (1) unaligned, /* indicates that objects were found in subtree that passed all checks */ 2 16 3 check_aim bit (1) unaligned, /* do aim checks */ 2 17 3 found_inner_ring_object bit (1) unaligned, /* an inner ring object was detected */ 2 18 3 pad bit (32) unaligned, 2 19 2 dirname character (168), /* containing directory of object */ 2 20 2 ename character (32), /* entry name of object */ 2 21 2 type character (32), /* type of object */ 2 22 2 object_ring fixed binary (3), /* first ring bracket of object */ 2 23 2 sys_auth_ceiling bit (72), /* system auth ceiling */ 2 24 2 sys_auth_floor bit (72), /* system auth floor */ 2 25 2 user_auth bit (72), /* user's authorization */ 2 26 2 foreign_sys_name character (32), /* for error message */ 2 27 2 gen_acl_ptr pointer, /* ptr to general ACL array */ 2 28 2 dir_access bit (3), /* desired ACL for directories */ 2 29 2 seg_access bit (3), /* desired ACL for segments */ 2 30 2 effective_ring, /* minimum ring for object to allow transfer */ 2 31 2 bad_acl_idx fixed bin, /* index in ACL array which failed ACL checks */ 2 32 2 error_code fixed bin (35), /* standard error code */ 2 33 2 error_message (2) character (512) varying, /* contains an error message */ 2 34 2 accessfile_pathname character (168); /* collect access error mesages here if subtree checking */ 2 35 2 36 dcl imft_check_acl_ptr pointer; 2 37 2 38 dcl DRIVER_ACL_IDX fixed binary int static options (constant) initial (1); 2 39 dcl USER_ACL_IDX fixed binary int static options (constant) initial (2); 2 40 2 41 dcl IMFT_CHECK_ACL_VERSION_1 character (8) init ("IMFTCA01") internal static options (constant); 2 42 2 43 /* END INCLUDE FILE ... _imft_check_acl.incl.pl1 */ 1055 1056 3 1 /* BEGIN INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 3 2 3 3 /* Created: April 1982 by G. Palter */ 3 4 /* Modified: March 1983 by Robert Coren, for requests for remote transfer */ 3 5 3 6 3 7 /****^ HISTORY COMMENTS: 3 8* 1) change(88-06-22,Beattie), approve(88-08-01,MCR7948), 3 9* audit(88-10-14,Farley), install(88-10-14,MR12.2-1165): 3 10* Add flags to support extend, update and delete operations. 3 11* END HISTORY COMMENTS */ 3 12 3 13 3 14 /* IMFT file transfer request definition */ 3 15 3 16 dcl 1 ft_request aligned based (ft_request_ptr), 3 17 2 header like queue_msg_hdr, 3 18 2 request, /* see _imft_ft_commands.incl.pl1 */ 3 19 3 version character (8), 3 20 3 foreign_user character (32) unaligned, /* Person.Project at other Multics for reload access check */ 3 21 3 foreign_dirname character (168) unaligned, /* where to put the branch on the other system */ 3 22 3 foreign_ename character (32) unaligned, /* ... */ 3 23 3 flags, 3 24 4 foreign_user_given bit (1) unaligned, /* ON => forreign_user different from local user */ 3 25 4 foreign_path_given bit (1) unaligned, /* ON => foreign pathname different from local */ 3 26 4 directory_creation_mode bit (2) unaligned, /* controls whether directories are replaced/merged */ 3 27 4 remote_transfer bit (1) unaligned, /* ON => request for transfer from foreign system */ 3 28 4 include_files bit (1) unaligned, /* ON => match files when interpreting starname */ 3 29 4 include_subtrees bit (1) unaligned, /* ON => match subtrees when interpreting starname */ 3 30 4 chase_control bit (2) unaligned, /* controls chasing of links when submitting remote request */ 3 31 4 delete bit (1) unaligned, /* delete source object after good transfer */ 3 32 4 extend bit (1) unaligned, /* place this data at end of current segment */ 3 33 4 update bit (1) unaligned, /* replace contents of current segment with this data */ 3 34 4 pad bit (24) unaligned; 3 35 3 36 dcl ft_request_ptr pointer; 3 37 3 38 dcl FT_REQUEST_VERSION_1 character (8) static options (constant) initial ("ftr_1.00"); 3 39 3 40 dcl FT_GENERIC_TYPE character (32) static options (constant) initial ("imft"); 3 41 dcl FT_MESSAGE_TYPE fixed binary static options (constant) initial (5); 3 42 3 43 dcl (REPLACE_DIRECTORIES initial ("10"b), /* replace entry on target if namedup and source is a dir */ 3 44 MERGE_DIRECTORIES initial ("11"b)) /* merge target and source dirs; replace if target not dir */ 3 45 bit (2) aligned static options (constant); 3 46 3 47 dcl (DEFAULT_CHASE initial ("00"b), /* chase non-starnames; don't chase starnames */ 3 48 NEVER_CHASE initial ("01"b), /* never chase any links */ 3 49 ALWAYS_CHASE initial ("10"b)) /* always chase links */ 3 50 bit (2) aligned static options (constant); 3 51 3 52 /* END INCLUDE FILE ... _imft_ft_request.incl.pl1 */ 1057 1058 4 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 4 2* 4 3* Values for the "access mode" argument so often used in hardcore 4 4* James R. Davis 26 Jan 81 MCR 4844 4 5* Added constants for SM access 4/28/82 Jay Pattin 4 6* Added text strings 03/19/85 Chris Jones 4 7**/ 4 8 4 9 4 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 4 11 dcl ( 4 12 N_ACCESS init ("000"b), 4 13 R_ACCESS init ("100"b), 4 14 E_ACCESS init ("010"b), 4 15 W_ACCESS init ("001"b), 4 16 RE_ACCESS init ("110"b), 4 17 REW_ACCESS init ("111"b), 4 18 RW_ACCESS init ("101"b), 4 19 S_ACCESS init ("100"b), 4 20 M_ACCESS init ("010"b), 4 21 A_ACCESS init ("001"b), 4 22 SA_ACCESS init ("101"b), 4 23 SM_ACCESS init ("110"b), 4 24 SMA_ACCESS init ("111"b) 4 25 ) bit (3) internal static options (constant); 4 26 4 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 4 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 4 29 4 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 4 31 static options (constant); 4 32 4 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 4 34 static options (constant); 4 35 4 36 dcl ( 4 37 N_ACCESS_BIN init (00000b), 4 38 R_ACCESS_BIN init (01000b), 4 39 E_ACCESS_BIN init (00100b), 4 40 W_ACCESS_BIN init (00010b), 4 41 RW_ACCESS_BIN init (01010b), 4 42 RE_ACCESS_BIN init (01100b), 4 43 REW_ACCESS_BIN init (01110b), 4 44 S_ACCESS_BIN init (01000b), 4 45 M_ACCESS_BIN init (00010b), 4 46 A_ACCESS_BIN init (00001b), 4 47 SA_ACCESS_BIN init (01001b), 4 48 SM_ACCESS_BIN init (01010b), 4 49 SMA_ACCESS_BIN init (01011b) 4 50 ) fixed bin (5) internal static options (constant); 4 51 4 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1059 1060 5 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 5 2 /* format: style3,indcomtxt,idind30 */ 5 3 5 4 declare acl_ptr pointer; 5 5 declare acl_count fixed bin; 5 6 5 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 5 8 2 version char (8) aligned, 5 9 2 count fixed bin, 5 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 5 11 5 12 declare 1 general_acl_entry based, 5 13 2 access_name character (32) unaligned, 5 14 2 mode bit (36) aligned, 5 15 2 status_code fixed bin (35); 5 16 5 17 5 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 5 19 2 version char (8) aligned, 5 20 2 count fixed bin, 5 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 5 22 5 23 declare 1 general_extended_acl_entry aligned based, 5 24 2 access_name character (32) unaligned, 5 25 2 mode bit (36) aligned, 5 26 2 extended_mode bit (36) aligned, 5 27 2 status_code fixed bin (35); 5 28 5 29 5 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 5 31 2 version char (8) aligned, 5 32 2 count fixed bin, 5 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 5 34 5 35 declare 1 general_delete_acl_entry aligned based, 5 36 2 access_name character (32) unaligned, 5 37 2 status_code fixed bin (35); 5 38 5 39 5 40 declare 1 segment_acl aligned based (acl_ptr), 5 41 2 version fixed bin, 5 42 2 count fixed bin, 5 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 5 44 5 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 5 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 5 47 5 48 5 49 declare 1 directory_acl aligned based (acl_ptr), 5 50 2 version fixed bin, 5 51 2 count fixed bin, 5 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 5 53 5 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 5 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 5 56 5 57 5 58 declare 1 delete_acl based (acl_ptr) aligned, 5 59 2 version fixed bin, 5 60 2 count fixed bin, 5 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 5 62 5 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 5 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 5 65 5 66 5 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 5 68 DIR_ACL_VERSION_1 init ("dra1"), 5 69 DELETE_ACL_VERSION_1 init ("dla1")) 5 70 char (4) int static options (constant); 5 71 5 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 5 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 5 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 5 75 char (8) internal static options (constant); 5 76 5 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 5 78 5 79 /* End include file acl_structures.incl.pl1 */ 1061 1062 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 * * * * * * * * * * * * */ 1063 1064 7 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 7 2 7 3 /* This include file contains structures for the hcs_$star_, 7 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 7 5* 7 6* Written 23 October 1978 by Monte Davidoff. 7 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 7 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 7 9**/ 7 10 7 11 /* automatic */ 7 12 7 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 7 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 7 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 7 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 7 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 7 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 7 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 7 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 7 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 7 22 7 23 /* based */ 7 24 7 25 /* hcs_$star_ entry structure */ 7 26 7 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 7 28 2 type fixed binary (2) unsigned unaligned, 7 29 /* storage system type */ 7 30 2 nnames fixed binary (16) unsigned unaligned, 7 31 /* number of names of entry that match star_name */ 7 32 2 nindex fixed binary (18) unsigned unaligned; 7 33 /* index of first name in star_names */ 7 34 7 35 /* hcs_$star_ name structure */ 7 36 7 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 7 38 7 39 /* hcs_$star_list_ branch structure */ 7 40 7 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 7 42 2 type fixed binary (2) unsigned unaligned, 7 43 /* storage system type */ 7 44 2 nnames fixed binary (16) unsigned unaligned, 7 45 /* number of names of entry that match star_name */ 7 46 2 nindex fixed binary (18) unsigned unaligned, 7 47 /* index of first name in star_list_names */ 7 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 7 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 7 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 7 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 7 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 7 53 2 pad bit (7) unaligned, 7 54 2 records fixed binary (18) unsigned unaligned; 7 55 /* records used by branch */ 7 56 7 57 /* hcs_$star_dir_list_ branch structure */ 7 58 7 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 7 60 2 type fixed binary (2) unsigned unaligned, 7 61 /* storage system type */ 7 62 2 nnames fixed binary (16) unsigned unaligned, 7 63 /* number of names of entry that match star_name */ 7 64 2 nindex fixed binary (18) unsigned unaligned, 7 65 /* index of first name in star_list_names */ 7 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 7 67 2 pad bit (36) unaligned, 7 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 7 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 7 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 7 71 2 bit_count fixed binary (24) unaligned; 7 72 /* bit count of the branch */ 7 73 7 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 7 75 7 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 7 77 2 type fixed binary (2) unsigned unaligned, 7 78 /* storage system type */ 7 79 2 nnames fixed binary (16) unsigned unaligned, 7 80 /* number of names of entry that match star_name */ 7 81 2 nindex fixed binary (18) unsigned unaligned, 7 82 /* index of first name in star_list_names */ 7 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 7 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 7 85 2 pathname_len fixed binary (18) unsigned unaligned, 7 86 /* length of the pathname of the link */ 7 87 2 pathname_index fixed binary (18) unsigned unaligned; 7 88 /* index of start of pathname in star_list_names */ 7 89 7 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 7 91 7 92 declare star_list_names char (32) based (star_list_names_ptr) 7 93 dimension (star_links (star_branch_count + star_link_count).nindex 7 94 + star_links (star_branch_count + star_link_count).nnames 7 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 7 96 * binary ( 7 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 7 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 7 99 7 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 7 101 7 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 7 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 7 104 7 105 /* internal static */ 7 106 7 107 /* star_select_sw values */ 7 108 7 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 7 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 7 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 7 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 7 113 fixed binary (3) internal static options (constant) initial (5); 7 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 7 115 fixed binary (3) internal static options (constant) initial (7); 7 116 7 117 /* storage system types */ 7 118 7 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 7 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 7 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 7 122 7 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 1065 8 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 8 2 8 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 8 4 8 5 /* This include file contains branch and link structures returned by 8 6* hcs_$status_ and hcs_$status_long. */ 8 7 8 8 dcl 1 status_branch aligned based (status_ptr), 8 9 2 short aligned, 8 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 8 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 8 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 8 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 8 14 3 dtu bit (36) unaligned, /* date/time last used */ 8 15 3 mode bit (5) unaligned, /* caller's effective access */ 8 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 8 17 3 pad1 bit (8) unaligned, 8 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 8 19 8 20 /* Limit of information returned by hcs_$status_ */ 8 21 8 22 2 long aligned, 8 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 8 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 8 25 3 lvid bit (36) unaligned, /* logical volume ID */ 8 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 8 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 8 28 3 pad2 bit (8) unaligned, 8 29 3 copy_switch bit (1) unaligned, /* copy switch */ 8 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 8 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 8 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 8 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 8 34 3 pad3 bit (5) unaligned, 8 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 8 36 3 uid bit (36) unaligned; /* unique ID */ 8 37 8 38 dcl 1 status_link aligned based (status_ptr), 8 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 8 40 2 nnames fixed bin (16) unaligned unsigned, 8 41 2 names_relp bit (18) unaligned, 8 42 2 dtem bit (36) unaligned, 8 43 2 dtd bit (36) unaligned, 8 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 8 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 8 46 8 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 8 48 based (pointer (status_area_ptr, status_branch.names_relp)), 8 49 /* array of names returned */ 8 50 status_pathname character (status_link.pathname_length) aligned 8 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 8 52 /* link target path */ 8 53 status_area_ptr pointer, 8 54 status_ptr pointer; 8 55 8 56 dcl (Link initial (0), 8 57 Segment initial (1), 8 58 Directory initial (2)) fixed bin internal static options (constant); 8 59 /* values for type fields declared above */ 8 60 8 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 1066 1067 end enter_imft_request; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/88 1211.2 enter_imft_request.pl1 >special_ldd>install>MR12.2-1165>enter_imft_request.pl1 1053 1 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 1055 2 10/14/88 1211.6 _imft_check_acl.incl.pl1 >special_ldd>install>MR12.2-1165>_imft_check_acl.incl.pl1 1057 3 10/14/88 1212.4 _imft_ft_request.incl.pl1 >special_ldd>install>MR12.2-1165>_imft_ft_request.incl.pl1 1059 4 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1061 5 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 1063 6 10/10/88 0909.4 fs_star_.incl.pl1 >ldd>include>fs_star_.incl.pl1 1065 7 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 1066 8 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_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. ALWAYS_CHASE constant bit(2) initial dcl 3-47 ref 113 426 528 AS_EXTENDED_ACCESS constant bit(36) initial dcl 989 ref 337 337 A_EXTENDED_ACCESS constant bit(36) initial dcl 990 ref 347 347 BAD_CHK_OBJ_ACL_STR 000101 constant char(46) initial packed unaligned dcl 984 set ref 579* 652* 683* DEFAULT_CHASE constant bit(2) initial dcl 3-47 ref 62 528 DRIVER_ACL_IDX constant fixed bin(17,0) initial dcl 2-38 ref 375 770 775 787 792 ENTER_IMFT_REQUEST 000071 constant char(32) initial packed unaligned dcl 985 set ref 36* 41* 41* 96* 131* 135* 140* 150* 176* 189* 200* 237* 246* 251* 258* 269* 275* 285* 290* 301* 325* 332* 340* 350* 432* 444* 503* 523* 532* 545* 579* 583* 589* 599* 606* 619* 652* 656* 666* 683* 688* 701* 706* 737* 816* 825* 830* ENTRY_TYPE_DIRECTORY 000020 constant char(32) initial packed unaligned dcl 6-518 ref 598 605 ENTRY_TYPE_MSF 000010 constant char(32) initial packed unaligned dcl 6-518 ref 612 ENTRY_TYPE_SEGMENT 000000 constant char(32) initial packed unaligned dcl 6-518 ref 612 FT_GENERIC_TYPE 000032 constant char(32) initial packed unaligned dcl 3-40 ref 139 FT_MESSAGE_TYPE constant fixed bin(17,0) initial dcl 3-41 ref 361 FT_REQUEST_VERSION_1 000042 constant char(8) initial packed unaligned dcl 3-38 ref 366 GENERAL_ACL_VERSION_1 000030 constant char(8) initial packed unaligned dcl 5-72 ref 373 HCS_DONT_CHASE 000341 constant fixed bin(1,0) initial dcl 988 set ref 518* 539* IMFT_CHECK_ACL_VERSION_1 000044 constant char(8) initial packed unaligned dcl 2-41 ref 377 MERGE_DIRECTORIES constant bit(2) initial dcl 3-43 ref 728 NEVER_CHASE constant bit(2) initial dcl 3-47 ref 114 NO_ERROR 000341 constant fixed bin(35,0) initial dcl 987 set ref 41* 131* 140* 150* 176* 290* 301* 350* 583* 589* 599* 606* 619* 706* 830* 913* REPLACE_DIRECTORIES constant bit(2) initial dcl 3-43 ref 731 RW_ACCESS constant bit(3) initial packed unaligned dcl 4-11 ref 676 R_ACCESS constant bit(3) initial packed unaligned dcl 4-11 ref 572 645 SMA_ACCESS constant bit(3) initial packed unaligned dcl 4-11 ref 675 S_ACCESS constant bit(3) initial packed unaligned dcl 4-11 ref 571 644 TEST_IMFT 000061 constant char(32) initial packed unaligned dcl 986 set ref 892* 902* 907* 913* 913* USER_ACL_IDX constant fixed bin(17,0) initial dcl 2-39 ref 376 573 646 677 Yes 001460 automatic bit(1) dcl 973 set ref 688* 690 706* 708 absolute_pathname 001453 automatic bit(1) dcl 968 set ref 66* 164* 165* 556* 743* absolute_pathname_ 000034 constant entry external dcl 1008 ref 905 access_name 3 based char(32) array level 3 packed packed unaligned dcl 5-7 set ref 375* 376* 770* 775* 787* 792* accessfile_pathname 525 000114 automatic char(168) level 2 dcl 943 set ref 382* acl_count 001476 automatic fixed bin(17,0) dcl 5-5 set ref 371* 372 372 374 acl_ptr 001474 automatic pointer dcl 5-4 set ref 317* 372* 373 374 375 376 379 588 589 662 663 664 697 698 699 770 775 787 792 850 851 852* addr builtin function dcl 1051 ref 518 518 539 539 575 575 648 648 679 679 688 706 734 734 after builtin function dcl 1051 ref 52 175 181 184 184 allow_transfer 2 000114 automatic bit(1) level 3 packed packed unaligned dcl 943 set ref 594 argument based char packed unaligned dcl 927 set ref 100 100 100 100 104 107 107 107 110 113 114 116 116 121 121 146 146 158 158 159 159 161 161 162 162 164 164 165 165 167 167 168 168 170 170 171 171 173 173 188 188 189* 196 196 206 206 208 208 210 210 211 211 213 218 221 221 225 228 228 233 237* 244* 246* 404* 410 410 414* 813 830* 836 905* 907* argument_idx 000113 automatic fixed bin(17,0) dcl 941 set ref 92* 94* 96* 243 254 255 258 263* 263* 399* 401 403* 407 408 411* 411 412* 815 821* 821 823* 825* argument_lth 000104 automatic fixed bin(21,0) dcl 939 set ref 94* 100 100 100 100 104 107 107 107 110 113 114 116 116 121 121 146 146 158 158 159 159 161 161 162 162 164 164 165 165 167 167 168 168 170 170 171 171 173 173 188 188 189 189 196 196 206 206 208 208 210 210 211 211 213 218 221 221 225 228 228 233 237 237 244 244 246 246 265* 403* 404 404 408* 410 410 412* 414 414 813 823* 829 830 830 836 900* 905 905 907 907 argument_ptr 000106 automatic pointer dcl 940 set ref 94* 100 100 100 100 104 107 107 107 110 113 114 116 116 121 121 146 146 158 158 159 159 161 161 162 162 164 164 165 165 167 167 168 168 170 170 171 171 173 173 188 188 189 196 196 206 206 208 208 210 210 211 211 213 218 221 221 225 228 228 233 237 244 246 264* 403* 404 408* 410 410 412* 414 813 823* 830 836 900* 905 907 bad_acl_idx 121 000114 automatic fixed bin(17,0) level 2 dcl 943 set ref 573* 583 646* 655* 677* 687* before builtin function dcl 1051 ref 182 183 bit_count 7(12) 000730 automatic fixed bin(24,0) level 3 packed packed unsigned unaligned dcl 490 set ref 520 541 bit_flags 66 000714 automatic structure level 3 dcl 944 chase_control 001456 automatic bit(2) dcl 970 in procedure "eir" set ref 62* 113* 114* 393 426 528 528 chase_control 172(07) 000714 automatic bit(2) level 4 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 393* check_aim 2(02) 000114 automatic bit(1) level 3 packed packed unaligned dcl 943 set ref 381* check_star_name_$entry 000036 constant entry external dcl 1009 ref 249 420 cleanup 000000 stack reference condition dcl 1049 ref 319 clock builtin function dcl 1051 ref 717 code 001470 automatic fixed bin(35,0) dcl 979 set ref 34* 35 36* 94* 95 96* 129* 130 131 135* 148* 149 198* 199 200* 244* 245 246* 249* 250 250 250 251* 255* 257 258* 267* 268 269* 273* 274 274 274 275* 296* 297 307* 308 323* 324 325* 330* 331 332* 338* 339 340* 420* 421 426* 429* 431 432* 501* 502 503* 518* 521 523* 530* 531 532* 539* 542 575* 576 576* 577 577 579* 648* 649 649* 650 651 652* 656* 661* 664* 666* 670 679* 680 680* 681 682 683* 688* 696* 699* 701* 705 734* 736 737* 770 770 787 787 823* 824 825* 890* 891 892* 900* 901 902* 905* 906 907* com_err_ 000040 constant entry external dcl 1010 ref 36 96 131 135 140 150 176 189 200 237 246 251 258 269 275 285 290 301 325 332 340 350 432 444 503 523 532 545 579 583 589 599 606 619 652 656 666 683 701 737 816 825 830 892 902 907 com_err_$suppress_name 000042 constant entry external dcl 1011 ref 41 913 command_query_$yes_no 000044 constant entry external dcl 1012 ref 688 706 control_argument 000770 automatic char(32) packed unaligned dcl 811 set ref 813* 816* 830* convert builtin function dcl 1051 ref 321 convert_date_to_binary_ 000046 constant entry external dcl 1013 ref 198 count 2 based fixed bin(17,0) level 2 dcl 5-7 set ref 372* 374* 588 662 697 851 cu_$arg_count 000050 constant entry external dcl 1014 ref 34 890 cu_$arg_list_ptr 000052 constant entry external dcl 1015 ref 79 cu_$arg_ptr 000054 constant entry external dcl 1016 ref 900 cu_$arg_ptr_rel 000056 constant entry external dcl 1017 ref 94 255 403 408 412 823 currentsize builtin function dcl 1051 ref 364 734 cv_dec_check_ 000060 constant entry external dcl 1018 ref 148 cv_fstime_ 000062 constant entry external dcl 1019 ref 555 date_time_after 001426 automatic fixed bin(71,0) dcl 958 set ref 76* 198* 555 date_time_after_string 001415 automatic char(32) packed unaligned dcl 957 set ref 197* 198* 200* 556* default_queue 001164 automatic fixed bin(17,0) dcl 949 set ref 296* 299 delete 172(09) 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 367* delete_acl_entry based structure level 1 dcl 5-63 delete_obj 001444 automatic bit(1) dcl 964 set ref 72* 210* 211* 367 673 770* 775* dir_access 116 000114 automatic bit(3) level 2 dcl 943 set ref 571* 644* 675* directory_acl_entry based structure level 1 dcl 5-54 directory_creation_mode 172(02) 000714 automatic bit(2) level 4 packed packed unaligned dcl 944 set ref 728* 731* 732* dirname 3 000114 automatic char(168) level 2 in structure "imft_chk_acl" dcl 943 in procedure "eir" set ref 569* 642* dirname 3 000714 automatic char(168) level 3 in structure "local_ft_request" dcl 944 in procedure "eir" set ref 720* dirname_here 000374 automatic char(168) packed unaligned dcl 480 set ref 628* 631* 632* 770* 775* 787* 792* driver_userid 001132 automatic char(32) packed unaligned dcl 948 set ref 307* 375 dtcm 1 000730 automatic bit(36) level 3 packed packed unaligned dcl 490 set ref 555 effective_ring 120 000114 automatic fixed bin(17,0) level 2 dcl 943 set ref 380* ename 55 000714 automatic char(32) level 3 in structure "local_ft_request" dcl 944 in procedure "eir" set ref 721* ename 55 000114 automatic char(32) level 2 in structure "imft_chk_acl" dcl 943 in procedure "eir" set ref 570* 643* entries 3 based structure array level 2 dcl 5-7 set ref 588 662 697 entry_bit_count 000716 automatic fixed bin(24,0) dcl 483 set ref 520* 541* entry_idx 001457 automatic fixed bin(17,0) dcl 972 set ref 436* 437* entry_type 000717 automatic fixed bin(2,0) dcl 484 set ref 519* 528 540* 728 error_code 122 000114 automatic fixed bin(35,0) level 2 dcl 943 set ref 576 649 680 error_message 123 000114 automatic varying char(512) array level 2 dcl 943 set ref 583* 589* error_table_$badopt 000010 external static fixed bin(35,0) dcl 996 set ref 237* error_table_$id_not_found 000012 external static fixed bin(35,0) dcl 997 ref 131 error_table_$link 000014 external static fixed bin(35,0) dcl 998 set ref 545* error_table_$moderr 000016 external static fixed bin(35,0) dcl 999 ref 770 787 error_table_$noarg 000020 external static fixed bin(35,0) dcl 1000 set ref 189* 285* 816* error_table_$nomatch 000022 external static fixed bin(35,0) dcl 1001 set ref 444* error_table_$unimplemented_version 000024 external static fixed bin(35,0) dcl 1002 ref 577 651 682 error_table_$user_not_found 000026 external static fixed bin(35,0) dcl 1003 ref 770 787 expand_pathname_ 000064 constant entry external dcl 1020 ref 244 267 404 414 632 explain_array 000115 constant char(159) initial array packed unaligned dcl 928 set ref 688 706 explanation based char(317) packed unaligned dcl 937 set ref 688* 706* extend 172(10) 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 368* extend_seg 001445 automatic bit(1) dcl 965 set ref 73* 214* 222* 229* 289 290* 368 612 619* 728 file_subtree_arg 001430 automatic char(32) packed unaligned dcl 959 set ref 60* 104* 110* 218* 225* 233* 599* 606* flags 172 000714 automatic structure level 3 in structure "local_ft_request" dcl 944 in procedure "eir" flags 2 000114 automatic structure level 2 in structure "imft_chk_acl" dcl 943 in procedure "eir" foreign_dirname 001241 automatic char(168) packed unaligned dcl 953 in procedure "eir" set ref 267* 275* 275* 414* 628 724 foreign_dirname 110 000714 automatic char(168) level 3 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 724* foreign_ename 000476 automatic char(32) packed unaligned dcl 481 in procedure "process_single_request" set ref 498* 501* 725 foreign_ename 162 000714 automatic char(32) level 3 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 725* foreign_equalname 001375 automatic char(32) packed unaligned dcl 954 set ref 267* 273* 275* 275* 414* 498 501* 503* foreign_path_given 172(01) 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 406* 415* 497 628 723 foreign_pathname 001313 automatic char(168) packed unaligned dcl 953 set ref 266* 267* 269* foreign_sys_name 104 000114 automatic char(32) level 2 dcl 943 set ref 378* foreign_system 001107 automatic char(19) packed unaligned dcl 946 set ref 52* 53 53* 123* 125 127 131* 135* 140* 301* 378 foreign_user 100 000714 automatic char(32) level 3 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 385* foreign_user 001405 automatic char(32) packed unaligned dcl 956 in procedure "eir" set ref 70* 174* 175 176* 181 182 183 184 384 385 foreign_user_given 172 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 386* found_transfer_spec 001440 automatic bit(1) dcl 960 set ref 49* 242* 284 ft_request based structure level 1 dcl 3-16 gen_acl_ptr 114 000114 automatic pointer level 2 dcl 943 set ref 379* general_acl based structure level 1 dcl 5-7 set ref 372 851 general_acl_entry based structure level 1 unaligned dcl 5-12 general_delete_acl_entry based structure level 1 dcl 5-35 general_extended_acl_entry based structure level 1 dcl 5-23 generic_type 001122 automatic char(32) packed unaligned dcl 948 set ref 129* 139 get_equal_name_ 000066 constant entry external dcl 1021 ref 501 get_equal_name_$check_equal_name_ 000070 constant entry external dcl 1022 ref 273 get_group_id_$tag_star 000072 constant entry external dcl 1023 ref 376 get_line_length_$switch 000074 constant entry external dcl 1024 ref 879 get_ring_ 000076 constant entry external dcl 1025 ref 380 get_system_free_area_ 000100 constant entry external dcl 1026 ref 313 have_previous_queue_total 001464 automatic bit(1) dcl 977 set ref 344* 347* 461* have_starname 001461 automatic bit(1) dcl 974 set ref 398* 421* 423 528 599 606 757 hbound builtin function dcl 1051 ref 588 662 697 hcs_$get_link_target 000102 constant entry external dcl 1027 ref 530 hcs_$star_ 000104 constant entry external dcl 1028 ref 426 429 hcs_$status_long 000106 constant entry external dcl 1031 ref 518 539 hdr_version 2 000714 automatic fixed bin(17,0) level 3 dcl 944 set ref 360* header 000714 automatic structure level 2 dcl 944 idx 000720 automatic fixed bin(17,0) dcl 485 set ref 588* 589 589* 662* 663 664 665* 697* 698 699 700* ignore_code 001471 automatic fixed bin(35,0) dcl 980 set ref 403* 404* 408* 412* 414* 632* 866* ignore_fb21 001472 automatic fixed bin(21,0) dcl 981 set ref 770* 775* 787* 792* imft_check_acl based structure level 1 dcl 2-11 imft_chk_acl 000114 automatic structure level 1 dcl 943 set ref 575 575 648 648 679 679 imft_data_$default_queue_dirname 000032 external static char(168) packed unaligned dcl 1006 ref 896 imft_data_$queue_dirname 000030 external static char(168) packed unaligned dcl 1005 set ref 323* 325* 325* 332* 332* 340* 340* 896* 905* 917* imft_default_rqt_ 000110 constant entry external dcl 1032 ref 51 imft_util_$check_object_acl 000112 constant entry external dcl 1033 ref 575 648 679 include_files 001447 automatic bit(1) dcl 967 in procedure "eir" set ref 58* 102* 109* 216* 224* 231* 391 598 include_files 172(05) 000714 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 391* include_subtrees 001450 automatic bit(1) dcl 967 in procedure "eir" set ref 59* 103* 108* 217* 232* 289 392 605 include_subtrees 172(06) 000714 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 392* index builtin function dcl 1051 ref 100 615 ioa_ 000114 constant entry external dcl 1034 ref 461 556 743 ioa_$rsnnl 000116 constant entry external dcl 1035 ref 770 775 787 792 iod_info_$driver_access_name 000120 constant entry external dcl 1036 ref 307 iod_info_$generic_type 000122 constant entry external dcl 1037 ref 129 iod_info_$queue_data 000124 constant entry external dcl 1038 ref 296 iod_info_$test 000126 constant entry external dcl 1039 ref 917 iox_$user_io 000130 external static pointer dcl 1040 set ref 879* is_pathname 000100 automatic bit(1) array dcl 85 set ref 87* 243* 401 length builtin function dcl 1051 ref 829 830 830 line_length_query 001473 automatic fixed bin(17,0) initial dcl 982 set ref 879 879* 880 982* list_skipped 001442 automatic bit(1) packed unaligned dcl 962 set ref 77* 206* 208* 556 local_dirname 000124 automatic char(168) packed unaligned dcl 480 in procedure "process_single_request" set ref 492* 509* 518* 523* 523* 530* 532* 532* 536* 538* 539* 545* 545* 569 631 720 local_dirname 001167 automatic char(168) packed unaligned dcl 953 in procedure "eir" set ref 244* 251* 251* 404* 426* 429* 432* 432* 437* 444* 444* 449* 452* local_ename 000446 automatic char(32) packed unaligned dcl 481 set ref 493* 501* 503* 509* 518* 523* 523* 530* 532* 532* 537* 538* 539* 545* 545* 556* 570 721 743* local_ft_request 000714 automatic structure level 1 dcl 944 set ref 358* 364 734 734 734 local_pathname 000176 automatic char(168) packed unaligned dcl 480 set ref 509* 538* 556* 583* 589* 599* 606* 619* 737* 743* local_starname 001365 automatic char(32) packed unaligned dcl 954 set ref 244* 249* 251* 251* 404* 420* 426* 429* 432* 432* 444* 444* 449* 452* local_type 000456 automatic char(32) packed unaligned dcl 481 set ref 615* 617* 619* long 4 000730 automatic structure level 2 dcl 490 long_id 001452 automatic bit(1) dcl 968 set ref 65* 161* 162* 743* long_mode 001451 automatic bit(1) dcl 968 set ref 64* 158* 159* 461 741 max_queues 001165 automatic fixed bin(17,0) dcl 949 set ref 296* 300 301* 301 merge_directories 001455 automatic bit(1) dcl 968 set ref 68* 170* 171* 728 message 000516 automatic char(512) packed unaligned dcl 482 set ref 656* 666* 688* 701* 770* 775* 787* 792* message_segment_$add_index 000132 constant entry external dcl 1041 ref 734 message_segment_$close 000134 constant entry external dcl 1042 ref 866 message_segment_$get_message_count_index 000136 constant entry external dcl 1043 ref 338 message_segment_$get_mode_index 000140 constant entry external dcl 1044 ref 330 message_segment_$open 000142 constant entry external dcl 1045 ref 323 message_type 65 000714 automatic fixed bin(17,0) level 3 dcl 944 set ref 361* msg_time 000714 automatic fixed bin(71,0) level 3 dcl 944 set ref 717* 742* n_arguments 000112 automatic fixed bin(17,0) dcl 941 set ref 34* 40 85 92 254 399 407 815 890* 896 899 n_requests_submitted 001462 automatic fixed bin(17,0) dcl 976 set ref 316* 461 461* 461 747* 747 next_argument based char packed unaligned dcl 938 ref 262 262 next_argument_lth 000105 automatic fixed bin(21,0) dcl 939 set ref 255* 262 262 265 next_argument_ptr 000110 automatic pointer dcl 940 set ref 255* 262 262 264 nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 7-27 ref 437 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 7-27 ref 441 856 notify 001454 automatic bit(1) dcl 968 in procedure "eir" set ref 67* 167* 168* 362 notify 66(01) 000714 automatic bit(1) level 4 in structure "local_ft_request" packed packed unaligned dcl 944 in procedure "eir" set ref 362* null builtin function dcl 1051 ref 317 424 443 518 518 539 539 850 852 855 857 860 862 objects_to_transfer 2(01) 000114 automatic bit(1) level 3 packed packed unaligned dcl 943 set ref 594 orig_queue 70 000714 automatic fixed bin(17,0) level 3 dcl 944 set ref 363* p_arg_description parameter char packed unaligned dcl 809 set ref 806 816* p_argument parameter char packed unaligned dcl 810 set ref 806 829 830 830 836* p_dirname parameter char packed unaligned dcl 478 ref 475 492 p_ename parameter char packed unaligned dcl 478 ref 475 493 p_idx parameter fixed bin(17,0) dcl 768 in procedure "set_dir_s_error_message" ref 765 770 770 775 775 p_idx parameter fixed bin(17,0) dcl 785 in procedure "set_dir_sma_error_message" ref 782 787 787 792 792 parent_dirname 000322 automatic char(168) packed unaligned dcl 480 set ref 632* 642 parent_ename 000506 automatic char(32) packed unaligned dcl 481 set ref 632* 643 pathname_ 000144 constant entry external dcl 1046 ref 251 251 275 275 325 325 332 332 340 340 432 432 444 444 509 523 523 532 532 538 545 545 previous_queue_total 001463 automatic fixed bin(17,0) dcl 976 set ref 338* 461* printed_an_error_message 001467 automatic bit(1) dcl 977 set ref 425* 444 754* question 000046 constant char(41) initial packed unaligned dcl 991 ref 688 706 queue 001162 automatic fixed bin(17,0) dcl 949 set ref 56* 148* 155 155 299 299* 300 301* 321 350* 363 461* queue_ename 001152 automatic char(32) packed unaligned dcl 948 set ref 321* 323* 325* 325* 332* 332* 340* 340* queue_index 001163 automatic fixed bin(17,0) dcl 949 set ref 315* 323* 330* 338* 734* 865 866* 867* queue_mode 001166 automatic bit(36) dcl 950 set ref 330* 337 347 queue_msg_hdr based structure level 1 dcl 1-12 queue_msg_hdr_version_1 constant fixed bin(17,0) initial dcl 1-37 ref 360 queue_picture automatic picture(1) packed unaligned dcl 951 ref 321 queue_string 001142 automatic char(32) packed unaligned dcl 948 set ref 147* 148* 150* real_dirname 000250 automatic char(168) packed unaligned dcl 480 set ref 530* 536 real_ename 000466 automatic char(32) packed unaligned dcl 481 set ref 530* 537 remote 001441 automatic bit(1) dcl 961 set ref 69* 117* 122* 125 131* 135* 140* 301* 389 419 498 511 555 628 673 728 728 770* 775* 787* 792* remote_transfer 172(04) 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 390* request 76 000714 automatic structure level 2 dcl 944 request_id 000721 automatic char(19) packed unaligned dcl 487 set ref 742* 743* 743 request_id_ 000146 constant entry external dcl 1047 ref 742 request_type 001114 automatic char(24) packed unaligned dcl 947 set ref 51* 52 53 125* 127* 129* 296* 307* 321 350* 461* rtrim builtin function dcl 1051 ref 52 53 321 seg_access 117 000114 automatic bit(3) level 2 dcl 943 set ref 572* 645* 676* segment_acl_entry based structure level 1 dcl 5-45 short 000730 automatic structure level 2 dcl 490 skipped_a_request 001465 automatic bit(1) dcl 977 set ref 425* 444 560* skipped_count 001443 automatic fixed bin(17,0) dcl 963 set ref 316* 559* 559 star_ALL_ENTRIES 000343 constant fixed bin(2,0) initial dcl 7-111 set ref 426* star_BRANCHES_ONLY 000342 constant fixed bin(2,0) initial dcl 7-110 set ref 429* star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 7-121 ref 728 star_LINK constant fixed bin(2,0) initial unsigned dcl 7-119 ref 528 star_entries based structure array level 1 dcl 7-27 ref 442 861 star_entry_count 001477 automatic fixed bin(17,0) dcl 7-14 set ref 426* 429* 436 441 442 856 861 star_entry_ptr 001500 automatic pointer dcl 7-15 set ref 317* 424* 426* 429* 437 441 442 443* 856 860 861 862* star_names based char(32) array packed unaligned dcl 7-37 set ref 437* 441 856 star_names_ptr 001502 automatic pointer dcl 7-19 set ref 317* 424* 426* 429* 437 441 443* 855 856 857* stat 000730 automatic structure level 1 unaligned dcl 490 set ref 518 518 539 539 status_branch based structure level 1 dcl 8-8 status_code 14 based fixed bin(35,0) array level 3 dcl 5-7 ref 589 663 664 698 699 std_length 71 000714 automatic fixed bin(17,0) level 3 dcl 944 set ref 364* submitted_a_request 001466 automatic bit(1) dcl 977 set ref 425* 444 748* substr builtin function dcl 1051 ref 615 743 sum builtin function dcl 1051 ref 441 856 system_area based area(1024) dcl 922 ref 372 441 442 851 856 861 system_area_ptr 000100 automatic pointer dcl 923 set ref 313* 372 426* 429* 441 442 851 856 861 the_argument_list 000102 automatic pointer dcl 925 set ref 79* 94* 255* 403* 408* 412* 823* the_message_id 000726 automatic bit(72) dcl 488 set ref 734* type 000730 automatic fixed bin(2,0) level 3 in structure "stat" packed packed unsigned unaligned dcl 490 in procedure "process_single_request" set ref 519 540 type 65 000114 automatic char(32) level 2 in structure "imft_chk_acl" dcl 943 in procedure "eir" set ref 598 605 612 612 615 615 617 unspec builtin function dcl 1051 set ref 358* update 172(11) 000714 automatic bit(1) level 4 packed packed unaligned dcl 944 set ref 369* update_seg 001446 automatic bit(1) dcl 966 set ref 74* 215* 223* 230* 289 369 612 619* 728 version 76 000714 automatic char(8) level 3 in structure "local_ft_request" dcl 944 in procedure "eir" set ref 366* version 000114 automatic char(8) level 2 in structure "imft_chk_acl" dcl 943 in procedure "eir" set ref 377* version based char(8) level 2 in structure "general_acl" dcl 5-7 in procedure "eir" set ref 373* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 5-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 DATA_INITIATE internal static fixed bin(17,0) initial dcl 6-414 DATA_TYPE internal static fixed bin(17,0) initial dcl 6-414 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 5-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 4-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 5-67 Directory internal static fixed bin(17,0) initial dcl 8-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_LINK 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_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 E_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 5-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 5-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 Link internal static fixed bin(17,0) initial dcl 8-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-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 REW_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 4-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 5-67 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-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 1-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 1-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 1-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 1-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 1-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 1-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 1-41 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 Segment internal static fixed bin(17,0) initial dcl 8-56 W_ACCESS internal static bit(3) initial packed unaligned dcl 4-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 delete_acl based structure level 1 dcl 5-58 delete_acl_array based structure array level 1 dcl 5-64 directory_acl based structure level 1 dcl 5-49 directory_acl_array based structure array level 1 dcl 5-55 exclude_names based structure level 1 dcl 6-236 exclude_names_size automatic fixed bin(17,0) dcl 6-236 extended_entry_types based structure level 1 dcl 6-195 extended_entry_types_size automatic fixed bin(17,0) dcl 6-195 ft_request_ptr automatic pointer dcl 3-36 general_delete_acl based structure level 1 dcl 5-30 general_extended_acl based structure level 1 dcl 5-18 imft_check_acl_ptr automatic pointer dcl 2-36 match_names based structure level 1 dcl 6-216 match_names_size automatic fixed bin(17,0) dcl 6-216 segment_acl based structure level 1 dcl 5-40 segment_acl_array based structure array level 1 dcl 5-46 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 7-114 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 7-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 7-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 7-120 star_branch_count automatic fixed bin(17,0) dcl 7-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 7-59 star_link_count automatic fixed bin(17,0) dcl 7-17 star_link_pathname based char packed unaligned dcl 7-102 star_links based structure array level 1 dcl 7-76 star_linkx automatic fixed bin(17,0) dcl 7-18 star_list_branch based structure array level 1 dcl 7-41 star_list_branch_ptr automatic pointer dcl 7-16 star_list_names based char(32) array packed unaligned dcl 7-92 star_list_names_ptr automatic pointer dcl 7-20 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 7-21 status_area_ptr automatic pointer dcl 8-47 status_entry_names based char(32) array dcl 8-47 status_link based structure level 1 dcl 8-38 status_pathname based char dcl 8-47 status_ptr automatic pointer dcl 8-47 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_ARGUMENT_PARSE 010775 constant label dcl 842 ref 818 826 833 ABORT_SINGLE_REQUEST 010403 constant label dcl 754 ref 504 525 534 547 585 594 622 CLEANUP 006131 constant label dcl 467 ref 580 653 684 CONTINUE_SINGLE_REQUEST 010161 constant label dcl 717 ref 690 708 COULD_NOT_STATUS_BRANCH 006365 constant label dcl 523 ref 542 FOREIGN_SYSTEM 002147 constant label dcl 123 ref 118 INVALID_DESTINATION_SPECIFICATION 002252 constant label dcl 131 ref 297 308 INVALID_FOREIGN_USER_SPECIFICATION 002751 constant label dcl 176 ref 181 182 183 184 INVALID_QUEUE_SPECIFICATION 002467 constant label dcl 150 ref 155 MAIN_EIR_BLOCK 001710 constant label dcl 82 PROCESS_NEXT_STAR_ENTRY 005704 constant label dcl 439 ref 757 PROCESS_NEXT_TRANSFER_SPEC 006055 constant label dcl 454 ref 434 657 670 692 709 761 RETURN_FROM_ENTER_IMFT_REQUEST 006060 constant label dcl 461 ref 327 334 342 352 738 SKIP_THIS_REQUEST 010406 constant label dcl 757 ref 561 cleanup_handler 011476 constant entry internal dcl 847 ref 319 467 eir 001470 constant entry external dcl 30 enter_imft_request 001500 constant entry external dcl 30 get_next_argument 011246 constant entry internal dcl 806 ref 123 147 174 197 266 ll_query 011607 constant entry internal dcl 876 ref 688 770 775 787 792 process_single_request 006141 constant entry internal dcl 475 ref 437 449 452 set_dir_s_error_message 010411 constant entry internal dcl 765 ref 655 665 set_dir_sma_error_message 010606 constant entry internal dcl 782 ref 687 700 test_imft 010777 constant entry external dcl 887 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12514 12664 11700 12524 Length 13424 11700 150 523 613 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME eir 892 external procedure is an external procedure. begin block on line 82 968 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 319 64 on unit process_single_request internal procedure shares stack frame of begin block on line 82. set_dir_s_error_message internal procedure shares stack frame of begin block on line 82. set_dir_sma_error_message internal procedure shares stack frame of begin block on line 82. get_next_argument internal procedure shares stack frame of begin block on line 82. cleanup_handler 70 internal procedure is called by several nonquick procedures. ll_query internal procedure shares stack frame of begin block on line 82. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 82 000100 is_pathname begin block on line 82 000124 local_dirname process_single_request 000176 local_pathname process_single_request 000250 real_dirname process_single_request 000322 parent_dirname process_single_request 000374 dirname_here process_single_request 000446 local_ename process_single_request 000456 local_type process_single_request 000466 real_ename process_single_request 000476 foreign_ename process_single_request 000506 parent_ename process_single_request 000516 message process_single_request 000716 entry_bit_count process_single_request 000717 entry_type process_single_request 000720 idx process_single_request 000721 request_id process_single_request 000726 the_message_id process_single_request 000730 stat process_single_request 000770 control_argument get_next_argument eir 000100 system_area_ptr eir 000102 the_argument_list eir 000104 argument_lth eir 000105 next_argument_lth eir 000106 argument_ptr eir 000110 next_argument_ptr eir 000112 n_arguments eir 000113 argument_idx eir 000114 imft_chk_acl eir 000714 local_ft_request eir 001107 foreign_system eir 001114 request_type eir 001122 generic_type eir 001132 driver_userid eir 001142 queue_string eir 001152 queue_ename eir 001162 queue eir 001163 queue_index eir 001164 default_queue eir 001165 max_queues eir 001166 queue_mode eir 001167 local_dirname eir 001241 foreign_dirname eir 001313 foreign_pathname eir 001365 local_starname eir 001375 foreign_equalname eir 001405 foreign_user eir 001415 date_time_after_string eir 001426 date_time_after eir 001430 file_subtree_arg eir 001440 found_transfer_spec eir 001441 remote eir 001442 list_skipped eir 001443 skipped_count eir 001444 delete_obj eir 001445 extend_seg eir 001446 update_seg eir 001447 include_files eir 001450 include_subtrees eir 001451 long_mode eir 001452 long_id eir 001453 absolute_pathname eir 001454 notify eir 001455 merge_directories eir 001456 chase_control eir 001457 entry_idx eir 001460 Yes eir 001461 have_starname eir 001462 n_requests_submitted eir 001463 previous_queue_total eir 001464 have_previous_queue_total eir 001465 skipped_a_request eir 001466 submitted_a_request eir 001467 printed_an_error_message eir 001470 code eir 001471 ignore_code eir 001472 ignore_fb21 eir 001473 line_length_query eir 001474 acl_ptr eir 001476 acl_count eir 001477 star_entry_count eir 001500 star_entry_ptr eir 001502 star_names_ptr eir THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_g_a r_e_as r_ne_as r_le_a alloc_char_temp cat_realloc_chars enter_begin_block call_ext_out_desc call_ext_out call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj mpfx2 enable_op shorten_stack ext_entry int_entry set_chars_eis op_alloc_ op_freen_ index_after_cs clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ check_star_name_$entry com_err_ com_err_$suppress_name command_query_$yes_no convert_date_to_binary_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$arg_ptr_rel cv_dec_check_ cv_fstime_ expand_pathname_ get_equal_name_ get_equal_name_$check_equal_name_ get_group_id_$tag_star get_line_length_$switch get_ring_ get_system_free_area_ hcs_$get_link_target hcs_$star_ hcs_$status_long imft_default_rqt_ imft_util_$check_object_acl ioa_ ioa_$rsnnl iod_info_$driver_access_name iod_info_$generic_type iod_info_$queue_data iod_info_$test message_segment_$add_index message_segment_$close message_segment_$get_message_count_index message_segment_$get_mode_index message_segment_$open pathname_ request_id_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$id_not_found error_table_$link error_table_$moderr error_table_$noarg error_table_$nomatch error_table_$unimplemented_version error_table_$user_not_found imft_data_$default_queue_dirname imft_data_$queue_dirname iox_$user_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 982 001464 30 001467 34 001506 35 001517 36 001521 37 001536 40 001537 41 001541 43 001570 49 001571 51 001572 52 001613 53 001642 56 001652 58 001653 59 001655 60 001656 62 001661 64 001662 65 001663 66 001664 67 001665 68 001666 69 001667 70 001670 72 001673 73 001674 74 001675 76 001676 77 001700 79 001701 82 001710 85 001713 87 001720 92 001731 94 001742 95 001761 96 001764 97 002017 100 002021 102 002051 103 002053 104 002054 105 002060 107 002061 108 002075 109 002077 110 002100 111 002104 113 002105 114 002114 116 002123 117 002133 118 002134 121 002135 122 002145 123 002147 125 002171 127 002211 129 002225 130 002247 131 002252 135 002313 137 002346 139 002350 140 002354 142 002410 144 002412 146 002413 147 002423 148 002441 149 002465 150 002467 153 002517 155 002521 156 002526 158 002527 159 002542 161 002554 162 002567 164 002601 165 002614 167 002626 168 002641 170 002653 171 002666 173 002700 174 002710 175 002730 176 002751 179 003001 181 003003 182 003007 183 003020 184 003024 186 003047 188 003050 189 003060 191 003113 196 003115 197 003125 198 003147 199 003171 200 003174 202 003223 204 003225 206 003226 208 003241 210 003253 211 003266 213 003300 214 003304 215 003306 216 003307 217 003310 218 003311 219 003315 221 003316 222 003326 223 003327 224 003330 225 003332 226 003336 228 003337 229 003347 230 003350 231 003352 232 003353 233 003354 234 003360 237 003361 238 003413 239 003415 242 003416 243 003420 244 003423 245 003453 246 003456 247 003510 249 003512 250 003527 251 003536 252 003606 254 003610 255 003613 257 003634 258 003637 260 003675 262 003677 263 003711 264 003712 265 003713 266 003715 267 003736 268 003763 269 003766 271 004021 273 004023 274 004040 275 004047 277 004123 282 004125 284 004130 285 004132 286 004156 289 004160 290 004170 293 004220 296 004222 297 004246 299 004251 300 004255 301 004257 304 004331 307 004333 308 004354 313 004357 315 004366 316 004370 317 004372 319 004376 321 004420 323 004500 324 004526 325 004531 327 004603 330 004604 331 004617 332 004622 334 004673 337 004674 338 004700 339 004713 340 004716 342 004767 344 004770 345 004772 347 004773 350 005001 352 005035 358 005036 360 005041 361 005043 362 005045 363 005052 364 005054 366 005056 367 005060 368 005065 369 005072 371 005077 372 005101 373 005114 375 005117 376 005124 377 005134 378 005137 379 005142 380 005144 381 005156 382 005160 384 005163 385 005167 386 005172 389 005174 390 005177 391 005201 392 005206 393 005213 398 005220 399 005221 401 005232 403 005235 404 005254 406 005305 407 005310 408 005314 410 005336 411 005351 412 005353 414 005372 415 005423 419 005426 420 005431 421 005446 423 005452 424 005453 425 005456 426 005461 429 005530 431 005573 432 005576 434 005646 436 005647 437 005660 439 005704 441 005707 442 005737 443 005742 444 005746 447 006023 449 006024 450 006040 452 006041 456 006055 461 006060 467 006131 470 006136 801 006140 475 006141 492 006157 493 006165 497 006171 498 006175 501 006204 502 006227 503 006232 504 006267 509 006270 511 006310 518 006314 519 006354 520 006357 521 006362 523 006365 525 006435 528 006436 530 006447 531 006476 532 006501 534 006552 536 006553 537 006556 538 006561 539 006601 540 006642 541 006645 542 006650 543 006653 545 006654 547 006723 555 006724 556 006751 559 007006 560 007010 561 007012 569 007013 570 007016 571 007021 572 007023 573 007025 575 007027 576 007042 577 007047 579 007053 580 007073 583 007074 585 007133 588 007134 589 007145 592 007212 594 007214 598 007221 599 007231 602 007266 605 007267 606 007273 609 007330 612 007331 615 007347 617 007365 619 007370 622 007432 628 007433 631 007445 632 007450 642 007474 643 007500 644 007503 645 007505 646 007507 648 007511 649 007524 650 007531 651 007532 652 007535 653 007555 655 007556 656 007564 657 007606 661 007607 662 007610 663 007621 664 007627 665 007630 666 007632 668 007654 670 007656 673 007661 675 007667 676 007671 677 007673 679 007675 680 007710 681 007715 682 007716 683 007721 684 007741 687 007742 688 007750 690 010025 692 010031 696 010032 697 010033 698 010043 699 010051 700 010052 701 010054 703 010076 705 010100 706 010103 708 010154 709 010160 717 010161 720 010164 721 010167 723 010172 724 010175 725 010200 728 010203 731 010226 732 010233 734 010235 736 010260 737 010263 738 010313 741 010314 742 010316 743 010327 747 010376 748 010400 750 010402 754 010403 757 010406 761 010410 765 010411 770 010413 775 010514 780 010605 782 010606 787 010610 792 010706 797 010774 842 010775 887 010776 890 011005 891 011016 892 011020 893 011035 896 011036 899 011047 900 011051 901 011070 902 011072 903 011121 905 011122 906 011146 907 011150 908 011202 910 011203 913 011204 914 011233 917 011234 919 011245 806 011246 813 011264 815 011272 816 011275 818 011332 821 011335 823 011336 824 011355 825 011360 826 011413 829 011416 830 011421 833 011462 836 011465 838 011474 847 011475 850 011503 851 011510 852 011516 855 011521 856 011525 857 011555 860 011560 861 011564 862 011566 865 011571 866 011573 867 011604 870 011606 876 011607 879 011611 880 011630 ----------------------------------------------------------- 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