COMPILATION LISTING OF SEGMENT xmail_select_file_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0752.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* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-01-07,Blair), approve(86-02-26,MCR7358), 17* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 18* Add a new entrypoint for when the user is allowed to read mail from 19* other users' mailboxes ($foreign_mailboxes). 20* 2) change(86-01-28,Blair), approve(86-02-26,MCR7358), 21* audit(86-04-18,RBarstad), install(86-05-28,MR12.0-1062): 22* Establish an on unit for reissue_query so that the choice menu can be 23* redrawn or the question which the user typed quit after can be repeated. 24* TRs 18711 18974. 25* 3) change(86-06-02,Blair), approve(86-06-02,MCR7358), 26* audit(86-06-04,RBarstad), install(86-06-04,MR12.0-1069): 27* Rearrange code in get_menu_choice to keep track of which menu we selected 28* create from, the one where create means a file name or the one where 29* create means a user mbx. PBF. 30* 4) change(88-06-16,Blair), approve(88-07-27,MCR7931), 31* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 32* Change the call that gets the file type from hcs_$status_minf to 33* fs_util_$get_type so that we don't need 's' access on the containing 34* directory. This will allow us to access a mailbox through a link when 35* that mailbox is in a dir to which we have no access. Error list #141. 36* END HISTORY COMMENTS */ 37 38 39 /* 40* xmail_select_file_ 41* 42* This program is called to select a file for processing. 43* Input parameters give a text description of the type of 44* file desired, the suffix, whether old and/or new files 45* are acceptable. A directory name, entry name prefix, 46* and status code are returned. 47* 48* The file is intended to come from the xmail directory, 49* and is so restricted in this version. (General pathnames 50* might someday be allowed.) 51* 52* When new files are not allowed and only a single candidate 53* exists in the xmail directory, it is returned without comment. 54* In all other cases the user is asked to make the selection. 55* This is first done with a simple prompt and text reply. 56* By responding to the prompt with "??" the user can switch to 57* menu selection from the available choices. 58* 59* Error Returns: 60* 61* 0 62* Dir & Prefix have been set for the file selected by the user. 63* If New_ok was true the file may not exist. 64* 65* other 66* The selection was unsuccessful for some reason. A diagnostic 67* will already have been issued about the problem, but not what 68* is to be done about it. Generally the caller should abort the 69* current menu selection and let the user choose what to do next. 70* 71* There are three entrypoints: 72* 73* xmail_select_file_ 74* allows the user to select a file as described above. 75* 76* xmail_select_file_$exclude 77* allows the user to select a file as described above, 78* excluding certain names from the users list 79* of possible selections. 80* 81* xmail_select_file_$caller_msg 82* works like xmail_select_file_ except that the caller 83* has control over the content of the filename prompt. 84**/ 85 86 /* Written February 1982 by Suzanne Krupp */ 87 /* Modified: 88* 82-12-15 Dave Schimke: Changed the format of the list internal proc output 89* to a multiple-column output more consistant with xmail_Mail_File_Maint_. 90* Also added a test for code = 0 before reporting a link inconsistency. This 91* prevents messages of the type "A link points to nowhere" when in fact no 92* link exists. 93* 94* 83-05-31 Dave Schimke: Changed all references to the nonexistent error code 95* error_table_$badarg to error_table_$bad_arg. TR15273 96* 97* 83-09-14 Dave Schimke: Removed the restriction that files be single 98* component names since the code which creates files doesn't enforce this 99* anyway. This, however, required the addition of code to prevent "**.sv.mbx" 100* from being selected as "**.mbx". TR11956 TR13411 101* 102* 83-10-11 Dave Schimke: Replaced call to xmail_get_line with call to 103* xmail_get_str_. Added cleanup handler to free allocated structures. 104* Added Create and Exists flags to the calling sequences. Create means 105* the user selected create on the dynamic menu. Exists tells the state of 106* the selected file ("1"b = file exists). 107* 108* 84-09-06 JG Backs: Modified to allow lists as menus personalization option 109* to be checked before prompt. 110* 111* 84-10-26 JG Backs: Modified get_menu_choice internal procedure to indicate 112* the caller needs to create a file if there are no menu items and lists 113* as menus personalization option is set to yes. 114* 115* 84-10-31 JG Backs: Modified to check response from call to xmail_get_str 116* in MAIN procedure to make sure file name is not too long. 117* 118* 85-01-06 JG Backs: Modified get_menu_choice and validate_file procedures 119* to add calls to timer_manager_$sleep after printing some error messages if 120* the lists as menus personalization option is set to yes. This allows the 121* message to remain on the screen long enough to read before the menu is 122* redisplayed. In get_menu_choice, two errors (unable to get a list of 123* files or create a dynamic menu), were changed to interrupt processing if 124* the lists as menus personalization option is set to yes. Also added code 125* in validate_file to test for incorrect access. Bugfix. 126* 127* 85-01-18 JG Backs: Modified all the calls to timer_manager_$sleep to delay 128* 5 seconds instead of 3 so the user has more time to read the message on 129* the screen. Audit change. 130* 131**/ 132 xmail_select_file_: proc (File_type, Suffix, Default, Old_ok, New_ok, Dir, Prefix, Create, Exists, code); 133 134 Own_msg = "0"b; 135 Excluding_some_names = "0"b; 136 call MAIN; 137 return; 138 139 exclude: entry (File_type, Suffix, Default, Old_ok, New_ok, Exclude_array, Dir, Prefix, Create, Exists, code); 140 141 Own_msg = "0"b; 142 Excluding_some_names = "1"b; 143 call MAIN; 144 return; 145 146 caller_msg: entry (File_type, Suffix, Default, Old_ok, New_ok, Dir, Prefix, Caller_message, Create, Exists, code); 147 148 Own_msg = "1"b; 149 Excluding_some_names = "0"b; 150 call MAIN; 151 return; 152 153 154 foreign_mailboxes: entry (File_type, Suffix, Default, Old_ok, New_ok, Dir, Prefix, Caller_message, User, Exists, code); 155 156 dcl user_id char (60); 157 dcl foreign_user_addr_ptr ptr; 158 dcl full_pathname char (168); 159 dcl mt_address_ptr ptr; 160 dcl absolute_pathname_ entry (char(*), char(*), fixed bin(35)); 161 dcl mlsys_et_$invalid_address_syntax fixed bin(35) ext static; 162 163 code = 0; 164 Dir = ""; 165 Prefix, entryname = ""; 166 Names_ptr, Dyn_menup, star_names_ptr, star_entry_ptr = null; 167 N_names = 0; 168 Selected_dir = xmail_data.mail_dir; 169 Default_file = Default; 170 User, Exists = "0"b; 171 new_ok = New_ok; 172 old_ok = Old_ok; 173 174 Area_ptr = get_system_free_area_ (); 175 176 on condition (cleanup) call CLEANUP; 177 178 starname = "**." || Suffix; 179 180 Cant_get_list = "0"b; 181 182 call get_candidates (Selected_dir, starname, Names_ptr, N_names, code); 183 184 if code = error_table_$nomatch then ; 185 else if code ^= 0 186 then do; 187 Cant_get_list = "1"b; 188 code = 0; 189 end; 190 191 Prompt = get_caller_msg (); 192 193 selecting = "1"b; 194 do while (selecting); 195 RETRY (2): 196 opt = 2; 197 Selected_file = ""; 198 if xmail_data.lists_as_menus & old_ok 199 then call get_menu_choice (Selected_file); /* Always list as menu */ 200 else do; 201 call xmail_get_str_ (Prompt, "", PROMPT_REPLIES_HELP, explain_question (), 202 response); 203 if response = "??" 204 then call get_menu_choice (Selected_file); 205 /* else if search (response, INVALID_CHARS) ^= 0 206* then do; 207* call ioa_ ("The character ""^a"" is invalid in a ^a name.", substr (response, search (response, INVALID_CHARS), 1), File_type); 208* Selected_file = ""; 209* end; 210* 211* else if length (response) > (VALID_LENGTH - length (Suffix) - 1) 212* then do; 213* call ioa_ ("The ""^a"" name is too long.", File_type); 214* Selected_file = ""; 215* end; */ 216 else Selected_file = response; 217 end; 218 219 if Selected_file ^= "" 220 then do; 221 if Selected_file = USER_MAILBOX 222 then do; 223 call xmail_get_str_ ("Enter user name of mailbox to be processed: ", "", PROMPT_REPLIES_HELP, "user_mailbox", response); 224 225 TRY_AGAIN: user_id = rtrim (response); 226 call mlsys_utils_$parse_address_text (rtrim (user_id), foreign_user_addr_ptr, code); 227 if code = mlsys_et_$invalid_address_syntax then do; 228 if index (rtrim(response), "{") = 0 then do; 229 call absolute_pathname_ (rtrim(response), full_pathname, code); 230 if code = 0 then begin; 231 dcl temp_address char (length (rtrim (full_pathname)) + 6); 232 temp_address = "{mbx " || rtrim(full_pathname) || "}"; 233 call mlsys_utils_$parse_address_text (temp_address, foreign_user_addr_ptr, code); 234 if code ^= 0 then do; 235 call xmail_error_$no_code (code, NAME, "i", "Can't locate a mailbox with this pathname, ^a.", response); 236 goto EXIT_FOREIGN_MAILBOX; 237 end; 238 end; 239 else do; 240 call xmail_error_$no_code (code, NAME, "i", "Can't locate a mailbox with this pathname, ^a.", response); 241 goto EXIT_FOREIGN_MAILBOX; 242 end; 243 end; 244 else do; 245 call ioa_ ("The character ""{"" is invalid in a mailbox name."); 246 goto EXIT_FOREIGN_MAILBOX; 247 end; 248 end; 249 else if code ^= 0 then do; /* not a savebox or user */ 250 call xmail_error_$no_code (code, NAME, "i", " Can't get a mail table address for this user ^a.", response); 251 goto EXIT_FOREIGN_MAILBOX; 252 end; 253 call GET_PATHNAME (foreign_user_addr_ptr, code); 254 if code ^= 0 then do; 255 call xmail_error_$no_code (code, NAME, "i", "Can't get mail table address for this user_id, ^a.", response); 256 goto EXIT_FOREIGN_MAILBOX; 257 end; 258 else do; 259 Prefix = rtrim (entryname); 260 selecting = "0"b; 261 User = "1"b; 262 end; 263 end; 264 else do; 265 call validate_file (Selected_file, Exists, code); 266 if code = 0 267 then do; 268 Prefix = rtrim (Selected_file); 269 Dir = Selected_dir; 270 selecting = "0"b; 271 end; 272 else do; 273 Selected_file = USER_MAILBOX; 274 goto TRY_AGAIN; 275 end; 276 end; 277 end; 278 end; 279 280 EXIT_FOREIGN_MAILBOX: 281 call CLEANUP; 282 return; 283 284 GET_PATHNAME: procedure (P_address_ptr, code); 285 286 dcl P_address_ptr pointer parameter; 287 dcl code fixed binary (35) parameter; 288 dcl mlsys_et_$no_address_pathname fixed bin(35) ext static; 289 dcl address_type fixed bin; 290 291 call mail_system_$get_address_type (P_address_ptr, address_type, code); 292 if code ^= 0 then return; 293 294 if (address_type = INVALID_ADDRESS | address_type = NAMED_GROUP_ADDRESS | address_type = MAILING_LIST_ADDRESS | address_type = FOREIGN_ADDRESS | address_type = FORUM_ADDRESS) then do; 295 code = mlsys_et_$no_address_pathname; 296 end; 297 else if address_type = USER_MAILBOX_ADDRESS | address_type = LOGBOX_ADDRESS | address_type = SAVEBOX_ADDRESS | address_type = MAILBOX_ADDRESS then do; 298 call mail_system_$get_address_pathname (P_address_ptr, Dir, entryname, ((32)" "), code); 299 300 end; 301 else do; /* *** mail table address */ 302 call mail_system_$get_mail_table_address (P_address_ptr, mt_address_ptr, code); 303 if code = 0 then call GET_PATHNAME (mt_address_ptr, code); 304 end; 305 306 end GET_PATHNAME; 307 308 309 /*** Global variables ***/ 310 311 /* Parameter */ 312 313 dcl Caller_message char (*); 314 dcl Cant_get_list bit (1) aligned; 315 dcl Create bit (1) aligned; 316 dcl Default char (*); 317 dcl Dir char (168); 318 dcl Exists bit (1) aligned; 319 dcl Exclude_array (*) char (32) aligned; 320 dcl File_type char (*); 321 dcl New_ok bit (1) aligned; 322 dcl Old_ok bit (1) aligned; 323 dcl Prefix char (32) var; 324 dcl User bit (1) aligned; 325 dcl Suffix char (*); 326 327 /* Automatic */ 328 329 dcl Area_ptr ptr; 330 dcl Default_file char (32); 331 dcl Dyn_menup ptr; 332 dcl entryname char (32); 333 dcl Excluding_some_names bit (1) aligned; 334 dcl N_names fixed bin; 335 dcl Names_ptr ptr; 336 dcl new_ok bit (1) aligned; 337 dcl old_ok bit (1) aligned; 338 dcl opt fixed bin; 339 dcl Own_msg bit (1) aligned; 340 dcl Prompt char (256) var; 341 dcl Selected_dir char (168); 342 dcl Selected_file char (32); 343 344 /* Based */ 345 346 dcl Based_area area based (Area_ptr); 347 dcl Names (N_names) char (32) aligned based (Names_ptr); 348 349 /* Condition */ 350 351 dcl cleanup condition; 352 dcl reissue_query condition; 353 354 /*** Non-global ***/ 355 356 /* Automatic */ 357 358 dcl code fixed bin (35); 359 dcl response char (256) var; 360 dcl selecting bit (1) aligned; 361 dcl starname char (32); 362 363 /* Builtin */ 364 365 dcl (index, length, null, rtrim, search, substr, sum) 366 builtin; 367 368 /* Entries */ 369 370 dcl get_system_free_area_ entry () returns (ptr); 371 dcl ioa_ entry () options (variable); 372 dcl ioa_$rsnnl entry () options (variable); 373 dcl mail_system_$get_address_pathname entry (ptr, char (*), char (*), char (*), fixed bin (35)); 374 dcl mail_system_$get_address_type entry (pointer, fixed bin (17), fixed bin (35)); 375 dcl mail_system_$get_mail_table_address entry (ptr, ptr, fixed bin(35)); 376 dcl mlsys_utils_$parse_address_text entry (char (*), ptr, fixed bin (35)); 377 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 378 dcl xmail_error_$no_code entry () options (variable); 379 dcl xmail_error_$no_print entry () options (variable); 380 dcl xmail_get_str_ entry (char (*) var, (*) char (*) var, char (*), char (*), char (*) var); 381 382 /* Static */ 383 384 dcl DEFER char (5) init ("defer") int static options (constant); 385 dcl error_table_$bad_arg fixed bin (35) ext static; 386 dcl error_table_$nomatch fixed bin (35) ext static; 387 dcl INVALID_CHARS char (12) init ("<>#()[]{}*,;") int static options (constant); 388 dcl MLIST char (3) init ("mls") int static options (constant); 389 dcl NAME char (18) init ("xmail_select_file_") int static options (constant); 390 dcl SAVE char (6) init ("sv.mbx") int static options (constant); 391 dcl USER_MAILBOX char (14) init ("") int static options (constant); 392 dcl VALID_LENGTH fixed bin init (32) int static options (constant); 393 394 MAIN: proc (); 395 396 on reissue_query begin; 397 goto RETRY (opt); 398 end; 399 400 code = 0; 401 Dir = ""; 402 Prefix = ""; 403 Names_ptr, Dyn_menup, star_names_ptr, star_entry_ptr = null; 404 N_names = 0; 405 Selected_dir = xmail_data.mail_dir; 406 Default_file = Default; 407 Create, Exists = "0"b; 408 new_ok = New_ok; 409 old_ok = Old_ok; 410 411 if ^new_ok & ^old_ok 412 then do; 413 code = error_table_$bad_arg; 414 call xmail_error_$no_code (code, NAME, "c", "Cannot choose new or old file." || 415 "^/This is an internal error."); 416 goto EXIT; 417 end; 418 419 Area_ptr = get_system_free_area_ (); 420 421 on condition (cleanup) call CLEANUP; 422 423 starname = "**." || Suffix; 424 425 Cant_get_list = "0"b; 426 427 call get_candidates (Selected_dir, starname, Names_ptr, N_names, code); 428 429 if code = error_table_$nomatch 430 then ; /* Process this later */ 431 else if code ^= 0 432 then do; 433 Cant_get_list = "1"b; 434 code = 0; 435 end; 436 437 if ^new_ok /* Must have at least 1 old file */ 438 then do; 439 if code = error_table_$nomatch /* No old files found */ 440 then do; 441 call xmail_error_$no_code (0, NAME, "c", "You do not have any ^as.", File_type); 442 goto EXIT; 443 end; 444 else if N_names = 1 /* One old file found, choose it automatically */ 445 then do; 446 Prefix = rtrim (Names (1)); 447 Dir = Selected_dir; 448 if Suffix = SAVE | Suffix = MLIST | Suffix = DEFER /* Print msg only for certain files */ 449 then do; 450 Exists = "1"b; 451 call ioa_ ("The ^a ""^a"" automatically selected - it is your only one.", File_type, Prefix); 452 call timer_manager_$sleep (5, "11"b); 453 end; 454 goto EXIT; 455 end; 456 end; 457 458 if Own_msg 459 then Prompt = get_caller_msg (); 460 else Prompt = get_default_msg (); 461 462 selecting = "1"b; 463 do while (selecting); 464 RETRY (1): 465 opt = 1; 466 Selected_file = ""; 467 468 if xmail_data.lists_as_menus & old_ok 469 then call get_menu_choice (Selected_file); /* always list as menu */ 470 471 else do; 472 call xmail_get_str_ (Prompt, "", PROMPT_REPLIES_HELP, explain_question (), response); 473 474 if response = "" 475 then Selected_file = Default_file; 476 else if response = "??" 477 then do; 478 if old_ok 479 then call get_menu_choice (Selected_file); /* wants to choose from menu */ 480 else call list (); /* just wants list */ 481 end; 482 else if search (response, INVALID_CHARS) ^= 0 483 then do; /* filter garbage */ 484 call ioa_ ("The character ""^a"" is invalid in a ^a name.", substr (response, search (response, INVALID_CHARS), 1), File_type); 485 Selected_file = ""; 486 end; 487 488 else if length (response) > (VALID_LENGTH - length (Suffix) - 1) 489 then do; /* check length of response */ 490 call ioa_ ("The ""^a"" name is too long", File_type); 491 Selected_file = ""; 492 end; 493 494 else Selected_file = response; 495 496 end; 497 498 if Selected_file ^= "" /* we have chosen a file */ 499 then do; 500 call validate_file (Selected_file, Exists, code); 501 if code = 0 502 then do; 503 Prefix = rtrim (Selected_file); 504 Dir = Selected_dir; 505 selecting = "0"b; 506 end; 507 end; 508 end; /* do while */ 509 510 EXIT: 511 call CLEANUP; 512 return; 513 end MAIN; 514 515 get_candidates: proc (dir, starname, names_ptr, n_names, code); 516 517 /* Automatic */ 518 519 dcl exclude_map (500) bit (1); 520 dcl i fixed bin; 521 dcl j fixed bin; 522 dcl seg_name char (32); 523 524 /* Based */ 525 526 dcl names (n_names) char (32) based (names_ptr); 527 528 /* Entries */ 529 530 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 531 532 /* Parameter */ 533 534 dcl code fixed bin (35); 535 dcl dir char (*); 536 dcl n_names fixed bin; 537 dcl names_ptr ptr; 538 dcl starname char (*); 539 540 j = 0; 541 code = 0; 542 543 call hcs_$star_ (dir, starname, star_ALL_ENTRIES, Area_ptr, star_entry_count, star_entry_ptr, star_names_ptr, code); 544 545 if code ^= 0 /* no match or other error */ 546 then return; 547 548 do i = 1 to star_entry_count; 549 if exclude_this_segment (star_names (star_entries (i).nindex)) 550 then exclude_map (i) = "1"b; 551 else do; 552 exclude_map (i) = "0"b; 553 n_names = n_names + 1; 554 end; 555 end; 556 557 allocate names in (Based_area) set (names_ptr); 558 559 do i = 1 to star_entry_count; 560 seg_name = star_names (star_entries (i).nindex); 561 if ^exclude_map (i) 562 then do; 563 j = j + 1; 564 names (j) = minus_suffix (seg_name, Suffix); 565 end; 566 end; 567 568 end get_candidates; 569 570 minus_suffix: proc (name, suffix) returns (char (*) var); 571 572 /* Automatic */ 573 574 dcl reverse_name char (length (name)) var; 575 dcl reverse_suffix char (length (suffix)) var; 576 577 /* Builtin */ 578 579 dcl (after, index, length, reverse, rtrim) builtin; 580 581 /* Parameter */ 582 583 dcl name char (*); 584 dcl suffix char (*); 585 586 reverse_name = reverse (rtrim (name)); 587 reverse_suffix = reverse (rtrim (suffix)); 588 589 if index (reverse_name, reverse_suffix || ".") ^= 1 590 then return (name); 591 else return (reverse (after (reverse_name, reverse_suffix || "."))); 592 593 end minus_suffix; 594 595 get_default_msg: proc () returns (char (256) var); 596 597 /* Automatic */ 598 599 dcl prompt char (256) var; 600 601 if new_ok & old_ok 602 then call ioa_$rsnnl ("Enter a new or existing ^a name" || /* Msg for both new and old */ 603 "^[ (for ""^a"", press RETURN)^]: ", 604 prompt, (0), File_type, Default_file ^= "", Default_file); 605 else call ioa_$rsnnl ("Enter the name of ^[a new^;an existing^] ^a" || /* Msg for either new or old */ 606 "^[ (for ""^a"", press RETURN)^]: ", 607 prompt, (0), new_ok, File_type, Default_file ^= "", Default_file); 608 609 return (prompt); 610 611 end get_default_msg; 612 613 get_caller_msg: proc () returns (char (256) var); 614 615 /* Automatic */ 616 617 dcl prompt char (256) var; 618 619 call ioa_$rsnnl ("^a^[ (for ""^a"" press RETURN)^]: ", prompt, (0), Caller_message, Default_file ^= "", Default_file); 620 621 return (prompt); 622 623 end get_caller_msg; 624 625 get_menu_choice: proc (filename); 626 627 /* Automatic */ 628 629 dcl code fixed bin (35); 630 dcl filename char (*); 631 dcl index fixed bin; 632 dcl selected_create bit (1) aligned; 633 634 /* Builtin */ 635 636 dcl null builtin; 637 638 /* Entries */ 639 640 dcl xmail_dyn_menu_$create entry ((*) char (*) aligned, ptr, ptr, ptr, fixed bin (35)); 641 dcl xmail_error_$no_code entry () options (variable); 642 dcl xmail_dyn_menu_$create_w_trailer entry ((*) char (*) aligned, char (*), ptr, ptr, ptr, fixed bin (35)); 643 dcl xmail_get_dyn_choice_ entry (ptr, fixed bin, fixed bin (35)); 644 dcl xmail_get_dyn_choice_$trailer entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 645 646 filename = ""; 647 648 if Cant_get_list 649 then do; 650 if xmail_data.lists_as_menus /* interrupt if auto menu */ 651 then call xmail_error_$no_code (0, NAME, "i", "Unable to get a list of your ^as.", File_type); 652 else call xmail_error_$no_code (0, NAME, "c", "Unable to get a list of your ^as.", File_type); 653 return; 654 end; 655 656 /* If there are no menu items, a new file is allowed, and Display Lists As 657* Menus option is yes, allow caller to create */ 658 659 if N_names = 0 & new_ok & xmail_data.lists_as_menus 660 then do; 661 filename = ""; 662 old_ok = "0"b; 663 Default_file = ""; 664 Prompt = get_default_msg (); 665 Create = "1"b; /* caller should create */ 666 return; 667 end; 668 669 if N_names = 0 & ^xmail_data.foreign_mailbox 670 then do; 671 call xmail_error_$no_code (0, NAME, "c", "You have no existing ^as.", File_type); 672 if xmail_data.lists_as_menus /* delay if automatic list */ 673 then call timer_manager_$sleep (5, "11"b); 674 return; 675 end; 676 677 if new_ok 678 then call xmail_dyn_menu_$create_w_trailer (Names, "", Dyn_menup, null, Area_ptr, code); 679 else if xmail_data.foreign_mailbox then 680 if N_names > 0 681 then call xmail_dyn_menu_$create_w_trailer (Names, "", Dyn_menup, null, Area_ptr, code); 682 else do; 683 N_names = 1; 684 allocate Names in (Based_area) set (Names_ptr); 685 Names (1) = ""; 686 call xmail_dyn_menu_$create (Names, Dyn_menup, null, Area_ptr, code); 687 end; 688 else call xmail_dyn_menu_$create (Names, Dyn_menup, null, Area_ptr, code); 689 690 if code ^= 0 691 then do; 692 if xmail_data.lists_as_menus 693 then call xmail_error_$no_code (code, NAME, "i", "Unable to select a ^a via a menu.", File_type); 694 else call xmail_error_$no_code (code, NAME, "c", "Unable to select a ^a via a menu.", File_type); 695 return; 696 end; 697 698 do while ("1"b); 699 700 selected_create = "0"b; 701 702 if new_ok | xmail_data.foreign_mailbox 703 then call xmail_get_dyn_choice_$trailer (Dyn_menup, index, selected_create, code); 704 else call xmail_get_dyn_choice_ (Dyn_menup, index, code); 705 706 if code ^= 0 707 then do; 708 call xmail_error_$no_code (code, NAME, "c", "Unable to use your ""^a"" selection.^/This is an internal error.", File_type); 709 if xmail_data.lists_as_menus /* delay if automatic list */ 710 then call timer_manager_$sleep (5, "11"b); 711 end; 712 else do; 713 if selected_create 714 then do; 715 if new_ok 716 then do; 717 filename = ""; 718 old_ok = "0"b; 719 Default_file = ""; 720 Prompt = get_default_msg (); 721 Create = "1"b; /* caller should create */ 722 end; 723 else if xmail_data.foreign_mailbox 724 then filename = USER_MAILBOX; 725 end; 726 else filename = Names (index); 727 end; 728 return; 729 end; /* do while */ 730 731 end get_menu_choice; 732 733 list: proc (); 734 735 /* Automatic */ 736 737 dcl index fixed bin; 738 739 /* Builtin */ 740 741 dcl mod builtin; 742 743 /* Entries */ 744 745 dcl ioa_ entry () options (variable); 746 dcl ioa_$nnl entry () options (variable); 747 dcl xmail_error_$no_code entry () options (variable); 748 749 if Cant_get_list 750 then do; 751 call xmail_error_$no_code (0, NAME, "c", "Unable to get a list of your ^as.", File_type); 752 return; 753 end; 754 755 if N_names = 0 756 then do; 757 call xmail_error_$no_code (0, NAME, "c", "You have no existing ^as.", File_type); 758 return; 759 end; 760 761 call ioa_ ("^/You have ^d ^as:", N_names, File_type); 762 763 do index = 1 to N_names; 764 if (mod (index, 3) = 0) 765 then call ioa_$nnl ("^a^/", Names (index)); 766 else call ioa_$nnl ("^26a", Names (index)); 767 end; 768 call ioa_ ("^/"); 769 end list; 770 771 validate_file: proc (prefix, exists, code); 772 773 /* Automatic */ 774 775 dcl filename char (32); 776 dcl link_type bit (1) aligned; 777 dcl entry_type char (32); 778 dcl type fixed bin (2); 779 780 /* Builtin */ 781 782 dcl rtrim builtin; 783 784 /* Entries */ 785 dcl fs_util_$get_type entry (char(*), char(*), char(*), fixed bin(35)); 786 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 787 dcl xmail_error_$no_code entry () options (variable); 788 789 /* Parameter */ 790 791 dcl code fixed bin (35); 792 dcl exists bit (1) aligned; 793 dcl prefix char (*); 794 795 /* Static */ 796 797 dcl error_table_$dirseg fixed bin (35) ext static; 798 dcl error_table_$namedup fixed bin (35) ext static; 799 dcl error_table_$noentry fixed bin (35) ext static; 800 dcl error_table_$no_info fixed bin (35) ext static; 801 dcl LINK fixed bin (2) init (0) int static options (constant); 802 dcl NO_CHASE fixed bin (1) init (0) int static options (constant); 803 dcl SEGMENT fixed bin (2) init (1) int static options (constant); 804 805 code = 0; 806 807 if Suffix = "" 808 then filename = prefix; 809 else filename = rtrim (prefix) || "." || Suffix; 810 811 if exclude_this_segment (filename) 812 then do; 813 code = error_table_$noentry; 814 call xmail_error_$no_code (code, NAME, "c", "This name must be excluded from your choice. ""^a""", prefix); 815 goto EXIT_VALIDATE; 816 end; 817 818 link_type = "0"b; 819 820 call hcs_$status_minf (Selected_dir, filename, NO_CHASE, type, (0), code); 821 822 if (code = 0) & (type = LINK) 823 then do; 824 call fs_util_$get_type (Selected_dir, filename, entry_type, code); 825 link_type = "1"b; 826 end; 827 828 if code = error_table_$noentry /* Process this later */ 829 then do; 830 exists = "0"b; 831 if link_type /* Check for inconsistency */ 832 then do; 833 call xmail_error_$no_code (code, NAME, "c", 834 "Unable to use the ^a ""^a"" because of an inconsistency in your xmail directory." || 835 "^/A link points to nowhere.", File_type, prefix); 836 if xmail_data.lists_as_menus /* delay if automatic list */ 837 then call timer_manager_$sleep (5, "11"b); 838 839 goto EXIT_VALIDATE; 840 end; 841 end; 842 else if code = error_table_$no_info 843 then do; 844 call xmail_error_$no_code (code, NAME, "c", " You do not have access to use the ""^a"" ^a.", prefix, File_type); 845 if xmail_data.lists_as_menus /* delay if automatic list */ 846 then call timer_manager_$sleep (5, "11"b); 847 goto EXIT_VALIDATE; 848 end; 849 else if code ^= 0 850 then do; 851 call xmail_error_$no_code (code, NAME, "c", "Unable to use the ^a ""^a"".^/This is an internal error.", File_type, prefix); 852 if xmail_data.lists_as_menus /* delay if automatic list */ 853 then call timer_manager_$sleep (5, "11"b); 854 goto EXIT_VALIDATE; 855 end; 856 else exists = "1"b; /* code = 0 */ 857 858 if new_ok & old_ok /* accept any name NEW or OLD */ 859 then do; 860 code = 0; 861 goto EXIT_VALIDATE; 862 end; 863 864 if new_ok /* Need a NEW file name */ 865 then do; 866 if code = error_table_$noentry 867 then do; 868 code = 0; 869 goto EXIT_VALIDATE; 870 end; 871 else do; 872 code = error_table_$namedup; 873 call xmail_error_$no_code (code, NAME, "c", "The ^a name ""^a"" is already used." || 874 "^/Please specify another name.", File_type, prefix); 875 goto EXIT_VALIDATE; 876 end; 877 end; 878 879 if code = error_table_$noentry /* Must be OLD file */ 880 then do; 881 if ^xmail_data.foreign_mailbox 882 then call xmail_error_$no_code (code, NAME, "c", 883 "Unable to use the ^a ""^a""." || 884 " It does not exist.", File_type, prefix); 885 goto EXIT_VALIDATE; 886 end; 887 888 if (type ^= SEGMENT & entry_type ^= "mbx") 889 then do; 890 code = error_table_$dirseg; 891 call xmail_error_$no_code (code, NAME, "c", 892 "Unable to use ""^a"".^/It is not of expected type (^a)." || 893 " This is an inconsistency in your xmail directory.", prefix, File_type); 894 if xmail_data.lists_as_menus /* delay if automatic list */ 895 then call timer_manager_$sleep (5, "11"b); 896 end; 897 898 EXIT_VALIDATE: 899 return; 900 901 end validate_file; 902 903 904 905 explain_question: proc returns (char (32) var); 906 907 /* Automatic */ 908 909 dcl info_name char (32) var; 910 911 /* Builtin */ 912 913 dcl translate builtin; 914 915 call ioa_$rsnnl ("^[^4s^;^[^a^x^2s^;^s^[^a^x^;^s^]^]^]^a", info_name, (0), new_ok & old_ok, new_ok, "new", old_ok, "old", File_type); 916 info_name = translate (info_name, "_", " "); 917 return (info_name); 918 end explain_question; 919 920 exclude_this_segment: proc (seg_name) returns (bit (1) aligned); 921 922 /* Automatic */ 923 924 dcl exclude_flag bit (1) aligned; 925 dcl i fixed bin; 926 dcl match_code fixed bin (35); 927 928 /* Entry */ 929 930 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 931 932 /* Builtin */ 933 934 dcl hbound builtin; 935 936 /* Parameter */ 937 938 dcl seg_name char (*); 939 940 exclude_flag = "0"b; 941 942 if Suffix = "mbx" then do; 943 call match_star_name_ (seg_name, "**.sv.mbx", match_code); 944 if match_code = 0 then do; 945 exclude_flag = "1"b; 946 goto EXCLUDE_EXIT; 947 end; 948 end; 949 950 if ^Excluding_some_names 951 then goto EXCLUDE_EXIT; 952 953 do i = 1 to hbound (Exclude_array, 1); 954 if seg_name = Exclude_array (i) 955 then do; 956 exclude_flag = "1"b; 957 goto EXCLUDE_EXIT; 958 end; 959 end; 960 961 EXCLUDE_EXIT: 962 return (exclude_flag); 963 964 end exclude_this_segment; 965 966 CLEANUP: proc (); 967 968 dcl xmail_dyn_menu_$free entry (ptr, fixed bin (35)); 969 dcl cleanup_code fixed bin (35); 970 971 if star_names_ptr ^= null () then free star_names;/* order is important */ 972 if star_entry_ptr ^= null () then free star_entries; 973 if Names_ptr ^= null () then free Names; 974 if Dyn_menup ^= null () then do; 975 call xmail_dyn_menu_$free (Dyn_menup, cleanup_code); 976 if cleanup_code ^= 0 977 then call xmail_error_$no_print (cleanup_code, NAME, "c", 978 "Unable to free the dynamic menu."); 979 end; 980 end CLEANUP; 981 982 /* Include */ 983 1 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 1 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 1 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 1 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 10* Adding switch to indicate request for menu display came from general help. 1 11* This is so general help menu will be displayed in top screen. 1 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 1 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 14* Add switch to indicate whether or not it is permissible to process mail 1 15* in other users' mailboxes (foreign_mailbox). 1 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 1 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 18* Add bit to indicate whether or not this is a true cleanup condition. 1 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 1 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 21* Rearrange to group all the bit flags together in one word with a pad. 1 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 1 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 1 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 1 25* you keep around a pointer to a structure which no longer exists. 1 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 1 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 1 28* Add a field to indicate whether or not we should process interactive msgs. 1 29* Increment version to 4.1 so default value will get set. 1 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 1 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 1 32* Add a field to indicate whether or not we're processing a reply so that we 1 33* will be able to rebuild the screens properly after a disconnect occurs. 1 34* Error_list #114. 1 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 1 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 1 37* Add a bit to indicate whether or not the error segment had to be created 1 38* in the pdir (because we didn't have sma access to the mlsys_dir). 1 39* END HISTORY COMMENTS */ 1 40 1 41 1 42 /* Written 5/13/81 by Paul H. Kyzivat */ 1 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 1 44* and to add n_fkeys_used */ 1 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 1 46* varying string. */ 1 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 1 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 1 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 1 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 1 51 1 52 dcl xmail_data_ptr external static ptr init (null); 1 53 1 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 1 55 2 mail_dir char (168) varying, 1 56 2 first_label label, 1 57 2 quit_label label, 1 58 2 value_seg_pathname char (168) varying, 1 59 2 moved_user_io ptr, 1 60 2 normal_usage char (80) unal, 1 61 2 function_key_info, 1 62 3 function_key_data_ptr ptr, 1 63 3 n_fkeys_used fixed bin, 1 64 2 actee, 1 65 3 person char(32) varying, 1 66 3 project char(32) varying, 1 67 2 flags aligned, 1 68 3 mail_in_incoming bit (1) unal, 1 69 3 lists_as_menus bit (1) unal, /* personalization */ 1 70 3 remove_menus bit (1) unal, /* personalization */ 1 71 3 confirm_print bit (1) unal, /* personalization */ 1 72 3 multics_mode bit (1) unal, /* personalization */ 1 73 3 interactive_msgs bit (1) unal, /* personalization */ 1 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 1 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 1 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 1 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 1 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 1 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 1 80 3 pad bit (24) unal; 1 81 1 82 1 83 1 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 1 85 1 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 984 985 2 1 /* BEGIN INCLUDE FILE xmail_help_infos.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(85-03-06,Backs), approve(86-03-06,MCR7358), 2 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 2 6* Modified to add date info. 2 7* END HISTORY COMMENTS */ 2 8 2 9 /* Created 06/18/81 by Suzanne Krupp */ 2 10 2 11 /* Help files and info entry points. */ 2 12 2 13 dcl (PROMPT_REPLIES_HELP char(28) init("xmail_prompt_replies.gi.info"), 2 14 GENERAL_HELP_HELP char(26) init("xmail_general_help.gi.info"), 2 15 GETTING_STARTED_HELP char(29) init("xmail_getting_started.gi.info"), 2 16 INITIAL_HELP char(26) init("xmail_initial_help.gi.info"), 2 17 MULTICS_MODE_HELP char(27) init("xmail_multics_mode_.gi.info"), 2 18 REVIEW_DEFAULTS_HELP char(29) init("xmail_Review_Defaults.gi.info")) 2 19 int static options(constant); 2 20 2 21 dcl (CREATE_MFILE_INFO char(19) init("creating_mail_files"), /* Prompt Infos */ 2 22 DEL_MSG_SELECT_INFO char(23) init("which_discarded_message"), 2 23 SEARCH_STR_INFO char(14) init("search_string"), 2 24 MSG_SELECT_INFO char(14) init("which_message"), 2 25 USE_SPEC_SET_INFO char(12) init("use_spec_set"), 2 26 GETTING_HELP_INFO char(12) init("getting_help"), 2 27 DATE_INFO char(14) init("date_selection"), 2 28 MORE_HELP_INFO char(9) init("more_help")) 2 29 int static options(constant); 2 30 2 31 /* END INCLUDE FILE ... xmail_help_infos.incl.pl1 */ 986 987 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 988 989 4 1 /* BEGIN INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Types of addresses supported by the Multics Mail System */ 4 5 4 6 dcl (INVALID_ADDRESS initial (0), /* a syntactically invalid address: used as a place holder 4 7* when parsing printed representations */ 4 8 USER_MAILBOX_ADDRESS initial (1), /* identifies a user's default mailbox */ 4 9 LOGBOX_ADDRESS initial (2), /* identifies a user's logbox */ 4 10 SAVEBOX_ADDRESS initial (3), /* identifies one of a user's saveboxes by pathname */ 4 11 MAILBOX_ADDRESS initial (4), /* identifies some other mailbox by pathname */ 4 12 FORUM_ADDRESS initial (5), /* identifies a forum meeting by pathname */ 4 13 FOREIGN_ADDRESS initial (6), /* identifies a user (or group) on another compute system */ 4 14 MAIL_TABLE_ADDRESS initial (7), /* identifies an entry in the system's mail table */ 4 15 MAILING_LIST_ADDRESS initial (8), /* identifies a mailing list by pathname */ 4 16 NAMED_GROUP_ADDRESS initial (9)) /* identifies a named group of addresses */ 4 17 fixed binary static options (constant); 4 18 4 19 /* END INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 990 991 992 end xmail_select_file_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0736.1 xmail_select_file_.pl1 >spec>install>MR12.2-1098>xmail_select_file_.pl1 984 1 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.incl.pl1 986 2 05/28/86 1117.7 xmail_help_infos.incl.pl1 >ldd>include>xmail_help_infos.incl.pl1 988 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 990 4 10/27/83 2104.2 mlsys_address_types.incl.pl1 >ldd>include>mlsys_address_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. Area_ptr 000200 automatic pointer dcl 329 set ref 174* 419* 543* 557 677* 679* 684 686* 688* Based_area based area(1024) dcl 346 ref 557 684 Caller_message parameter char packed unaligned dcl 313 set ref 146 154 619* Cant_get_list 000176 automatic bit(1) dcl 314 set ref 180* 187* 425* 433* 648 749 Create parameter bit(1) dcl 315 set ref 132 139 146 407* 665* 721* DEFER 000032 constant char(5) initial packed unaligned dcl 384 ref 448 Default parameter char packed unaligned dcl 316 ref 132 139 146 154 169 406 Default_file 000202 automatic char(32) packed unaligned dcl 330 set ref 169* 406* 474 601 601* 605 605* 619 619* 663* 719* Dir parameter char(168) packed unaligned dcl 317 set ref 132 139 146 154 164* 269* 298* 401* 447* 504* Dyn_menup 000212 automatic pointer dcl 331 set ref 166* 403* 677* 679* 686* 688* 702* 704* 974 975* Exclude_array parameter char(32) array dcl 319 ref 139 953 954 Excluding_some_names 000224 automatic bit(1) dcl 333 set ref 135* 142* 149* 950 Exists parameter bit(1) dcl 318 set ref 132 139 146 154 170* 265* 407* 450* 500* FOREIGN_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 294 FORUM_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 294 File_type parameter char packed unaligned dcl 320 set ref 132 139 146 154 441* 451* 484* 490* 601* 605* 650* 652* 671* 677 692* 694* 708* 751* 757* 761* 833* 844* 851* 873* 881* 891* 915* INVALID_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 294 INVALID_CHARS 000026 constant char(12) initial packed unaligned dcl 387 ref 482 484 484 LINK constant fixed bin(2,0) initial dcl 801 ref 822 LOGBOX_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 297 MAILBOX_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 297 MAILING_LIST_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 294 MLIST 000025 constant char(3) initial packed unaligned dcl 388 ref 448 NAME 000020 constant char(18) initial packed unaligned dcl 389 set ref 235* 240* 250* 255* 414* 441* 650* 652* 671* 692* 694* 708* 751* 757* 814* 833* 844* 851* 873* 881* 891* 976* NAMED_GROUP_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 294 NO_CHASE 000112 constant fixed bin(1,0) initial dcl 802 set ref 820* N_names 000225 automatic fixed bin(17,0) dcl 334 set ref 167* 182* 404* 427* 444 659 669 677 679 679 683* 684 686 688 755 761* 763 973 Names based char(32) array dcl 347 set ref 446 677* 679* 684 685* 686* 688* 726 764* 766* 973 Names_ptr 000226 automatic pointer dcl 335 set ref 166* 182* 403* 427* 446 677 679 684* 685 686 688 726 764 766 973 973 New_ok parameter bit(1) dcl 321 ref 132 139 146 154 171 408 Old_ok parameter bit(1) dcl 322 ref 132 139 146 154 172 409 Own_msg 000233 automatic bit(1) dcl 339 set ref 134* 141* 148* 458 PROMPT_REPLIES_HELP 000002 constant char(28) initial packed unaligned dcl 2-13 set ref 201* 223* 472* P_address_ptr parameter pointer dcl 286 set ref 284 291* 298* 302* Prefix parameter varying char(32) dcl 323 set ref 132 139 146 154 165* 259* 268* 402* 446* 451* 503* Prompt 000234 automatic varying char(256) dcl 340 set ref 191* 201* 458* 460* 472* 664* 720* SAVE 000016 constant char(6) initial packed unaligned dcl 390 ref 448 SAVEBOX_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 297 SEGMENT constant fixed bin(2,0) initial dcl 803 ref 888 Selected_dir 000335 automatic char(168) packed unaligned dcl 341 set ref 168* 182* 269 405* 427* 447 504 820* 824* Selected_file 000407 automatic char(32) packed unaligned dcl 342 set ref 197* 198* 203* 216* 219 221 265* 268 273* 466* 468* 474* 478* 485* 491* 494* 498 500* 503 Suffix parameter char packed unaligned dcl 325 set ref 132 139 146 154 178 423 448 448 448 488 564* 807 809 942 USER_MAILBOX 000011 constant char(14) initial packed unaligned dcl 391 ref 221 273 723 USER_MAILBOX_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 297 User parameter bit(1) dcl 324 set ref 154 170* 261* VALID_LENGTH constant fixed bin(17,0) initial dcl 392 ref 488 absolute_pathname_ 000010 constant entry external dcl 160 ref 229 address_type 000100 automatic fixed bin(17,0) dcl 289 set ref 291* 294 294 294 294 294 297 297 297 297 after builtin function dcl 579 ref 591 cleanup 000420 stack reference condition dcl 351 ref 176 421 cleanup_code 000100 automatic fixed bin(35,0) dcl 969 set ref 975* 976 976* code parameter fixed bin(35,0) dcl 791 in procedure "validate_file" set ref 771 805* 813* 814* 820* 822 824* 828 833* 842 844* 849 851* 860* 866 868* 872* 873* 879 881* 890* 891* code parameter fixed bin(35,0) dcl 534 in procedure "get_candidates" set ref 515 541* 543* 545 code parameter fixed bin(35,0) dcl 358 in procedure "xmail_select_file_" set ref 132 139 146 154 163* 182* 184 185 188* 226* 227 229* 230 233* 234 235* 240* 249 250* 253* 254 255* 265* 266 400* 413* 414* 427* 429 431 434* 439 500* 501 code 000100 automatic fixed bin(35,0) dcl 629 in procedure "get_menu_choice" set ref 677* 679* 686* 688* 690 692* 694* 702* 704* 706 708* code parameter fixed bin(35,0) dcl 287 in procedure "GET_PATHNAME" set ref 284 291* 292 295* 298* 302* 303 303* dir parameter char packed unaligned dcl 535 set ref 515 543* entry_type 000111 automatic char(32) packed unaligned dcl 777 set ref 824* 888 entryname 000214 automatic char(32) packed unaligned dcl 332 set ref 165* 259 298* error_table_$bad_arg 000042 external static fixed bin(35,0) dcl 385 ref 413 error_table_$dirseg 000102 external static fixed bin(35,0) dcl 797 ref 890 error_table_$namedup 000104 external static fixed bin(35,0) dcl 798 ref 872 error_table_$no_info 000110 external static fixed bin(35,0) dcl 800 ref 842 error_table_$noentry 000106 external static fixed bin(35,0) dcl 799 ref 813 828 866 879 error_table_$nomatch 000044 external static fixed bin(35,0) dcl 386 ref 184 429 439 exclude_flag 000100 automatic bit(1) dcl 924 set ref 940* 945* 956* 961 exclude_map 000100 automatic bit(1) array packed unaligned dcl 519 set ref 549* 552* 561 exists parameter bit(1) dcl 792 set ref 771 830* 856* filename parameter char packed unaligned dcl 630 in procedure "get_menu_choice" set ref 625 646* 661* 717* 723* 726* filename 000100 automatic char(32) packed unaligned dcl 775 in procedure "validate_file" set ref 807* 809* 811* 820* 824* flags 213 based structure level 2 dcl 1-54 foreign_mailbox 213(06) based bit(1) level 3 packed packed unaligned dcl 1-54 ref 669 679 702 723 881 foreign_user_addr_ptr 000120 automatic pointer dcl 157 set ref 226* 233* 253* fs_util_$get_type 000074 constant entry external dcl 785 ref 824 full_pathname 000122 automatic char(168) packed unaligned dcl 158 set ref 229* 231 232 get_system_free_area_ 000014 constant entry external dcl 370 ref 174 419 hbound builtin function dcl 934 ref 953 hcs_$star_ 000052 constant entry external dcl 530 ref 543 hcs_$status_minf 000076 constant entry external dcl 786 ref 820 i 000116 automatic fixed bin(17,0) dcl 520 in procedure "get_candidates" set ref 548* 549 549 552* 559* 560 561* i 000101 automatic fixed bin(17,0) dcl 925 in procedure "exclude_this_segment" set ref 953* 954* index 000101 automatic fixed bin(17,0) dcl 631 in procedure "get_menu_choice" set ref 702* 704* 726 index 000124 automatic fixed bin(17,0) dcl 737 in procedure "list" set ref 763* 764 764 766* index builtin function dcl 579 in procedure "minus_suffix" ref 589 index builtin function dcl 365 in procedure "xmail_select_file_" ref 228 info_name 000100 automatic varying char(32) dcl 909 set ref 915* 916* 916 917 ioa_ 000066 constant entry external dcl 745 in procedure "list" ref 761 768 ioa_ 000016 constant entry external dcl 371 in procedure "xmail_select_file_" ref 245 451 484 490 ioa_$nnl 000070 constant entry external dcl 746 ref 764 766 ioa_$rsnnl 000020 constant entry external dcl 372 ref 601 605 619 915 j 000117 automatic fixed bin(17,0) dcl 521 set ref 540* 563* 563 564 length builtin function dcl 365 in procedure "xmail_select_file_" ref 231 488 488 length builtin function dcl 579 in procedure "minus_suffix" ref 574 575 link_type 000110 automatic bit(1) dcl 776 set ref 818* 825* 831 lists_as_menus 213(01) based bit(1) level 3 packed packed unaligned dcl 1-54 ref 198 468 650 659 672 692 709 836 845 852 894 mail_dir based varying char(168) level 2 dcl 1-54 ref 168 405 mail_system_$get_address_pathname 000022 constant entry external dcl 373 ref 298 mail_system_$get_address_type 000024 constant entry external dcl 374 ref 291 mail_system_$get_mail_table_address 000026 constant entry external dcl 375 ref 302 match_code 000102 automatic fixed bin(35,0) dcl 926 set ref 943* 944 match_star_name_ 000112 constant entry external dcl 930 ref 943 mlsys_et_$invalid_address_syntax 000012 external static fixed bin(35,0) dcl 161 ref 227 mlsys_et_$no_address_pathname 000050 external static fixed bin(35,0) dcl 288 ref 295 mlsys_utils_$parse_address_text 000030 constant entry external dcl 376 ref 226 233 mod builtin function dcl 741 ref 764 mt_address_ptr 000174 automatic pointer dcl 159 set ref 302* 303* n_names parameter fixed bin(17,0) dcl 536 set ref 515 553* 553 557 name parameter char packed unaligned dcl 583 ref 570 574 586 589 names based char(32) array packed unaligned dcl 526 set ref 557 564* names_ptr parameter pointer dcl 537 set ref 515 557* 564 new_ok 000230 automatic bit(1) dcl 336 set ref 171* 408* 411 437 601 605* 659 677 702 715 858 864 915 915* nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 3-27 ref 549 560 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 3-27 ref 971 null builtin function dcl 636 in procedure "get_menu_choice" ref 677 677 679 679 686 686 688 688 null builtin function dcl 365 in procedure "xmail_select_file_" ref 166 403 971 972 973 974 old_ok 000231 automatic bit(1) dcl 337 set ref 172* 198 409* 411 468 478 601 662* 718* 858 915 915* opt 000232 automatic fixed bin(17,0) dcl 338 set ref 195* 397 464* prefix parameter char packed unaligned dcl 793 set ref 771 807 809 814* 833* 844* 851* 873* 881* 891* prompt 000100 automatic varying char(256) dcl 617 in procedure "get_caller_msg" set ref 619* 621 prompt 000100 automatic varying char(256) dcl 599 in procedure "get_default_msg" set ref 601* 605* 609 reissue_query 000000 stack reference condition dcl 352 ref 396 response 000426 automatic varying char(256) dcl 359 set ref 201* 203 216 223* 225 228 229 229 235* 240* 250* 255* 472* 474 476 482 484 484 484 484 488 494 reverse builtin function dcl 579 ref 586 587 591 reverse_name 000100 automatic varying char dcl 574 set ref 586* 589 591 reverse_suffix 000100 automatic varying char dcl 575 set ref 587* 589 591 rtrim builtin function dcl 579 in procedure "minus_suffix" ref 586 587 rtrim builtin function dcl 782 in procedure "validate_file" ref 809 rtrim builtin function dcl 365 in procedure "xmail_select_file_" ref 225 226 226 228 229 229 231 232 259 268 446 503 search builtin function dcl 365 ref 482 484 484 seg_name 000120 automatic char(32) packed unaligned dcl 522 in procedure "get_candidates" set ref 560* 564* seg_name parameter char packed unaligned dcl 938 in procedure "exclude_this_segment" set ref 920 943* 954 selected_create 000102 automatic bit(1) dcl 632 set ref 700* 702* 713 selecting 000527 automatic bit(1) dcl 360 set ref 193* 194 260* 270* 462* 463 505* star_ALL_ENTRIES 000120 constant fixed bin(2,0) initial dcl 3-111 set ref 543* star_entries based structure array level 1 dcl 3-27 ref 972 star_entry_count 000540 automatic fixed bin(17,0) dcl 3-14 set ref 543* 548 559 971 972 star_entry_ptr 000542 automatic pointer dcl 3-15 set ref 166* 403* 543* 549 560 971 972 972 star_names based char(32) array packed unaligned dcl 3-37 set ref 549* 560 971 star_names_ptr 000544 automatic pointer dcl 3-19 set ref 166* 403* 543* 549 560 971 971 starname parameter char packed unaligned dcl 538 in procedure "get_candidates" set ref 515 543* starname 000530 automatic char(32) packed unaligned dcl 361 in procedure "xmail_select_file_" set ref 178* 182* 423* 427* substr builtin function dcl 365 ref 484 484 suffix parameter char packed unaligned dcl 584 ref 570 575 587 sum builtin function dcl 365 ref 971 temp_address 000100 automatic char packed unaligned dcl 231 set ref 232* 233* timer_manager_$sleep 000032 constant entry external dcl 377 ref 452 672 709 836 845 852 894 translate builtin function dcl 913 ref 916 type 000121 automatic fixed bin(2,0) dcl 778 set ref 820* 822 888 user_id 000100 automatic char(60) packed unaligned dcl 156 set ref 225* 226 226 xmail_data based structure level 1 dcl 1-54 xmail_data_ptr 000046 external static pointer initial dcl 1-52 ref 168 198 405 468 650 659 669 672 679 692 702 709 723 836 845 852 881 894 xmail_dyn_menu_$create 000054 constant entry external dcl 640 ref 686 688 xmail_dyn_menu_$create_w_trailer 000060 constant entry external dcl 642 ref 677 679 xmail_dyn_menu_$free 000114 constant entry external dcl 968 ref 975 xmail_error_$no_code 000034 constant entry external dcl 378 in procedure "xmail_select_file_" ref 235 240 250 255 414 441 xmail_error_$no_code 000100 constant entry external dcl 787 in procedure "validate_file" ref 814 833 844 851 873 881 891 xmail_error_$no_code 000072 constant entry external dcl 747 in procedure "list" ref 751 757 xmail_error_$no_code 000056 constant entry external dcl 641 in procedure "get_menu_choice" ref 650 652 671 692 694 708 xmail_error_$no_print 000036 constant entry external dcl 379 ref 976 xmail_get_dyn_choice_ 000062 constant entry external dcl 643 ref 704 xmail_get_dyn_choice_$trailer 000064 constant entry external dcl 644 ref 702 xmail_get_str_ 000040 constant entry external dcl 380 ref 201 223 472 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CREATE_MFILE_INFO internal static char(19) initial packed unaligned dcl 2-21 DATE_INFO internal static char(14) initial packed unaligned dcl 2-21 DEL_MSG_SELECT_INFO internal static char(23) initial packed unaligned dcl 2-21 GENERAL_HELP_HELP internal static char(26) initial packed unaligned dcl 2-13 GETTING_HELP_INFO internal static char(12) initial packed unaligned dcl 2-21 GETTING_STARTED_HELP internal static char(29) initial packed unaligned dcl 2-13 INITIAL_HELP internal static char(26) initial packed unaligned dcl 2-13 MAIL_TABLE_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 MORE_HELP_INFO internal static char(9) initial packed unaligned dcl 2-21 MSG_SELECT_INFO internal static char(14) initial packed unaligned dcl 2-21 MULTICS_MODE_HELP internal static char(27) initial packed unaligned dcl 2-13 REVIEW_DEFAULTS_HELP internal static char(29) initial packed unaligned dcl 2-13 SEARCH_STR_INFO internal static char(14) initial packed unaligned dcl 2-21 USE_SPEC_SET_INFO internal static char(12) initial packed unaligned dcl 2-21 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 3-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 3-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char packed unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array packed unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 xmail_version internal static varying char(10) initial dcl 1-84 NAMES DECLARED BY EXPLICIT CONTEXT. CLEANUP 007445 constant entry internal dcl 966 ref 176 280 421 510 EXCLUDE_EXIT 007440 constant label dcl 961 ref 946 950 957 EXIT 003623 constant label dcl 510 ref 416 442 454 EXIT_FOREIGN_MAILBOX 002420 constant label dcl 280 ref 236 241 246 251 256 EXIT_VALIDATE 007167 constant label dcl 898 ref 815 839 847 854 861 869 875 885 GET_PATHNAME 002426 constant entry internal dcl 284 ref 253 303 MAIN 002570 constant entry internal dcl 394 ref 136 143 150 RETRY 000001 constant label array(1) dcl 464 ref 397 TRY_AGAIN 001615 constant label dcl 225 set ref 274 caller_msg 001063 constant entry external dcl 146 exclude 001003 constant entry external dcl 139 exclude_this_segment 007315 constant entry internal dcl 920 ref 549 811 explain_question 007171 constant entry internal dcl 905 ref 201 472 foreign_mailboxes 001142 constant entry external dcl 154 get_caller_msg 004506 constant entry internal dcl 613 ref 191 458 get_candidates 003632 constant entry internal dcl 515 ref 182 427 get_default_msg 004337 constant entry internal dcl 595 ref 460 664 720 get_menu_choice 004574 constant entry internal dcl 625 ref 198 203 468 478 list 005705 constant entry internal dcl 733 ref 480 minus_suffix 004106 constant entry internal dcl 570 ref 564 validate_file 006152 constant entry internal dcl 771 ref 265 500 xmail_select_file_ 000724 constant entry external dcl 132 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11006 11124 10206 11016 Length 11550 10206 116 407 577 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_select_file_ 438 external procedure is an external procedure. on unit on line 176 64 on unit begin block on line 230 108 begin block uses auto adjustable storage. GET_PATHNAME 96 internal procedure calls itself recursively. MAIN 184 internal procedure enables or reverts conditions. on unit on line 396 64 on unit on unit on line 421 64 on unit get_candidates 130 internal procedure is called by several nonquick procedures. minus_suffix 81 internal procedure uses auto adjustable storage, and uses returns(char(*)) or returns(bit(*)). get_default_msg 204 internal procedure is called by several nonquick procedures. get_caller_msg 166 internal procedure is called by several nonquick procedures. get_menu_choice 134 internal procedure is called by several nonquick procedures. list internal procedure shares stack frame of internal procedure MAIN. validate_file 190 internal procedure is called by several nonquick procedures. explain_question 126 internal procedure is called by several nonquick procedures. exclude_this_segment 88 internal procedure is called by several nonquick procedures. CLEANUP 98 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME CLEANUP 000100 cleanup_code CLEANUP GET_PATHNAME 000100 address_type GET_PATHNAME MAIN 000124 index list begin block on line 230 000100 temp_address begin block on line 230 exclude_this_segment 000100 exclude_flag exclude_this_segment 000101 i exclude_this_segment 000102 match_code exclude_this_segment explain_question 000100 info_name explain_question get_caller_msg 000100 prompt get_caller_msg get_candidates 000100 exclude_map get_candidates 000116 i get_candidates 000117 j get_candidates 000120 seg_name get_candidates get_default_msg 000100 prompt get_default_msg get_menu_choice 000100 code get_menu_choice 000101 index get_menu_choice 000102 selected_create get_menu_choice minus_suffix 000100 reverse_name minus_suffix 000100 reverse_suffix minus_suffix validate_file 000100 filename validate_file 000110 link_type validate_file 000111 entry_type validate_file 000121 type validate_file xmail_select_file_ 000100 user_id xmail_select_file_ 000120 foreign_user_addr_ptr xmail_select_file_ 000122 full_pathname xmail_select_file_ 000174 mt_address_ptr xmail_select_file_ 000176 Cant_get_list xmail_select_file_ 000200 Area_ptr xmail_select_file_ 000202 Default_file xmail_select_file_ 000212 Dyn_menup xmail_select_file_ 000214 entryname xmail_select_file_ 000224 Excluding_some_names xmail_select_file_ 000225 N_names xmail_select_file_ 000226 Names_ptr xmail_select_file_ 000230 new_ok xmail_select_file_ 000231 old_ok xmail_select_file_ 000232 opt xmail_select_file_ 000233 Own_msg xmail_select_file_ 000234 Prompt xmail_select_file_ 000335 Selected_dir xmail_select_file_ 000407 Selected_file xmail_select_file_ 000426 response xmail_select_file_ 000527 selecting xmail_select_file_ 000530 starname xmail_select_file_ 000540 star_entry_count xmail_select_file_ 000542 star_entry_ptr xmail_select_file_ 000544 star_names_ptr xmail_select_file_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block 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 alloc_auto_adj mpfx2 mdfx1 enable_op shorten_stack ext_entry_desc int_entry int_entry_desc reverse_cs set_chars_eis index_chars_eis return_chars_eis op_alloc_ op_freen_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ fs_util_$get_type get_system_free_area_ hcs_$star_ hcs_$status_minf ioa_ ioa_ ioa_$nnl ioa_$rsnnl mail_system_$get_address_pathname mail_system_$get_address_type mail_system_$get_mail_table_address match_star_name_ mlsys_utils_$parse_address_text timer_manager_$sleep xmail_dyn_menu_$create xmail_dyn_menu_$create_w_trailer xmail_dyn_menu_$free xmail_error_$no_code xmail_error_$no_code xmail_error_$no_code xmail_error_$no_code xmail_error_$no_print xmail_get_dyn_choice_ xmail_get_dyn_choice_$trailer xmail_get_str_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$dirseg error_table_$namedup error_table_$no_info error_table_$noentry error_table_$nomatch mlsys_et_$invalid_address_syntax mlsys_et_$no_address_pathname xmail_data_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 132 000714 134 000764 135 000765 136 000766 137 000772 139 000773 141 001043 142 001044 143 001046 144 001052 146 001053 148 001130 149 001132 150 001133 151 001137 154 001140 163 001205 164 001206 165 001212 166 001217 167 001224 168 001225 169 001234 170 001242 171 001244 172 001247 174 001252 176 001260 178 001302 180 001321 182 001323 184 001353 185 001360 187 001362 188 001364 191 001365 193 001373 194 001375 195 001400 197 001402 198 001405 201 001427 203 001507 216 001526 219 001532 221 001536 223 001542 225 001615 226 001632 227 001673 228 001700 229 001724 230 001753 231 001761 233 002003 232 002006 233 002036 234 002060 235 002063 236 002121 238 002124 230 002125 240 002126 241 002164 243 002165 245 002166 246 002201 248 002202 249 002203 250 002205 251 002242 253 002243 254 002253 255 002255 256 002313 259 002314 260 002335 261 002336 263 002341 265 002342 266 002362 268 002364 269 002405 270 002411 271 002412 273 002413 274 002416 278 002417 280 002420 282 002424 284 002425 291 002433 292 002446 294 002451 295 002463 296 002466 297 002467 298 002477 300 002534 302 002535 303 002551 306 002566 394 002567 396 002575 397 002611 400 002617 401 002621 402 002625 403 002627 404 002634 405 002635 406 002644 407 002652 408 002654 409 002657 411 002662 413 002670 414 002672 416 002723 419 002724 421 002732 423 002754 425 002774 427 002776 429 003027 431 003035 433 003037 434 003041 437 003042 439 003045 441 003050 442 003113 444 003114 446 003117 447 003141 448 003145 450 003164 451 003166 452 003212 454 003227 458 003230 460 003242 462 003251 463 003254 464 003257 466 003262 468 003265 472 003310 474 003371 476 003404 478 003411 480 003426 481 003427 482 003430 484 003444 485 003476 486 003502 488 003503 490 003510 491 003532 492 003536 494 003537 498 003543 500 003550 501 003571 503 003574 504 003615 505 003621 508 003622 510 003623 512 003630 515 003631 540 003652 541 003653 543 003655 545 003720 548 003723 549 003733 552 003771 553 003775 555 003777 557 004001 559 004012 560 004023 561 004035 563 004042 564 004043 565 004101 566 004102 568 004104 570 004105 574 004126 575 004141 586 004154 587 004205 589 004236 591 004275 595 004336 601 004344 605 004423 609 004475 613 004505 619 004513 621 004563 625 004573 646 004607 648 004614 650 004617 652 004665 653 004725 659 004726 662 004740 663 004741 664 004744 665 004753 666 004756 669 004757 671 004771 672 005031 674 005053 677 005054 679 005153 683 005234 684 005236 685 005246 686 005251 687 005311 688 005312 690 005353 692 005355 694 005424 695 005464 698 005465 700 005466 702 005467 704 005517 706 005531 708 005533 709 005574 711 005616 713 005617 715 005622 717 005626 718 005634 719 005635 720 005640 721 005647 722 005652 723 005653 725 005667 726 005670 728 005703 731 005704 733 005705 749 005706 751 005711 752 005752 755 005753 757 005755 758 006016 761 006017 763 006045 764 006055 766 006106 767 006133 768 006135 769 006150 771 006151 805 006165 807 006167 809 006204 811 006246 813 006267 814 006273 815 006331 818 006332 820 006333 822 006373 824 006400 825 006425 828 006427 830 006434 831 006435 833 006437 836 006504 839 006526 841 006527 842 006530 844 006532 845 006577 847 006621 849 006622 851 006624 852 006671 854 006713 856 006714 858 006716 860 006725 861 006727 864 006730 866 006733 868 006740 869 006741 872 006742 873 006744 875 007010 879 007011 881 007016 885 007067 888 007070 890 007077 891 007101 894 007145 898 007167 905 007170 915 007176 916 007265 917 007303 920 007314 940 007330 942 007331 943 007341 944 007367 945 007371 946 007373 950 007374 953 007377 954 007411 956 007433 957 007435 959 007436 961 007440 966 007444 971 007452 972 007507 973 007516 974 007527 975 007534 976 007545 980 007601 ----------------------------------------------------------- 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