COMPILATION LISTING OF SEGMENT display_connection_list Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1313.6 mst Tue Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(87-04-07,Brunelle), approve(87-07-08,MCR7681), 9* audit(87-07-22,Hartogs), install(87-08-04,MR12.1-1055): 10* New program. 11* 2) change(87-05-28,GDixon), approve(87-07-08,MCR7720), 12* audit(87-07-22,Hartogs), install(87-08-04,MR12.1-1055): 13* A) Revised to add selection control arguments and to simplify output 14* format. 15* 3) change(87-06-10,GDixon), approve(87-07-08,MCR7720), 16* audit(87-07-22,Hartogs), install(87-08-04,MR12.1-1055): 17* A) Correct error in display of aci.network_type. 18* B) Correct length computation for aci.offset. 19* 4) change(87-07-21,GDixon), approve(87-07-21,MCR7720), 20* audit(87-07-22,Hartogs), install(87-08-04,MR12.1-1055): 21* A) Correct use of magic numbers. 22* B) Comment on why capital U is excluded in the vowel routine. 23* END HISTORY COMMENTS */ 24 25 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 26 /* */ 27 /* display_connection_list: a utility to display contents of the */ 28 /* active_connection_list table, maintained by the connection_list_manager_ */ 29 /* subsystem. */ 30 /* */ 31 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 32 33 34 35 display_connection_list: 36 proc; 37 38 39 /* AUTOMATIC */ 40 41 dcl brief_sw bit(1) aligned automatic; 42 dcl channel char(32) automatic; 43 dcl code fixed bin(35) automatic; 44 dcl connection bit(18); 45 dcl entry_var entry variable; 46 dcl offset fixed bin(18) automatic; 47 dcl 1 owner aligned automatic, 48 2 id char(32), 49 2 person char(24), 50 2 project char(12), 51 2 tag char(1) unal, 52 2 tag_pad char(3) unal; 53 dcl owner_id fixed bin(36) automatic; 54 dcl star_type fixed bin(2); 55 dcl 1 user aligned automatic like owner; 56 dcl user_id fixed bin(36) automatic; 57 58 59 /* ENTRIES */ 60 61 dcl check_star_name_ entry (char(*), bit(36), fixed bin(2), 62 fixed bin(35)); 63 dcl hpriv_connection_list_$get_next entry (bit (18), ptr, fixed bin (35)); 64 dcl ioa_ entry() options(variable); 65 dcl match_star_name_ entry (char(*), char(*), 66 fixed bin(35)); 67 68 69 /* BUILTINS AND CONDITIONS */ 70 71 dcl (addr, after, before, bit, divide, index, length, 72 max, null, rtrim, search, substr, verify, unspec) 73 builtin; 74 dcl (cleanup, linkage_error) condition; 75 76 77 /* INTERNAL STATIC */ 78 79 dcl DISPLAY_CONNECTION_LIST_VERSION init("1.0") char(3) int static 80 options(constant); 81 dcl (FALSE init("0"b), 82 TRUE init("1"b)) bit(1) 83 int static options(constant); 84 dcl ME char (23) int static options (constant) 85 init ("display_connection_list"); 86 87 /* EXTERNAL STATIC */ 88 89 dcl (error_table_$bad_arg, 90 error_table_$bad_opt, 91 error_table_$noentry) fixed bin(35) ext static; 92 93 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 94 /* */ 95 /* INVOCATION TYPE AND ARGUMENTS: */ 96 /* 1) Initialize variables, and establish cleanup handler. */ 97 /* 2) Create standalone ssu_ invocation for argument processing. */ 98 /* 3) Initialize argument handling routines. */ 99 /* 4) Process input arguments, reporting any errors as they are encountered. */ 100 /* */ 101 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 102 103 call initialize_args(); 104 on cleanup call cleanup_invocation(); 105 call ssu_$standalone_invocation (sci_ptr, ME, 106 DISPLAY_CONNECTION_LIST_VERSION, cu_$arg_list_ptr(), exit_proc, code); 107 call check_invocation_type (ALLOW_COMMAND); 108 call process_args(); 109 call scan_connection_list(); 110 111 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 112 /* */ 113 /* REVOCATION AND EXIT: */ 114 /* This point is reached when normal processing completes successfully, */ 115 /* or when the error$fatal routine is called to abnormally end processing. */ 116 /* */ 117 /* 1) Cleanup the standalone invocation. */ 118 /* 2) Return to command processor. */ 119 /* */ 120 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 121 122 EXIT: 123 call cleanup_invocation(); 124 return; 125 126 exit_proc: 127 proc; 128 go to EXIT; 129 end exit_proc; 130 131 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 132 133 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 134 /* */ 135 /* ARGUMENT PROCESSING: */ 136 /* Declare variables and subroutines needed for argument processing. */ 137 /* */ 138 /* CHECK INVOCATION TYPE: */ 139 /* 1) Initialize error handling subroutines. */ 140 /* 2) Determine whether invoked as command or af. */ 141 /* 3) Is this type of invocation allowed? */ 142 /* 4) Initialize af return argument, and index of current argument. */ 143 /* */ 144 /* SEE OTHER ARGUMENT PROCESSING PROGRAMS: */ 145 /* get_arg, get_ctl_arg, get_opt, get_num_opt */ 146 /* */ 147 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 148 149 dcl af_sw bit(1) aligned, /* on: active fnc*/ 150 arg char(argl) based(argp), 151 argl fixed bin(21), /* current arg */ 152 argp ptr, 153 argn fixed bin, /* arg count */ 154 argx fixed bin, /* arg index */ 155 num_opt fixed bin, /* numeric option*/ 156 opt char(optl) based(optp), 157 optl fixed bin(21), /* current option*/ 158 optp ptr, 159 ret char(retl) varying based(retp), 160 retl fixed bin(21), /* af return val */ 161 retp ptr, 162 sci_ptr ptr; /* ssu_ info ptr */ 163 164 dcl cu_$arg_list_ptr entry returns(ptr), 165 ssu_$abort_subsystem entry() options(variable), 166 ssu_$arg_ptr entry (ptr, fixed bin, ptr, 167 fixed bin(21)), 168 ssu_$destroy_invocation entry (ptr), 169 ssu_$print_message entry() options(variable), 170 ssu_$return_arg entry (ptr, fixed bin, bit(1) aligned, 171 ptr, fixed bin(21)), 172 ssu_$standalone_invocation entry (ptr, char(*), char(*), ptr, 173 entry, fixed bin(35)); 174 175 dcl (ALLOW_COMMAND init(1), 176 ALLOW_AF init(2), 177 ALLOW_COMMAND_AF init(3)) fixed bin int static options(constant); 178 179 check_invocation_type: 180 proc (allowed); 181 182 dcl allowed fixed bin; 183 dcl (error_table_$active_function, 184 error_table_$not_act_fnc) fixed bin(35) ext static; 185 186 call error$init(); 187 call ssu_$return_arg (sci_ptr, argn, af_sw, retp, retl); 188 if allowed = ALLOW_COMMAND & af_sw then 189 call error$fatal (sci_ptr, error_table_$active_function); 190 else if allowed = ALLOW_AF & ^af_sw then 191 call error$fatal (sci_ptr, error_table_$not_act_fnc); 192 else if allowed = ALLOW_COMMAND_AF then; 193 if af_sw then 194 ret = ""; 195 argx = 0; 196 end check_invocation_type; 197 198 199 200 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 201 /* */ 202 /* CLEANUP: */ 203 /* 1) Destroy the ssu_ invocation (releasing temp segs obtained thru ssu_). */ 204 /* */ 205 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 206 207 cleanup_invocation: 208 proc; 209 210 if sci_ptr ^= null then 211 call ssu_$destroy_invocation (sci_ptr); 212 end cleanup_invocation; 213 214 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 215 216 217 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 218 /* */ 219 /* display_connection: Display one matching connection. */ 220 /* */ 221 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 222 223 dcl 1 begin aligned automatic, 224 2 (connection, network, usage, user, process_id) fixed bin; 225 dcl matching_entries fixed bin; 226 dcl need_heading bit(1) aligned automatic; 227 dcl 1 width aligned automatic, 228 2 (offset, connection, network, usage, user) 229 fixed bin; 230 231 display_connection: 232 procedure; 233 234 matching_entries = matching_entries + 1; 235 236 if brief_sw then do; 237 if need_heading then do; 238 call ioa_ ( 239 "^/AT^vtCONNECTION^vtNET^vtUSAGE^vtUSER^vtPROCESS ID", 240 begin.connection, begin.network, begin.usage, begin.user, 241 begin.process_id); 242 need_heading = "0"b; 243 end; 244 call ioa_ ("^vo^vt^a^vt^a^vt^a^vt^a^vt^12.3b", 245 width.offset, unspec(aci.offset), 246 begin.connection, aci.connection_name, 247 begin.network, aci.network_service_type, 248 begin.usage, LS_USAGE_VALUES (aci.usage_type), 249 begin.user, aci.user_group_id, 250 begin.process_id, aci.user_process_id); 251 end; 252 253 else do; 254 call ioa_ (""); 255 call ioa_ ("Offset: ^6.3b^25x Usage: ^d (^a)", 256 aci.offset, aci.usage_type, 257 LS_USAGE_VALUES (aci.usage_type)); 258 call ioa_ ("Connection name: ^32a Net: ^a", aci.connection_name, 259 aci.network_service_type); 260 call ioa_ ("Connection handle: ^w", 261 aci.connection_handle); 262 call ioa_ ("User name: ^32a PID: ^12.3b", 263 aci.user_group_id, aci.user_process_id); 264 call ioa_ ("Owner name: ^32a PID: ^12.3b", 265 aci.owner_group_id, aci.owner_process_id); 266 call ioa_ ("Initializer handle: ^24.3b", 267 aci.owner_initializer_handle); 268 call ioa_ ("Terminate event chn: ^24.3b", 269 unspec(aci.terminate_event_channel)); 270 call ioa_ ("Disconnect entry: ^a", 271 aci.force_disconnect_entry); 272 call ioa_ ("Accounting entry: ^a", 273 aci.force_accounting_flush_entry); 274 end; 275 return; 276 277 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 278 279 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 280 281 282 display_connection$init: 283 entry; 284 285 matching_entries = 0; 286 need_heading = TRUE; 287 width.offset = length("AT"); 288 width.connection = length("CONNECTION"); 289 width.network = length("NET"); 290 width.usage = length("USAGE"); 291 width.user = length("USER"); 292 begin = 0; 293 return; 294 295 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 296 297 298 display_connection$matching_entry_count: 299 entry returns (fixed bin); 300 301 return (matching_entries); 302 303 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 304 305 306 display_connection$set_widths: 307 entry; 308 309 dcl (BITS_PER_OCTAL_DIGIT init(3), 310 GUTTER init(2), 311 STARTING_COLUMN init(1)) 312 fixed bin int static 313 options(constant); 314 315 width.offset = max (width.offset, 316 divide(length(aci.offset)-index(aci.offset,"1"b)+1 + 317 BITS_PER_OCTAL_DIGIT-1, /* round to next */ 318 BITS_PER_OCTAL_DIGIT, 17, 0)); /* octal digit */ 319 width.connection = max (width.connection, 320 length(rtrim(aci.connection_name))); 321 width.network = max (width.network, 322 length(rtrim(aci.network_service_type))); 323 width.usage = max (width.usage, length(LS_USAGE_VALUES(aci.usage_type))); 324 width.user = max (width.user, length(rtrim(aci.user_group_id))); 325 begin.connection = STARTING_COLUMN + width.offset + GUTTER; 326 begin.network = begin.connection + width.connection + GUTTER; 327 begin.usage = begin.network + width.network + GUTTER; 328 begin.user = begin.usage + width.usage + GUTTER; 329 begin.process_id = begin.user + width.user + GUTTER; 330 return; 331 332 end display_connection; 333 334 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 335 336 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 337 /* */ 338 /* ERROR REPORTING ROUTINES: */ 339 /* 1) Nonfatal errors set a switch, which can be tested via error_occurred */ 340 /* function. */ 341 /* 2) Fatal errors abort the subsystem by calling the exit_proc, which */ 342 /* branches to the EXIT label to exit the command. */ 343 /* */ 344 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 345 346 dcl error_occurred_sw bit(1); 347 348 error: 349 proc options (variable); 350 351 dcl code fixed bin(35) based (codep), 352 codep ptr; 353 354 dcl cu_$arg_list_ptr entry returns(ptr), 355 cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), 356 fixed bin(35)), 357 cu_$generate_call entry (entry, ptr); 358 359 dcl CODE_ARG fixed bin int static options(constant) init(2), 360 (FALSE init("0"b), 361 TRUE init("1"b)) bit(1) int static options(constant); 362 363 call cu_$arg_ptr (CODE_ARG, codep, 0, 0); 364 if code = 0 then return; 365 if code = -1 then code = 0; 366 error_occurred_sw = TRUE; 367 call cu_$generate_call (ssu_$print_message, cu_$arg_list_ptr()); 368 return; 369 370 error$init: 371 entry; 372 373 error_occurred_sw = FALSE; 374 return; 375 376 377 error$occurred: 378 entry returns (bit(1)); 379 380 return (error_occurred_sw); 381 382 383 error$fatal: 384 entry options(variable); 385 386 call cu_$arg_ptr (CODE_ARG, codep, 0, 0); 387 if code = 0 then return; 388 if code = -1 then code = 0; 389 error_occurred_sw = TRUE; 390 call ioa_ (""); 391 call cu_$generate_call (ssu_$abort_subsystem, cu_$arg_list_ptr()); 392 end error; 393 394 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 395 396 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 397 /* */ 398 /* ARGUMENT GETTING FUNCTIONS: */ 399 /* get_arg: Get next argument. */ 400 /* get_arg_count: Get number of arguments. */ 401 /* get_ctl_arg: Get next argument, which must be a control argument. */ 402 /* */ 403 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 404 405 get_arg: 406 proc returns (bit(1)); 407 408 dcl (FALSE init("0"b), 409 TRUE init("1"b)) bit(1) int static options(constant); 410 411 if argx < argn then do; 412 argx = argx + 1; 413 call ssu_$arg_ptr (sci_ptr, argx, argp, argl); 414 return (TRUE); 415 end; 416 else 417 return (FALSE); 418 end get_arg; 419 420 421 get_ctl_arg: 422 proc returns (bit(1)); 423 424 dcl index builtin; 425 426 dcl (FALSE init("0"b), 427 TRUE init("1"b)) bit(1) int static options(constant), 428 error_table_$bad_arg fixed bin(35) ext static; 429 430 if get_arg() then 431 if index(arg, "-") = 1 then 432 return (TRUE); 433 else 434 call error$fatal (sci_ptr, error_table_$bad_arg, 435 "^a.^/A control argument was expected.", arg); 436 return (FALSE); 437 end get_ctl_arg; 438 439 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 440 441 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 442 /* */ 443 /* CONTROL ARG OPERAND GETTING FUNCTIONS: */ 444 /* get_oct_opt: Gets next arg, treats it as an octal integer operand. */ 445 /* get_opt: Gets next arg. */ 446 /* */ 447 /* Both allow the caller to specify whether the operand is required (an */ 448 /* opt_desc is provided) or optional (opt_desc=""). */ 449 /* */ 450 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 451 452 453 get_oct_opt: 454 proc (arg_name, opt_desc) returns (bit(1)); 455 456 dcl arg_name char(*), 457 opt_desc char(*); 458 459 dcl code fixed bin(35); 460 461 dcl cv_oct_check_ entry (char(*), fixed bin(35)) 462 returns(fixed bin(35)); 463 464 dcl FALSE init("0"b) bit(1) 465 int static options(constant), 466 (error_table_$bad_arg, 467 error_table_$noarg) fixed bin(35) ext static; 468 469 if argx < argn then do; 470 argx = argx + 1; 471 call ssu_$arg_ptr (sci_ptr, argx, optp, optl); 472 if verify (opt, "01234567") > 0 then go to BAD_OPT; 473 num_opt = cv_oct_check_ (opt, code); 474 if code ^= 0 then do; 475 BAD_OPT: call error (sci_ptr, error_table_$bad_arg, 476 "^a ^a 477 ^a must be followed by a^[n^] ^a.", 478 arg_name, opt, arg_name, 479 vowel(opt_desc), opt_desc); 480 return (FALSE); 481 end; 482 else return (TRUE); 483 end; 484 else if opt_desc ^= "" then do; 485 call error (sci_ptr, error_table_$noarg, 486 "^/^a must be followed by a^[n^] ^a.", arg_name, 487 vowel(opt_desc), opt_desc); 488 return (FALSE); 489 end; 490 else return (FALSE); 491 end get_oct_opt; 492 493 get_opt: 494 proc (arg_name, opt_desc) returns (bit(1)); 495 496 dcl arg_name char(*), 497 opt_desc char(*); 498 499 dcl (FALSE init("0"b), 500 TRUE init("1"b)) bit(1) int static options(constant), 501 error_table_$noarg fixed bin(35) ext static; 502 503 if argx < argn then do; 504 argx = argx + 1; 505 call ssu_$arg_ptr (sci_ptr, argx, optp, optl); 506 if index(opt, "-") = 1 then do; /* options cannot*/ 507 argx = argx - 1; /* look like */ 508 go to NO_OPT; /* control args */ 509 end; 510 else 511 return (TRUE); 512 end; 513 514 else 515 NO_OPT: 516 if opt_desc ^= "" then do; 517 call error (sci_ptr, error_table_$noarg, 518 "^/^a must be followed by a^[n^] ^a.", arg_name, 519 vowel(opt_desc), opt_desc); 520 return (FALSE); 521 end; 522 return (FALSE); 523 end get_opt; 524 525 526 vowel: 527 proc (str) returns (bit(1)); /* does opt_desc */ 528 /* begin with a */ 529 /* vowel? */ 530 531 dcl str char(*), 532 (FALSE init("0"b), 533 TRUE init("1"b)) bit(1) int static options(constant); 534 535 if search ("aeiouAEIO", substr(str,1,1)) > 0 then /* Leave out U: */ 536 return (TRUE); /* "an User..." */ 537 else /* is un-American*/ 538 return (FALSE); /* This is kludgy*/ 539 end vowel; /* but it works.*/ 540 541 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 542 543 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 544 545 546 group_id: 547 procedure (arg) returns (1 like owner); 548 549 dcl arg char(*); 550 dcl 1 group aligned automatic like owner; 551 552 group.id = arg; 553 group.person = before(arg,"."); 554 if group.person = "" then group.person = "*"; 555 group.project = before(after(arg,"."),"."); 556 if group.project = "" then group.project = "*"; 557 group.tag = after(after(arg,"."),"."); 558 if group.tag = "" then group.tag = "*"; 559 return (group); 560 561 end group_id; 562 563 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 564 565 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 566 /* */ 567 /* INITIALIZATION. */ 568 /* 1) Initialize variables holding argument values. */ 569 /* 2) Initialize ssu_ info pointer. */ 570 /* */ 571 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 572 573 initialize_args: 574 proc; 575 576 brief_sw = TRUE; 577 user, owner, channel = ""; 578 user_id, owner_id, offset = 0; 579 580 call display_connection$init(); 581 582 sci_ptr = null; 583 584 end initialize_args; 585 586 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 587 588 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 589 /* */ 590 /* matching_entry: return TRUE if active_connection_list entry match the */ 591 /* criteria given in input control args. Otherwise, return FALSE. */ 592 /* */ 593 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 594 595 matching_entry: 596 procedure returns (bit(1)); 597 598 dcl match bit(1); 599 600 match = TRUE; 601 if offset ^= 0 & match then 602 match = (aci.offset = bit(offset)); 603 604 if user_id ^= 0 & match then 605 match = (aci.user_process_id = bit(user_id)); 606 607 if owner_id ^= 0 & match then 608 match = (aci.owner_process_id = bit(owner_id)); 609 610 if owner.id ^= "" & match then do; 611 if owner.person ^= "*" then 612 match = (owner.person = before(aci.owner_group_id,".")); 613 if owner.project ^= "*" & match then 614 match = 615 (owner.project = before(after(aci.owner_group_id,"."),".")); 616 if owner.tag ^= "*" & match then 617 match = 618 (owner.tag = after(after(aci.owner_group_id,"."),".")); 619 end; 620 621 if user.id ^= "" & match then do; 622 if user.person ^= "*" then 623 match = (user.person = before(aci.user_group_id,".")); 624 if user.project ^= "*" & match then 625 match = 626 (user.project = before(after(aci.user_group_id,"."),".")); 627 if user.tag ^= "*" & match then 628 match = 629 (user.tag = after(after(aci.user_group_id,"."),".")); 630 end; 631 632 if channel ^= "" & match then do; 633 call match_star_name_ ((aci.connection_name), channel, code); 634 match = (code = 0); 635 end; 636 637 return (match); 638 639 end matching_entry; 640 641 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 642 643 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 644 /* */ 645 /* only_one_entry_matches: returns TRUE if -at was given, because then at */ 646 /* most one connection list entry will match. */ 647 /* */ 648 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 649 650 only_one_entry_matches: 651 proc returns (bit(1)); 652 653 return (offset ^= 0); 654 655 end only_one_entry_matches; 656 657 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 658 659 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 660 /* */ 661 /* PROCESS ARGUMENTS */ 662 /* 1) Match argument to ctl_arg name and operands. */ 663 /* */ 664 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 665 666 process_args: 667 proc; 668 669 CTL_ARG_LOOP: 670 do while (get_ctl_arg ()); 671 672 if arg = "-brief" | arg = "-bf" then 673 brief_sw = TRUE; 674 else if arg = "-long" | arg = "-lg" then 675 brief_sw = FALSE; 676 677 else if arg = "-owner" then do; 678 if get_opt (arg, "Owner's group id") then 679 owner = group_id (opt); 680 end; 681 682 else if arg = "-owner_id" then do; 683 if get_oct_opt (arg, "octal process id") then 684 owner_id = num_opt; 685 end; 686 687 else if arg = "-user" then do; 688 if get_opt (arg, "User's group id") then 689 user = group_id (opt); 690 end; 691 692 else if arg = "-user_id" | arg = "-pid" | 693 arg = "-process_id" | arg = "-processid" then do; 694 if get_oct_opt (arg, "octal process id") then 695 user_id = num_opt; 696 end; 697 698 else if arg = "-at" | arg = "-offset" | arg = "-ofs" then do; 699 if get_oct_opt (arg, "octal offset of connection list entry") then 700 offset = num_opt; 701 end; 702 703 else if arg = "-channel" | arg = "-chn" then do; 704 if get_opt (arg, "channel number") then do; 705 channel = opt; 706 call check_star_name_ (channel, CHECK_STAR_ENTRY_DEFAULT, 707 star_type, code); 708 call error (sci_ptr, code, "^a ^a", arg, opt); 709 if star_type = STAR_TYPE_MATCHES_EVERYTHING then 710 channel = ""; 711 end; 712 end; 713 714 else if index (arg, "-") ^= 1 then 715 call error (sci_ptr, error_table_$bad_arg, "^a 716 Usage: ^a {-control_args}", arg, ME); 717 718 else 719 call error (sci_ptr, error_table_$bad_opt, "^a", arg); 720 end CTL_ARG_LOOP; 721 722 if error$occurred() then /* stop now if */ 723 call error$fatal (sci_ptr, -1); /* ctl arg errs */ 724 725 end process_args; 726 727 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 728 729 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 730 /* */ 731 /* scan_connection_list: Walk through connection list entries, displaying */ 732 /* those that match the user's criteria. */ 733 /* */ 734 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 735 736 scan_connection_list: 737 procedure; 738 739 on linkage_error begin; 740 call error$fatal (sci_ptr, -1, 741 "Incorrect access to the hpriv_connection_list_ gate."); 742 end; 743 entry_var = hpriv_connection_list_$get_next; /* force linkage */ 744 revert linkage_error; /* error now. */ 745 746 unspec (aci) = ""b; /* start with return structure clean */ 747 aci.version = ACT_INFO_VERSION_1; 748 connection = "0"b; /* get 1st entry */ 749 750 if brief_sw then do; 751 call hpriv_connection_list_$get_next (connection, addr (aci), 752 code); 753 do while (code = 0); 754 if matching_entry() then do; 755 call display_connection$set_widths(); 756 if only_one_entry_matches() then 757 call display_connection(); 758 else 759 code = error_table_$noentry; 760 end; 761 connection = aci.offset; /* get next entry*/ 762 call hpriv_connection_list_$get_next (connection, addr (aci), 763 code); 764 end; 765 end; 766 else code = error_table_$noentry; 767 768 if code ^= error_table_$noentry then; 769 else if brief_sw & only_one_entry_matches() then; 770 else do; 771 connection = "0"b; /* get 1st entry */ 772 call hpriv_connection_list_$get_next (connection, addr (aci), 773 code); 774 do while (code = 0); 775 if matching_entry() then do; 776 call display_connection(); 777 if only_one_entry_matches() then 778 code = error_table_$noentry; 779 end; 780 connection = aci.offset; /* get next entry*/ 781 call hpriv_connection_list_$get_next (connection, addr (aci), 782 code); 783 end; 784 end; 785 786 if code ^= error_table_$noentry then 787 call error$fatal (sci_ptr, code, "Getting connection list entries."); 788 789 if display_connection$matching_entry_count() = 0 then 790 call error$fatal (sci_ptr, -1, 791 "No matching connection list entries were found."); 792 793 end scan_connection_list; 794 795 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 796 /* BEGIN: active_connection_info.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 1 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 1 6* Initial implementation. 1 7* 2) change(87-04-07,GDixon), approve(87-06-24,MCR7681), 1 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 9* Add .force_accounting_flush_entry element. 1 10* 3) change(87-05-13,Brunelle), approve(87-06-24,MCR7681), 1 11* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 12* Add .owner_group_id field. 1 13* END HISTORY COMMENTS */ 1 14 1 15 /* Defines the information returned to the outer ring about a single entry in 1 16* the active connection list */ 1 17 1 18 dcl active_connection_info_ptr pointer; 1 19 1 20 dcl 1 active_connection_info aligned based (active_connection_info_ptr), 1 21 2 version char (8), /* "actiNNNN" */ 1 22 2 connection_name char (32), /* name of the connection */ 1 23 2 network_service_type char (32), /* name of service */ 1 24 2 user_process_id bit (36), /* process assigned as the user */ 1 25 2 user_group_id char (32), /* likewise */ 1 26 2 owner_process_id bit (36), /* process that created the connection */ 1 27 2 owner_group_id char (32), /* likewise */ 1 28 2 terminate_event_channel fixed bin (71), /* channel to wake the owner if user process terminates */ 1 29 2 owner_initializer_handle bit (72), /* handle for communicating with initializer */ 1 30 2 force_disconnect_entry char (64), /* name of entry to call to force disconnection */ 1 31 /* (in case owner is gone) */ 1 32 2 force_accounting_flush_entry char (64), /* name of entry to call to force accounting flush */ 1 33 2 connection_handle fixed bin (35), /* handle used in calling service entries */ 1 34 2 usage_type fixed bin, /* login, etc. see ls_usage_types.incl.pl1 */ 1 35 2 flags, 1 36 3 delegated bit (1) unaligned, /* assigned to user by owner */ 1 37 3 mbz_bits bit (35) unaligned, 1 38 2 offset bit (18); /* offset of entry in connection list segment */ 1 39 1 40 dcl ACT_INFO_VERSION_1 char (8) internal static options (constant) initial ("acti0001"); 1 41 1 42 1 43 /* END OF: active_connection_info.incl.pl1 * * * * * */ 796 797 798 dcl 1 aci aligned like active_connection_info automatic; 799 /* BEGIN: check_star_name.incl.pl1 * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-08-14,JSLove), approve(86-08-14,MCR7518), 2 5* audit(86-08-14,FCSmith), install(86-10-02,MR12.0-1174): 2 6* Created, to support check_star_name_ entrypoint. 2 7* 2) change(87-06-01,GDixon), approve(87-07-13,MCR7740), 2 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 2 9* Change structures and bit structures to be unaligned, to match the 2 10* check_star_name_ parameters to which such strings are passed. 2 11* END HISTORY COMMENTS */ 2 12 2 13 /* format: style3,comcol71,ifthenstmt,indcomtxt,indproc,idind30 */ 2 14 2 15 declare 1 check_star aligned based, 2 16 2 reject_wild bit (1) unaligned, 2 17 2 ignore_archive bit (1) unaligned, 2 18 2 process_archive bit (1) unaligned, 2 19 2 ignore_entrypoint bit (1) unaligned, 2 20 2 process_entrypoint bit (1) unaligned, 2 21 2 ignore_path bit (1) unaligned, 2 22 2 process_path bit (1) unaligned, 2 23 2 ignore_equal bit (1) unaligned, 2 24 2 ignore_length bit (1) unaligned, 2 25 2 ignore_nonascii bit (1) unaligned, 2 26 2 ignore_null bit (1) unaligned, 2 27 2 unimplemented bit (25) unaligned; 2 28 2 29 declare ( 2 30 CHECK_STAR_ENTRY_DEFAULT initial ("00010001000"b), /* Behavior of check_star_name_$entry (obsolete). */ 2 31 CHECK_STAR_IGNORE_ALL initial ("01010101111"b), /* Check for *** and classify only. */ 2 32 CHECK_STAR_IGNORE_ARCHIVE initial ("01000000000"b), /* Do not reject archive convention "::". */ 2 33 CHECK_STAR_IGNORE_ENTRYPOINT initial ("00010000000"b), /* Do not reject "$" or "|" characters. */ 2 34 CHECK_STAR_IGNORE_EQUAL initial ("00000001000"b), /* Do not reject "=" or "%" characters. */ 2 35 CHECK_STAR_IGNORE_LENGTH initial ("00000000100"b), /* Do not reject star names longer than 32 chars. */ 2 36 CHECK_STAR_IGNORE_NONASCII initial ("00000000010"b), /* No not reject star names with nonASCII chars. */ 2 37 CHECK_STAR_IGNORE_NULL initial ("00000000001"b), /* Do not reject names with null components. */ 2 38 CHECK_STAR_IGNORE_PATH initial ("00000100000"b), /* Do not reject "<" or ">" characters. */ 2 39 CHECK_STAR_PATH_DEFAULT initial ("00110011100"b), /* Behavior of check_star_name_$path (obsolete). */ 2 40 CHECK_STAR_PROCESS_ARCHIVE initial ("00100000000"b), /* Process "::" as archive delimiter. */ 2 41 CHECK_STAR_PROCESS_ENTRYPOINT initial ("00001000000"b), /* Ignore trailing entrypoint if present. */ 2 42 CHECK_STAR_PROCESS_PATH initial ("00000010000"b), /* Ignore leading directory path if present. */ 2 43 CHECK_STAR_REJECT_WILD initial ("10000000000"b), /* Return error_table_$nostars if type not zero. */ 2 44 CHECK_STAR_UNIMPLEMENTED initial ("001FFFFFF"b4) /* Nonexistent test flags. Reject them. */ 2 45 ) bit (36) static options (constant); 2 46 2 47 declare ( 2 48 STAR_TYPE_MATCHES_EVERYTHING initial (2), 2 49 STAR_TYPE_USE_MATCH_PROCEDURE initial (1), 2 50 STAR_TYPE_USE_PL1_COMPARE initial (0) 2 51 ) fixed bin (2) static options (constant); 2 52 2 53 /* END OF: check_star_name.incl.pl1 * * * * * */ 799 800 /* BEGIN INCLUDE FILE ... ls_usage_types.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 3 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 3 6* Initial implementation. 3 7* 2) change(87-05-26,GDixon), approve(87-07-13,MCR7679), 3 8* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 9* A) Add LS_USAGE_VALUES constant array. 3 10* END HISTORY COMMENTS */ 3 11 3 12 /* Defines the permissible values for the "usage_type" field in the acctive_connection_list entry and elsewhere */ 3 13 3 14 dcl (LS_ENDPOINT_USAGE initial (0), /* an endpoint for logins, UFT, etc */ 3 15 LS_LOGIN_USAGE initial (1), /* primary login connection */ 3 16 LS_DIAL_USAGE initial (2), /* assigned to dial server */ 3 17 LS_DIAL_OUT_USAGE initial (3), /* user did dial_out operation */ 3 18 LS_SLAVE_ATTACH_USAGE initial (4), /* user did slave attachment */ 3 19 LS_MC_USAGE initial (5)) /* message coordinator channel */ 3 20 fixed bin internal static options (constant); 3 21 3 22 dcl LS_USAGE_VALUES (0:5) char(16) varying int static options(constant) init( 3 23 "endpoint", 3 24 "login", 3 25 "dial-in", 3 26 "dial-out", 3 27 "slave attach", 3 28 "msg coord"); 3 29 3 30 /* END INCLUDE FILE ... ls_usage_types.incl.pl1 */ 800 801 802 end display_connection_list; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1222.0 display_connection_list.pl1 >special_ldd>install>MR12.1-1054>display_connection_list.pl1 796 1 08/04/87 1140.5 active_connection_info.incl.pl1 >spec>install>1056>active_connection_info.incl.pl1 799 2 08/04/87 1140.3 check_star_name.incl.pl1 >spec>install>1056>check_star_name.incl.pl1 800 3 08/04/87 1139.6 ls_usage_types.incl.pl1 >spec>install>1056>ls_usage_types.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. ACT_INFO_VERSION_1 000040 constant char(8) initial unaligned dcl 1-40 ref 747 ALLOW_AF constant fixed bin(17,0) initial dcl 175 ref 190 ALLOW_COMMAND constant fixed bin(17,0) initial dcl 175 set ref 107* 188 ALLOW_COMMAND_AF constant fixed bin(17,0) initial dcl 175 ref 192 BITS_PER_OCTAL_DIGIT constant fixed bin(17,0) initial dcl 309 ref 315 315 CHECK_STAR_ENTRY_DEFAULT 000036 constant bit(36) initial unaligned dcl 2-29 set ref 706* CODE_ARG 000102 constant fixed bin(17,0) initial dcl 359 set ref 363* 386* DISPLAY_CONNECTION_LIST_VERSION 000050 constant char(3) initial unaligned dcl 79 set ref 105* FALSE constant bit(1) initial unaligned dcl 426 in procedure "get_ctl_arg" ref 436 FALSE constant bit(1) initial unaligned dcl 408 in procedure "get_arg" ref 416 FALSE constant bit(1) initial unaligned dcl 499 in procedure "get_opt" ref 520 522 FALSE constant bit(1) initial unaligned dcl 531 in procedure "vowel" ref 537 FALSE constant bit(1) initial unaligned dcl 464 in procedure "get_oct_opt" ref 480 488 490 FALSE constant bit(1) initial unaligned dcl 81 in procedure "display_connection_list" ref 674 FALSE constant bit(1) initial unaligned dcl 359 in procedure "error" ref 373 GUTTER constant fixed bin(17,0) initial dcl 309 ref 325 326 327 328 329 LS_USAGE_VALUES 000000 constant varying char(16) initial array dcl 3-22 set ref 244* 255* 323 ME 000042 constant char(23) initial unaligned dcl 84 set ref 105* 714* STARTING_COLUMN constant fixed bin(17,0) initial dcl 309 ref 325 STAR_TYPE_MATCHES_EVERYTHING constant fixed bin(2,0) initial dcl 2-47 ref 709 TRUE constant bit(1) initial unaligned dcl 531 in procedure "vowel" ref 535 TRUE constant bit(1) initial unaligned dcl 499 in procedure "get_opt" ref 510 TRUE constant bit(1) initial unaligned dcl 426 in procedure "get_ctl_arg" ref 430 TRUE constant bit(1) initial unaligned dcl 81 in procedure "display_connection_list" ref 286 482 576 600 672 TRUE constant bit(1) initial unaligned dcl 408 in procedure "get_arg" ref 414 TRUE constant bit(1) initial unaligned dcl 359 in procedure "error" ref 366 389 aci 000240 automatic structure level 1 dcl 798 set ref 746* 751 751 762 762 772 772 781 781 active_connection_info based structure level 1 dcl 1-20 addr builtin function dcl 71 ref 751 751 762 762 772 772 781 781 af_sw 000202 automatic bit(1) dcl 149 set ref 187* 188 190 193 after builtin function dcl 71 ref 555 557 557 613 616 616 624 627 627 allowed parameter fixed bin(17,0) dcl 182 ref 179 188 190 192 arg parameter char unaligned dcl 549 in procedure "group_id" ref 546 552 553 555 557 arg based char unaligned dcl 149 in procedure "display_connection_list" set ref 430 433* 672 672 674 674 677 678* 682 683* 687 688* 692 692 692 692 694* 698 698 698 699* 703 703 704* 708* 714 714* 718* arg_name parameter char unaligned dcl 496 in procedure "get_opt" set ref 493 517* arg_name parameter char unaligned dcl 456 in procedure "get_oct_opt" set ref 453 475* 475* 485* argl 000203 automatic fixed bin(21,0) dcl 149 set ref 413* 430 433 433 672 672 674 674 677 678 678 682 683 683 687 688 688 692 692 692 692 694 694 698 698 698 699 699 703 703 704 704 708 708 714 714 714 718 718 argn 000206 automatic fixed bin(17,0) dcl 149 set ref 187* 411 469 503 argp 000204 automatic pointer dcl 149 set ref 413* 430 433 672 672 674 674 677 678 682 683 687 688 692 692 692 692 694 698 698 698 699 703 703 704 708 714 714 718 argx 000207 automatic fixed bin(17,0) dcl 149 set ref 195* 411 412* 412 413* 469 470* 470 471* 503 504* 504 505* 507* 507 before builtin function dcl 71 ref 553 555 611 613 622 624 begin 000222 automatic structure level 1 dcl 223 set ref 292* bit builtin function dcl 71 ref 601 604 607 brief_sw 000100 automatic bit(1) dcl 41 set ref 236 576* 672* 674* 750 769 channel 000101 automatic char(32) unaligned dcl 42 set ref 577* 632 633* 705* 706* 709* check_star_name_ 000010 constant entry external dcl 61 ref 706 cleanup 000174 stack reference condition dcl 74 ref 104 code 000111 automatic fixed bin(35,0) dcl 43 in procedure "display_connection_list" set ref 105* 633* 634 706* 708* 751* 753 758* 762* 766* 768 772* 774 777* 781* 786 786* code based fixed bin(35,0) dcl 351 in procedure "error" set ref 364 365 365* 387 388 388* code 000404 automatic fixed bin(35,0) dcl 459 in procedure "get_oct_opt" set ref 473* 474 codep 000100 automatic pointer dcl 351 set ref 363* 364 365 365 386* 387 388 388 connection 000222 automatic fixed bin(17,0) level 2 in structure "begin" dcl 223 in procedure "display_connection_list" set ref 238* 244* 325* 326 connection 000112 automatic bit(18) unaligned dcl 44 in procedure "display_connection_list" set ref 748* 751* 761* 762* 771* 772* 780* 781* connection 1 000231 automatic fixed bin(17,0) level 2 in structure "width" dcl 227 in procedure "display_connection_list" set ref 288* 319* 319 326 connection_handle 110 000240 automatic fixed bin(35,0) level 2 dcl 798 set ref 260* connection_name 2 000240 automatic char(32) level 2 dcl 798 set ref 244* 258* 319 633 cu_$arg_list_ptr 000026 constant entry external dcl 164 in procedure "display_connection_list" ref 105 105 cu_$arg_list_ptr 000050 constant entry external dcl 354 in procedure "error" ref 367 367 391 391 cu_$arg_ptr 000052 constant entry external dcl 354 ref 363 386 cu_$generate_call 000054 constant entry external dcl 354 ref 367 391 cv_oct_check_ 000060 constant entry external dcl 461 ref 473 divide builtin function dcl 71 ref 315 entry_var 000114 automatic entry variable dcl 45 set ref 743* error_occurred_sw 000236 automatic bit(1) unaligned dcl 346 set ref 366* 373* 380 389* error_table_$active_function 000044 external static fixed bin(35,0) dcl 183 set ref 188* error_table_$bad_arg 000020 external static fixed bin(35,0) dcl 89 in procedure "display_connection_list" set ref 714* error_table_$bad_arg 000062 external static fixed bin(35,0) dcl 464 in procedure "get_oct_opt" set ref 475* error_table_$bad_arg 000056 external static fixed bin(35,0) dcl 426 in procedure "get_ctl_arg" set ref 433* error_table_$bad_opt 000022 external static fixed bin(35,0) dcl 89 set ref 718* error_table_$noarg 000064 external static fixed bin(35,0) dcl 464 in procedure "get_oct_opt" set ref 485* error_table_$noarg 000066 external static fixed bin(35,0) dcl 499 in procedure "get_opt" set ref 517* error_table_$noentry 000024 external static fixed bin(35,0) dcl 89 ref 758 766 768 777 786 error_table_$not_act_fnc 000046 external static fixed bin(35,0) dcl 183 set ref 190* force_accounting_flush_entry 70 000240 automatic char(64) level 2 dcl 798 set ref 272* force_disconnect_entry 50 000240 automatic char(64) level 2 dcl 798 set ref 270* group 000430 automatic structure level 1 dcl 550 set ref 559 hpriv_connection_list_$get_next 000012 constant entry external dcl 63 ref 743 751 762 772 781 id 000147 automatic char(32) level 2 in structure "user" dcl 55 in procedure "display_connection_list" set ref 621 id 000430 automatic char(32) level 2 in structure "group" dcl 550 in procedure "group_id" set ref 552* id 000121 automatic char(32) level 2 in structure "owner" dcl 47 in procedure "display_connection_list" set ref 610 index builtin function dcl 424 in procedure "get_ctl_arg" ref 430 index builtin function dcl 71 in procedure "display_connection_list" ref 315 506 714 ioa_ 000014 constant entry external dcl 64 ref 238 244 254 255 258 260 262 264 266 268 270 272 390 length builtin function dcl 71 ref 287 288 289 290 291 315 319 321 323 324 linkage_error 000000 stack reference condition dcl 74 ref 739 744 match 000106 automatic bit(1) unaligned dcl 598 set ref 600* 601 601* 604 604* 607 607* 610 611* 613 613* 616 616* 621 622* 624 624* 627 627* 632 634* 637 match_star_name_ 000016 constant entry external dcl 65 ref 633 matching_entries 000227 automatic fixed bin(17,0) dcl 225 set ref 234* 234 285* 301 max builtin function dcl 71 ref 315 319 321 323 324 need_heading 000230 automatic bit(1) dcl 226 set ref 237 242* 286* network 2 000231 automatic fixed bin(17,0) level 2 in structure "width" dcl 227 in procedure "display_connection_list" set ref 289* 321* 321 327 network 1 000222 automatic fixed bin(17,0) level 2 in structure "begin" dcl 223 in procedure "display_connection_list" set ref 238* 244* 326* 327 network_service_type 12 000240 automatic char(32) level 2 dcl 798 set ref 244* 258* 321 null builtin function dcl 71 ref 210 582 num_opt 000210 automatic fixed bin(17,0) dcl 149 set ref 473* 683 694 699 offset 113 000240 automatic bit(18) level 2 in structure "aci" dcl 798 in procedure "display_connection_list" set ref 244 244 255* 315 315 601 761 780 offset 000120 automatic fixed bin(18,0) dcl 46 in procedure "display_connection_list" set ref 578* 601 601 653 699* offset 000231 automatic fixed bin(17,0) level 2 in structure "width" dcl 227 in procedure "display_connection_list" set ref 244* 287* 315* 315 325 opt based char unaligned dcl 149 set ref 472 473* 475* 506 678* 688* 705 708* opt_desc parameter char unaligned dcl 456 in procedure "get_oct_opt" set ref 453 475* 475* 475* 484 485* 485* 485* opt_desc parameter char unaligned dcl 496 in procedure "get_opt" set ref 493 514 517* 517* 517* optl 000211 automatic fixed bin(21,0) dcl 149 set ref 471* 472 473 473 475 475 505* 506 678 678 688 688 705 708 708 optp 000212 automatic pointer dcl 149 set ref 471* 472 473 475 505* 506 678 688 705 708 owner 000121 automatic structure level 1 dcl 47 set ref 577* 678* owner_group_id 34 000240 automatic char(32) level 2 dcl 798 set ref 264* 611 613 616 owner_id 000144 automatic fixed bin(36,0) dcl 53 set ref 578* 607 607 683* owner_initializer_handle 46 000240 automatic bit(72) level 2 dcl 798 set ref 266* owner_process_id 33 000240 automatic bit(36) level 2 dcl 798 set ref 264* 607 person 10 000121 automatic char(24) level 2 in structure "owner" dcl 47 in procedure "display_connection_list" set ref 611 611 person 10 000430 automatic char(24) level 2 in structure "group" dcl 550 in procedure "group_id" set ref 553* 554 554* person 10 000147 automatic char(24) level 2 in structure "user" dcl 55 in procedure "display_connection_list" set ref 622 622 process_id 4 000222 automatic fixed bin(17,0) level 2 dcl 223 set ref 238* 244* 329* project 16 000121 automatic char(12) level 2 in structure "owner" dcl 47 in procedure "display_connection_list" set ref 613 613 project 16 000430 automatic char(12) level 2 in structure "group" dcl 550 in procedure "group_id" set ref 555* 556 556* project 16 000147 automatic char(12) level 2 in structure "user" dcl 55 in procedure "display_connection_list" set ref 624 624 ret based varying char dcl 149 set ref 193* retl 000214 automatic fixed bin(21,0) dcl 149 set ref 187* 193 retp 000216 automatic pointer dcl 149 set ref 187* 193 rtrim builtin function dcl 71 ref 319 321 324 sci_ptr 000220 automatic pointer dcl 149 set ref 105* 187* 188* 190* 210 210* 413* 433* 471* 475* 485* 505* 517* 582* 708* 714* 718* 722* 740* 786* 789* search builtin function dcl 71 ref 535 ssu_$abort_subsystem 000030 constant entry external dcl 164 ref 391 391 ssu_$arg_ptr 000032 constant entry external dcl 164 ref 413 471 505 ssu_$destroy_invocation 000034 constant entry external dcl 164 ref 210 ssu_$print_message 000036 constant entry external dcl 164 ref 367 367 ssu_$return_arg 000040 constant entry external dcl 164 ref 187 ssu_$standalone_invocation 000042 constant entry external dcl 164 ref 105 star_type 000146 automatic fixed bin(2,0) dcl 54 set ref 706* 709 str parameter char unaligned dcl 531 ref 526 535 substr builtin function dcl 71 ref 535 tag 21 000121 automatic char(1) level 2 in structure "owner" packed unaligned dcl 47 in procedure "display_connection_list" set ref 616 616 tag 21 000147 automatic char(1) level 2 in structure "user" packed unaligned dcl 55 in procedure "display_connection_list" set ref 627 627 tag 21 000430 automatic char(1) level 2 in structure "group" packed unaligned dcl 550 in procedure "group_id" set ref 557* 558 558* terminate_event_channel 44 000240 automatic fixed bin(71,0) level 2 dcl 798 set ref 268 268 unspec builtin function dcl 71 set ref 244 244 268 268 746* usage 2 000222 automatic fixed bin(17,0) level 2 in structure "begin" dcl 223 in procedure "display_connection_list" set ref 238* 244* 327* 328 usage 3 000231 automatic fixed bin(17,0) level 2 in structure "width" dcl 227 in procedure "display_connection_list" set ref 290* 323* 323 328 usage_type 111 000240 automatic fixed bin(17,0) level 2 dcl 798 set ref 244 255* 255 323 user 000147 automatic structure level 1 dcl 55 in procedure "display_connection_list" set ref 577* 688* user 4 000231 automatic fixed bin(17,0) level 2 in structure "width" dcl 227 in procedure "display_connection_list" set ref 291* 324* 324 329 user 3 000222 automatic fixed bin(17,0) level 2 in structure "begin" dcl 223 in procedure "display_connection_list" set ref 238* 244* 328* 329 user_group_id 23 000240 automatic char(32) level 2 dcl 798 set ref 244* 262* 324 622 624 627 user_id 000172 automatic fixed bin(36,0) dcl 56 set ref 578* 604 604 694* user_process_id 22 000240 automatic bit(36) level 2 dcl 798 set ref 244* 262* 604 verify builtin function dcl 71 ref 472 version 000240 automatic char(8) level 2 dcl 798 set ref 747* width 000231 automatic structure level 1 dcl 227 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHECK_STAR_IGNORE_ALL internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_ARCHIVE internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_ENTRYPOINT internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_EQUAL internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_LENGTH internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_NONASCII internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_NULL internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_IGNORE_PATH internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_PATH_DEFAULT internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_PROCESS_ARCHIVE internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_PROCESS_ENTRYPOINT internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_PROCESS_PATH internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_REJECT_WILD internal static bit(36) initial unaligned dcl 2-29 CHECK_STAR_UNIMPLEMENTED internal static bit(36) initial unaligned dcl 2-29 LS_DIAL_OUT_USAGE internal static fixed bin(17,0) initial dcl 3-14 LS_DIAL_USAGE internal static fixed bin(17,0) initial dcl 3-14 LS_ENDPOINT_USAGE internal static fixed bin(17,0) initial dcl 3-14 LS_LOGIN_USAGE internal static fixed bin(17,0) initial dcl 3-14 LS_MC_USAGE internal static fixed bin(17,0) initial dcl 3-14 LS_SLAVE_ATTACH_USAGE internal static fixed bin(17,0) initial dcl 3-14 STAR_TYPE_USE_MATCH_PROCEDURE internal static fixed bin(2,0) initial dcl 2-47 STAR_TYPE_USE_PL1_COMPARE internal static fixed bin(2,0) initial dcl 2-47 active_connection_info_ptr automatic pointer dcl 1-18 check_star based structure level 1 dcl 2-15 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_OPT 002366 constant label dcl 475 ref 472 CTL_ARG_LOOP 003647 constant label dcl 669 EXIT 000624 constant label dcl 122 ref 128 NO_OPT 002662 constant label dcl 514 ref 508 check_invocation_type 000642 constant entry internal dcl 179 ref 107 cleanup_invocation 000750 constant entry internal dcl 207 ref 104 122 display_connection 000772 constant entry internal dcl 231 ref 756 776 display_connection$init 001436 constant entry internal dcl 282 ref 580 display_connection$matching_entry_count 001500 constant entry internal dcl 298 ref 789 display_connection$set_widths 001522 constant entry internal dcl 306 ref 755 display_connection_list 000517 constant entry external dcl 35 error 001656 constant entry internal dcl 348 ref 475 485 517 708 714 718 error$fatal 002023 constant entry internal dcl 383 ref 188 190 433 722 740 786 789 error$init 001756 constant entry internal dcl 370 ref 186 error$occurred 001777 constant entry internal dcl 377 ref 722 exit_proc 000632 constant entry internal dcl 126 ref 105 105 get_arg 002134 constant entry internal dcl 405 ref 430 get_ctl_arg 002172 constant entry internal dcl 421 ref 669 get_oct_opt 002264 constant entry internal dcl 453 ref 683 694 699 get_opt 002576 constant entry internal dcl 493 ref 678 688 704 group_id 003015 constant entry internal dcl 546 ref 678 688 initialize_args 003171 constant entry internal dcl 573 ref 103 matching_entry 003244 constant entry internal dcl 595 ref 754 775 only_one_entry_matches 003633 constant entry internal dcl 650 ref 756 769 777 process_args 003646 constant entry internal dcl 666 ref 108 scan_connection_list 004573 constant entry internal dcl 736 ref 109 vowel 002763 constant entry internal dcl 526 ref 475 475 485 485 517 517 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6030 6120 5404 6040 Length 6460 5404 70 323 423 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_connection_list 604 external procedure is an external procedure. on unit on line 104 64 on unit exit_proc 64 internal procedure is assigned to an entry variable. check_invocation_type internal procedure shares stack frame of external procedure display_connection_list. cleanup_invocation 68 internal procedure is called by several nonquick procedures. display_connection 162 internal procedure is called by several nonquick procedures. error 92 internal procedure is declared options(variable). get_arg internal procedure shares stack frame of external procedure display_connection_list. get_ctl_arg internal procedure shares stack frame of external procedure display_connection_list. get_oct_opt internal procedure shares stack frame of external procedure display_connection_list. get_opt internal procedure shares stack frame of external procedure display_connection_list. vowel internal procedure shares stack frame of external procedure display_connection_list. group_id internal procedure shares stack frame of external procedure display_connection_list. initialize_args internal procedure shares stack frame of external procedure display_connection_list. matching_entry internal procedure shares stack frame of internal procedure scan_connection_list. only_one_entry_matches internal procedure shares stack frame of internal procedure scan_connection_list. process_args internal procedure shares stack frame of external procedure display_connection_list. scan_connection_list 154 internal procedure enables or reverts conditions. on unit on line 739 96 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_connection_list 000100 brief_sw display_connection_list 000101 channel display_connection_list 000111 code display_connection_list 000112 connection display_connection_list 000114 entry_var display_connection_list 000120 offset display_connection_list 000121 owner display_connection_list 000144 owner_id display_connection_list 000146 star_type display_connection_list 000147 user display_connection_list 000172 user_id display_connection_list 000202 af_sw display_connection_list 000203 argl display_connection_list 000204 argp display_connection_list 000206 argn display_connection_list 000207 argx display_connection_list 000210 num_opt display_connection_list 000211 optl display_connection_list 000212 optp display_connection_list 000214 retl display_connection_list 000216 retp display_connection_list 000220 sci_ptr display_connection_list 000222 begin display_connection_list 000227 matching_entries display_connection_list 000230 need_heading display_connection_list 000231 width display_connection_list 000236 error_occurred_sw display_connection_list 000240 aci display_connection_list 000404 code get_oct_opt 000430 group group_id error 000100 codep error scan_connection_list 000106 match matching_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 signal_op enable_op ext_entry int_entry index_bs_1_eis search_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_ cu_$arg_list_ptr cu_$arg_list_ptr cu_$arg_ptr cu_$generate_call cv_oct_check_ hpriv_connection_list_$get_next ioa_ match_star_name_ ssu_$abort_subsystem ssu_$arg_ptr ssu_$destroy_invocation ssu_$print_message ssu_$return_arg ssu_$standalone_invocation THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$active_function error_table_$bad_arg error_table_$bad_arg error_table_$bad_arg error_table_$bad_opt error_table_$noarg error_table_$noarg error_table_$noentry error_table_$not_act_fnc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000516 103 000524 104 000525 105 000547 107 000615 108 000617 109 000620 122 000624 124 000630 126 000631 128 000637 179 000642 186 000644 187 000650 188 000667 190 000714 192 000737 193 000741 195 000745 196 000746 207 000747 210 000755 212 000770 231 000771 234 001001 236 001003 237 001005 238 001007 242 001042 244 001044 251 001135 254 001136 255 001146 258 001201 260 001225 262 001246 264 001273 266 001320 268 001341 270 001364 272 001405 275 001426 282 001435 285 001445 286 001447 287 001451 288 001453 289 001455 290 001457 291 001461 292 001463 293 001470 298 001477 301 001506 306 001521 315 001531 319 001547 321 001564 323 001601 324 001611 325 001626 326 001632 327 001635 328 001640 329 001643 330 001646 348 001655 363 001665 364 001703 365 001714 366 001717 367 001722 368 001746 370 001755 373 001765 374 001767 377 001776 380 002005 383 002022 386 002032 387 002051 388 002062 389 002065 390 002070 391 002101 392 002125 405 002134 411 002136 412 002141 413 002142 414 002157 416 002165 421 002172 430 002174 433 002223 436 002256 453 002264 469 002302 470 002305 471 002306 472 002323 473 002337 474 002364 475 002366 480 002461 482 002467 484 002475 485 002504 488 002563 490 002571 493 002576 503 002614 504 002617 505 002620 506 002635 507 002651 508 002653 510 002654 514 002662 517 002671 520 002750 522 002756 526 002763 535 002774 537 003010 546 003015 552 003026 553 003033 554 003043 555 003052 556 003077 557 003106 558 003130 559 003142 573 003171 576 003172 577 003174 578 003231 580 003235 582 003241 584 003243 595 003244 600 003246 601 003250 604 003266 607 003302 610 003315 611 003323 613 003341 616 003374 621 003442 622 003450 624 003466 627 003521 632 003567 633 003575 634 003621 637 003625 650 003633 653 003635 666 003646 669 003647 672 003655 674 003672 677 003704 678 003710 680 004001 682 004002 683 004006 685 004044 687 004045 688 004051 690 004142 692 004143 694 004163 696 004221 698 004222 699 004236 701 004270 703 004271 704 004301 705 004334 706 004341 708 004366 709 004426 712 004434 714 004435 718 004507 720 004541 722 004542 725 004571 736 004572 739 004600 740 004614 742 004644 743 004645 744 004653 746 004654 747 004657 748 004661 750 004662 751 004664 753 004700 754 004703 755 004710 756 004715 758 004730 761 004734 762 004737 764 004754 765 004755 766 004756 768 004760 769 004766 771 004776 772 005000 774 005015 775 005021 776 005026 777 005033 780 005044 781 005047 783 005064 786 005065 789 005115 793 005155 ----------------------------------------------------------- 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