COMPILATION LISTING OF SEGMENT print_mail Compiled by: Multics PL/I Compiler, Release 32e, of September 22, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/02/89 0820.1 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(89-04-18,Lee), approve(89-05-10,MCR8103), 13* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 14* phx20253, phx18857, Mail 454 - modified the contents of the blast message 15* to remove references to EXL; reformatting. 16* END HISTORY COMMENTS */ 17 18 19 /* format: off */ 20 21 /* The Multics print_mail command: prints the messages in a mailbox and asks whether to delete each one after printing */ 22 23 /* Created: September 1982 by G. Palter by merging print_mail_command_ and the appropriate code from read_mail */ 24 /* Modified: 16 November 1979 by G. Palter to honor acknowledgements */ 25 /* Modified: 6 August 1981 by G. Palter to set query_info.version and recognize "y" and "n" now that command_query_ 26* recognizes them */ 27 /* Modified: June 1983 by G. Palter to convert to new mail system interface and remove all dependencies on read_mail as a 28* prelude to possible future bundling */ 29 30 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 31 32 33 print_mail: 34 prm: 35 procedure () options (variable); 36 37 38 dcl argument character (argument_lth) unaligned based (argument_ptr); 39 dcl argument_ptr pointer; 40 dcl argument_lth fixed binary (21); 41 dcl (n_arguments, argument_idx) fixed binary; 42 43 dcl 1 local_oo aligned like open_options; 44 dcl 1 local_pcao aligned like parse_ca_options; 45 dcl 1 local_fmo aligned like format_message_options; 46 47 dcl sci_ptr pointer; 48 49 dcl have_mailbox bit (1) aligned; /* ON => we've got a mailbox already */ 50 dcl (mailbox_dirname, mailbox_printing_name) character (168); 51 dcl mailbox_ename character (32); 52 53 dcl formatting_mode fixed binary; 54 dcl (acknowledge, brief, display_message_count, interactive_messages, list, mail, reverse) bit (1) aligned; 55 56 dcl (first_message, last_message, current_message, direction) fixed binary; 57 dcl processing_message bit (1) aligned; 58 dcl disposition character (32) varying; 59 60 dcl code fixed binary (35); 61 62 dcl first_invocation bit (1) aligned static initial ("1"b); 63 64 dcl PRINT_MAIL character (32) static options (constant) initial ("print_mail"); 65 dcl PRINT_MAIL_VERSION character (32) static options (constant) initial ("3.0a"); 66 dcl PRINT_MAIL_SPECIAL_MESSAGE character (256) varying static options (constant) initial (""); 67 68 dcl mlsys_data_$user_default_mailbox_address pointer external; 69 70 dcl iox_$user_output pointer external; 71 72 /* format: off */ 73 dcl (error_table_$inconsistent, error_table_$too_many_args, mlsys_et_$cant_be_deleted, mlsys_et_$mailbox_exists) 74 fixed binary (35) external; 75 /* format: on */ 76 77 dcl active_fnc_err_ entry () options (variable); 78 dcl com_err_ entry () options (variable); 79 dcl command_query_ entry () options (variable); 80 dcl continue_to_signal_ entry (fixed binary (35)); 81 dcl cu_$af_return_arg entry (fixed binary, pointer, fixed binary (21)) returns (fixed binary (35)); 82 dcl cu_$arg_list_ptr entry () returns (pointer); 83 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 84 dcl ioa_ entry () options (variable); 85 dcl iox_$control entry (pointer, character (*), pointer, fixed binary (35)); 86 dcl mail_system_$acknowledge_message entry (pointer, fixed binary (35)); 87 dcl mail_system_$close_mailbox entry (pointer, pointer, fixed binary (35)); 88 dcl mail_system_$expunge_messages entry (pointer, fixed binary (35)); 89 dcl mail_system_$get_address_pathname entry (pointer, character (*), character (*), character (*), fixed binary (35)); 90 dcl mail_system_$mark_message_for_deletion entry (pointer, fixed binary (35)); 91 dcl mail_system_$open_mailbox entry (character (*), character (*), pointer, character (8), pointer, fixed binary (35)); 92 dcl mail_system_$read_message entry (pointer, fixed binary, fixed binary (35)); 93 dcl mail_system_$unmark_message_for_deletion entry (pointer, fixed binary (35)); 94 dcl mlsys_utils_$create_default_mailbox entry (fixed binary (35)); 95 dcl mlsys_utils_$parse_mailbox_control_args 96 entry (pointer, fixed binary, pointer, character (*), character (*), fixed binary (35)); 97 dcl mlsys_utils_$print_message entry (pointer, pointer, pointer, fixed binary (35)); 98 dcl mlsys_utils_$print_message_summary 99 entry (pointer, fixed binary, bit (1) aligned, fixed binary, pointer, fixed binary (35)); 100 dcl mlsys_utils_$print_message_summary_header entry (fixed binary, pointer, fixed binary (35)); 101 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 102 dcl ssu_$abort_line entry () options (variable); 103 dcl ssu_$arg_count entry (pointer, fixed binary); 104 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 105 dcl ssu_$destroy_invocation entry (pointer); 106 dcl ssu_$print_blast entry (pointer, pointer, fixed binary, character (*) varying, fixed binary (35)); 107 dcl ssu_$print_message entry () options (variable); 108 dcl ssu_$record_usage entry (pointer, pointer, fixed binary (35)); 109 dcl ssu_$set_debug_mode entry (pointer, bit (1) aligned); 110 dcl ssu_$standalone_invocation entry (pointer, character (*), character (*), pointer, entry, fixed binary (35)); 111 112 dcl (cleanup, program_interrupt, sub_error_) condition; 113 114 dcl (addr, codeptr, index, length, null, string, substr, translate) builtin; 115 116 /* print_mail: prm: entry options (variable); */ 117 118 sci_ptr, mailbox_ptr = null (); /* for cleanup handler */ 119 120 on condition (cleanup) call release_data_structures (); 121 122 call ssu_$standalone_invocation (sci_ptr, PRINT_MAIL, PRINT_MAIL_VERSION, cu_$arg_list_ptr (), 123 abort_print_mail_command, code); 124 if code ^= 0 then do; /* please forgive the following, but ... */ 125 if cu_$af_return_arg (0, (null ()), (0)) = 0 then 126 call active_fnc_err_ (code, PRINT_MAIL, "Can not establish standalone subsystem invocation."); 127 else call com_err_ (code, PRINT_MAIL, "Can not establish standalone subsystem invocation."); 128 return; 129 end; 130 131 call ssu_$arg_count (sci_ptr, n_arguments); /* will abort if not a command */ 132 133 134 /* Initialize default options: reading the user's profile will go here someday */ 135 136 have_mailbox = "0"b; /* haven't seen a mailbox yet */ 137 138 local_oo.version = OPEN_OPTIONS_VERSION_2; 139 local_oo.sender_selection_mode = ACCESSIBLE_MESSAGES; 140 /* read all messages (if possible) */ 141 local_oo.message_reading_level = READ_KEYS; /* will fetch messages one at a time (faster startup) */ 142 143 mail, interactive_messages = "1"b; /* assume ordinary mail and interactive messages by default */ 144 acknowledge, display_message_count = "1"b; /* -acknowledge, -count */ 145 brief, list, reverse = "0"b; /* -long, -no_list, -no_reverse */ 146 147 local_fmo.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 148 local_fmo.line_length = 0; /* use line length of the terminal */ 149 local_fmo.include_body = "1"b; 150 formatting_mode = DEFAULT_FORMATTING_MODE; /* default formatting (-header) */ 151 152 153 /* Process arguments */ 154 155 local_pcao.version = PARSE_CA_OPTIONS_VERSION_1; 156 local_pcao.logbox_creation_mode, /* logbox/savebox must already exist */ 157 local_pcao.savebox_creation_mode = DONT_CREATE_MAILBOX; 158 string (local_pcao.flags) = ""b; 159 local_pcao.abort_on_errors = "1"b; /* any errors are immediately fatal */ 160 local_pcao.validate_addresses = "1"b; /* insure that any mailbox specified actually exists */ 161 162 do argument_idx = 1 to n_arguments; 163 164 call ssu_$arg_ptr (sci_ptr, argument_idx, argument_ptr, argument_lth); 165 166 if index (argument, "-") = 1 then /* a control argument */ 167 if (argument = "-brief") | (argument = "-bf") then brief = "1"b; 168 else if (argument = "-long") | (argument = "-lg") then brief = "0"b; 169 170 else if (argument = "-long_header") | (argument = "-lghe") then 171 formatting_mode = LONG_FORMATTING_MODE; 172 else if (argument = "-header") | (argument = "-he") then formatting_mode = DEFAULT_FORMATTING_MODE; 173 else if (argument = "-brief_header") | (argument = "-bfhe") then 174 formatting_mode = BRIEF_FORMATTING_MODE; 175 else if (argument = "-no_header") | (argument = "-nhe") then formatting_mode = NONE_FORMATTING_MODE; 176 177 else if (argument = "-acknowledge") | (argument = "-ack") then acknowledge = "1"b; 178 else if (argument = "-no_acknowledge") | (argument = "-nack") then acknowledge = "0"b; 179 180 else if (argument = "-interactive_messages") | (argument = "-im") then interactive_messages = "1"b; 181 else if (argument = "-no_interactive_messages") | (argument = "-nim") then 182 interactive_messages = "0"b; 183 184 else if (argument = "-mail") | (argument = "-ml") then mail = "1"b; 185 else if (argument = "-no_mail") | (argument = "-nml") then mail = "0"b; 186 187 else if (argument = "-count") | (argument = "-ct") then display_message_count = "1"b; 188 else if (argument = "-no_count") | (argument = "-nct") then display_message_count = "0"b; 189 190 else if (argument = "-reverse") | (argument = "-rv") then reverse = "1"b; 191 else if (argument = "-no_reverse") | (argument = "-nrv") then reverse = "0"b; 192 193 else if (argument = "-list") | (argument = "-ls") then list = "1"b; 194 else if (argument = "-no_list") | (argument = "-nls") then list = "0"b; 195 196 else if (argument = "-accessible") | (argument = "-acc") then 197 local_oo.sender_selection_mode = ACCESSIBLE_MESSAGES; 198 else if (argument = "-all") | (argument = "-a") then local_oo.sender_selection_mode = ALL_MESSAGES; 199 else if argument = "-own" then local_oo.sender_selection_mode = OWN_MESSAGES; 200 else if argument = "-not_own" then local_oo.sender_selection_mode = NOT_OWN_MESSAGES; 201 202 else if (argument = "-debug") | (argument = "-db") then call ssu_$set_debug_mode (sci_ptr, "1"b); 203 else if (argument = "-no_debug") | (argument = "-ndb") then call ssu_$set_debug_mode (sci_ptr, "0"b); 204 205 else go to TRY_ARGUMENT_AS_MAILBOX_PATHNAME; 206 /* unknown control argument: maybe a mailbox specifier? */ 207 208 else do; 209 TRY_ARGUMENT_AS_MAILBOX_PATHNAME: /* not a control argument: must be a mailbox specifier */ 210 call mlsys_utils_$parse_mailbox_control_args (sci_ptr, argument_idx, addr (local_pcao), 211 mailbox_dirname, mailbox_ename, (0)); 212 /* ... above entrypoint aborts us if anything's wrong */ 213 argument_idx = argument_idx - 1; /* ... do loop will increment it */ 214 if have_mailbox then /* ... this one's OK and we already have one (sigh) */ 215 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "Only one mailbox may be specified."); 216 have_mailbox = "1"b; /* ... now we've got the mailbox to be printed */ 217 end; 218 end; 219 220 if ^mail & ^interactive_messages then 221 call ssu_$abort_line (sci_ptr, error_table_$inconsistent, """-no_mail"" and ""-no_interactive_messages"""); 222 223 if mail & interactive_messages then /* want all types of messages */ 224 local_oo.message_selection_mode = ALL_MESSAGES; 225 else if mail then /* only want ordinary mail messages */ 226 local_oo.message_selection_mode = ORDINARY_MESSAGES; 227 else local_oo.message_selection_mode = INTERACTIVE_MESSAGES; 228 /* interactive messages only */ 229 230 if formatting_mode = BRIEF_FORMATTING_MODE then do; 231 local_fmo.envelope_formatting_mode = NONE_FORMATTING_MODE; 232 local_fmo.header_formatting_mode, local_fmo.redistributions_list_formatting_mode = BRIEF_FORMATTING_MODE; 233 end; 234 else local_fmo.envelope_formatting_mode, local_fmo.header_formatting_mode, 235 local_fmo.redistributions_list_formatting_mode = formatting_mode; 236 237 238 /* If no mailbox was given on the command line, use the user's default mailbox which is created if necessary */ 239 240 if ^have_mailbox then do; 241 call mail_system_$get_address_pathname (mlsys_data_$user_default_mailbox_address, mailbox_dirname, 242 mailbox_ename, ((32)" "), code); 243 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Getting the pathname of your mailbox."); 244 245 call mlsys_utils_$create_default_mailbox (code); 246 if code = 0 then /* just created it ... */ 247 call ssu_$print_message (sci_ptr, 0, "Created ^a.", pathname_ (mailbox_dirname, mailbox_ename)); 248 else if code ^= mlsys_et_$mailbox_exists then 249 call ssu_$abort_line (sci_ptr, code, "Attempting to create your default mailbox. ^a", 250 pathname_ (mailbox_dirname, mailbox_ename)); 251 end; 252 253 254 /* Open the mailbox, check the salvaged flag, and report the message count */ 255 256 call mail_system_$open_mailbox (mailbox_dirname, mailbox_ename, addr (local_oo), MAILBOX_VERSION_2, mailbox_ptr, 257 code); 258 if code ^= 0 then 259 call ssu_$abort_line (sci_ptr, code, "Attempting to open ^a.", pathname_ (mailbox_dirname, mailbox_ename)); 260 261 if mailbox.mailbox_type = USER_DEFAULT_MAILBOX then mailbox_printing_name = "your mailbox"; 262 else if mailbox.mailbox_type = USER_LOGBOX then mailbox_printing_name = "your logbox"; 263 else mailbox_printing_name = pathname_ (mailbox_dirname, mailbox_ename); 264 265 if mailbox.salvaged then /* something was probably lost ... */ 266 if brief then 267 call ssu_$print_message (sci_ptr, 0, "Mailbox has been salvaged."); 268 else call ssu_$print_message (sci_ptr, 0, 269 "Warning: ^a^a has been salvaged since it was last read.^/Some messages may have been lost.", 270 translate (substr (mailbox_printing_name, 1, 1), "Y", "y"), substr (mailbox_printing_name, 2)); 271 272 if display_message_count then /* user wants to know how much is there */ 273 if mailbox.n_messages = 0 then 274 if brief then 275 call ioa_ ("No mail."); 276 else call ioa_ ("^[You have no mail^s^;^[You have no messages^;There is no mail^]^]^[ in ^a^].", 277 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 278 (mailbox.sender_selection_mode = OWN_MESSAGES), 279 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), mailbox_printing_name); 280 else if mailbox.n_messages = 1 then 281 if brief then 282 call ioa_ ("One message."); 283 else call ioa_ ( 284 "^[You have one message^s^;^[You have one message^;There is one message^]^]^[ in ^a^].", 285 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 286 (mailbox.sender_selection_mode = OWN_MESSAGES), 287 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), mailbox_printing_name); 288 else /*** if mailbox.n_messages > 1 then */ 289 do; 290 if brief then 291 call ioa_ ("^d messages.", mailbox.n_messages); 292 else call ioa_ ("^[You have^s^;^[You have^;There are^]^] ^d messages^[ in ^a^].", 293 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 294 (mailbox.sender_selection_mode = OWN_MESSAGES), mailbox.n_messages, 295 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), mailbox_printing_name); 296 end; 297 298 if mailbox.n_messages = 0 then go to RETURN_FROM_PRINT_MAIL; 299 /* mailbox is empty: nothing else to do */ 300 301 302 /* Mailbox is open and there are messages present: this invocation is, therefore, going to do some real work */ 303 304 if first_invocation then 305 call ssu_$print_blast (sci_ptr, codeptr (print_mail), 3, PRINT_MAIL_SPECIAL_MESSAGE, (0)); 306 else call ssu_$record_usage (sci_ptr, codeptr (print_mail), (0)); 307 first_invocation = "0"b; 308 309 if reverse then do; /* go backwards through the messages */ 310 first_message = mailbox.n_messages; 311 last_message = 1; 312 direction = -1; 313 end; 314 else do; /* go forward through the messages */ 315 first_message = 1; 316 last_message = mailbox.n_messages; 317 direction = 1; 318 end; 319 320 321 /* Summarize the messages if requested via "-list" */ 322 323 if list then do; 324 call mlsys_utils_$print_message_summary_header (0, iox_$user_output, code); 325 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Printing listing header line."); 326 327 do current_message = first_message to last_message by direction; 328 call mail_system_$read_message (mailbox_ptr, current_message, code); 329 if code ^= 0 then /* couldn't read the message */ 330 call ssu_$abort_line (sci_ptr, code, "Reading message #^d from ^a.", current_message, 331 mailbox_printing_name); 332 message_ptr = mailbox.messages (current_message).message_ptr; 333 call mlsys_utils_$print_message_summary (message_ptr, current_message, "0"b, 0, iox_$user_output, 334 code); 335 if code ^= 0 then 336 call ssu_$abort_line (sci_ptr, code, "Printing listing of message #^d.", current_message); 337 end; 338 end; 339 340 /* Main processing loop: print a message and ask user for disposition */ 341 342 query_info.version = query_info_version_5; 343 344 processing_message = "0"b; /* handler only valid when playing with a message */ 345 346 on condition (program_interrupt) 347 begin; 348 if processing_message then 349 go to ASK_MESSAGE_DISPOSITION; 350 else call continue_to_signal_ ((0)); 351 end; 352 353 354 do current_message = first_message to last_message by direction; 355 356 REPRINT_THE_MESSAGE: 357 if mailbox.messages (current_message).message_ptr = null () then do; 358 call mail_system_$read_message (mailbox_ptr, current_message, code); 359 if code ^= 0 then 360 call ssu_$abort_line (sci_ptr, code, 361 "Reading message #^d from ^a. No messages will be deleted.", current_message, 362 mailbox_printing_name); 363 end; 364 365 message_ptr = mailbox.messages (current_message).message_ptr; 366 367 processing_message = "1"b; /* now OK to ask the disposition */ 368 369 /*** following ioa_ call is OK until messages appear with sections that aren't preformatted */ 370 call ioa_ ("^/ #^d^[ (^d line^[s^] in body)^]:", current_message, (message.total_lines ^= -1), 371 message.total_lines, (message.total_lines ^= 1)); 372 call mlsys_utils_$print_message (message_ptr, addr (local_fmo), iox_$user_output, code); 373 if code ^= 0 then 374 call ssu_$abort_line (sci_ptr, code, "Attempting to print message #^d. No messages will be deleted.", 375 current_message); 376 call ioa_ (" ---(^d)---", current_message); 377 call iox_$control (iox_$user_output, "reset_more", null (), (0)); 378 379 if acknowledge & message.must_be_acknowledged then 380 call mail_system_$acknowledge_message (message_ptr, (0)); 381 382 ASK_MESSAGE_DISPOSITION: 383 call command_query_ (addr (query_info), disposition, PRINT_MAIL, "Delete #^d?", current_message); 384 385 if disposition = "y" then disposition = "yes"; 386 else if disposition = "n" then disposition = "no"; 387 else if disposition = "q" then disposition = "quit"; 388 else if (disposition = "print") | (disposition = "pr") | (disposition = "p") then disposition = "reprint"; 389 390 if disposition = "yes" then do; /* mark the message for deletion */ 391 if message.can_be_deleted then 392 call mail_system_$mark_message_for_deletion (message_ptr, code); 393 else code = mlsys_et_$cant_be_deleted; 394 if code ^= 0 then /* ... couldn't delete it */ 395 if code = mlsys_et_$cant_be_deleted then 396 call ssu_$print_message (sci_ptr, 0, 397 "Insufficient access to delete message #^d. Continuing to next message.", 398 current_message); 399 else call ssu_$abort_line (sci_ptr, code, 400 "Attempting to delete message #^d. No messages will be deleted.", current_message); 401 end; 402 403 else if disposition = "no" then /* do not delete this message */ 404 if message.marked_for_deletion then do; /* ... and somehow they changed their mind */ 405 call mail_system_$unmark_message_for_deletion (message_ptr, code); 406 if code ^= 0 then 407 call ssu_$abort_line (sci_ptr, code, 408 "Attempting to retrieve message #^d. No messages will be deleted.", current_message); 409 end; 410 else ; /* ... but it's not marked for deletion anyway */ 411 412 else if disposition = "reprint" then /* reprint the message and ask again */ 413 go to REPRINT_THE_MESSAGE; 414 415 else if disposition = "quit" then /* delete marked messages and exit */ 416 go to DELETE_MESSAGES; 417 418 else if disposition = "abort" then /* exit without deleting any marked messages */ 419 go to RETURN_FROM_PRINT_MAIL; 420 421 else if disposition = "?" then do; 422 call ioa_ ("Acceptable answers and meanings:"); 423 call ioa_ ("^3xyes^15tMark this message for deletion."); 424 call ioa_ ("^3xno^15tLeave this message untouched."); 425 call ioa_ ("^3xreprint^15tRe-print the most recent message."); 426 call ioa_ ("^3xquit^15tExit print_mail and delete all message marked for deletion."); 427 call ioa_ ("^3xabort^15tExit print_mail without deleting any messages."); 428 call ioa_ ("^3x?^15tPrint this list."); 429 call ioa_ ("Use the program_interrupt command after interrupting the printing of a message."); 430 go to ASK_MESSAGE_DISPOSITION; 431 end; 432 433 else do; /* unknown answer */ 434 call ssu_$print_message (sci_ptr, 0, "Unrecognized answer ""^a"". Type ""?"" for a request list.", 435 disposition); 436 go to ASK_MESSAGE_DISPOSITION; 437 end; 438 439 processing_message = "0"b; /* done with this message: shut off pi handler */ 440 end; 441 442 /* User exited the main loop either by "quit" or reading all messages: delete any messages marked for deletion */ 443 444 DELETE_MESSAGES: 445 processing_message = "0"b; /* make sure this is off */ 446 447 on condition (sub_error_) 448 begin; /* in case something goes wrong while deleting */ 449 450 dcl 1 ci aligned like condition_info; 451 452 ci.version = condition_info_version_1; 453 call find_condition_info_ (null (), addr (ci), (0)); 454 455 sub_error_info_ptr = ci.info_ptr; 456 if sub_error_info.name ^= "mail_system_" then do; 457 call continue_to_signal_ ((0)); /* not being reported by the mail system */ 458 go to CONTINUE_FROM_HANDLER; 459 end; 460 461 delete_error_info_ptr = sub_error_info.info_ptr; 462 463 call ssu_$print_message (sci_ptr, delete_error_info.code, 464 "Unable to delete message #^d.^[ ^a^] Deletion of other messages continues.", 465 delete_error_info.message_number, (length (delete_error_info.additional_info) > 0), 466 delete_error_info.additional_info); 467 go to CALL_EXPUNGE_MESSAGES; 468 469 CONTINUE_FROM_HANDLER: 470 end; 471 472 CALL_EXPUNGE_MESSAGES: 473 call mail_system_$expunge_messages (mailbox_ptr, code); 474 475 revert condition (sub_error_); 476 477 /* User exited the mail loop via "abort": do not delete any messages; also the target of error transfers */ 478 479 RETURN_FROM_PRINT_MAIL: 480 processing_message = "0"b; /* make sure this is off */ 481 482 call release_data_structures (); 483 484 return; 485 486 487 488 /* Release any data structures created herein */ 489 490 release_data_structures: 491 procedure (); 492 493 dcl 1 local_co aligned like close_options; 494 495 if mailbox_ptr ^= null () then do; /* close the mailbox (and don't delete anything) */ 496 local_co.version = CLOSE_OPTIONS_VERSION_2; 497 string (local_co.flags) = ""b; /* ... sets perform_deletions off */ 498 call mail_system_$close_mailbox (mailbox_ptr, addr (local_co), (0)); 499 end; 500 501 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 502 503 return; 504 505 end release_data_structures; 506 507 508 509 /* Invoked by ssu_$abort_line and ssu_$abort_subsystem to terminate execution of print_mail */ 510 511 abort_print_mail_command: 512 procedure (); 513 514 go to RETURN_FROM_PRINT_MAIL; 515 516 end abort_print_mail_command; 517 1 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 1 2 /* Created: April 1983 by G. Palter */ 1 3 1 4 /* Definition of a mailbox as used by the Multics Mail System */ 1 5 1 6 dcl 1 mailbox aligned based (mailbox_ptr), 1 7 2 version character (8) unaligned, 1 8 2 reserved bit (144), /* for exclusive use of the mail system */ 1 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 1 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 1 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 1 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 1 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 1 14 2 flags, 1 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 1 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 1 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 1 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 1 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 1 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 1 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 1 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 1 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 1 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 1 25 3 key bit (72), /* unique key to read this message if not already read */ 1 26 3 message_ptr pointer; /* -> the message structure */ 1 27 1 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 1 29 1 30 dcl mailbox_ptr pointer; 1 31 1 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 1 33 1 34 1 35 /* Types of mailboxes distinguished by the mail system */ 1 36 1 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 1 38 USER_LOGBOX initial (2), /* the user's logbox */ 1 39 SAVEBOX initial (3), /* a savebox */ 1 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 1 41 fixed binary static options (constant); 1 42 1 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 518 519 2 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 2 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 2 7* Added seen switch to message. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Created: June 1983 by G. Palter */ 2 12 2 13 /* Definition of a message as used by the Multics Mail System */ 2 14 2 15 dcl 1 message aligned based (message_ptr), 2 16 2 version character (8) unaligned, 2 17 2 reserved bit (144), /* for exclusive use of the mail system */ 2 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 2 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 2 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 2 21 2 n_body_sections fixed binary, /* # of sections in the body */ 2 22 2 flags, 2 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 2 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 2 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 2 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 2 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 2 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 2 29 2 pad bit (36), 2 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 2 31 2 header, 2 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 2 33 3 access_class bit (72), /* AIM access class of this message */ 2 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 2 35 3 from pointer, /* -> address list of author(s) of the message */ 2 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 2 37 3 to pointer, /* -> address list of primary recipients */ 2 38 3 cc pointer, /* -> address list of secondary recipients */ 2 39 3 bcc pointer, /* -> address list of blind recipients */ 2 40 3 subject like message_text_field, /* subject of the message */ 2 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 2 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 2 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 2 44 2 body, 2 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 2 46 3 pad bit (36), 2 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 2 48 2 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 2 50 2 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 2 52 2 53 dcl message_ptr pointer; 2 54 2 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 2 56 message_references_list_n_references) 2 57 fixed binary; /* for exclusive use of the mail system */ 2 58 2 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 2 60 2 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 2 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 2 63 2 sender pointer, /* -> address of entity that mailed the message */ 2 64 2 trace pointer, /* -> message_trace describing how it got here */ 2 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 2 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 2 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 2 68 2 69 dcl message_envelope_ptr pointer; 2 70 2 71 2 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 2 73 2 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 2 75 2 pad pointer, /* forces even word alignment */ 2 76 2 version character (8) unaligned, 2 77 2 envelope like message_envelope; 2 78 2 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 2 80 2 81 dcl message_envelope_parameter_ptr pointer; 2 82 2 83 2 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 2 85* networks to reach this recipient */ 2 86 2 87 dcl 1 message_trace aligned based (message_trace_ptr), 2 88 2 version character (8) unaligned, 2 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 2 91 2 pad bit (36), 2 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 2 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 2 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 2 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 2 96 3 receiving_host character (256) varying, /* ... the host which received it */ 2 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 2 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 2 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 2 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 2 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 2 102 2 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 2 104 2 105 dcl message_trace_ptr pointer; 2 106 2 107 /* Definition of a message's redistributions list */ 2 108 2 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 2 110 2 version character (8) unaligned, 2 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 112 2 pad bit (36), 2 113 2 n_redistributions fixed binary, /* # of redistributions */ 2 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 2 115 like message_redistribution; /* the redistributions: oldest first */ 2 116 2 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 2 118 2 119 2 120 /* Definition of a single redistribution (forwarding) of a message */ 2 121 2 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 2 123 2 envelope like message_envelope, 2 124 2 header, 2 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 2 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 2 127 3 from pointer, /* -> address list of authors of this redistribution */ 2 128 3 to pointer, /* -> address list of recipients of the redistribution */ 2 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 2 130 2 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 2 132 based (message_redistribution.comment.text_ptr); 2 133 2 134 dcl message_redistribution_ptr pointer; 2 135 2 136 2 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 2 138 2 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 2 140 2 pad pointer, /* forces even word alignment */ 2 141 2 version character (8) unaligned, 2 142 2 redistribution like message_redistribution; 2 143 2 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 2 145 2 146 dcl message_redistribution_parameter_ptr pointer; 2 147 2 148 /* Definition of the list of user-defined fields in a message */ 2 149 2 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 2 151 2 version character (8) unaligned, 2 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 153 2 pad bit (36), 2 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 2 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 2 156 like message_user_field; /* the actual user-defined fields */ 2 157 2 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 2 159 2 160 2 161 /* Definition of a user defined message header field */ 2 162 2 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 2 164 2 header, 2 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 2 166 3 field_type fixed binary, /* type of data contained in this field */ 2 167 2 field_type_variable bit (144); /* the actual data (see below) */ 2 168 2 169 dcl message_user_field_ptr pointer; 2 170 2 171 2 172 /* Defined types of user defined fields */ 2 173 2 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 2 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 2 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 2 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 2 178 fixed binary static options (constant); 2 179 2 180 2 181 /* Structures used to access the data for the different types of user defined fields */ 2 182 2 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 2 184 2 header like message_user_field.header, 2 185 2 text like message_text_field; /* the message text */ 2 186 2 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 2 188 based (message_text_user_field.text.text_ptr); 2 189 2 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 2 191 2 header like message_user_field.header, 2 192 2 address_list_ptr pointer, /* -> the address list */ 2 193 2 pad bit (72); 2 194 2 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 2 196 2 header like message_user_field.header, 2 197 2 date_time fixed binary (71), /* the clock reading */ 2 198 2 pad bit (72); 2 199 2 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 2 201 2 header like message_user_field.header, 2 202 2 value fixed binary (35), /* the integer value */ 2 203 2 pad bit (108); 2 204 2 205 2 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 2 207 2 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 2 209 2 pad pointer, /* forces even word alignment */ 2 210 2 version character (8) unaligned, 2 211 2 user_field like message_user_field; 2 212 2 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 2 214 2 215 dcl message_user_field_parameter_ptr pointer; 2 216 2 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 2 218 2 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 2 220 2 version character (8) unaligned, 2 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 2 222 2 pad bit (36), 2 223 2 n_references fixed binary, /* # of references in this list */ 2 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 2 225 like message_reference; /* the references themselves */ 2 226 2 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 228 2 229 dcl message_references_list_ptr pointer; 2 230 2 231 2 232 /* Definition of a reference to another message */ 2 233 2 234 dcl 1 message_reference aligned based (message_reference_ptr), 2 235 2 message_id bit (72), /* ID of the other message */ 2 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 2 237 2 from pointer, /* -> address list of authors of the other message */ 2 238 2 subject like message_text_field; /* subject of the other message */ 2 239 2 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 2 241 based (message_reference.subject.text_ptr); 2 242 2 243 dcl message_reference_ptr pointer; 2 244 2 245 2 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 2 247 2 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 2 249 2 pad pointer, /* forces even word alignment */ 2 250 2 version character (8) unaligned, 2 251 2 reference like message_reference; 2 252 2 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 2 254 2 255 dcl message_reference_parameter_ptr pointer; 2 256 2 257 2 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 2 259 2 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 2 261 2 text_ptr pointer, /* -> the actual text */ 2 262 2 text_lth fixed binary (21), /* length of said text */ 2 263 2 flags, 2 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 2 265* OFF => the text will always be a single line */ 2 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 2 267 2 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 2 269 2 270 dcl message_text_field_ptr pointer; 2 271 2 272 /* Definition of a section of the body of a message */ 2 273 2 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 2 275 2 header, 2 276 3 section_type fixed binary, /* type of "text" stored in this section */ 2 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 2 278 2 section_type_variable bit (144); /* the actual data (see below) */ 2 279 2 280 dcl message_body_section_ptr pointer; 2 281 2 282 2 283 /* Defined types of message body sections */ 2 284 2 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 2 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 2 287 fixed binary static options (constant); 2 288 2 289 2 290 /* Structures used to access the data for the different types of message body sections */ 2 291 2 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 2 293 2 header like message_body_section.header, 2 294 2 text_ptr pointer, /* -> the text */ 2 295 2 text_lth fixed binary (21), /* length of said text in characters */ 2 296 2 reserved bit (36); /* for exclusive use of the mail system */ 2 297 2 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 2 299 based (message_preformatted_body_section.text_ptr); 2 300 2 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 2 302 2 header like message_body_section.header, 2 303 2 bit_string_ptr pointer, /* -> the bit string */ 2 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 2 305 2 reserved bit (36); /* for exclusive use of the mail system */ 2 306 2 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 2 308 based (message_bit_string_body_section.bit_string_ptr); 2 309 2 310 2 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 2 312 2 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 2 314 2 pad pointer, /* forces even word alignment */ 2 315 2 version character (8) unaligned, 2 316 2 section like message_body_section; 2 317 2 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 2 319 2 320 dcl message_body_section_parameter_ptr pointer; 2 321 2 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 520 521 3 1 /* BEGIN INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Options for the mail_system_$open_mailbox entrypoint */ 3 5 3 6 dcl 1 open_options aligned based (open_options_ptr), 3 7 2 version character (8), 3 8 2 message_selection_mode fixed binary, /* what types are to be read (all/ordinary/interactive) */ 3 9 2 sender_selection_mode fixed binary, /* selects messages by who sent them */ 3 10 2 message_reading_level fixed binary; /* specifies whether all or only part of a message is read */ 3 11 3 12 dcl OPEN_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsopn02"); 3 13 3 14 dcl open_options_ptr pointer; 3 15 3 16 3 17 dcl ALL_MESSAGES fixed binary static options (constant) initial (0); 3 18 /* read all messages in the mailbox ... 3 19* ... used as both a message and sender selection mode */ 3 20 3 21 /* Defined message selection modes */ 3 22 3 23 dcl (ORDINARY_MESSAGES initial (1), /* read only ordinary messages */ 3 24 INTERACTIVE_MESSAGES initial (2)) /* read only interactive messages */ 3 25 fixed binary static options (constant); 3 26 3 27 3 28 /* Defined sender selection modes */ 3 29 3 30 dcl (ACCESSIBLE_MESSAGES initial (-1), /* reads whatever messages are accessible */ 3 31 OWN_MESSAGES initial (1), /* reads only those messages sent by this user */ 3 32 NOT_OWN_MESSAGES initial (2)) /* reads only those messages not sent by this user */ 3 33 fixed binary static options (constant); 3 34 3 35 3 36 /* Defined message reading levels */ 3 37 3 38 dcl (READ_KEYS initial (1), /* reads only the unique key of each message */ 3 39 READ_MESSAGES initial (2)) /* reads the entire content of each message */ 3 40 fixed binary static options (constant); 3 41 3 42 /* END INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 522 523 4 1 /* BEGIN INCLUDE FILE ... mlsys_delete_error_info.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Describes why the mail system could not delete a message which was marked for deletion: passed to the caller of 4 5* mail_system_$close_mailbox or mail_system_$expunge_messages via sub_err_ */ 4 6 4 7 dcl 1 delete_error_info aligned based (delete_error_info_ptr), 4 8 2 version character (8) unaligned, 4 9 2 message_number fixed binary, /* set to index of message which couldn't be deleted */ 4 10 2 code fixed binary (35), /* set to indicate why message could not be deleted */ 4 11 2 additional_info character (256) varying; /* set to additional information to be displayed with the 4 12* error message for the above status code */ 4 13 4 14 dcl DELETE_ERROR_INFO_VERSION_1 character (8) static options (constant) initial ("mlsdel01"); 4 15 4 16 dcl delete_error_info_ptr pointer; 4 17 4 18 /* END INCLUDE FILE ... mlsys_delete_error_info.incl.pl1 */ 524 525 5 1 /* BEGIN INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 5 2 /* Created: June 1983 by G. Palter */ 5 3 5 4 /* Options for the mail_system_$close_mailbox entrypoint */ 5 5 5 6 dcl 1 close_options aligned based (close_options_ptr), 5 7 2 version character (8) unaligned, 5 8 2 flags, 5 9 3 perform_deletions bit (1) unaligned, /* ON => perform deletions requested earlier */ 5 10 3 report_deletion_errors bit (1) unaligned, /* ON => report problems deleting via sub_err_ */ 5 11 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 5 12 5 13 dcl CLOSE_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsclo02"); 5 14 5 15 dcl close_options_ptr pointer; 5 16 5 17 /* END INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 526 527 6 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 6 4 6 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 6 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 6 7 6 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 6 9 2 version character (8) unaligned, 6 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 6 11* the user's logbox, address/mailbox validation is requested, 6 12* and the logbox does not exist */ 6 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 6 14 2 flags, 6 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 6 16* the first error); OFF => use ssu_$print_message */ 6 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 6 18* OFF => only validate the command/request line syntax */ 6 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 6 20 6 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 6 22 6 23 dcl parse_ca_options_ptr pointer; 6 24 6 25 6 26 /* Defined logbox/savebox creation modes */ 6 27 6 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 6 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 6 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 6 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 6 32 fixed binary static options (constant); 6 33 6 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 528 529 7 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 7 5 7 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 7 7 2 version character (8) unaligned, 7 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 7 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 7 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 7 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 7 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 7 13* OFF => exclude the message body */ 7 14 7 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 7 16 7 17 dcl format_message_options_ptr pointer; 7 18 7 19 7 20 /* Defined formatting modes */ 7 21 7 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 7 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 7 24* message; not valid for the envelope */ 7 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 7 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 7 27 fixed binary static options (constant); 7 28 7 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 530 531 8 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 8 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 8 3 /* version number changed to 4, 08/10/78 WOS */ 8 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 8 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 8 6 8 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 8 8 2 version fixed bin, /* version of this structure - must be set, see below */ 8 9 2 switches aligned, /* various bit switch values */ 8 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 8 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 8 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 8 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 8 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 8 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 8 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 8 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 8 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 8 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 8 20 8 21 /* Limit of data defined for version 2 */ 8 22 8 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 8 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 8 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 8 26 /* minimum of 30 seconds required for repeat */ 8 27 /* otherwise, no repeat will occur */ 8 28 /* Limit of data defined for version 4 */ 8 29 8 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 8 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 8 32 8 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 8 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 8 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 8 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 8 37 8 38 /* END INCLUDE FILE query_info.incl.pl1 */ 532 533 9 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 9 2 9 3 /* Structure for find_condition_info_. 9 4* 9 5* Written 1-Mar-79 by M. N. Davidoff. 9 6**/ 9 7 9 8 /* automatic */ 9 9 9 10 declare condition_info_ptr pointer; 9 11 9 12 /* based */ 9 13 9 14 declare 1 condition_info aligned based (condition_info_ptr), 9 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 9 16 2 version fixed binary, /* Must be 1 */ 9 17 2 condition_name char (32) varying, /* name of condition */ 9 18 2 info_ptr pointer, /* pointer to the condition data structure */ 9 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 9 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 9 21 2 flags unaligned, 9 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 9 23 3 pad1 bit (35), 9 24 2 pad2 bit (36), 9 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 9 26 2 pad3 (4) bit (36); 9 27 9 28 /* internal static */ 9 29 9 30 declare condition_info_version_1 9 31 fixed binary internal static options (constant) initial (1); 9 32 9 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 534 535 10 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 10 2 /* format: style2 */ 10 3 10 4 /* The include file condition_info_header must be used with this file */ 10 5 10 6 declare sub_error_info_ptr pointer; 10 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 10 8 2 header aligned like condition_info_header, 10 9 2 retval fixed bin (35), /* return value */ 10 10 2 name char (32), /* module name */ 10 11 2 info_ptr ptr; 10 12 10 13 declare sub_error_info_version_1 10 14 internal static options (constant) fixed bin init (1); 10 15 10 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 536 537 11 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 11 2 /* format: style2 */ 11 3 11 4 declare condition_info_header_ptr 11 5 pointer; 11 6 declare 1 condition_info_header 11 7 aligned based (condition_info_header_ptr), 11 8 2 length fixed bin, /* length in words of this structure */ 11 9 2 version fixed bin, /* version number of this structure */ 11 10 2 action_flags aligned, /* tell handler how to proceed */ 11 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 11 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 11 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 11 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 11 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 11 16 3 pad bit (32) unaligned, 11 17 2 info_string char (256) varying, /* may contain printable message */ 11 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 11 19 11 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 538 539 540 end print_mail; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0815.0 print_mail.pl1 >spec>install>1079>print_mail.pl1 518 1 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 520 2 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 522 3 10/27/83 2104.2 mlsys_open_options.incl.pl1 >ldd>include>mlsys_open_options.incl.pl1 524 4 10/27/83 2104.2 mlsys_delete_error_info.incl.pl1 >ldd>include>mlsys_delete_error_info.incl.pl1 526 5 10/27/83 2104.2 mlsys_close_options.incl.pl1 >ldd>include>mlsys_close_options.incl.pl1 528 6 06/18/84 1324.1 mlsys_parse_ca_options.incl.pl1 >ldd>include>mlsys_parse_ca_options.incl.pl1 530 7 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_options.incl.pl1 532 8 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 534 9 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 536 10 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 538 11 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.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. ACCESSIBLE_MESSAGES constant fixed bin(17,0) initial dcl 3-30 ref 139 196 ALL_MESSAGES constant fixed bin(17,0) initial dcl 3-17 ref 198 223 BRIEF_FORMATTING_MODE constant fixed bin(17,0) initial dcl 7-22 ref 173 230 232 CLOSE_OPTIONS_VERSION_2 000004 constant char(8) initial packed unaligned dcl 5-13 ref 496 DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 7-22 ref 150 172 DONT_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 6-28 ref 156 FORMAT_MESSAGE_OPTIONS_VERSION_1 000000 constant char(8) initial packed unaligned dcl 7-15 ref 147 INTERACTIVE_MESSAGES constant fixed bin(17,0) initial dcl 3-23 ref 227 LONG_FORMATTING_MODE constant fixed bin(17,0) initial dcl 7-22 ref 170 MAILBOX_VERSION_2 000010 constant char(8) initial packed unaligned dcl 1-28 set ref 256* NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 7-22 ref 175 231 NOT_OWN_MESSAGES constant fixed bin(17,0) initial dcl 3-30 ref 200 OPEN_OPTIONS_VERSION_2 000006 constant char(8) initial packed unaligned dcl 3-12 ref 138 ORDINARY_MESSAGES constant fixed bin(17,0) initial dcl 3-23 ref 225 OWN_MESSAGES constant fixed bin(17,0) initial dcl 3-30 ref 199 276 283 292 PARSE_CA_OPTIONS_VERSION_1 000002 constant char(8) initial packed unaligned dcl 6-21 ref 155 PRINT_MAIL 000123 constant char(32) initial packed unaligned dcl 64 set ref 122* 125* 127* 382* PRINT_MAIL_SPECIAL_MESSAGE 000012 constant varying char(256) initial dcl 66 set ref 304* PRINT_MAIL_VERSION 000113 constant char(32) initial packed unaligned dcl 65 set ref 122* READ_KEYS constant fixed bin(17,0) initial dcl 3-38 ref 141 USER_DEFAULT_MAILBOX constant fixed bin(17,0) initial dcl 1-37 ref 261 276 276 283 283 292 292 USER_LOGBOX constant fixed bin(17,0) initial dcl 1-37 ref 262 abort_on_errors 4 000112 automatic bit(1) level 3 packed packed unaligned dcl 44 set ref 159* acknowledge 000266 automatic bit(1) dcl 54 set ref 144* 177* 178* 379 active_fnc_err_ 000026 constant entry external dcl 77 ref 125 additional_info 4 based varying char(256) level 2 dcl 4-7 set ref 463 463* addr builtin function dcl 114 ref 209 209 256 256 372 372 382 382 453 453 498 498 answer_iocbp 6 000344 automatic pointer initial level 2 dcl 8-7 set ref 8-7* argument based char packed unaligned dcl 38 ref 166 166 166 168 168 170 170 172 172 173 173 175 175 177 177 178 178 180 180 181 181 184 184 185 185 187 187 188 188 190 190 191 191 193 193 194 194 196 196 198 198 199 200 202 202 203 203 argument_idx 000104 automatic fixed bin(17,0) dcl 41 set ref 162* 164* 209* 213* 213* argument_lth 000102 automatic fixed bin(21,0) dcl 40 set ref 164* 166 166 166 168 168 170 170 172 172 173 173 175 175 177 177 178 178 180 180 181 181 184 184 185 185 187 187 188 188 190 190 191 191 193 193 194 194 196 196 198 198 199 200 202 202 203 203 argument_ptr 000100 automatic pointer dcl 39 set ref 164* 166 166 166 168 168 170 170 172 172 173 173 175 175 177 177 178 178 180 180 181 181 184 184 185 185 187 187 188 188 190 190 191 191 193 193 194 194 196 196 198 198 199 200 202 202 203 203 body 62 based structure level 2 dcl 2-15 brief 000267 automatic bit(1) dcl 54 set ref 145* 166* 168* 265 272 280 290 can_be_deleted 12(01) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 391 ci 000100 automatic structure level 1 dcl 450 set ref 453 453 cleanup 000314 stack reference condition dcl 112 ref 120 close_options based structure level 1 dcl 5-6 code 3 based fixed bin(35,0) level 2 in structure "delete_error_info" dcl 4-7 in procedure "prm" set ref 463* code 000313 automatic fixed bin(35,0) dcl 60 in procedure "prm" set ref 122* 124 125* 127* 241* 243 243* 245* 246 248 248* 256* 258 258* 324* 325 325* 328* 329 329* 333* 335 335* 358* 359 359* 372* 373 373* 391* 393* 394 394 399* 405* 406 406* 472* codeptr builtin function dcl 114 ref 304 304 306 306 com_err_ 000030 constant entry external dcl 78 ref 127 command_query_ 000032 constant entry external dcl 79 ref 382 condition_info based structure level 1 dcl 9-14 condition_info_header based structure level 1 dcl 11-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 9-30 ref 452 continue_to_signal_ 000034 constant entry external dcl 80 ref 350 457 cp_escape_control 1(02) 000344 automatic bit(2) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* cu_$af_return_arg 000036 constant entry external dcl 81 ref 125 cu_$arg_list_ptr 000040 constant entry external dcl 82 ref 122 122 current_message 000277 automatic fixed bin(17,0) dcl 56 set ref 327* 328* 329* 332 333* 335* 354* 356 358* 359* 365 370* 373* 376* 382* 394* 399* 406* delete_error_info based structure level 1 dcl 4-7 delete_error_info_ptr 000342 automatic pointer dcl 4-16 set ref 461* 463 463 463 463 direction 000300 automatic fixed bin(17,0) dcl 56 set ref 312* 317* 327 354 display_message_count 000270 automatic bit(1) dcl 54 set ref 144* 187* 188* 272 disposition 000302 automatic varying char(32) dcl 58 set ref 382* 385 385* 386 386* 387 387* 388 388 388 388* 390 403 412 415 418 421 434* envelope_formatting_mode 3 000117 automatic fixed bin(17,0) level 2 dcl 45 set ref 231* 234* error_table_$inconsistent 000016 external static fixed bin(35,0) dcl 73 set ref 220* error_table_$too_many_args 000020 external static fixed bin(35,0) dcl 73 set ref 214* explanation_len 14 000344 automatic fixed bin(21,0) initial level 2 dcl 8-7 set ref 8-7* explanation_ptr 12 000344 automatic pointer initial level 2 dcl 8-7 set ref 8-7* find_condition_info_ 000042 constant entry external dcl 83 ref 453 first_invocation 000010 internal static bit(1) initial dcl 62 set ref 304 307* first_message 000275 automatic fixed bin(17,0) dcl 56 set ref 310* 315* 327 354 flags 12 based structure level 2 in structure "message" dcl 2-15 in procedure "prm" flags 74 based structure level 2 in structure "mailbox" dcl 1-6 in procedure "prm" flags 2 000100 automatic structure level 2 in structure "local_co" dcl 493 in procedure "release_data_structures" set ref 497* flags 4 000112 automatic structure level 2 in structure "local_pcao" dcl 44 in procedure "prm" set ref 158* format_message_options based structure level 1 dcl 7-6 formatting_mode 000265 automatic fixed bin(17,0) dcl 53 set ref 150* 170* 172* 173* 175* 230 234 have_mailbox 000130 automatic bit(1) dcl 49 set ref 136* 214 216* 240 header based structure level 2 in structure "message_user_field" dcl 2-163 in procedure "prm" header based structure level 2 in structure "message_body_section" dcl 2-274 in procedure "prm" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 2-150 in procedure "prm" header 64 based structure array level 4 in structure "message" dcl 2-15 in procedure "prm" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 2-313 in procedure "prm" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 2-208 in procedure "prm" header_formatting_mode 4 000117 automatic fixed bin(17,0) level 2 dcl 45 set ref 232* 234* include_body 6 000117 automatic bit(1) level 2 dcl 45 set ref 149* index builtin function dcl 114 ref 166 info_ptr 116 based pointer level 2 in structure "sub_error_info" dcl 10-7 in procedure "prm" ref 461 info_ptr 14 000100 automatic pointer level 2 in structure "ci" dcl 450 in on unit on line 447 set ref 455 interactive_messages 000271 automatic bit(1) dcl 54 set ref 143* 180* 181* 220 223 ioa_ 000044 constant entry external dcl 84 ref 272 276 280 283 290 292 370 376 422 423 424 425 426 427 428 429 iox_$control 000046 constant entry external dcl 85 ref 377 iox_$user_output 000014 external static pointer dcl 70 set ref 324* 333* 372* 377* last_message 000276 automatic fixed bin(17,0) dcl 56 set ref 311* 316* 327 354 length builtin function dcl 114 ref 463 line_length 2 000117 automatic fixed bin(17,0) level 2 dcl 45 set ref 148* list 000272 automatic bit(1) dcl 54 set ref 145* 193* 194* 323 literal_sw 1(05) 000344 automatic bit(1) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* local_co 000100 automatic structure level 1 dcl 493 set ref 498 498 local_fmo 000117 automatic structure level 1 dcl 45 set ref 372 372 local_oo 000105 automatic structure level 1 dcl 43 set ref 256 256 local_pcao 000112 automatic structure level 1 dcl 44 set ref 209 209 logbox_creation_mode 2 000112 automatic fixed bin(17,0) level 2 dcl 44 set ref 156* mail 000273 automatic bit(1) dcl 54 set ref 143* 184* 185* 220 223 225 mail_system_$acknowledge_message 000050 constant entry external dcl 86 ref 379 mail_system_$close_mailbox 000052 constant entry external dcl 87 ref 498 mail_system_$expunge_messages 000054 constant entry external dcl 88 ref 472 mail_system_$get_address_pathname 000056 constant entry external dcl 89 ref 241 mail_system_$mark_message_for_deletion 000060 constant entry external dcl 90 ref 391 mail_system_$open_mailbox 000062 constant entry external dcl 91 ref 256 mail_system_$read_message 000064 constant entry external dcl 92 ref 328 358 mail_system_$unmark_message_for_deletion 000066 constant entry external dcl 93 ref 405 mailbox based structure level 1 dcl 1-6 mailbox_dirname 000131 automatic char(168) packed unaligned dcl 50 set ref 209* 241* 246* 246* 248* 248* 256* 258* 258* 263* mailbox_ename 000255 automatic char(32) packed unaligned dcl 51 set ref 209* 241* 246* 246* 248* 248* 256* 258* 258* 263* mailbox_printing_name 000203 automatic char(168) packed unaligned dcl 50 set ref 261* 262* 263* 268 268 268 268 276* 283* 292* 329* 359* mailbox_ptr 000336 automatic pointer dcl 1-30 set ref 118* 256* 261 262 265 272 276 276 276 280 283 283 283 290 292 292 292 292 298 310 316 328* 332 356 358* 365 472* 495 498* mailbox_type 72 based fixed bin(17,0) level 2 dcl 1-6 ref 261 262 276 276 283 283 292 292 marked_for_deletion 12(02) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 403 message based structure level 1 dcl 2-15 message_body_section based structure level 1 dcl 2-274 message_envelope based structure level 1 dcl 2-61 message_number 2 based fixed bin(17,0) level 2 dcl 4-7 set ref 463* message_ptr 106 based pointer array level 3 in structure "mailbox" dcl 1-6 in procedure "prm" ref 332 356 365 message_ptr 000340 automatic pointer dcl 2-53 in procedure "prm" set ref 332* 333* 365* 370 370 370 372* 379 379* 391 391* 403 405* message_reading_level 4 000105 automatic fixed bin(17,0) level 2 dcl 43 set ref 141* message_redistribution based structure level 1 dcl 2-122 message_reference based structure level 1 dcl 2-234 message_selection_mode 2 000105 automatic fixed bin(17,0) level 2 dcl 43 set ref 223* 225* 227* message_text_field based structure level 1 dcl 2-260 message_user_field based structure level 1 dcl 2-163 messages 104 based structure array level 2 dcl 1-6 mlsys_data_$user_default_mailbox_address 000012 external static pointer dcl 68 set ref 241* mlsys_et_$cant_be_deleted 000022 external static fixed bin(35,0) dcl 73 ref 393 394 mlsys_et_$mailbox_exists 000024 external static fixed bin(35,0) dcl 73 ref 248 mlsys_utils_$create_default_mailbox 000070 constant entry external dcl 94 ref 245 mlsys_utils_$parse_mailbox_control_args 000072 constant entry external dcl 95 ref 209 mlsys_utils_$print_message 000074 constant entry external dcl 97 ref 372 mlsys_utils_$print_message_summary 000076 constant entry external dcl 98 ref 333 mlsys_utils_$print_message_summary_header 000100 constant entry external dcl 100 ref 324 must_be_acknowledged 12(03) based bit(1) level 3 packed packed unaligned dcl 2-15 ref 379 n_arguments 000103 automatic fixed bin(17,0) dcl 41 set ref 131* 162 n_messages 100 based fixed bin(17,0) level 2 dcl 1-6 set ref 272 280 290* 292* 298 310 316 name 106 based char(32) level 2 dcl 10-7 ref 456 null builtin function dcl 114 ref 118 125 356 377 377 8-7 8-7 8-7 453 453 495 501 open_options based structure level 1 dcl 3-6 padding 1(07) 000344 automatic bit(29) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* parse_ca_options based structure level 1 dcl 6-8 pathname_ 000102 constant entry external dcl 101 ref 246 246 248 248 258 258 263 processing_message 000301 automatic bit(1) dcl 57 set ref 344* 348 367* 439* 444* 479* program_interrupt 000322 stack reference condition dcl 112 ref 346 prompt_after_explanation 1(06) 000344 automatic bit(1) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* query_code 3 000344 automatic fixed bin(35,0) initial level 2 dcl 8-7 set ref 8-7* query_info 000344 automatic structure level 1 dcl 8-7 set ref 382 382 query_info_version_5 constant fixed bin(17,0) initial dcl 8-35 ref 342 question_iocbp 4 000344 automatic pointer initial level 2 dcl 8-7 set ref 8-7* redistributions_list_formatting_mode 5 000117 automatic fixed bin(17,0) level 2 dcl 45 set ref 232* 234* repeat_time 10 000344 automatic fixed bin(71,0) initial level 2 dcl 8-7 set ref 8-7* reverse 000274 automatic bit(1) dcl 54 set ref 145* 190* 191* 309 salvaged 74 based bit(1) level 3 packed packed unaligned dcl 1-6 ref 265 savebox_creation_mode 3 000112 automatic fixed bin(17,0) level 2 dcl 44 set ref 156* sci_ptr 000126 automatic pointer dcl 47 set ref 118* 122* 131* 164* 202* 203* 209* 214* 220* 243* 246* 248* 258* 265* 268* 304* 306* 325* 329* 335* 359* 373* 394* 399* 406* 434* 463* 501 501* sender_selection_mode 3 000105 automatic fixed bin(17,0) level 2 in structure "local_oo" dcl 43 in procedure "prm" set ref 139* 196* 198* 199* 200* sender_selection_mode 76 based fixed bin(17,0) level 2 in structure "mailbox" dcl 1-6 in procedure "prm" ref 276 283 292 ssu_$abort_line 000104 constant entry external dcl 102 ref 214 220 243 248 258 325 329 335 359 373 399 406 ssu_$arg_count 000106 constant entry external dcl 103 ref 131 ssu_$arg_ptr 000110 constant entry external dcl 104 ref 164 ssu_$destroy_invocation 000112 constant entry external dcl 105 ref 501 ssu_$print_blast 000114 constant entry external dcl 106 ref 304 ssu_$print_message 000116 constant entry external dcl 107 ref 246 265 268 394 434 463 ssu_$record_usage 000120 constant entry external dcl 108 ref 306 ssu_$set_debug_mode 000122 constant entry external dcl 109 ref 202 203 ssu_$standalone_invocation 000124 constant entry external dcl 110 ref 122 status_code 2 000344 automatic fixed bin(35,0) initial level 2 dcl 8-7 set ref 8-7* string builtin function dcl 114 set ref 158* 497* sub_error_ 000330 stack reference condition dcl 112 ref 447 475 sub_error_info based structure level 1 dcl 10-7 sub_error_info_ptr 000362 automatic pointer dcl 10-6 set ref 455* 456 461 substr builtin function dcl 114 ref 268 268 268 268 suppress_name_sw 1(01) 000344 automatic bit(1) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* suppress_spacing 1(04) 000344 automatic bit(1) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* switches 1 000344 automatic structure level 2 dcl 8-7 total_lines 62 based fixed bin(21,0) level 3 dcl 2-15 set ref 370 370* 370 translate builtin function dcl 114 ref 268 268 validate_addresses 4(01) 000112 automatic bit(1) level 3 packed packed unaligned dcl 44 set ref 160* version 000105 automatic char(8) level 2 in structure "local_oo" dcl 43 in procedure "prm" set ref 138* version 2 000100 automatic fixed bin(17,0) level 2 in structure "ci" dcl 450 in on unit on line 447 set ref 452* version 000100 automatic char(8) level 2 in structure "local_co" packed packed unaligned dcl 493 in procedure "release_data_structures" set ref 496* version 000117 automatic char(8) level 2 in structure "local_fmo" packed packed unaligned dcl 45 in procedure "prm" set ref 147* version 000344 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 8-7 in procedure "prm" set ref 342* version 000112 automatic char(8) level 2 in structure "local_pcao" packed packed unaligned dcl 44 in procedure "prm" set ref 155* yes_or_no_sw 1 000344 automatic bit(1) initial level 3 packed packed unaligned dcl 8-7 set ref 8-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CREATE_AND_ANNOUNCE_MAILBOX internal static fixed bin(17,0) initial dcl 6-28 DELETE_ERROR_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 4-14 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 2-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 2-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 2-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 2-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 2-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 2-49 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 1-37 QUERY_TO_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 6-28 READ_MESSAGES internal static fixed bin(17,0) initial dcl 3-38 SAVEBOX internal static fixed bin(17,0) initial dcl 1-37 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 6-28 close_options_ptr automatic pointer dcl 5-15 condition_info_header_ptr automatic pointer dcl 11-4 condition_info_ptr automatic pointer dcl 9-10 format_message_options_ptr automatic pointer dcl 7-17 mailbox_n_messages automatic fixed bin(17,0) dcl 1-32 message_address_list_user_field based structure level 1 dcl 2-190 message_bit_string_body_section based structure level 1 dcl 2-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 2-307 message_body_section_parameter based structure level 1 dcl 2-313 message_body_section_parameter_ptr automatic pointer dcl 2-320 message_body_section_ptr automatic pointer dcl 2-280 message_date_user_field based structure level 1 dcl 2-195 message_envelope_parameter based structure level 1 dcl 2-74 message_envelope_parameter_ptr automatic pointer dcl 2-81 message_envelope_ptr automatic pointer dcl 2-69 message_integer_user_field based structure level 1 dcl 2-200 message_n_body_sections automatic fixed bin(17,0) dcl 2-55 message_n_redistributions automatic fixed bin(17,0) dcl 2-55 message_n_user_fields automatic fixed bin(17,0) dcl 2-55 message_preformatted_body_section based structure level 1 dcl 2-292 message_preformatted_body_section_text based char packed unaligned dcl 2-298 message_redistribution_comment based char packed unaligned dcl 2-131 message_redistribution_parameter based structure level 1 dcl 2-139 message_redistribution_parameter_ptr automatic pointer dcl 2-146 message_redistribution_ptr automatic pointer dcl 2-134 message_redistributions_list based structure level 1 dcl 2-109 message_reference_parameter based structure level 1 dcl 2-248 message_reference_parameter_ptr automatic pointer dcl 2-255 message_reference_ptr automatic pointer dcl 2-243 message_reference_subject based char packed unaligned dcl 2-240 message_references_list based structure level 1 dcl 2-219 message_references_list_n_references automatic fixed bin(17,0) dcl 2-55 message_references_list_ptr automatic pointer dcl 2-229 message_subject based char packed unaligned dcl 2-51 message_text_field_ptr automatic pointer dcl 2-270 message_text_field_text based char packed unaligned dcl 2-268 message_text_user_field based structure level 1 dcl 2-183 message_text_user_field_text based char packed unaligned dcl 2-187 message_trace based structure level 1 dcl 2-87 message_trace_n_relays automatic fixed bin(17,0) dcl 2-55 message_trace_ptr automatic pointer dcl 2-105 message_user_field_parameter based structure level 1 dcl 2-208 message_user_field_parameter_ptr automatic pointer dcl 2-215 message_user_field_ptr automatic pointer dcl 2-169 message_user_fields_list based structure level 1 dcl 2-150 open_options_ptr automatic pointer dcl 3-14 parse_ca_options_ptr automatic pointer dcl 6-23 query_info_version_3 internal static fixed bin(17,0) initial dcl 8-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 8-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 8-36 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 10-13 NAMES DECLARED BY EXPLICIT CONTEXT. ASK_MESSAGE_DISPOSITION 004265 constant label dcl 382 ref 348 430 436 CALL_EXPUNGE_MESSAGES 005156 constant label dcl 472 ref 467 CONTINUE_FROM_HANDLER 005155 constant label dcl 469 ref 458 DELETE_MESSAGES 005026 constant label dcl 444 ref 415 REPRINT_THE_MESSAGE 003766 constant label dcl 356 ref 412 RETURN_FROM_PRINT_MAIL 005170 constant label dcl 479 ref 298 418 514 TRY_ARGUMENT_AS_MAILBOX_PATHNAME 002227 constant label dcl 209 ref 203 abort_print_mail_command 005247 constant entry internal dcl 511 ref 122 122 print_mail 001302 constant entry external dcl 33 ref 304 304 306 306 prm 001272 constant entry external dcl 33 release_data_structures 005177 constant entry internal dcl 490 ref 120 482 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6256 6404 5476 6266 Length 7136 5476 126 516 560 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME prm 364 external procedure is an external procedure. on unit on line 120 64 on unit on unit on line 346 70 on unit on unit on line 447 150 on unit release_data_structures 78 internal procedure is called by several nonquick procedures. abort_print_mail_command 64 internal procedure is assigned to an entry variable. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 first_invocation prm STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME on unit on line 447 000100 ci on unit on line 447 prm 000100 argument_ptr prm 000102 argument_lth prm 000103 n_arguments prm 000104 argument_idx prm 000105 local_oo prm 000112 local_pcao prm 000117 local_fmo prm 000126 sci_ptr prm 000130 have_mailbox prm 000131 mailbox_dirname prm 000203 mailbox_printing_name prm 000255 mailbox_ename prm 000265 formatting_mode prm 000266 acknowledge prm 000267 brief prm 000270 display_message_count prm 000271 interactive_messages prm 000272 list prm 000273 mail prm 000274 reverse prm 000275 first_message prm 000276 last_message prm 000277 current_message prm 000300 direction prm 000301 processing_message prm 000302 disposition prm 000313 code prm 000336 mailbox_ptr prm 000340 message_ptr prm 000342 delete_error_info_ptr prm 000344 query_info prm 000362 sub_error_info_ptr prm release_data_structures 000100 local_co release_data_structures THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ command_query_ continue_to_signal_ cu_$af_return_arg cu_$arg_list_ptr find_condition_info_ ioa_ iox_$control mail_system_$acknowledge_message mail_system_$close_mailbox mail_system_$expunge_messages mail_system_$get_address_pathname mail_system_$mark_message_for_deletion mail_system_$open_mailbox mail_system_$read_message mail_system_$unmark_message_for_deletion mlsys_utils_$create_default_mailbox mlsys_utils_$parse_mailbox_control_args mlsys_utils_$print_message mlsys_utils_$print_message_summary mlsys_utils_$print_message_summary_header pathname_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$print_blast ssu_$print_message ssu_$record_usage ssu_$set_debug_mode ssu_$standalone_invocation THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent error_table_$too_many_args iox_$user_output mlsys_data_$user_default_mailbox_address mlsys_et_$cant_be_deleted mlsys_et_$mailbox_exists LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 8 7 001237 33 001271 118 001310 120 001313 122 001335 124 001402 125 001404 127 001454 128 001500 131 001501 136 001512 138 001513 139 001516 141 001520 143 001522 144 001525 145 001527 147 001532 148 001535 149 001536 150 001540 155 001542 156 001544 158 001547 159 001550 160 001552 162 001554 164 001563 166 001600 168 001627 170 001641 172 001654 173 001667 175 001702 177 001715 178 001730 180 001742 181 001755 184 001767 185 002002 187 002014 188 002027 190 002041 191 002054 193 002066 194 002101 196 002113 198 002126 199 002141 200 002150 202 002157 203 002203 209 002227 213 002266 214 002270 216 002316 218 002320 220 002322 223 002352 225 002361 227 002366 230 002370 231 002373 232 002375 233 002400 234 002401 240 002404 241 002406 243 002442 245 002470 246 002477 248 002554 256 002626 258 002664 261 002741 262 002751 263 002757 265 002777 268 003033 272 003100 276 003123 280 003172 283 003215 290 003264 292 003310 298 003362 304 003365 306 003425 307 003442 309 003444 310 003446 311 003451 312 003453 313 003455 315 003456 316 003460 317 003463 323 003465 324 003467 325 003502 327 003530 328 003550 329 003563 332 003621 333 003626 335 003652 337 003704 342 003707 344 003711 346 003712 348 003726 350 003734 351 003744 354 003745 356 003766 358 003775 359 004010 365 004046 367 004053 370 004055 372 004117 373 004136 376 004170 377 004212 379 004245 382 004265 385 004325 386 004337 387 004351 388 004363 390 004407 391 004414 393 004432 394 004435 399 004473 401 004522 403 004523 405 004534 406 004545 410 004577 412 004600 415 004605 418 004612 421 004617 422 004624 423 004640 424 004654 425 004670 426 004704 427 004720 428 004734 429 004753 430 004767 434 004770 436 005021 439 005022 440 005023 444 005026 447 005027 452 005043 453 005045 455 005064 456 005067 457 005074 458 005104 461 005105 463 005107 467 005152 469 005155 472 005156 475 005167 479 005170 482 005171 484 005175 490 005176 495 005204 496 005211 497 005213 498 005214 501 005231 503 005245 511 005246 514 005254 ----------------------------------------------------------- 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