COMPILATION LISTING OF SEGMENT read_mail Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-04-24_1627.82_Fri_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1991 * 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 /****^ HISTORY COMMENTS: 15* 1) change(91-12-04,Huen), approve(91-12-04,MCR8239), 16* audit(92-02-13,Zimmerman), install(92-04-24,MR12.5-1013): 17* Fix mail_362 - check for new messages after every request line. 18* END HISTORY COMMENTS */ 19 20 21 /* format: off */ 22 23 /* The Multics read_mail command: an interactive subsystem to peruse the messages in a mailbox */ 24 25 /* Written: 3 July 1978 W. Olin Sibert */ 26 /* Modified: 21 June 1979 by G. Palter to fix ACL bug in creation of user's mailbox */ 27 /* Modified: 25 December 1979 by W. Olin Sibert to cause invalid control argument combinations to be diagnosed earlier 28* (read_mail bug #133), and to allow specification of more reply options on the command line (read_mail bug #132) */ 29 /* Modified: 11 April 1980 by G. Palter to correct mail_system bug #0178 -- print_mail and read_mail behave poorly when 30* invoked as active functions */ 31 /* Modified: 25 April 1980 by G. Palter to implement suggestion #084 -- provide abbrev expansion of request lines; the 32* -abbrev, -no_abbrev, and -profile control arguments are added */ 33 /* Modified: 28 April 1980 by G. Palter to call v1_ssu_ entries for version 4.1 subsystems */ 34 /* Modified: 5 May 1980 by W. Olin Sibert to convert to new ssu_ interface */ 35 /* Modified: 31 May 1980 by G. Palter to fix bug #0291 -- read_mail does not recognize the "-no_list" and "-no_print" 36* control arguments */ 37 /* Modified: 5 June 1980 by G. Palter to fix bug #0241 -- "read_mail quit" leaves undestroyed invocations of read_mail 38* lying around */ 39 /* Modified: 10 June 1980 by G. Palter to implement suggestion #0320 -- read_mail should have a program interrupt handler 40* which is active during the execution of "canned" request lines (eg: from "read_mail -print") which causes read_mail 41* to enter the request loop */ 42 /* Modified: 27 November 1980 by G. Palter to fix bug #0342 -- specifying a mailbox on the read_mail or print_mail command 43* line without using a control argument causes all previous mailbox specifications to be ignored; an error message 44* about multiple mailbox specifications should be issued instead. EG: 45* read_mail -user Palter.PDO Sibert.PDO 46* will read the mail in Sibert.PDO's mailbox */ 47 /* Modified: 27 January 1981 by G. Palter to fix bug #0354 -- both read_mail and send_mail mis-declare ssu_$set_prompt: 48* for read_mail, the declaration used works; for send_mail, use of -no_prompt can cause severe problems */ 49 /* Modified: 30 January 1981 by G. Palter to fix an unreported bug where specifying the "sv.mbx" suffix would fail when 50* using the "-save" control argument */ 51 /* Modified: 16 February 1982 by G. Palter for new calling sequences of ssu_$create_invocation and ssu_$set_abbrev_info */ 52 /* Modified: September 1982 by G. Palter to split off print_mail, to support new send_mail fill control, to add 53* -debug/-no_debug, and to set proper exec_com suffix and search list */ 54 /* Modified: 7 November 1982 by G. Palter to make rdm_info.reply_options.include_self a three-way switch */ 55 /* Modified: September 1983 by G. Palter to convert to the new mail system interface */ 56 57 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 58 59 60 read_mail: 61 rdm: 62 procedure () options (variable); 63 64 65 dcl argument character (argument_lth) unaligned based (argument_ptr); 66 dcl argument_ptr pointer; 67 dcl argument_lth fixed binary (21); 68 dcl (n_arguments, argument_idx) fixed binary; 69 70 dcl profile_pathname character (profile_pathname_lth) unaligned based (profile_pathname_ptr); 71 dcl profile_dirname character (168); 72 dcl profile_ename character (32); 73 dcl (profile_ptr, profile_pathname_ptr) pointer; 74 dcl profile_pathname_lth fixed binary (21); 75 dcl (enable_abbrev, abbrev_ca_given, profile_pathname_given) bit (1) aligned; 76 77 dcl subsystem_area area aligned based (subsystem_area_ptr); 78 dcl subsystem_area_ptr pointer; 79 80 dcl 1 local_pcao aligned like parse_ca_options; 81 82 dcl 1 local_ai aligned like area_info; 83 84 dcl (sci_ptr, rdm_sci_ptr) pointer; 85 86 dcl have_mailbox bit (1) aligned; /* ON => have seen a mailbox pathname on the command line */ 87 dcl mailbox_dirname character (168); 88 dcl mailbox_ename character (32); 89 90 dcl mail bit (1) aligned; /* ON => include ordinary messages from the mailbox */ 91 dcl interactive_messages bit (1) aligned; /* ON => include interactive messages from the mailbox */ 92 dcl display_message_count bit (1) aligned; /* ON => tell the user how many messages are in the mailbox */ 93 dcl totals_only bit (1) aligned; /* ON => exit immediately after printing the message count */ 94 dcl enter_request_loop_if_no_messages bit (1) aligned; /* ON => enter the request loop even if mailbox is empty */ 95 dcl list_messages bit (1) aligned; /* ON => summarize the messages before the request loop */ 96 dcl print_messages bit (1) aligned; /* ON => print the messages before the request loop */ 97 dcl quit_after_request_line bit (1) aligned; /* ON => exit immediately after -list/-print/-request done */ 98 99 dcl request_line_given bit (1) aligned; /* ON => user has supplied a request line to execute */ 100 dcl request_line_ptr pointer; 101 dcl request_line_lth fixed binary (21); 102 103 dcl prompt_control bit (2) aligned; /* controls prompting */ 104 dcl prompt_string character (64) varying; 105 106 dcl code fixed binary (35); 107 108 dcl READ_MAIL character (32) static options (constant) initial ("read_mail"); 109 110 dcl sys_info$max_seg_size fixed binary (19) external; 111 112 /* format: off */ 113 dcl (error_table_$bad_conversion, error_table_$inconsistent, error_table_$noarg, error_table_$too_many_args, 114 mlsys_et_$mailbox_exists, ssu_et_$program_interrupt, ssu_et_$request_line_aborted, ssu_et_$subsystem_aborted) 115 fixed binary (35) external; 116 /* format: on */ 117 118 dcl active_fnc_err_ entry options (variable); 119 dcl com_err_ entry () options (variable); 120 dcl cu_$af_return_arg entry (fixed binary, pointer, fixed binary (21)) returns (fixed binary (35)); 121 dcl cu_$arg_list_ptr entry () returns (pointer); 122 dcl cv_dec_check_ entry (character (*), fixed binary (35)) returns (fixed binary (35)); 123 dcl expand_pathname_$add_suffix entry (character (*), character (*), character (*), character (*), fixed binary (35)); 124 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 125 dcl ioa_ entry () options (variable); 126 dcl mail_system_$close_mailbox entry (pointer, pointer, fixed binary (35)); 127 dcl mail_system_$get_address_pathname entry (pointer, character (*), character (*), character (*), fixed binary (35)); 128 dcl mlsys_utils_$create_default_mailbox entry (fixed binary (35)); 129 dcl mlsys_utils_$parse_mailbox_control_args 130 entry (pointer, fixed binary, pointer, character (*), character (*), fixed binary (35)); 131 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 132 dcl rdm_mailbox_interface_$expunge_messages entry (pointer, bit (1) aligned); 133 dcl rdm_mailbox_interface_$open_mailbox entry (pointer, character (*), character (*), pointer, fixed binary (35)); 134 dcl rdm_mailbox_interface_$read_new_messages entry (pointer, bit (1) aligned, fixed binary (35)); 135 dcl rdm_set_request_tables_ entry (pointer, fixed binary (35)); 136 dcl ssu_$abort_subsystem entry () options (variable); 137 dcl ssu_$arg_count entry (pointer, fixed binary); 138 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 139 dcl ssu_$create_invocation 140 entry (character (*), character (*), pointer, pointer, character (*), pointer, fixed binary (35)); 141 dcl ssu_$destroy_invocation entry (pointer); 142 dcl ssu_$execute_line entry (pointer, pointer, fixed binary (21), fixed binary (35)); 143 dcl ssu_$execute_string entry (pointer, character (*), fixed binary (35)); 144 dcl ssu_$get_area entry (pointer, pointer, character (*), pointer); 145 dcl ssu_$listen entry (pointer, pointer, fixed binary (35)); 146 dcl ssu_$print_blast entry (pointer, pointer, fixed binary, character (*) varying, fixed binary (35)); 147 dcl ssu_$print_message entry () options (variable); 148 dcl ssu_$record_usage entry (pointer, pointer, fixed binary (35)); 149 dcl ssu_$set_abbrev_info entry (pointer, pointer, pointer, bit (1) aligned); 150 dcl ssu_$set_debug_mode entry (pointer, bit (1) aligned); 151 dcl ssu_$set_ec_search_list entry (pointer, character (32)); 152 dcl ssu_$set_ec_suffix entry (pointer, character (32)); 153 dcl ssu_$set_info_ptr entry (pointer, pointer); 154 dcl ssu_$set_procedure entry (ptr, char (*), entry, fixed bin (35)); 155 dcl ssu_$set_prompt entry (pointer, character (64) varying); 156 dcl ssu_$set_prompt_mode entry (pointer, bit (*)); 157 dcl ssu_$standalone_invocation entry (pointer, character (*), character (*), pointer, entry, fixed binary (35)); 158 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 159 160 dcl cleanup condition; 161 162 dcl (addr, codeptr, index, null, string, substr, translate, unspec) builtin; 163 164 /* read_mail: rdm: entry options (variable); */ 165 166 /* Initialize the read_mail invocation */ 167 168 sci_ptr, /* for cleanup handler */ 169 rdm_invocation_ptr, rdm_sci_ptr, profile_ptr = null (); 170 171 on condition (cleanup) call release_data_structures (); 172 173 call ssu_$standalone_invocation (sci_ptr, READ_MAIL, "argument-parse", cu_$arg_list_ptr (), 174 abort_read_mail_command, code); 175 if code ^= 0 then do; /* please forgive the following, but ... */ 176 if cu_$af_return_arg (0, (null ()), (0)) = 0 then 177 call active_fnc_err_ (code, READ_MAIL, "Can not establish standalone subsystem invocation."); 178 else call com_err_ (code, READ_MAIL, "Can not establish standalone subsystem invocation."); 179 return; 180 end; 181 182 call ssu_$arg_count (sci_ptr, n_arguments); /* aborts if not a command */ 183 184 call ssu_$create_invocation (READ_MAIL, (rdm_data_$version), null (), null (), rdm_data_$info_directory, 185 rdm_sci_ptr, code); 186 if code ^= 0 then call ssu_$abort_subsystem (sci_ptr, code, "Creating the subsystem invocation."); 187 188 unspec (local_ai) = ""b; 189 local_ai.version = area_info_version_1; 190 local_ai.zero_on_alloc, local_ai.extend = "1"b; 191 call ssu_$get_area (rdm_sci_ptr, addr (local_ai), "", subsystem_area_ptr); 192 193 allocate rdm_invocation in (subsystem_area) set (rdm_invocation_ptr); 194 rdm_invocation.type = RDM_INVOCATION; 195 196 rdm_invocation.sci_ptr = rdm_sci_ptr; 197 rdm_sci_ptr = null (); /* don't try to destroy the invocation twice */ 198 199 rdm_invocation.area_ptr = subsystem_area_ptr; /* use the above area for all allocations */ 200 201 rdm_invocation.mailbox_ptr, /* haven't opened the mailbox yet */ 202 rdm_invocation.message_list_ptr, rdm_invocation.message_chains = null (); 203 rdm_invocation.mailbox_name = ""; 204 205 rdm_invocation.current_message = 0; /* the mailbox isn't open: there can't be a current message */ 206 207 rdm_invocation.last_search_buffer.buffer_ptr = null (); 208 rdm_invocation.last_search_buffer.buffer_used = 4 * sys_info$max_seg_size; 209 210 call ssu_$set_info_ptr (rdm_invocation.sci_ptr, rdm_invocation_ptr); 211 212 213 /* Initialize default options: reading the user's profile will go here someday */ 214 215 begin; /* avoids problems with duplicate named constants */ 216 217 dcl 1 local_oo aligned like open_options; 218 1 1 /* BEGIN INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 1 2 /* Created: June 1983 by G. Palter */ 1 3 1 4 /* Options for the mail_system_$open_mailbox entrypoint */ 1 5 1 6 dcl 1 open_options aligned based (open_options_ptr), 1 7 2 version character (8), 1 8 2 message_selection_mode fixed binary, /* what types are to be read (all/ordinary/interactive) */ 1 9 2 sender_selection_mode fixed binary, /* selects messages by who sent them */ 1 10 2 message_reading_level fixed binary; /* specifies whether all or only part of a message is read */ 1 11 1 12 dcl OPEN_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsopn02"); 1 13 1 14 dcl open_options_ptr pointer; 1 15 1 16 1 17 dcl ALL_MESSAGES fixed binary static options (constant) initial (0); 1 18 /* read all messages in the mailbox ... 1 19* ... used as both a message and sender selection mode */ 1 20 1 21 /* Defined message selection modes */ 1 22 1 23 dcl (ORDINARY_MESSAGES initial (1), /* read only ordinary messages */ 1 24 INTERACTIVE_MESSAGES initial (2)) /* read only interactive messages */ 1 25 fixed binary static options (constant); 1 26 1 27 1 28 /* Defined sender selection modes */ 1 29 1 30 dcl (ACCESSIBLE_MESSAGES initial (-1), /* reads whatever messages are accessible */ 1 31 OWN_MESSAGES initial (1), /* reads only those messages sent by this user */ 1 32 NOT_OWN_MESSAGES initial (2)) /* reads only those messages not sent by this user */ 1 33 fixed binary static options (constant); 1 34 1 35 1 36 /* Defined message reading levels */ 1 37 1 38 dcl (READ_KEYS initial (1), /* reads only the unique key of each message */ 1 39 READ_MESSAGES initial (2)) /* reads the entire content of each message */ 1 40 fixed binary static options (constant); 1 41 1 42 /* END INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 219 220 221 have_mailbox = "0"b; /* haven't seen a mailbox yet */ 222 223 mail = "1"b; /* assume ordinary mail ... */ 224 interactive_messages = "0"b; /* ... but not interactive messages by default */ 225 226 local_oo.version = OPEN_OPTIONS_VERSION_2; 227 local_oo.sender_selection_mode = ACCESSIBLE_MESSAGES; 228 /* read all messages (if possible) */ 229 local_oo.message_reading_level = READ_KEYS; /* will fetch messages one at a time (faster startup) */ 230 231 display_message_count = "1"b; /* state how many messages before anything else */ 232 totals_only = "0"b; /* do not print just the message count */ 233 enter_request_loop_if_no_messages = "0"b; /* -no_request_loop */ 234 235 list_messages, print_messages, request_line_given, quit_after_request_line = "0"b; 236 /* nothing special before the request loop */ 237 238 prompt_control = DEFAULT_PROMPT; /* use standard prompt */ 239 prompt_string = ""; 240 241 enable_abbrev, abbrev_ca_given, profile_pathname_given = "0"b; 242 /* abbreviation processing isn't enabled by default */ 243 244 rdm_invocation.acknowledge = "1"b; /* -acknowledge, -long, -no_debug ... */ 245 rdm_invocation.brief, rdm_invocation.debug_mode = "0"b; 246 247 rdm_invocation.print_options.formatting_mode = DEFAULT_FORMATTING_MODE; 248 /* default for the print request is: -header */ 249 250 rdm_invocation.reply_options.line_length = 72; 251 rdm_invocation.reply_options.indentation = 4;/* indent the original (if included) to make it stand out */ 252 rdm_invocation.reply_options.include_authors = "1"b; 253 rdm_invocation.reply_options.include_recipients = "0"b; 254 rdm_invocation.reply_options.include_self = DEFAULT_INCLUDE_SELF; 255 rdm_invocation.reply_options.fill_control = DEFAULT_FILL; 256 257 258 /* Process arguments */ 259 260 local_pcao.version = PARSE_CA_OPTIONS_VERSION_1; 261 local_pcao.logbox_creation_mode, /* logbox/savebox must already exist */ 262 local_pcao.savebox_creation_mode = DONT_CREATE_MAILBOX; 263 string (local_pcao.flags) = ""b; 264 local_pcao.abort_on_errors = "1"b; /* any errors are immediately fatal */ 265 local_pcao.validate_addresses = "1"b; /* insure that any mailbox specified actually exists */ 266 267 do argument_idx = 1 to n_arguments; 268 269 call ssu_$arg_ptr (sci_ptr, argument_idx, argument_ptr, argument_lth); 270 271 if index (argument, "-") = 1 then /* a control argument */ 272 if (argument = "-mail") | (argument = "-ml") then mail = "1"b; 273 else if (argument = "-no_mail") | (argument = "-nml") then mail = "0"b; 274 275 else if (argument = "-interactive_messages") | (argument = "-im") then 276 interactive_messages = "1"b; 277 else if (argument = "-no_interactive_messages") | (argument = "-nim") then 278 interactive_messages = "0"b; 279 280 else if (argument = "-accessible") | (argument = "-acc") then 281 local_oo.sender_selection_mode = ACCESSIBLE_MESSAGES; 282 else if (argument = "-all") | (argument = "-a") then 283 local_oo.sender_selection_mode = ALL_MESSAGES; 284 else if argument = "-own" then local_oo.sender_selection_mode = OWN_MESSAGES; 285 else if argument = "-not_own" then local_oo.sender_selection_mode = NOT_OWN_MESSAGES; 286 287 else if (argument = "-count") | (argument = "-ct") then display_message_count = "1"b; 288 else if (argument = "-no_count") | (argument = "-nct") then display_message_count = "0"b; 289 290 else if (argument = "-totals") | (argument = "-total") | (argument = "-tt") then 291 totals_only = "1"b; 292 293 else if (argument = "-force") | (argument = "-fc") | (argument = "-request_loop") 294 | (argument = "-rql") then 295 enter_request_loop_if_no_messages = "1"b; 296 else if (argument = "-no_force") | (argument = "-nfc") | (argument = "-no_request_loop") 297 | (argument = "-nrql") then 298 enter_request_loop_if_no_messages = "0"b; 299 300 else if (argument = "-list") | (argument = "-ls") then list_messages = "1"b; 301 else if (argument = "-no_list") | (argument = "-nls") then list_messages = "0"b; 302 303 else if (argument = "-print") | (argument = "-pr") then print_messages = "1"b; 304 else if (argument = "-no_print") | (argument = "-npr") then print_messages = "0"b; 305 306 else if (argument = "-request") | (argument = "-rq") then do; 307 call get_next_argument ("A string"); 308 request_line_given = "1"b; 309 request_line_ptr = argument_ptr; 310 request_line_lth = argument_lth; 311 end; 312 313 else if argument = "-quit" then quit_after_request_line = "1"b; 314 315 else if (argument = "-prompt") | (argument = "-pmt") then do; 316 call get_next_argument ("A string"); 317 if argument = "" then /* equivalent to -no_prompt */ 318 prompt_control = NO_PROMPT; 319 else do; /* a real prompt string */ 320 prompt_control = USE_PROMPT_STRING; 321 prompt_string = argument; 322 end; 323 end; 324 else if (argument = "-no_prompt") | (argument = "-npmt") then prompt_control = NO_PROMPT; 325 326 else if (argument = "-abbrev") | (argument = "-ab") then enable_abbrev, abbrev_ca_given = "1"b; 327 else if (argument = "-no_abbrev") | (argument = "-nab") then do; 328 enable_abbrev = "0"b; 329 abbrev_ca_given = "1"b; 330 end; 331 else if (argument = "-profile") | (argument = "-pf") then do; 332 call get_next_argument ("A pathname"); 333 profile_pathname_given = "1"b;/* we'll check it out later */ 334 profile_pathname_ptr = argument_ptr; 335 profile_pathname_lth = argument_lth; 336 end; 337 338 else if (argument = "-acknowledge") | (argument = "-ack") then rdm_invocation.acknowledge = "1"b; 339 else if (argument = "-no_acknowledge") | (argument = "-nack") then 340 rdm_invocation.acknowledge = "0"b; 341 342 else if (argument = "-brief") | (argument = "-bf") then rdm_invocation.brief = "1"b; 343 else if (argument = "-long") | (argument = "-lg") then rdm_invocation.brief = "0"b; 344 345 else if (argument = "-debug") | (argument = "-db") then rdm_invocation.debug_mode = "1"b; 346 else if (argument = "-no_debug") | (argument = "-ndb") then rdm_invocation.debug_mode = "0"b; 347 348 else if (argument = "-long_header") | (argument = "-lghe") then 349 rdm_invocation.print_options.formatting_mode = LONG_FORMATTING_MODE; 350 else if (argument = "-header") | (argument = "-he") then 351 rdm_invocation.print_options.formatting_mode = DEFAULT_FORMATTING_MODE; 352 else if (argument = "-brief_header") | (argument = "-bfhe") then 353 rdm_invocation.print_options.formatting_mode = BRIEF_FORMATTING_MODE; 354 else if (argument = "-no_header") | (argument = "-nhe") then 355 rdm_invocation.print_options.formatting_mode = NONE_FORMATTING_MODE; 356 357 else if (argument = "-line_length") | (argument = "-ll") then do; 358 call get_next_argument ("A number"); 359 rdm_invocation.reply_options.line_length = cv_dec_check_ (argument, code); 360 if code ^= 0 then 361 call ssu_$abort_subsystem (sci_ptr, error_table_$bad_conversion, "-line_length ""^a""", 362 argument); 363 if rdm_invocation.reply_options.line_length < 31 then 364 call ssu_$abort_subsystem (sci_ptr, 0, 365 "Reply line length must be greater than 30; not ""^a"".", argument); 366 end; 367 368 else if (argument = "-indent") | (argument = "-ind") | (argument = "-in") then do; 369 call get_next_argument ("A number"); 370 rdm_invocation.reply_options.indentation = cv_dec_check_ (argument, code); 371 if code ^= 0 then 372 call ssu_$abort_subsystem (sci_ptr, error_table_$bad_conversion, "-indent ""^a""", 373 argument); 374 if (rdm_invocation.reply_options.indentation < 0) 375 | (rdm_invocation.reply_options.indentation > 30) then 376 call ssu_$abort_subsystem (sci_ptr, 0, 377 "Reply indentation must be between 0 and 30; not ""^a"".", argument); 378 end; 379 380 else if (argument = "-include_original") | (argument = "-io") then 381 rdm_invocation.reply_options.include_original = "1"b; 382 else if (argument = "-no_include_original") | (argument = "-nio") then 383 rdm_invocation.reply_options.include_original = "0"b; 384 385 else if (argument = "-include_authors") | (argument = "-iat") then 386 rdm_invocation.reply_options.include_authors = "1"b; 387 else if (argument = "-no_include_authors") | (argument = "-niat") then 388 rdm_invocation.reply_options.include_authors = "0"b; 389 390 else if (argument = "-include_recipients") | (argument = "-irc") then 391 rdm_invocation.reply_options.include_recipients = "1"b; 392 else if (argument = "-no_include_recipients") | (argument = "-nirc") then 393 rdm_invocation.reply_options.include_recipients = "0"b; 394 395 else if (argument = "-include_self") | (argument = "-is") then 396 rdm_invocation.reply_options.include_self = INCLUDE_SELF; 397 else if (argument = "-no_include_self") | (argument = "-nis") then 398 rdm_invocation.reply_options.include_self = NO_INCLUDE_SELF; 399 400 else if (argument = "-fill") | (argument = "-fi") then 401 rdm_invocation.reply_options.fill_control = FILL; 402 else if (argument = "-no_fill") | (argument = "-nfi") then 403 rdm_invocation.reply_options.fill_control = NO_FILL; 404 405 else go to TRY_ARGUMENT_AS_MAILBOX_PATHNAME; 406 /* unknown control argument: maybe a mailbox speciifer? */ 407 408 else do; 409 TRY_ARGUMENT_AS_MAILBOX_PATHNAME: /* not a control argument: myst be a mailbox specifier */ 410 call mlsys_utils_$parse_mailbox_control_args (sci_ptr, argument_idx, addr (local_pcao), 411 mailbox_dirname, mailbox_ename, (0)); 412 /* ... above entrypoint aborts us if anything's wrong */ 413 argument_idx = argument_idx - 1; /* ... do loop will increment it */ 414 if have_mailbox then /* ... this one's OK and we already have one (sigh) */ 415 call ssu_$abort_subsystem (sci_ptr, error_table_$too_many_args, 416 "Only one mailbox may be specified."); 417 have_mailbox = "1"b; /* ... now we've got the mailbox to be read */ 418 end; 419 end; 420 421 if ^mail & ^interactive_messages then 422 call ssu_$abort_subsystem (sci_ptr, error_table_$inconsistent, 423 """-no_mail"" and ""-no_interactive_messages"""); 424 425 if totals_only 426 & (enter_request_loop_if_no_messages | list_messages | print_messages | request_line_given 427 | quit_after_request_line) then 428 call ssu_$abort_subsystem (sci_ptr, error_table_$inconsistent, 429 """-totals"" and^[ ""-request_loop""^]^[ ""-list""^]^[ ""-print""^]^[ ""-request""^]^[ ""-quit""^].", 430 enter_request_loop_if_no_messages, list_messages, print_messages, request_line_given, 431 quit_after_request_line); 432 433 if quit_after_request_line & ^(list_messages | print_messages | request_line_given) then 434 call ssu_$abort_subsystem (sci_ptr, error_table_$noarg, 435 "One of ""-list"", ""-print"", or ""-request"" must be specified with ""-quit""."); 436 437 438 /* If no mailbox was given on the command line, use the user's default mailbox which is created if necessary */ 439 440 if ^have_mailbox then do; 441 call mail_system_$get_address_pathname (mlsys_data_$user_default_mailbox_address, mailbox_dirname, 442 mailbox_ename, ((32)" "), code); 443 if code ^= 0 then call ssu_$abort_subsystem (sci_ptr, code, "Getting the pathname of your mailbox."); 444 445 call mlsys_utils_$create_default_mailbox (code); 446 if code = 0 then /* just created it ... */ 447 call ssu_$print_message (sci_ptr, 0, "Created ^a.", pathname_ (mailbox_dirname, mailbox_ename)); 448 else if code ^= mlsys_et_$mailbox_exists then 449 call ssu_$abort_subsystem (sci_ptr, code, "Attempting to create your default mailbox. ^a", 450 pathname_ (mailbox_dirname, mailbox_ename)); 451 end; 452 453 454 /* Complete the read_mail environment */ 455 456 if profile_pathname_given then do; /* an explicit profile was requested */ 457 call expand_pathname_$add_suffix (profile_pathname, "profile", profile_dirname, profile_ename, code); 458 if code ^= 0 then call ssu_$abort_subsystem (sci_ptr, code, "-profile ""^a""", profile_pathname); 459 call initiate_file_ (profile_dirname, profile_ename, R_ACCESS, profile_ptr, (0), code); 460 if code ^= 0 then 461 call ssu_$abort_subsystem (sci_ptr, code, "-profile ""^a""", 462 pathname_ (profile_dirname, profile_ename)); 463 if ^abbrev_ca_given then /* -profile implies -abbrev unless explicit -ab/-nab given */ 464 enable_abbrev = "1"b; 465 end; 466 call ssu_$set_abbrev_info (rdm_invocation.sci_ptr, profile_ptr, null (), enable_abbrev); 467 profile_ptr = null (); /* we'll let ssu_ terminate it for us */ 468 469 call ssu_$set_debug_mode (rdm_invocation.sci_ptr, (rdm_invocation.debug_mode)); 470 471 call rdm_set_request_tables_ (rdm_invocation_ptr, code); 472 if code ^= 0 then call ssu_$abort_subsystem (sci_ptr, code, "Unable to setup request tables."); 473 474 if prompt_control = USE_PROMPT_STRING then call ssu_$set_prompt (rdm_invocation.sci_ptr, prompt_string); 475 else if prompt_control = NO_PROMPT then call ssu_$set_prompt_mode (rdm_invocation.sci_ptr, DONT_PROMPT); 476 477 call ssu_$set_ec_suffix (rdm_invocation.sci_ptr, rdm_data_$ec_suffix); 478 call ssu_$set_ec_search_list (rdm_invocation.sci_ptr, rdm_data_$ec_search_list); 479 480 481 /* Open the mailbox, check the salvaged flag, and report the message count */ 482 483 if mail & interactive_messages then /* want all types of messages */ 484 local_oo.message_selection_mode = ALL_MESSAGES; 485 else if mail then /* only want ordinary mail messages */ 486 local_oo.message_selection_mode = ORDINARY_MESSAGES; 487 else local_oo.message_selection_mode = INTERACTIVE_MESSAGES; 488 /* interactive messages only */ 489 490 call rdm_mailbox_interface_$open_mailbox (rdm_invocation_ptr, mailbox_dirname, mailbox_ename, 491 addr (local_oo), code); 492 if code ^= 0 then 493 call ssu_$abort_subsystem (sci_ptr, code, "Attempting to open ^a.", 494 pathname_ (mailbox_dirname, mailbox_ename)); 495 496 mailbox_ptr = rdm_invocation.mailbox_ptr; /* will need to access this now */ 497 498 if mailbox.mailbox_type = USER_DEFAULT_MAILBOX then rdm_invocation.mailbox_name = "your mailbox"; 499 else if mailbox.mailbox_type = USER_LOGBOX then rdm_invocation.mailbox_name = "your logbox"; 500 else rdm_invocation.mailbox_name = pathname_ (mailbox_dirname, mailbox_ename); 501 502 if mailbox.salvaged then /* something was probably lost ... */ 503 if rdm_invocation.brief then 504 call ssu_$print_message (sci_ptr, 0, "Mailbox has been salvaged."); 505 else call ssu_$print_message (sci_ptr, 0, 506 "Warning: ^a^a has been salvaged since it was last read.^/Some messages may have been lost.", 507 translate (substr (rdm_invocation.mailbox_name, 1, 1), "Y", "y"), 508 substr (rdm_invocation.mailbox_name, 2)); 509 510 if display_message_count then /* user wants to know how much is there */ 511 if mailbox.n_messages = 0 then 512 if rdm_invocation.brief then 513 call ioa_ ("No mail."); 514 else call ioa_ ("^[You have no mail^s^;^[You have no messages^;There is no mail^]^]^[ in ^a^].", 515 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 516 (mailbox.sender_selection_mode = OWN_MESSAGES), 517 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), rdm_invocation.mailbox_name); 518 else if mailbox.n_messages = 1 then 519 if rdm_invocation.brief then 520 call ioa_ ("One message."); 521 else call ioa_ ( 522 "^[You have one message^s^;^[You have one message^;There is one message^]^]^[ in ^a^].", 523 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 524 (mailbox.sender_selection_mode = OWN_MESSAGES), 525 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), rdm_invocation.mailbox_name); 526 else /*** if mailbox.n_messages > 1 then */ 527 do; 528 if rdm_invocation.brief then 529 call ioa_ ("^d messages.", mailbox.n_messages); 530 else call ioa_ ("^[You have^s^;^[You have^;There are^]^] ^d messages^[ in ^a^].", 531 (mailbox.mailbox_type = USER_DEFAULT_MAILBOX), 532 (mailbox.sender_selection_mode = OWN_MESSAGES), mailbox.n_messages, 533 (mailbox.mailbox_type ^= USER_DEFAULT_MAILBOX), rdm_invocation.mailbox_name); 534 end; 535 end; 536 537 if totals_only | /* only wanted the message count */ 538 ((mailbox.n_messages = 0) & ^enter_request_loop_if_no_messages) then 539 go to RETURN_FROM_READ_MAIL; 540 541 542 /* Mailbox is open and there are messages present: this invocation is, therefore, going to do some real work */ 543 544 if rdm_data_$first_invocation then 545 call ssu_$print_blast (rdm_invocation.sci_ptr, codeptr (read_mail), 3, rdm_data_$special_message, (0)); 546 else call ssu_$record_usage (rdm_invocation.sci_ptr, codeptr (read_mail), (0)); 547 548 rdm_data_$first_invocation = "0"b; /* only issue the blast once per process */ 549 550 551 /* Summarize the messages if requested via "-list" */ 552 553 if list_messages then do; 554 call ssu_$execute_string (rdm_invocation.sci_ptr, "list all", code); 555 if code = ssu_et_$program_interrupt then go to ENTER_REQUEST_LOOP; 556 else if code = ssu_et_$request_line_aborted then go to EXIT_READ_MAIL_OR_ENTER_REQUEST_LOOP; 557 end; 558 559 560 /* Print the messages if requested via "-print" */ 561 562 if print_messages then do; 563 call ssu_$execute_string (rdm_invocation.sci_ptr, "print all", code); 564 if code = ssu_et_$program_interrupt then go to ENTER_REQUEST_LOOP; 565 else if code = ssu_et_$request_line_aborted then go to EXIT_READ_MAIL_OR_ENTER_REQUEST_LOOP; 566 end; 567 568 569 /* Execute any user-supplied request line and, if "-quit" was not specified, enter the request loop */ 570 571 if request_line_given then do; /* user had some explicit requests */ 572 call ssu_$execute_line (rdm_invocation.sci_ptr, request_line_ptr, request_line_lth, code); 573 if code = ssu_et_$program_interrupt then go to ENTER_REQUEST_LOOP; 574 else if code = ssu_et_$subsystem_aborted then go to RETURN_FROM_READ_MAIL; 575 end; 576 577 578 EXIT_READ_MAIL_OR_ENTER_REQUEST_LOOP: /* transfer point if any of the above runs into trouble ... */ 579 if quit_after_request_line then /* user asked us to stop even if there were errors ... */ 580 call rdm_mailbox_interface_$expunge_messages (rdm_invocation_ptr, ("0"b)); 581 582 else do; /* user wants to get into the request loop ... */ 583 ENTER_REQUEST_LOOP: 584 call ssu_$set_procedure (rdm_invocation.sci_ptr, "post_request_line", post_request_line, code); 585 call ssu_$listen (rdm_invocation.sci_ptr, null (), (0)); 586 end; 587 588 /* Cleanup */ 589 590 RETURN_FROM_READ_MAIL: 591 call release_data_structures (); 592 593 return; 594 595 596 597 post_request_line: 598 procedure (); 599 600 call rdm_mailbox_interface_$read_new_messages (rdm_invocation_ptr, "1"b, (0)); 601 return; 602 603 end post_request_line; 604 605 606 /* Release any data structures created herein */ 607 release_data_structures: 608 procedure (); 609 610 dcl 1 local_co aligned like close_options; 611 612 if rdm_invocation_ptr ^= null () then do; /* destroy the read_mail invocation proper */ 613 if rdm_invocation.mailbox_ptr ^= null () then do; 614 local_co.version = CLOSE_OPTIONS_VERSION_2; 615 string (local_co.flags) = ""b; /* ... sets perform_deletions off */ 616 call mail_system_$close_mailbox (rdm_invocation.mailbox_ptr, addr (local_co), (0)); 617 end; 618 if rdm_invocation.sci_ptr ^= null () then /* ... destroying the subsystem releases the area */ 619 call ssu_$destroy_invocation (rdm_invocation.sci_ptr); 620 end; 621 622 if profile_ptr ^= null () then call terminate_file_ (profile_ptr, 0, TERM_FILE_TERM, (0)); 623 624 if rdm_sci_ptr ^= null () then call ssu_$destroy_invocation (rdm_sci_ptr); 625 626 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 627 628 return; 629 630 end release_data_structures; 631 632 633 634 /* Invoked by ssu_$abort_line and ssu_$abort_subsystem to terminate execution of read_mail */ 635 636 abort_read_mail_command: 637 procedure (); 638 639 go to RETURN_FROM_READ_MAIL; 640 641 end abort_read_mail_command; 642 643 /* Fetches the next argument for control arguments which require values */ 644 645 get_next_argument: 646 procedure (p_string); 647 648 dcl p_string character (*) parameter; 649 650 if argument_idx = n_arguments then 651 call ssu_$abort_subsystem (sci_ptr, error_table_$noarg, "^a after ""^a"".", p_string, argument); 652 653 argument_idx = argument_idx + 1; 654 655 call ssu_$arg_ptr (sci_ptr, argument_idx, argument_ptr, argument_lth); 656 657 return; 658 659 end get_next_argument; 660 2 1 /* BEGIN INCLUDE FILE ... rdm_data.incl.pl1 */ 2 2 /* Created: September 1983 by G. Palter */ 2 3 2 4 2 5 /* Constant data used by the read_mail subsystem */ 2 6 2 7 dcl rdm_data_$version character (32) varying external; /* current version of the subsystem */ 2 8 2 9 dcl rdm_data_$info_directory character (168) external; /* directory containing self-documenation */ 2 10 2 11 dcl rdm_data_$special_message character (256) varying external; 2 12 /* message to print on each invocation if not null */ 2 13 2 14 dcl rdm_data_$ec_suffix character (32) external; /* exec_com suffix for read_mail */ 2 15 dcl rdm_data_$ec_search_list character (32) external; /* exec_com search list */ 2 16 2 17 2 18 /* Static data used by the read_mail subsystem */ 2 19 2 20 dcl rdm_data_$first_invocation bit (1) aligned external; /* ON => this is the first invocation in this process */ 2 21 2 22 /* END INCLUDE FILE ... rdm_data.incl.pl1 */ 661 662 3 1 /* BEGIN INCLUDE FILE ... rdm_invocation.incl.pl1 */ 3 2 /* Created: September 1983 by G. Palter from portions of emf_info.incl.pl1 */ 3 3 3 4 /* Definition of a single invocation of read_mail */ 3 5 3 6 dcl 1 rdm_invocation aligned based (rdm_invocation_ptr), 3 7 2 type character (8), /* defines this structure as a read_mail invocation */ 3 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 3 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 3 10 3 11 2 mailbox_info, 3 12 3 mailbox_ptr pointer, /* -> mailbox structure being examined by this invocation */ 3 13 3 message_list_ptr pointer, /* -> list of read_mail specific information retained for each 3 14* message (eg: the "processed" flag) */ 3 15 3 message_chains, /*the various message chains ... */ 3 16 4 all pointer, /* ... all unexpunged messages */ 3 17 4 undeleted pointer, /* ... all undeleted messages */ 3 18 4 deleted pointer, /* ... all deleted messages */ 3 19 4 marked pointer, /* ... messages to be processed by the current request */ 3 20 4 marked_as_original pointer, /* ... messages being processed by a reply/forward request */ 3 21 3 mailbox_name character (168) varying, /* name of the mailbox (your mailbox/logbox/pathname) */ 3 22 3 23 2 current_message fixed binary, /* index of the current message; 0 => no current message */ 3 24 3 25 2 last_search_buffer, /* describes the buffer where read_mail constructs the ... */ 3 26 3 buffer_ptr pointer, /* ... the printed representation of messages in order ... */ 3 27 3 buffer_used fixed binary (21), /* ... to speed up regular expression searching */ 3 28 3 29 2 global_options, /* command line options affecting all of read_mail ... */ 3 30 3 flags, 3 31 4 acknowledge bit (1) unaligned, /* ... ON => acknowledge messages after printing */ 3 32 4 brief bit (1) unaligned, /* ... ON => shorten some messages and omit others */ 3 33 4 debug_mode bit (1) unaligned, /* ... ON => enable debugging features */ 3 34 4 pad bit (33) unaligned, 3 35 3 36 2 print_options, /* command line options affecting the print request ... */ 3 37 3 formatting_mode fixed binary, /* ... output mode for the message header, etc. */ 3 38 3 39 2 reply_options, /* command line options affecting the reply request ... */ 3 40 3 line_length fixed binary, /* ... line length to be used by send_mail for filling */ 3 41 3 indentation fixed binary, /* ... amount to indent original text when included */ 3 42 3 flags, 3 43 4 include_original bit (1) unaligned, /* ... ON => include original message text in the reply */ 3 44 4 include_authors bit (1) unaligned, /* ... ON => include original authors as recipients */ 3 45 4 include_recipients bit (1) unaligned, /* ... ON => include original recipients as recipients */ 3 46 4 include_self bit (2) unaligned, /* ... ON => include this user as a recipient of the reply if 3 47* selected by include_authors/include_recipients */ 3 48 4 fill_control bit (2) unaligned, /* ... controls message filling by send_mail */ 3 49 4 pad bit (29) unaligned; 3 50 3 51 dcl RDM_INVOCATION character (8) static options (constant) initial ("rdm_0009"); 3 52 3 53 dcl rdm_invocation_ptr pointer; 3 54 3 55 dcl rdm_area area based (rdm_invocation.area_ptr); 3 56 3 57 3 58 /* Defined settings for reply_options.include_self */ 3 59 3 60 dcl (DEFAULT_INCLUDE_SELF initial ("00"b), /* neither -include_self nor -no_include_self given */ 3 61 NO_INCLUDE_SELF initial ("01"b), /* -no_include_self explicitly given */ 3 62 INCLUDE_SELF initial ("10"b)) /* -include_self explicitly given */ 3 63 bit (2) aligned static options (constant); 3 64 3 65 /* END INCLUDE FILE ... rdm_invocation.incl.pl1 */ 663 664 4 1 /* BEGIN INCLUDE FILE ... rdm_message_list.incl.pl1 */ 4 2 /* Created: September 1983 by G. Palter */ 4 3 4 4 /* Definition of per-message data maintained by read_mail: This list is maintined in parallel to the mailbox structure by 4 5* read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_). It serves two purposes: 4 6* (1) It provides a place to store read_mail-specific per-message data (ie: the processed flag). 4 7* (2) It provides the ability to provide arbitrary mappings between read_mail message numbers and the actual indeces 4 8* within the mailbox structure. This mapping allows read_mail to preserve its message numbers for an invocation 4 9* even if messages are expunged which causes them to disappear from the mailbox structure (NB: the "expunge" 4 10* request is not yet implemented). This mapping also allows read_mail to present the messages in the mailbox to 4 11* the user in a different order than they actually appear in the mailbox (eg: sorted by date/time created) */ 4 12 4 13 dcl 1 message_list aligned based (rdm_invocation.message_list_ptr), 4 14 2 n_messages fixed binary, /* # of messages known to read_mail at present */ 4 15 2 pad bit (36), 4 16 2 messages (message_list_n_messages refer (message_list.n_messages)), 4 17 3 message_idx fixed binary, /* index of this message in the mailbox structure */ 4 18 3 flags, 4 19 4 processed bit (1) unaligned, /* ON => this message may be deleted without query */ 4 20 4 pad bit (35) unaligned, 4 21 3 search_text, /* describes copy of messages used for regexp searches */ 4 22 4 search_text_ptr pointer, /* ... -> the saved printed represetnation */ 4 23 4 search_text_lth fixed binary (21); /* ... length of said representation in characters */ 4 24 4 25 dcl message_list_n_messages fixed binary; 4 26 4 27 /* END INCLUDE FILE ... rdm_message_list.incl.pl1 */ 665 666 5 1 /* BEGIN INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 5 2 /* Created: September 1983 by G. Palter */ 5 3 5 4 5 5 /* Definition of a read_mail message chain */ 5 6 5 7 dcl 1 message_chain aligned based (message_chain_ptr), 5 8 2 n_messages fixed binary, /* # of messages in the chain */ 5 9 2 messages (message_list.n_messages) fixed binary; /* read_mail message numbers of the messages in the chain */ 5 10 5 11 dcl message_chain_ptr pointer; 5 12 5 13 5 14 /* Message chains maintained by read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_) -- 5 15* (1) The first chain is a list of all messages in the mailbox which have not yet been expunged and consists of all 5 16* messages whether or not they have been marked for deletion. 5 17* (2) The second chain is a list of all messages in the mailbox which have not been marked for later deletion. 5 18* (3) The third chain is a list of all messages which have been marked for later deletion. 5 19* The message specifier parser uses one of these three chains as the basis for selecting the messages to be processed by 5 20* a request based on the use of "-include_deleted", "-only_non_deleted", or "-only_deleted", respectively; in this way, 5 21* the amount of code in the parser which must distinguish between these three types of selections is minimized */ 5 22 5 23 dcl 1 all_chain aligned based (rdm_invocation.message_chains.all) like message_chain; 5 24 dcl 1 undeleted_chain aligned based (rdm_invocation.message_chains.undeleted) like message_chain; 5 25 dcl 1 deleted_chain aligned based (rdm_invocation.message_chains.deleted) like message_chain; 5 26 5 27 5 28 /* The marked chain is the list of messages that are to be processed by the current request */ 5 29 5 30 dcl 1 marked_chain aligned based (rdm_invocation.message_chains.marked) like message_chain; 5 31 5 32 5 33 /* The marked as original chain is the list of messages that are being processed by a reply or forward request: This 5 34* chain is used to define the default set of messages to be processed by the various send_mail "original" requests and 5 35* forward "original" sub-requests */ 5 36 5 37 dcl 1 marked_as_original_chain aligned based (rdm_invocation.message_chains.marked_as_original) like message_chain; 5 38 5 39 5 40 /* Definition of the acceptable message selection criteria */ 5 41 5 42 dcl (ALL_MESSAGES initial (1), /* all messages: -include_deleted */ 5 43 NON_DELETED_MESSAGES initial (2), /* only undeleted messages: -only_non_deleted (default) */ 5 44 ONLY_DELETED_MESSAGES initial (3)) /* only deleted messages: -only_deleted */ 5 45 fixed binary static options (constant); 5 46 5 47 /* END INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 667 668 6 1 /* BEGIN INCLUDE FILE ... mlsys_data.incl.pl1 */ 6 2 /* Created: 20 Decembber 1978 by G. Palter */ 6 3 /* Modified: 1 July 1983 by G. Palter to merge with mlsys_internal_data_ */ 6 4 6 5 /* Constants defined by the Multics mail system for external use */ 6 6 6 7 dcl mlsys_data_$system_directory character (168) external; /* directory containing per-system data (mail table/queues) */ 6 8 6 9 6 10 /* Static data defined by the Multics mail system for external use */ 6 11 6 12 dcl mlsys_data_$user_default_mailbox_address pointer external; 6 13 /* -> the address of the user's default mailbox */ 6 14 dcl mlsys_data_$user_mail_table_address pointer external; /* -> the address of the user's entry in the mail table */ 6 15 dcl mlsys_data_$user_logbox_address pointer external; /* -> the address of the user's logbox */ 6 16 6 17 /* END INCLUDE FILE ... mlsys_data.incl.pl1 */ 669 670 7 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 7 2 /* Created: April 1983 by G. Palter */ 7 3 7 4 /* Definition of a mailbox as used by the Multics Mail System */ 7 5 7 6 dcl 1 mailbox aligned based (mailbox_ptr), 7 7 2 version character (8) unaligned, 7 8 2 reserved bit (144), /* for exclusive use of the mail system */ 7 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 7 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 7 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 7 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 7 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 7 14 2 flags, 7 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 7 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 7 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 7 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 7 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 7 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 7 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 7 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 7 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 7 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 7 25 3 key bit (72), /* unique key to read this message if not already read */ 7 26 3 message_ptr pointer; /* -> the message structure */ 7 27 7 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 7 29 7 30 dcl mailbox_ptr pointer; 7 31 7 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 7 33 7 34 7 35 /* Types of mailboxes distinguished by the mail system */ 7 36 7 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 7 38 USER_LOGBOX initial (2), /* the user's logbox */ 7 39 SAVEBOX initial (3), /* a savebox */ 7 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 7 41 fixed binary static options (constant); 7 42 7 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 671 672 8 1 /* BEGIN INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 8 2 /* Created: June 1983 by G. Palter */ 8 3 8 4 /* Options for the mail_system_$close_mailbox entrypoint */ 8 5 8 6 dcl 1 close_options aligned based (close_options_ptr), 8 7 2 version character (8) unaligned, 8 8 2 flags, 8 9 3 perform_deletions bit (1) unaligned, /* ON => perform deletions requested earlier */ 8 10 3 report_deletion_errors bit (1) unaligned, /* ON => report problems deleting via sub_err_ */ 8 11 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 8 12 8 13 dcl CLOSE_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsclo02"); 8 14 8 15 dcl close_options_ptr pointer; 8 16 8 17 /* END INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 673 674 9 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 9 2 /* Created: June 1983 by G. Palter */ 9 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 9 4 9 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 9 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 9 7 9 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 9 9 2 version character (8) unaligned, 9 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 9 11* the user's logbox, address/mailbox validation is requested, 9 12* and the logbox does not exist */ 9 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 9 14 2 flags, 9 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 9 16* the first error); OFF => use ssu_$print_message */ 9 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 9 18* OFF => only validate the command/request line syntax */ 9 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 9 20 9 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 9 22 9 23 dcl parse_ca_options_ptr pointer; 9 24 9 25 9 26 /* Defined logbox/savebox creation modes */ 9 27 9 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 9 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 9 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 9 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 9 32 fixed binary static options (constant); 9 33 9 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 675 676 10 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 10 2 /* Created: June 1983 by G. Palter */ 10 3 10 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 10 5 10 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 10 7 2 version character (8) unaligned, 10 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 10 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 10 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 10 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 10 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 10 13* OFF => exclude the message body */ 10 14 10 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 10 16 10 17 dcl format_message_options_ptr pointer; 10 18 10 19 10 20 /* Defined formatting modes */ 10 21 10 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 10 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 10 24* message; not valid for the envelope */ 10 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 10 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 10 27 fixed binary static options (constant); 10 28 10 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 677 678 11 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 11 2 11 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 11 4 11 5 dcl area_infop ptr; 11 6 11 7 dcl 1 area_info aligned based (area_infop), 11 8 2 version fixed bin, /* version number for this structure is 1 */ 11 9 2 control aligned like area_control, /* control bits for the area */ 11 10 2 owner char (32) unal, /* creator of the area */ 11 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 11 12 2 size fixed bin (18), /* size of the area in words */ 11 13 2 version_of_area fixed bin, /* version of area (returned only) */ 11 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 11 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 11 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 11 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 11 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 11 19 11 20 dcl 1 area_control aligned based, 11 21 2 extend bit (1) unal, /* says area is extensible */ 11 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 11 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 11 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 11 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 11 26 2 system bit (1) unal, /* says area is managed by system */ 11 27 2 pad bit (30) unal; 11 28 11 29 /* END INCLUDE FILE area_info.incl.pl1 */ 679 680 12 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 12 2* 12 3* Values for the "access mode" argument so often used in hardcore 12 4* James R. Davis 26 Jan 81 MCR 4844 12 5* Added constants for SM access 4/28/82 Jay Pattin 12 6* Added text strings 03/19/85 Chris Jones 12 7**/ 12 8 12 9 12 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 12 11 dcl ( 12 12 N_ACCESS init ("000"b), 12 13 R_ACCESS init ("100"b), 12 14 E_ACCESS init ("010"b), 12 15 W_ACCESS init ("001"b), 12 16 RE_ACCESS init ("110"b), 12 17 REW_ACCESS init ("111"b), 12 18 RW_ACCESS init ("101"b), 12 19 S_ACCESS init ("100"b), 12 20 M_ACCESS init ("010"b), 12 21 A_ACCESS init ("001"b), 12 22 SA_ACCESS init ("101"b), 12 23 SM_ACCESS init ("110"b), 12 24 SMA_ACCESS init ("111"b) 12 25 ) bit (3) internal static options (constant); 12 26 12 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 12 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 12 29 12 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 12 31 static options (constant); 12 32 12 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 12 34 static options (constant); 12 35 12 36 dcl ( 12 37 N_ACCESS_BIN init (00000b), 12 38 R_ACCESS_BIN init (01000b), 12 39 E_ACCESS_BIN init (00100b), 12 40 W_ACCESS_BIN init (00010b), 12 41 RW_ACCESS_BIN init (01010b), 12 42 RE_ACCESS_BIN init (01100b), 12 43 REW_ACCESS_BIN init (01110b), 12 44 S_ACCESS_BIN init (01000b), 12 45 M_ACCESS_BIN init (00010b), 12 46 A_ACCESS_BIN init (00001b), 12 47 SA_ACCESS_BIN init (01001b), 12 48 SM_ACCESS_BIN init (01010b), 12 49 SMA_ACCESS_BIN init (01011b) 12 50 ) fixed bin (5) internal static options (constant); 12 51 12 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 681 682 13 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 13 2 /* format: style2,^inddcls,idind32 */ 13 3 13 4 declare 1 terminate_file_switches based, 13 5 2 truncate bit (1) unaligned, 13 6 2 set_bc bit (1) unaligned, 13 7 2 terminate bit (1) unaligned, 13 8 2 force_write bit (1) unaligned, 13 9 2 delete bit (1) unaligned; 13 10 13 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 13 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 13 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 13 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 13 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 13 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 13 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 13 18 13 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 683 684 14 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 14 2 /* Created: 15 February 1982 by G. Palter */ 14 3 14 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 14 5 14 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 14 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 14 8 14 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 14 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 14 11 14 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 14 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 14 14 14 15 /* For example: 14 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 14 17 14 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 685 686 15 1 /* BEGIN INCLUDE FILE ... send_mail_options.incl.pl1 */ 15 2 /* Created: 28 December 1978 by G. Palter */ 15 3 /* Modified: 25 April 1980 by G. Palter for version 2 -- abbrev processing */ 15 4 /* Modified: 27 January 1981 by G. Palter for version 3 -- increased prompt string length */ 15 5 /* Modified: 16 February 1982 by G. Palter for version 4 -- default profile in addition to current profile */ 15 6 /* Modified: 17 September 1982 by G. Palter for version 5 -- new definition of -fill, -debug, and making -fill/-rql 15 7* dependent on mode of message input (terminal/file) */ 15 8 /* Modified: August 1983 by G. Palter for version 6 -- elimination of -header and -message_id (always ON), elimination of 15 9* -no_abort as the command line -abort/-no_abort no longer sets the default for the send request control argument, 15 10* addition of -auto_write/-no_auto_write as required by the MCR boards, and addition of options pertaining to 15 11* treatment of the original message(s) text when invoked by a reply request */ 15 12 15 13 /* User settable options of the send_mail subsystem */ 15 14 15 15 dcl 1 send_mail_options aligned based (send_mail_options_ptr), 15 16 2 version character (8) unaligned, 15 17 15 18 2 fill_width fixed binary, /* default width for filling */ 15 19 15 20 2 prompt_control aligned, /* controls how send_mail prompts */ 15 21 3 prompt_string character (64) varying, /* ... user-supplied string */ 15 22 3 flags aligned, 15 23 4 prompt_control bit (2) unaligned, /* ... default prompt/use above string/don't prompt */ 15 24 4 pad bit (34) unaligned, 15 25 15 26 2 default_profile_ptr pointer, /* -> default profile to be used if flags.abbrev is ON */ 15 27 2 profile_ptr pointer, /* -> profile to be used if flags.abbrev is ON */ 15 28 15 29 2 original_text_control aligned, /* controls send_mail's treatment of original message text */ 15 30 3 original_text_indentation fixed binary, /* ... # of columns to indent the text if requested */ 15 31 3 flags, 15 32 4 include_original_text bit (1) unaligned, /* ... ON => text from message(s) being answered is to be 15 33* included in the reply before the actual answer */ 15 34 4 indent_original_text bit (1) unaligned, /* ... ON => the original text is to be indented */ 15 35 4 fill_original_text bit (1) unaligned, /* ... ON => the original text is to be re-filled */ 15 36 4 pad bit (33) unaligned, 15 37 15 38 2 flags aligned, 15 39 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 15 40 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 15 41 3 notify bit (1) unaligned, /* ON => send each recipient a wakeup */ 15 42 3 abbrev bit (1) unaligned, /* ON => use abbrev processing in this invocation */ 15 43 3 debug bit (1) unaligned, /* ON => enable debugging features */ 15 44 3 auto_write bit (1) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 15 45 3 fill_control bit (2) unaligned, /* default/explicit -fill/explicit -no_fill */ 15 46 3 request_loop_control bit (2) unaligned, /* default/explicit -rql/explicit -nrql */ 15 47 3 pad bit (26) unaligned; 15 48 15 49 dcl send_mail_options_ptr pointer; 15 50 15 51 dcl SEND_MAIL_OPTIONS_VERSION_6 character (8) static options (constant) initial ("sdmopt06"); 15 52 15 53 15 54 /* Prompt control options */ 15 55 15 56 dcl (DEFAULT_PROMPT initial ("00"b), /* use default subsystem prompt */ 15 57 USE_PROMPT_STRING initial ("01"b), /* use prompt string supplied by user (via -prompt STR) */ 15 58 NO_PROMPT initial ("10"b)) /* disable subsystem prompt */ 15 59 bit (2) static options (constant); 15 60 15 61 15 62 /* Fill control options */ 15 63 15 64 dcl (DEFAULT_FILL initial ("00"b), /* fill if terminal input; do not fill if file input */ 15 65 FILL initial ("01"b), /* user specified -fill */ 15 66 NO_FILL initial ("10"b)) /* user specified -no_fill */ 15 67 bit (2) static options (constant); 15 68 15 69 15 70 /* Request loop control options */ 15 71 15 72 dcl (DEFAULT_REQUEST_LOOP initial ("00"b), /* enter loop if file input; do not enter if terminal input */ 15 73 REQUEST_LOOP initial ("01"b), /* user specified -request_loop */ 15 74 NO_REQUEST_LOOP initial ("10"b)) /* user specified -no_request_loop */ 15 75 bit (2) static options (constant); 15 76 15 77 /* END INCLUDE FILE ... send_mail_options.incl.pl1 */ 687 688 689 end read_mail; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/24/92 1627.8 read_mail.pl1 >spec>install>1013>read_mail.pl1 219 1 10/27/83 2204.2 mlsys_open_options.incl.pl1 >ldd>incl>mlsys_open_options.incl.pl1 661 2 10/27/83 2204.3 rdm_data.incl.pl1 >ldd>incl>rdm_data.incl.pl1 663 3 10/27/83 2204.3 rdm_invocation.incl.pl1 >ldd>incl>rdm_invocation.incl.pl1 665 4 10/27/83 2204.3 rdm_message_list.incl.pl1 >ldd>incl>rdm_message_list.incl.pl1 667 5 10/27/83 2204.3 rdm_message_chains.incl.pl1 >ldd>incl>rdm_message_chains.incl.pl1 669 6 10/27/83 2204.2 mlsys_data.incl.pl1 >ldd>incl>mlsys_data.incl.pl1 671 7 10/27/83 2204.2 mlsys_mailbox.incl.pl1 >ldd>incl>mlsys_mailbox.incl.pl1 673 8 10/27/83 2204.2 mlsys_close_options.incl.pl1 >ldd>incl>mlsys_close_options.incl.pl1 675 9 06/18/84 1424.1 mlsys_parse_ca_options.incl.pl1 >ldd>incl>mlsys_parse_ca_options.incl.pl1 677 10 10/27/83 2204.2 mlsys_format_options.incl.pl1 >ldd>incl>mlsys_format_options.incl.pl1 679 11 06/11/76 1143.4 area_info.incl.pl1 >ldd>incl>area_info.incl.pl1 681 12 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 683 13 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>incl>terminate_file.incl.pl1 685 14 04/13/82 1720.2 ssu_prompt_modes.incl.pl1 >ldd>incl>ssu_prompt_modes.incl.pl1 687 15 10/27/83 2204.2 send_mail_options.incl.pl1 >ldd>incl>send_mail_options.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 1-30 ref 227 280 ALL_MESSAGES constant fixed bin(17,0) initial dcl 1-17 ref 282 483 BRIEF_FORMATTING_MODE constant fixed bin(17,0) initial dcl 10-22 ref 352 CLOSE_OPTIONS_VERSION_2 000006 constant char(8) initial packed unaligned dcl 8-13 ref 614 DEFAULT_FILL constant bit(2) initial packed unaligned dcl 15-64 ref 255 DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 10-22 ref 247 350 DEFAULT_INCLUDE_SELF constant bit(2) initial dcl 3-60 ref 254 DEFAULT_PROMPT constant bit(2) initial packed unaligned dcl 15-56 ref 238 DONT_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 9-28 ref 261 DONT_PROMPT 000132 constant bit(1) initial packed unaligned dcl 14-7 set ref 475* FILL constant bit(2) initial packed unaligned dcl 15-64 ref 400 INCLUDE_SELF constant bit(2) initial dcl 3-60 ref 395 INTERACTIVE_MESSAGES constant fixed bin(17,0) initial dcl 1-23 ref 487 LONG_FORMATTING_MODE constant fixed bin(17,0) initial dcl 10-22 ref 348 NONE_FORMATTING_MODE constant fixed bin(17,0) initial dcl 10-22 ref 354 NOT_OWN_MESSAGES constant fixed bin(17,0) initial dcl 1-30 ref 285 NO_FILL constant bit(2) initial packed unaligned dcl 15-64 ref 402 NO_INCLUDE_SELF constant bit(2) initial dcl 3-60 ref 397 NO_PROMPT constant bit(2) initial packed unaligned dcl 15-56 ref 317 324 475 OPEN_OPTIONS_VERSION_2 000000 constant char(8) initial packed unaligned dcl 1-12 ref 226 ORDINARY_MESSAGES constant fixed bin(17,0) initial dcl 1-23 ref 485 OWN_MESSAGES constant fixed bin(17,0) initial dcl 1-30 ref 284 514 521 530 PARSE_CA_OPTIONS_VERSION_1 000004 constant char(8) initial packed unaligned dcl 9-21 ref 260 RDM_INVOCATION 000010 constant char(8) initial packed unaligned dcl 3-51 ref 194 READ_KEYS constant fixed bin(17,0) initial dcl 1-38 ref 229 READ_MAIL 000012 constant char(32) initial packed unaligned dcl 108 set ref 173* 176* 178* 184* R_ACCESS 000132 constant bit(3) initial packed unaligned dcl 12-11 set ref 459* TERM_FILE_TERM 000002 constant bit(3) initial packed unaligned dcl 13-14 set ref 622* USER_DEFAULT_MAILBOX constant fixed bin(17,0) initial dcl 7-37 ref 498 514 514 521 521 530 530 USER_LOGBOX constant fixed bin(17,0) initial dcl 7-37 ref 499 USE_PROMPT_STRING constant bit(2) initial packed unaligned dcl 15-56 ref 320 474 abbrev_ca_given 000176 automatic bit(1) dcl 75 set ref 241* 326* 329* 463 abort_on_errors 4 000202 automatic bit(1) level 3 packed packed unaligned dcl 80 set ref 264* acknowledge 103 based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 244* 338* 339* active_fnc_err_ 000032 constant entry external dcl 118 ref 176 addr builtin function dcl 162 ref 191 191 409 409 490 490 616 616 area_control based structure level 1 dcl 11-20 area_info based structure level 1 dcl 11-7 area_info_version_1 constant fixed bin(17,0) initial dcl 11-3 ref 189 area_ptr 4 based pointer level 2 dcl 3-6 set ref 199* argument based char packed unaligned dcl 65 set ref 271 271 271 273 273 275 275 277 277 280 280 282 282 284 285 287 287 288 288 290 290 290 293 293 293 293 296 296 296 296 300 300 301 301 303 303 304 304 306 306 313 315 315 317 321 324 324 326 326 327 327 331 331 338 338 339 339 342 342 343 343 345 345 346 346 348 348 350 350 352 352 354 354 357 357 359* 360* 363* 368 368 368 370* 371* 374* 380 380 382 382 385 385 387 387 390 390 392 392 395 395 397 397 400 400 402 402 650* argument_idx 000104 automatic fixed bin(17,0) dcl 68 set ref 267* 269* 409* 413* 413* 650 653* 653 655* argument_lth 000102 automatic fixed bin(21,0) dcl 67 set ref 269* 271 271 271 273 273 275 275 277 277 280 280 282 282 284 285 287 287 288 288 290 290 290 293 293 293 293 296 296 296 296 300 300 301 301 303 303 304 304 306 306 310 313 315 315 317 321 324 324 326 326 327 327 331 331 335 338 338 339 339 342 342 343 343 345 345 346 346 348 348 350 350 352 352 354 354 357 357 359 359 360 360 363 363 368 368 368 370 370 371 371 374 374 380 380 382 382 385 385 387 387 390 390 392 392 395 395 397 397 400 400 402 402 650 650 655* argument_ptr 000100 automatic pointer dcl 66 set ref 269* 271 271 271 273 273 275 275 277 277 280 280 282 282 284 285 287 287 288 288 290 290 290 293 293 293 293 296 296 296 296 300 300 301 301 303 303 304 304 306 306 309 313 315 315 317 321 324 324 326 326 327 327 331 331 334 338 338 339 339 342 342 343 343 345 345 346 346 348 348 350 350 352 352 354 354 357 357 359 360 363 368 368 368 370 371 374 380 380 382 382 385 385 387 387 390 390 392 392 395 395 397 397 400 400 402 402 650 655* brief 103(01) based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 245* 342* 343* 502 510 518 528 buffer_ptr 100 based pointer level 3 dcl 3-6 set ref 207* buffer_used 102 based fixed bin(21,0) level 3 dcl 3-6 set ref 208* cleanup 000362 stack reference condition dcl 160 ref 171 close_options based structure level 1 dcl 8-6 code 000361 automatic fixed bin(35,0) dcl 106 set ref 173* 175 176* 178* 184* 186 186* 359* 360 370* 371 441* 443 443* 445* 446 448 448* 457* 458 458* 459* 460 460* 471* 472 472* 490* 492 492* 554* 555 556 563* 564 565 572* 573 574 583* codeptr builtin function dcl 162 ref 544 544 546 546 com_err_ 000034 constant entry external dcl 119 ref 178 control 1 000210 automatic structure level 2 dcl 82 cu_$af_return_arg 000036 constant entry external dcl 120 ref 176 cu_$arg_list_ptr 000040 constant entry external dcl 121 ref 173 173 current_message 77 based fixed bin(17,0) level 2 dcl 3-6 set ref 205* cv_dec_check_ 000042 constant entry external dcl 122 ref 359 370 debug_mode 103(02) based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 245* 345* 346* 469 display_message_count 000325 automatic bit(1) dcl 92 set ref 231* 287* 288* 510 enable_abbrev 000175 automatic bit(1) dcl 75 set ref 241* 326* 328* 463* 466* enter_request_loop_if_no_messages 000327 automatic bit(1) dcl 94 set ref 233* 293* 296* 425 425* 537 error_table_$bad_conversion 000012 external static fixed bin(35,0) dcl 113 set ref 360* 371* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 113 set ref 421* 425* error_table_$noarg 000016 external static fixed bin(35,0) dcl 113 set ref 433* 650* error_table_$too_many_args 000020 external static fixed bin(35,0) dcl 113 set ref 414* expand_pathname_$add_suffix 000044 constant entry external dcl 123 ref 457 extend 1 000210 automatic bit(1) level 3 packed packed unaligned dcl 82 set ref 190* fill_control 107(05) based bit(2) level 4 packed packed unaligned dcl 3-6 set ref 255* 400* 402* flags 103 based structure level 3 in structure "rdm_invocation" dcl 3-6 in procedure "rdm" flags 107 based structure level 3 in structure "rdm_invocation" dcl 3-6 in procedure "rdm" flags 4 000202 automatic structure level 2 in structure "local_pcao" dcl 80 in procedure "rdm" set ref 263* flags 2 000100 automatic structure level 2 in structure "local_co" dcl 610 in procedure "release_data_structures" set ref 615* flags 74 based structure level 2 in structure "mailbox" dcl 7-6 in procedure "rdm" formatting_mode 104 based fixed bin(17,0) level 3 dcl 3-6 set ref 247* 348* 350* 352* 354* global_options 103 based structure level 2 dcl 3-6 have_mailbox 000240 automatic bit(1) dcl 86 set ref 221* 414 417* 440 include_authors 107(01) based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 252* 385* 387* include_original 107 based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 380* 382* include_recipients 107(02) based bit(1) level 4 packed packed unaligned dcl 3-6 set ref 253* 390* 392* include_self 107(03) based bit(2) level 4 packed packed unaligned dcl 3-6 set ref 254* 395* 397* indentation 106 based fixed bin(17,0) level 3 dcl 3-6 set ref 251* 370* 374 374 index builtin function dcl 162 ref 271 initiate_file_ 000046 constant entry external dcl 124 ref 459 interactive_messages 000324 automatic bit(1) dcl 91 set ref 224* 275* 277* 421 483 ioa_ 000050 constant entry external dcl 125 ref 510 514 518 521 528 530 last_search_buffer 100 based structure level 2 dcl 3-6 line_length 105 based fixed bin(17,0) level 3 dcl 3-6 set ref 250* 359* 363 list_messages 000330 automatic bit(1) dcl 95 set ref 235* 300* 301* 425 425* 433 553 local_ai 000210 automatic structure level 1 dcl 82 set ref 188* 191 191 local_co 000100 automatic structure level 1 dcl 610 set ref 616 616 local_oo 000374 automatic structure level 1 dcl 217 set ref 490 490 local_pcao 000202 automatic structure level 1 dcl 80 set ref 409 409 logbox_creation_mode 2 000202 automatic fixed bin(17,0) level 2 dcl 80 set ref 261* mail 000323 automatic bit(1) dcl 90 set ref 223* 271* 273* 421 483 485 mail_system_$close_mailbox 000052 constant entry external dcl 126 ref 616 mail_system_$get_address_pathname 000054 constant entry external dcl 127 ref 441 mailbox based structure level 1 dcl 7-6 mailbox_dirname 000241 automatic char(168) packed unaligned dcl 87 set ref 409* 441* 446* 446* 448* 448* 490* 492* 492* 500* mailbox_ename 000313 automatic char(32) packed unaligned dcl 88 set ref 409* 441* 446* 446* 448* 448* 490* 492* 492* 500* mailbox_info 6 based structure level 2 dcl 3-6 mailbox_name 24 based varying char(168) level 3 dcl 3-6 set ref 203* 498* 499* 500* 505 505 505 505 514* 521* 530* mailbox_ptr 6 based pointer level 3 in structure "rdm_invocation" dcl 3-6 in procedure "rdm" set ref 201* 496 613 616* mailbox_ptr 000372 automatic pointer dcl 7-30 in procedure "rdm" set ref 496* 498 499 502 510 514 514 514 518 521 521 521 528 530 530 530 530 537 mailbox_type 72 based fixed bin(17,0) level 2 dcl 7-6 ref 498 499 514 514 521 521 530 530 message_chain based structure level 1 dcl 5-7 message_chains 12 based structure level 3 dcl 3-6 set ref 201* message_list_ptr 10 based pointer level 3 dcl 3-6 set ref 201* message_reading_level 4 000374 automatic fixed bin(17,0) level 2 dcl 217 set ref 229* message_selection_mode 2 000374 automatic fixed bin(17,0) level 2 dcl 217 set ref 483* 485* 487* mlsys_data_$user_default_mailbox_address 000164 external static pointer dcl 6-12 set ref 441* mlsys_et_$mailbox_exists 000022 external static fixed bin(35,0) dcl 113 ref 448 mlsys_utils_$create_default_mailbox 000056 constant entry external dcl 128 ref 445 mlsys_utils_$parse_mailbox_control_args 000060 constant entry external dcl 129 ref 409 n_arguments 000103 automatic fixed bin(17,0) dcl 68 set ref 182* 267 650 n_messages 100 based fixed bin(17,0) level 2 dcl 7-6 set ref 510 518 528* 530* 537 null builtin function dcl 162 ref 168 176 184 184 184 184 197 201 207 466 466 467 585 585 612 613 618 622 624 626 open_options based structure level 1 dcl 1-6 p_string parameter char packed unaligned dcl 648 set ref 645 650* parse_ca_options based structure level 1 dcl 9-8 pathname_ 000062 constant entry external dcl 131 ref 446 446 448 448 460 460 492 492 500 print_messages 000331 automatic bit(1) dcl 96 set ref 235* 303* 304* 425 425* 433 562 print_options 104 based structure level 2 dcl 3-6 profile_dirname 000105 automatic char(168) packed unaligned dcl 71 set ref 457* 459* 460* 460* profile_ename 000157 automatic char(32) packed unaligned dcl 72 set ref 457* 459* 460* 460* profile_pathname based char packed unaligned dcl 70 set ref 457* 458* profile_pathname_given 000177 automatic bit(1) dcl 75 set ref 241* 333* 456 profile_pathname_lth 000174 automatic fixed bin(21,0) dcl 74 set ref 335* 457 457 458 458 profile_pathname_ptr 000172 automatic pointer dcl 73 set ref 334* 457 458 profile_ptr 000170 automatic pointer dcl 73 set ref 168* 459* 466* 467* 622 622* prompt_control 000337 automatic bit(2) dcl 103 set ref 238* 317* 320* 324* 474 475 prompt_string 000340 automatic varying char(64) dcl 104 set ref 239* 321* 474* quit_after_request_line 000332 automatic bit(1) dcl 97 set ref 235* 313* 425 425* 433 578 rdm_data_$ec_search_list 000160 external static char(32) packed unaligned dcl 2-15 set ref 478* rdm_data_$ec_suffix 000156 external static char(32) packed unaligned dcl 2-14 set ref 477* rdm_data_$first_invocation 000162 external static bit(1) dcl 2-20 set ref 544 548* rdm_data_$info_directory 000152 external static char(168) packed unaligned dcl 2-9 set ref 184* rdm_data_$special_message 000154 external static varying char(256) dcl 2-11 set ref 544* rdm_data_$version 000150 external static varying char(32) dcl 2-7 ref 184 rdm_invocation based structure level 1 dcl 3-6 set ref 193 rdm_invocation_ptr 000370 automatic pointer dcl 3-53 set ref 168* 193* 194 196 199 201 201 201 203 205 207 208 210 210* 244 245 245 247 250 251 252 253 254 255 338 339 342 343 345 346 348 350 352 354 359 363 370 374 374 380 382 385 387 390 392 395 397 400 402 466 469 469 471* 474 475 477 478 490* 496 498 499 500 502 505 505 505 505 510 514 518 521 528 530 544 546 554 563 572 578* 583 585 600* 612 613 616 618 618 rdm_mailbox_interface_$expunge_messages 000064 constant entry external dcl 132 ref 578 rdm_mailbox_interface_$open_mailbox 000066 constant entry external dcl 133 ref 490 rdm_mailbox_interface_$read_new_messages 000070 constant entry external dcl 134 ref 600 rdm_sci_ptr 000236 automatic pointer dcl 84 set ref 168* 184* 191* 196 197* 624 624* rdm_set_request_tables_ 000072 constant entry external dcl 135 ref 471 reply_options 105 based structure level 2 dcl 3-6 request_line_given 000333 automatic bit(1) dcl 99 set ref 235* 308* 425 425* 433 571 request_line_lth 000336 automatic fixed bin(21,0) dcl 101 set ref 310* 572* request_line_ptr 000334 automatic pointer dcl 100 set ref 309* 572* salvaged 74 based bit(1) level 3 packed packed unaligned dcl 7-6 ref 502 savebox_creation_mode 3 000202 automatic fixed bin(17,0) level 2 dcl 80 set ref 261* sci_ptr 000234 automatic pointer dcl 84 in procedure "rdm" set ref 168* 173* 182* 186* 269* 360* 363* 371* 374* 409* 414* 421* 425* 433* 443* 446* 448* 458* 460* 472* 492* 502* 505* 626 626* 650* 655* sci_ptr 2 based pointer level 2 in structure "rdm_invocation" dcl 3-6 in procedure "rdm" set ref 196* 210* 466* 469* 474* 475* 477* 478* 544* 546* 554* 563* 572* 583* 585* 618 618* sender_selection_mode 76 based fixed bin(17,0) level 2 in structure "mailbox" dcl 7-6 in procedure "rdm" ref 514 521 530 sender_selection_mode 3 000374 automatic fixed bin(17,0) level 2 in structure "local_oo" dcl 217 in begin block on line 215 set ref 227* 280* 282* 284* 285* ssu_$abort_subsystem 000074 constant entry external dcl 136 ref 186 360 363 371 374 414 421 425 433 443 448 458 460 472 492 650 ssu_$arg_count 000076 constant entry external dcl 137 ref 182 ssu_$arg_ptr 000100 constant entry external dcl 138 ref 269 655 ssu_$create_invocation 000102 constant entry external dcl 139 ref 184 ssu_$destroy_invocation 000104 constant entry external dcl 141 ref 618 624 626 ssu_$execute_line 000106 constant entry external dcl 142 ref 572 ssu_$execute_string 000110 constant entry external dcl 143 ref 554 563 ssu_$get_area 000112 constant entry external dcl 144 ref 191 ssu_$listen 000114 constant entry external dcl 145 ref 585 ssu_$print_blast 000116 constant entry external dcl 146 ref 544 ssu_$print_message 000120 constant entry external dcl 147 ref 446 502 505 ssu_$record_usage 000122 constant entry external dcl 148 ref 546 ssu_$set_abbrev_info 000124 constant entry external dcl 149 ref 466 ssu_$set_debug_mode 000126 constant entry external dcl 150 ref 469 ssu_$set_ec_search_list 000130 constant entry external dcl 151 ref 478 ssu_$set_ec_suffix 000132 constant entry external dcl 152 ref 477 ssu_$set_info_ptr 000134 constant entry external dcl 153 ref 210 ssu_$set_procedure 000136 constant entry external dcl 154 ref 583 ssu_$set_prompt 000140 constant entry external dcl 155 ref 474 ssu_$set_prompt_mode 000142 constant entry external dcl 156 ref 475 ssu_$standalone_invocation 000144 constant entry external dcl 157 ref 173 ssu_et_$program_interrupt 000024 external static fixed bin(35,0) dcl 113 ref 555 564 573 ssu_et_$request_line_aborted 000026 external static fixed bin(35,0) dcl 113 ref 556 565 ssu_et_$subsystem_aborted 000030 external static fixed bin(35,0) dcl 113 ref 574 string builtin function dcl 162 set ref 263* 615* substr builtin function dcl 162 ref 505 505 505 505 subsystem_area based area(1024) dcl 77 ref 193 subsystem_area_ptr 000200 automatic pointer dcl 78 set ref 191* 193 199 sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 110 ref 208 terminate_file_ 000146 constant entry external dcl 158 ref 622 totals_only 000326 automatic bit(1) dcl 93 set ref 232* 290* 425 537 translate builtin function dcl 162 ref 505 505 type based char(8) level 2 dcl 3-6 set ref 194* unspec builtin function dcl 162 set ref 188* validate_addresses 4(01) 000202 automatic bit(1) level 3 packed packed unaligned dcl 80 set ref 265* version 000202 automatic char(8) level 2 in structure "local_pcao" packed packed unaligned dcl 80 in procedure "rdm" set ref 260* version 000210 automatic fixed bin(17,0) level 2 in structure "local_ai" dcl 82 in procedure "rdm" set ref 189* version 000374 automatic char(8) level 2 in structure "local_oo" dcl 217 in begin block on line 215 set ref 226* version 000100 automatic char(8) level 2 in structure "local_co" packed packed unaligned dcl 610 in procedure "release_data_structures" set ref 614* zero_on_alloc 1(01) 000210 automatic bit(1) level 3 packed packed unaligned dcl 82 set ref 190* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALL_MESSAGES internal static fixed bin(17,0) initial dcl 5-42 A_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 CREATE_AND_ANNOUNCE_MAILBOX internal static fixed bin(17,0) initial dcl 9-28 DEFAULT_REQUEST_LOOP internal static bit(2) initial packed unaligned dcl 15-72 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 12-33 DONT_PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 14-10 DONT_PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 14-13 E_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 FORMAT_MESSAGE_OPTIONS_VERSION_1 internal static char(8) initial packed unaligned dcl 10-15 MAILBOX_VERSION_2 internal static char(8) initial packed unaligned dcl 7-28 M_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 NON_DELETED_MESSAGES internal static fixed bin(17,0) initial dcl 5-42 NO_REQUEST_LOOP internal static bit(2) initial packed unaligned dcl 15-72 N_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 ONLY_DELETED_MESSAGES internal static fixed bin(17,0) initial dcl 5-42 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 7-37 PROMPT internal static bit(1) initial packed unaligned dcl 14-6 PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 14-9 PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 14-12 QUERY_TO_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 9-28 READ_MESSAGES internal static fixed bin(17,0) initial dcl 1-38 REQUEST_LOOP internal static bit(2) initial packed unaligned dcl 15-72 REW_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SAVEBOX internal static fixed bin(17,0) initial dcl 7-37 SA_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 12-30 SEND_MAIL_OPTIONS_VERSION_6 internal static char(8) initial packed unaligned dcl 15-51 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 9-28 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 13-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 13-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 13-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 13-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 13-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 13-15 W_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 all_chain based structure level 1 dcl 5-23 area_infop automatic pointer dcl 11-5 close_options_ptr automatic pointer dcl 8-15 deleted_chain based structure level 1 dcl 5-25 format_message_options based structure level 1 dcl 10-6 format_message_options_ptr automatic pointer dcl 10-17 mailbox_n_messages automatic fixed bin(17,0) dcl 7-32 marked_as_original_chain based structure level 1 dcl 5-37 marked_chain based structure level 1 dcl 5-30 message_chain_ptr automatic pointer dcl 5-11 message_list based structure level 1 dcl 4-13 message_list_n_messages automatic fixed bin(17,0) dcl 4-25 mlsys_data_$system_directory external static char(168) packed unaligned dcl 6-7 mlsys_data_$user_logbox_address external static pointer dcl 6-15 mlsys_data_$user_mail_table_address external static pointer dcl 6-14 open_options_ptr automatic pointer dcl 1-14 parse_ca_options_ptr automatic pointer dcl 9-23 rdm_area based area(1024) dcl 3-55 send_mail_options based structure level 1 dcl 15-15 send_mail_options_ptr automatic pointer dcl 15-49 terminate_file_switches based structure level 1 packed packed unaligned dcl 13-4 undeleted_chain based structure level 1 dcl 5-24 NAMES DECLARED BY EXPLICIT CONTEXT. ENTER_REQUEST_LOOP 005342 constant label dcl 583 ref 555 564 573 EXIT_READ_MAIL_OR_ENTER_REQUEST_LOOP 005324 constant label dcl 578 ref 556 565 RETURN_FROM_READ_MAIL 005417 constant label dcl 590 ref 537 574 639 TRY_ARGUMENT_AS_MAILBOX_PATHNAME 003220 constant label dcl 409 ref 402 abort_read_mail_command 005614 constant entry internal dcl 636 ref 173 173 get_next_argument 005624 constant entry internal dcl 645 ref 307 316 332 358 369 post_request_line 005425 constant entry internal dcl 597 ref 583 583 rdm 001045 constant entry external dcl 60 read_mail 001054 constant entry external dcl 60 ref 544 544 546 546 release_data_structures 005452 constant entry internal dcl 607 ref 171 590 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7116 7304 6145 7126 Length 10132 6145 166 612 750 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rdm 530 external procedure is an external procedure. on unit on line 171 64 on unit begin block on line 215 begin block shares stack frame of external procedure rdm. post_request_line 74 internal procedure is assigned to an entry variable. release_data_structures 98 internal procedure is called by several nonquick procedures. abort_read_mail_command 64 internal procedure is assigned to an entry variable. get_next_argument internal procedure shares stack frame of external procedure rdm. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rdm 000100 argument_ptr rdm 000102 argument_lth rdm 000103 n_arguments rdm 000104 argument_idx rdm 000105 profile_dirname rdm 000157 profile_ename rdm 000170 profile_ptr rdm 000172 profile_pathname_ptr rdm 000174 profile_pathname_lth rdm 000175 enable_abbrev rdm 000176 abbrev_ca_given rdm 000177 profile_pathname_given rdm 000200 subsystem_area_ptr rdm 000202 local_pcao rdm 000210 local_ai rdm 000234 sci_ptr rdm 000236 rdm_sci_ptr rdm 000240 have_mailbox rdm 000241 mailbox_dirname rdm 000313 mailbox_ename rdm 000323 mail rdm 000324 interactive_messages rdm 000325 display_message_count rdm 000326 totals_only rdm 000327 enter_request_loop_if_no_messages rdm 000330 list_messages rdm 000331 print_messages rdm 000332 quit_after_request_line rdm 000333 request_line_given rdm 000334 request_line_ptr rdm 000336 request_line_lth rdm 000337 prompt_control rdm 000340 prompt_string rdm 000361 code rdm 000370 rdm_invocation_ptr rdm 000372 mailbox_ptr rdm 000374 local_oo begin block on line 215 release_data_structures 000100 local_co release_data_structures THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ cu_$af_return_arg cu_$arg_list_ptr cv_dec_check_ expand_pathname_$add_suffix initiate_file_ ioa_ mail_system_$close_mailbox mail_system_$get_address_pathname mlsys_utils_$create_default_mailbox mlsys_utils_$parse_mailbox_control_args pathname_ rdm_mailbox_interface_$expunge_messages rdm_mailbox_interface_$open_mailbox rdm_mailbox_interface_$read_new_messages rdm_set_request_tables_ ssu_$abort_subsystem ssu_$arg_count ssu_$arg_ptr ssu_$create_invocation ssu_$destroy_invocation ssu_$execute_line ssu_$execute_string ssu_$get_area ssu_$listen ssu_$print_blast ssu_$print_message ssu_$record_usage ssu_$set_abbrev_info ssu_$set_debug_mode ssu_$set_ec_search_list ssu_$set_ec_suffix ssu_$set_info_ptr ssu_$set_procedure ssu_$set_prompt ssu_$set_prompt_mode ssu_$standalone_invocation terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$inconsistent error_table_$noarg error_table_$too_many_args mlsys_data_$user_default_mailbox_address mlsys_et_$mailbox_exists rdm_data_$ec_search_list rdm_data_$ec_suffix rdm_data_$first_invocation rdm_data_$info_directory rdm_data_$special_message rdm_data_$version ssu_et_$program_interrupt ssu_et_$request_line_aborted ssu_et_$subsystem_aborted sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 60 001044 168 001061 171 001066 173 001110 175 001164 176 001166 178 001236 179 001262 182 001263 184 001274 186 001347 188 001376 189 001401 190 001403 191 001407 193 001434 194 001441 196 001444 197 001446 199 001450 201 001452 203 001462 205 001463 207 001464 208 001465 210 001471 221 001501 223 001502 224 001504 226 001505 227 001507 229 001511 231 001513 232 001515 233 001516 235 001517 238 001523 239 001524 241 001525 244 001530 245 001533 247 001537 250 001541 251 001543 252 001545 253 001547 254 001551 255 001553 260 001555 261 001557 263 001562 264 001563 265 001565 267 001567 269 001577 271 001614 273 001643 275 001655 277 001670 280 001702 282 001715 284 001730 285 001737 287 001746 288 001761 290 001773 293 002012 296 002035 300 002057 301 002072 303 002104 304 002117 306 002131 307 002141 308 002146 309 002150 310 002152 311 002154 313 002155 315 002164 316 002174 317 002201 320 002212 321 002214 323 002224 324 002225 326 002240 327 002254 328 002264 329 002265 330 002267 331 002270 332 002300 333 002310 334 002312 335 002314 336 002316 338 002317 339 002333 342 002347 343 002363 345 002377 346 002413 348 002427 350 002443 352 002457 354 002473 357 002507 358 002517 359 002524 360 002552 363 002607 366 002647 368 002650 369 002664 370 002671 371 002717 374 002756 378 003017 380 003020 382 003034 385 003050 387 003064 390 003100 392 003114 395 003130 397 003146 400 003164 402 003202 409 003220 413 003257 414 003261 417 003307 419 003311 421 003313 425 003343 433 003430 440 003470 441 003472 443 003526 445 003554 446 003563 448 003640 456 003712 457 003714 458 003752 459 004012 460 004050 463 004125 466 004131 467 004151 469 004153 471 004171 472 004202 474 004230 475 004246 477 004266 478 004300 483 004312 485 004321 487 004326 490 004330 492 004362 496 004434 498 004437 499 004451 500 004462 502 004510 505 004546 510 004621 514 004647 518 004716 521 004743 528 005012 530 005040 537 005112 544 005122 546 005164 548 005202 553 005204 554 005207 555 005232 556 005236 562 005240 563 005243 564 005270 565 005274 571 005276 572 005301 573 005316 574 005322 578 005324 583 005342 585 005400 590 005417 593 005423 597 005424 600 005432 601 005450 607 005451 612 005457 613 005464 614 005471 615 005473 616 005474 618 005511 622 005526 624 005562 626 005576 628 005612 636 005613 639 005621 645 005624 650 005635 653 005704 655 005705 657 005722 ----------------------------------------------------------- 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