COMPILATION LISTING OF SEGMENT rdm_mbx_requests_ Compiled by: Multics PL/I Compiler, Release 32e, of September 22, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/02/89 0823.4 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(88-03-21,Blair), approve(88-03-21,MCR7842), 16* audit(88-06-29,Lippard), install(88-07-26,MR12.2-1069): 17* Look for the savebox using the mlsys search_paths before querying 18* the user for whether or not he wishes to create a new mbx on a save 19* request. 20* 2) change(89-04-07,Lee), approve(89-05-10,MCR8104), 21* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 22* phx19099, phx15783, Mail 457 - added additional message_type parameter to 23* call to rdm_message_mark_mgr_$mark_current_message to catch use of "-odl" 24* with the current message. 25* 3) change(89-04-11,Lee), approve(89-05-10,MCR8104), 26* audit(89-07-18,LZimmerman), install(89-10-02,MR12.3-1079): 27* phx18564, phx17540, phx17353, Mail 446 - the new entry set_new_current_msg 28* in rdm_mailbox_interface_ is now called when the current message is 29* changed to guarantee that the new current message is never a deleted 30* message; reformatting. 31* END HISTORY COMMENTS */ 32 33 34 /* format: off */ 35 36 /* The read_mail log, save, and copy requests */ 37 38 /* Created: October 1983 by G. Palter from sdm_mbx_requests_ */ 39 40 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 41 42 43 rdm_mbx_requests_: 44 procedure (P_sci_ptr, P_rdm_invocation_ptr); 45 46 return; /* not an entrypoint */ 47 48 49 /* Parameters */ 50 51 dcl P_sci_ptr pointer parameter; 52 dcl P_rdm_invocation_ptr pointer parameter; 53 54 55 /* Remaining declarations */ 56 57 dcl message_specifier_idxs (n_message_specifiers_allocated) fixed binary based (message_specifier_idxs_ptr); 58 dcl message_specifier_idxs_ptr pointer; 59 dcl (n_message_specifiers_allocated, n_message_specifiers) fixed binary; 60 dcl message_type fixed binary; /* all/only deleted/only non-deleted */ 61 62 dcl argument character (argument_lth) unaligned based (argument_ptr); 63 dcl argument_ptr pointer; 64 dcl argument_lth fixed binary (21); 65 dcl (n_arguments, argument_idx) fixed binary; 66 67 dcl error_table_$noentry fixed bin (35) ext static; 68 dcl mbx_pathname character (mbx_pathname_lth) unaligned based (mbx_pathname_ptr); 69 dcl mbx_pathname_ptr pointer; 70 dcl mbx_pathname_lth fixed binary (21); 71 72 dcl mbx_dirname character (168); 73 dcl mbx_ename character (32); 74 75 dcl saved_rdm_sci_ptr pointer; 76 dcl is_original_request bit (1) aligned; /* ON => a request executed from within send_mail */ 77 78 dcl (delete_after_processing, reverse_processing, have_pathname) bit (1) aligned; 79 dcl try_to_create bit (1); 80 81 dcl code fixed binary (35); 82 83 /* format: off */ 84 dcl (error_table_$badopt, error_table_$nostars, mlsys_et_$logbox_created, mlsys_et_$no_savebox, mlsys_et_$savebox_created, 85 ssu_et_$unimplemented_request) 86 fixed binary (35) external; 87 /* format: on */ 88 89 dcl check_star_name_$entry entry (character (*), fixed binary (35)); 90 dcl command_query_$yes_no entry () options (variable); 91 dcl cu_$grow_stack_frame entry (fixed binary (19), pointer, fixed binary (35)); 92 dcl expand_pathname_$add_suffix entry (character (*), character (*), character (*), character (*), fixed binary (35)); 93 dcl suffixed_name_$make entry (char (*), char (*), char (32), fixed bin (35)); 94 dcl search_paths_$find_dir entry (char (*), ptr, char (*), char (*), char (*), fixed bin (35)); 95 dcl mail_system_$copy_message entry (pointer, character (*), character (*), fixed binary (35)); 96 dcl mail_system_$get_address_pathname entry (pointer, character (*), character (*), character (*), fixed binary (35)); 97 dcl mail_system_$log_message entry (pointer, bit (1) aligned, fixed binary (35)); 98 dcl mail_system_$save_message entry (pointer, character (*), character (*), bit (1) aligned, fixed binary (35)); 99 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 100 dcl rdm_mailbox_interface_$delete_messages entry (pointer, bit (1) aligned); 101 dcl rdm_mailbox_interface_$mark_processed_and_acknowledge entry (pointer, fixed binary); 102 dcl rdm_mailbox_interface_$read_message entry (pointer, fixed binary, pointer, fixed binary (35)); 103 dcl rdm_mailbox_interface_$set_new_current_msg entry (ptr, fixed binary, fixed binary); 104 dcl rdm_message_mark_mgr_$clear_marked_messages entry (pointer); 105 dcl rdm_message_mark_mgr_$mark_current_message entry (pointer, fixed binary); 106 dcl rdm_message_mark_mgr_$mark_messages 107 entry (pointer, pointer, fixed binary (21), fixed binary, bit (*), fixed binary (35)); 108 dcl rdm_message_mark_mgr_$remark_original_messages entry (pointer); 109 dcl rdm_message_mark_mgr_$validate_message_specifier 110 entry (pointer, pointer, fixed binary (21), fixed binary, bit (*), fixed binary (35)); 111 dcl ssu_$abort_line entry () options (variable); 112 dcl ssu_$arg_count entry (pointer, fixed binary); 113 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 114 dcl ssu_$get_request_name entry (pointer) returns (character (32)); 115 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 116 dcl ssu_$print_message entry () options (variable); 117 118 dcl cleanup condition; 119 120 dcl (index, length, null, reverse, search, size) builtin; 121 122 /* The "log" request: places a copy of the specified messages into the user's logbox which is created if necessary */ 123 124 log_request: 125 entry (P_sci_ptr, P_rdm_invocation_ptr); 126 127 call setup_request ("1"b); /* may be a send_mail original request */ 128 129 saved_rdm_sci_ptr = rdm_invocation.sci_ptr; /* for cleanup handler */ 130 131 on condition (cleanup) 132 begin; 133 rdm_invocation.sci_ptr = saved_rdm_sci_ptr; 134 end; 135 136 rdm_invocation.sci_ptr = P_sci_ptr; /* be sure to not abort the reply request by accident */ 137 138 call process_arguments ("0"b); /* don't allow any pathnames */ 139 140 call mark_appropriate_messages (); /* determine which messages to process */ 141 142 call process_messages (log_the_message); /* log them */ 143 144 rdm_invocation.sci_ptr = saved_rdm_sci_ptr; 145 146 return; 147 148 149 150 /* Invoked by process_messages to actually log the given message */ 151 152 log_the_message: 153 procedure (p_message_number, p_message_ptr); 154 155 dcl p_message_number fixed binary parameter; 156 dcl p_message_ptr pointer parameter; 157 158 call mail_system_$log_message (p_message_ptr, "1"b /* create if not found */, code); 159 if code = mlsys_et_$logbox_created then do; /* announce that we just created the user's logbox */ 160 call mail_system_$get_address_pathname (mlsys_data_$user_logbox_address, mbx_dirname, mbx_ename, ((32)" "), 161 (0)); 162 call ssu_$print_message (P_sci_ptr, 0, "Created ^a.", pathname_ (mbx_dirname, mbx_ename)); 163 code = 0; /* ... make the code indicate success */ 164 end; 165 166 if code ^= 0 then 167 call ssu_$abort_line (P_sci_ptr, code, "Adding message #^d to your logbox.", p_message_number); 168 169 return; 170 171 end log_the_message; 172 173 /* The "save" request: places a copy of the specified messages into the specified savebox; the user is queried for 174* permission to create the savebox if it does not exist */ 175 176 save_request: 177 entry (P_sci_ptr, P_rdm_invocation_ptr); 178 179 call setup_request ("1"b); /* may be a send_mail original request */ 180 181 saved_rdm_sci_ptr = rdm_invocation.sci_ptr; /* for cleanup handler */ 182 183 on condition (cleanup) 184 begin; 185 rdm_invocation.sci_ptr = saved_rdm_sci_ptr; 186 end; 187 188 rdm_invocation.sci_ptr = P_sci_ptr; /* be sure to not abort the reply request by accident */ 189 190 call process_arguments ("1"b); /* must have a pathname: aborts if none given */ 191 192 if index (reverse (mbx_pathname), reverse (".sv")) = 1 then 193 mbx_pathname_lth = mbx_pathname_lth - length (".sv"); 194 /* remove ".sv" to avoid generating "x.sv.sv.mbx" */ 195 196 if search (mbx_pathname, "<>") > 0 then do; 197 call expand_pathname_$add_suffix (mbx_pathname, "sv.mbx", mbx_dirname, mbx_ename, code); 198 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 199 200 end; 201 else do; 202 call suffixed_name_$make (mbx_pathname, "sv.mbx", mbx_ename, code); 203 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 204 call search_paths_$find_dir ("mlsys", null (), mbx_ename, "", mbx_dirname, code); 205 if code ^= 0 then 206 if code = error_table_$noentry then do; 207 call expand_pathname_$add_suffix (mbx_pathname, "sv.mbx", mbx_dirname, mbx_ename, code); 208 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 209 end; 210 else call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_ename); 211 end; 212 call check_star_name_$entry (mbx_ename, code); 213 if code ^= 0 then /* reject invalid names and star names */ 214 if (code = 1) | (code = 2) then 215 call ssu_$abort_line (P_sci_ptr, error_table_$nostars, "^a", pathname_ (mbx_dirname, mbx_ename)); 216 else call ssu_$abort_line (P_sci_ptr, code, "^a", pathname_ (mbx_dirname, mbx_ename)); 217 call mark_appropriate_messages (); /* determine which messages to process */ 218 219 call process_messages (save_the_message); /* save them */ 220 221 rdm_invocation.sci_ptr = saved_rdm_sci_ptr; 222 223 return; 224 225 226 227 /* Invoked by process_messages to actually save the given message */ 228 229 save_the_message: 230 procedure (p_message_number, p_message_ptr); 231 232 dcl p_message_number fixed binary parameter; 233 dcl p_message_ptr pointer parameter; 234 235 call mail_system_$save_message (p_message_ptr, mbx_dirname, mbx_ename, "0"b /* do not create if missing */, 236 code); 237 238 if code = mlsys_et_$no_savebox then do; /* ask for permission to create the savebox */ 239 call command_query_$yes_no (try_to_create, 0, ssu_$get_subsystem_and_request_name (P_sci_ptr), "", 240 "Do you wish to create the savebox ^a?", pathname_ (mbx_dirname, mbx_ename)); 241 if try_to_create then /* ... permission given: try again */ 242 call mail_system_$save_message (p_message_ptr, mbx_dirname, mbx_ename, "1"b /* create if not found */, 243 code); 244 else call ssu_$abort_line (P_sci_ptr, 0); /* ... no permission: stop right here */ 245 if code = mlsys_et_$savebox_created then code = 0; 246 end; 247 248 if code ^= 0 then /* couldn't save it */ 249 call ssu_$abort_line (P_sci_ptr, code, "Adding message #^d to the savebox ^a.", p_message_number, 250 pathname_ (mbx_dirname, mbx_ename)); 251 252 return; 253 254 end save_the_message; 255 256 /* The "copy" request: places a copy of the specified messages into the specified mailbox which must already exist */ 257 258 copy_request: 259 entry (P_sci_ptr, P_rdm_invocation_ptr); 260 261 call setup_request ("0"b); /* may not be a send_mail original request */ 262 263 call process_arguments ("1"b); /* must have a pathname: aborts if none given */ 264 265 if search (mbx_pathname, "<>") > 0 then do; 266 call expand_pathname_$add_suffix (mbx_pathname, "mbx", mbx_dirname, mbx_ename, code); 267 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 268 269 end; 270 else do; 271 call suffixed_name_$make (mbx_pathname, "mbx", mbx_ename, code); 272 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 273 call search_paths_$find_dir ("mlsys", null (), mbx_ename, "", mbx_dirname, code); 274 if code ^= 0 then 275 if code = error_table_$noentry then do; 276 call expand_pathname_$add_suffix (mbx_pathname, "mbx", mbx_dirname, mbx_ename, code); 277 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_pathname); 278 end; 279 else call ssu_$abort_line (P_sci_ptr, code, "^a", mbx_ename); 280 end; 281 282 call check_star_name_$entry (mbx_ename, code); 283 if code ^= 0 then /* reject invalid names and star names */ 284 if (code = 1) | (code = 2) then 285 call ssu_$abort_line (P_sci_ptr, error_table_$nostars, "^a", pathname_ (mbx_dirname, mbx_ename)); 286 else call ssu_$abort_line (P_sci_ptr, code, "^a", pathname_ (mbx_dirname, mbx_ename)); 287 288 call mark_appropriate_messages (); /* determine which messages to process */ 289 290 call process_messages (copy_the_message); /* copy them */ 291 292 return; 293 294 295 296 /* Invoked by process_messages to actually copy the given message */ 297 298 copy_the_message: 299 procedure (p_message_number, p_message_ptr); 300 301 dcl p_message_number fixed binary parameter; 302 dcl p_message_ptr pointer parameter; 303 304 call mail_system_$copy_message (p_message_ptr, mbx_dirname, mbx_ename, code); 305 306 if code ^= 0 then /* couldn't copy it */ 307 call ssu_$abort_line (P_sci_ptr, code, "Adding message #^d to the mailbox ^a.", p_message_number, 308 pathname_ (mbx_dirname, mbx_ename)); 309 310 return; 311 312 end copy_the_message; 313 314 /* Prepares for the execution of one of the above requests */ 315 316 setup_request: 317 procedure (p_allow_original_request) /* options (quick) */; 318 319 dcl p_allow_original_request bit (1) aligned; 320 321 rdm_invocation_ptr = P_rdm_invocation_ptr; 322 323 if rdm_invocation.type = SDM_INVOCATION then /* a send_mail original request ... */ 324 if p_allow_original_request then do; /* ... and that's OK */ 325 is_original_request = "1"b; 326 sdm_invocation_ptr = P_rdm_invocation_ptr; 327 rdm_invocation_ptr = sdm_invocation.rdm_invocation_ptr; 328 if rdm_invocation_ptr = null () then 329 call ssu_$abort_line (P_sci_ptr, 0, "This request is valid only during a ""reply"" request."); 330 end; 331 else call ssu_$abort_line (P_sci_ptr, ssu_et_$unimplemented_request); 332 333 else is_original_request = "0"b; /* an ordinary read_mail request */ 334 335 call ssu_$arg_count (P_sci_ptr, n_arguments); 336 337 n_message_specifiers_allocated = n_arguments; /* can't have more message specifiers than arguments */ 338 call cu_$grow_stack_frame (size (message_specifier_idxs), message_specifier_idxs_ptr, code); 339 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, 0, "Too many message specifiers on the request line."); 340 341 n_message_specifiers = 0; /* haven't actually spotted any yet */ 342 343 call rdm_message_mark_mgr_$clear_marked_messages (rdm_invocation_ptr); 344 345 return; 346 347 end setup_request; 348 349 /* Processes the arguments for one of the above requests */ 350 351 process_arguments: 352 procedure (p_pathname_required); 353 354 dcl p_pathname_required bit (1) aligned parameter; 355 356 have_pathname = "0"b; /* haven't seen a pathname yet */ 357 reverse_processing = "0"b; /* default is to process in the order marked */ 358 delete_after_processing = "0"b; /* default is to not delete after processing */ 359 360 message_type = NON_DELETED_MESSAGES; 361 362 do argument_idx = 1 to n_arguments; 363 364 call ssu_$arg_ptr (P_sci_ptr, argument_idx, argument_ptr, argument_lth); 365 366 if index (argument, "-") = 1 then /* a controla rgument */ 367 if ^is_original_request & ((argument = "-delete") | (argument = "-dl")) then 368 delete_after_processing = "1"b; 369 else if ^is_original_request & ((argument = "-no_delete") | (argument = "-ndl")) then 370 delete_after_processing = "0"b; 371 372 else if (argument = "-include_deleted") | (argument = "-idl") then message_type = ALL_MESSAGES; 373 else if (argument = "-only_deleted") | (argument = "-odl") then message_type = ONLY_DELETED_MESSAGES; 374 else if (argument = "-only_non_deleted") | (argument = "-ondl") then 375 message_type = NON_DELETED_MESSAGES; 376 377 else if (argument = "-reverse") | (argument = "-rv") then reverse_processing = "1"b; 378 else if (argument = "-no_reverse") | (argument = "-nrv") then reverse_processing = "0"b; 379 380 /*** the following control arguments are obsolete: remove them in MR11 */ 381 else if (argument = "-all") | (argument = "-a") then message_type = ALL_MESSAGES; 382 383 else call ssu_$abort_line (P_sci_ptr, error_table_$badopt, """^a""", argument); 384 385 else do; /* a message specifier or pathname */ 386 call rdm_message_mark_mgr_$validate_message_specifier (rdm_invocation_ptr, argument_ptr, argument_lth, 387 ALL_MESSAGES, ""b, code); 388 if code = 0 then do; /* ... it looks like a message specifier */ 389 n_message_specifiers = n_message_specifiers + 1; 390 message_specifier_idxs (n_message_specifiers) = argument_idx; 391 end; 392 else if p_pathname_required then /* ... it must be the pathname */ 393 if have_pathname then /* ... but we already have one */ 394 call ssu_$abort_line (P_sci_ptr, 0, "Only one pathname may be given. ""^a"" and ""^a""", 395 mbx_pathname, argument); 396 else do; /* ... first pathname */ 397 have_pathname = "1"b; 398 mbx_pathname_ptr = argument_ptr; 399 mbx_pathname_lth = argument_lth; 400 end; 401 else /*** if ^p_pathname_required then */ 402 call ssu_$abort_line (P_sci_ptr, code, """^a""", argument); 403 end; 404 end; 405 406 if p_pathname_required & ^have_pathname then /* pathname missing: usage message is better here */ 407 call ssu_$abort_line (P_sci_ptr, 0, "Usage: ^a {message_specifiers} path {-control_args}", 408 ssu_$get_request_name (P_sci_ptr)); 409 410 return; 411 412 end process_arguments; 413 414 /* Marks the appropriate messages for processing */ 415 416 mark_appropriate_messages: 417 procedure (); 418 419 dcl idx fixed binary; 420 421 if n_message_specifiers = 0 then /* defaults to ... */ 422 if is_original_request then /* ... messages being answered if from send_mail */ 423 call rdm_message_mark_mgr_$remark_original_messages (rdm_invocation_ptr); 424 425 else /* ... current message if from read_mail */ 426 call rdm_message_mark_mgr_$mark_current_message (rdm_invocation_ptr, message_type); 427 /* phx19099 RL - use of "-odl" with the current message will be caught during marking */ 428 else do; /* use the messages requested by the user */ 429 do idx = 1 to n_message_specifiers; 430 call ssu_$arg_ptr (P_sci_ptr, message_specifier_idxs (idx), argument_ptr, argument_lth); 431 call rdm_message_mark_mgr_$mark_messages (rdm_invocation_ptr, argument_ptr, argument_lth, 432 message_type, ""b, code); 433 if code ^= 0 then call ssu_$abort_line (P_sci_ptr, code); 434 end; 435 end; 436 437 return; 438 439 end mark_appropriate_messages; 440 441 /* Processes the marked messages */ 442 443 process_messages: 444 procedure (p_processor); 445 446 dcl p_processor entry (fixed binary, pointer) variable parameter; 447 448 dcl (first_message_idx, last_message_idx, message_idx_increment, message_idx, message_number) fixed binary; 449 dcl message_ptr pointer; 450 451 452 if reverse_processing then do; /* process them in the opposite order */ 453 first_message_idx = marked_chain.n_messages; 454 last_message_idx = 1; 455 message_idx_increment = -1; 456 end; 457 else do; /* process them in the order marked */ 458 first_message_idx = 1; 459 last_message_idx = marked_chain.n_messages; 460 message_idx_increment = 1; 461 end; 462 463 do message_idx = first_message_idx to last_message_idx by message_idx_increment; 464 message_number = marked_chain.messages (message_idx); 465 466 call rdm_mailbox_interface_$read_message (rdm_invocation_ptr, message_number, message_ptr, code); 467 if code ^= 0 then 468 call ssu_$abort_line (P_sci_ptr, code, "Reading message #^d from ^a.", message_number, 469 rdm_invocation.mailbox_name); 470 471 /* phx18564 RL - set current message to message_number and guarantee that it's not deleted */ 472 call rdm_mailbox_interface_$set_new_current_msg (rdm_invocation_ptr, message_number, 473 rdm_invocation.current_message); /* it's current while we're working on it */ 474 475 call p_processor (message_number, message_ptr); 476 /* do the request-specific processing */ 477 478 call rdm_mailbox_interface_$mark_processed_and_acknowledge (rdm_invocation_ptr, message_number); 479 end; 480 481 if delete_after_processing then /* user wants them deleted after processing */ 482 call rdm_mailbox_interface_$delete_messages (rdm_invocation_ptr, "0"b); 483 484 return; 485 486 end process_messages; 487 1 1 /* BEGIN INCLUDE FILE ... rdm_invocation.incl.pl1 */ 1 2 /* Created: September 1983 by G. Palter from portions of emf_info.incl.pl1 */ 1 3 1 4 /* Definition of a single invocation of read_mail */ 1 5 1 6 dcl 1 rdm_invocation aligned based (rdm_invocation_ptr), 1 7 2 type character (8), /* defines this structure as a read_mail invocation */ 1 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 1 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 1 10 1 11 2 mailbox_info, 1 12 3 mailbox_ptr pointer, /* -> mailbox structure being examined by this invocation */ 1 13 3 message_list_ptr pointer, /* -> list of read_mail specific information retained for each 1 14* message (eg: the "processed" flag) */ 1 15 3 message_chains, /*the various message chains ... */ 1 16 4 all pointer, /* ... all unexpunged messages */ 1 17 4 undeleted pointer, /* ... all undeleted messages */ 1 18 4 deleted pointer, /* ... all deleted messages */ 1 19 4 marked pointer, /* ... messages to be processed by the current request */ 1 20 4 marked_as_original pointer, /* ... messages being processed by a reply/forward request */ 1 21 3 mailbox_name character (168) varying, /* name of the mailbox (your mailbox/logbox/pathname) */ 1 22 1 23 2 current_message fixed binary, /* index of the current message; 0 => no current message */ 1 24 1 25 2 last_search_buffer, /* describes the buffer where read_mail constructs the ... */ 1 26 3 buffer_ptr pointer, /* ... the printed representation of messages in order ... */ 1 27 3 buffer_used fixed binary (21), /* ... to speed up regular expression searching */ 1 28 1 29 2 global_options, /* command line options affecting all of read_mail ... */ 1 30 3 flags, 1 31 4 acknowledge bit (1) unaligned, /* ... ON => acknowledge messages after printing */ 1 32 4 brief bit (1) unaligned, /* ... ON => shorten some messages and omit others */ 1 33 4 debug_mode bit (1) unaligned, /* ... ON => enable debugging features */ 1 34 4 pad bit (33) unaligned, 1 35 1 36 2 print_options, /* command line options affecting the print request ... */ 1 37 3 formatting_mode fixed binary, /* ... output mode for the message header, etc. */ 1 38 1 39 2 reply_options, /* command line options affecting the reply request ... */ 1 40 3 line_length fixed binary, /* ... line length to be used by send_mail for filling */ 1 41 3 indentation fixed binary, /* ... amount to indent original text when included */ 1 42 3 flags, 1 43 4 include_original bit (1) unaligned, /* ... ON => include original message text in the reply */ 1 44 4 include_authors bit (1) unaligned, /* ... ON => include original authors as recipients */ 1 45 4 include_recipients bit (1) unaligned, /* ... ON => include original recipients as recipients */ 1 46 4 include_self bit (2) unaligned, /* ... ON => include this user as a recipient of the reply if 1 47* selected by include_authors/include_recipients */ 1 48 4 fill_control bit (2) unaligned, /* ... controls message filling by send_mail */ 1 49 4 pad bit (29) unaligned; 1 50 1 51 dcl RDM_INVOCATION character (8) static options (constant) initial ("rdm_0009"); 1 52 1 53 dcl rdm_invocation_ptr pointer; 1 54 1 55 dcl rdm_area area based (rdm_invocation.area_ptr); 1 56 1 57 1 58 /* Defined settings for reply_options.include_self */ 1 59 1 60 dcl (DEFAULT_INCLUDE_SELF initial ("00"b), /* neither -include_self nor -no_include_self given */ 1 61 NO_INCLUDE_SELF initial ("01"b), /* -no_include_self explicitly given */ 1 62 INCLUDE_SELF initial ("10"b)) /* -include_self explicitly given */ 1 63 bit (2) aligned static options (constant); 1 64 1 65 /* END INCLUDE FILE ... rdm_invocation.incl.pl1 */ 488 489 2 1 /* BEGIN INCLUDE FILE ... rdm_message_list.incl.pl1 */ 2 2 /* Created: September 1983 by G. Palter */ 2 3 2 4 /* Definition of per-message data maintained by read_mail: This list is maintined in parallel to the mailbox structure by 2 5* read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_). It serves two purposes: 2 6* (1) It provides a place to store read_mail-specific per-message data (ie: the processed flag). 2 7* (2) It provides the ability to provide arbitrary mappings between read_mail message numbers and the actual indeces 2 8* within the mailbox structure. This mapping allows read_mail to preserve its message numbers for an invocation 2 9* even if messages are expunged which causes them to disappear from the mailbox structure (NB: the "expunge" 2 10* request is not yet implemented). This mapping also allows read_mail to present the messages in the mailbox to 2 11* the user in a different order than they actually appear in the mailbox (eg: sorted by date/time created) */ 2 12 2 13 dcl 1 message_list aligned based (rdm_invocation.message_list_ptr), 2 14 2 n_messages fixed binary, /* # of messages known to read_mail at present */ 2 15 2 pad bit (36), 2 16 2 messages (message_list_n_messages refer (message_list.n_messages)), 2 17 3 message_idx fixed binary, /* index of this message in the mailbox structure */ 2 18 3 flags, 2 19 4 processed bit (1) unaligned, /* ON => this message may be deleted without query */ 2 20 4 pad bit (35) unaligned, 2 21 3 search_text, /* describes copy of messages used for regexp searches */ 2 22 4 search_text_ptr pointer, /* ... -> the saved printed represetnation */ 2 23 4 search_text_lth fixed binary (21); /* ... length of said representation in characters */ 2 24 2 25 dcl message_list_n_messages fixed binary; 2 26 2 27 /* END INCLUDE FILE ... rdm_message_list.incl.pl1 */ 490 491 3 1 /* BEGIN INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 3 2 /* Created: September 1983 by G. Palter */ 3 3 3 4 3 5 /* Definition of a read_mail message chain */ 3 6 3 7 dcl 1 message_chain aligned based (message_chain_ptr), 3 8 2 n_messages fixed binary, /* # of messages in the chain */ 3 9 2 messages (message_list.n_messages) fixed binary; /* read_mail message numbers of the messages in the chain */ 3 10 3 11 dcl message_chain_ptr pointer; 3 12 3 13 3 14 /* Message chains maintained by read_mail's interface to the mail_system_ mailbox manager (rdm_mailbox_interface_) -- 3 15* (1) The first chain is a list of all messages in the mailbox which have not yet been expunged and consists of all 3 16* messages whether or not they have been marked for deletion. 3 17* (2) The second chain is a list of all messages in the mailbox which have not been marked for later deletion. 3 18* (3) The third chain is a list of all messages which have been marked for later deletion. 3 19* The message specifier parser uses one of these three chains as the basis for selecting the messages to be processed by 3 20* a request based on the use of "-include_deleted", "-only_non_deleted", or "-only_deleted", respectively; in this way, 3 21* the amount of code in the parser which must distinguish between these three types of selections is minimized */ 3 22 3 23 dcl 1 all_chain aligned based (rdm_invocation.message_chains.all) like message_chain; 3 24 dcl 1 undeleted_chain aligned based (rdm_invocation.message_chains.undeleted) like message_chain; 3 25 dcl 1 deleted_chain aligned based (rdm_invocation.message_chains.deleted) like message_chain; 3 26 3 27 3 28 /* The marked chain is the list of messages that are to be processed by the current request */ 3 29 3 30 dcl 1 marked_chain aligned based (rdm_invocation.message_chains.marked) like message_chain; 3 31 3 32 3 33 /* The marked as original chain is the list of messages that are being processed by a reply or forward request: This 3 34* chain is used to define the default set of messages to be processed by the various send_mail "original" requests and 3 35* forward "original" sub-requests */ 3 36 3 37 dcl 1 marked_as_original_chain aligned based (rdm_invocation.message_chains.marked_as_original) like message_chain; 3 38 3 39 3 40 /* Definition of the acceptable message selection criteria */ 3 41 3 42 dcl (ALL_MESSAGES initial (1), /* all messages: -include_deleted */ 3 43 NON_DELETED_MESSAGES initial (2), /* only undeleted messages: -only_non_deleted (default) */ 3 44 ONLY_DELETED_MESSAGES initial (3)) /* only deleted messages: -only_deleted */ 3 45 fixed binary static options (constant); 3 46 3 47 /* END INCLUDE FILE ... rdm_message_chains.incl.pl1 */ 492 493 4 1 /* BEGIN INCLUDE FILE ... mlsys_data.incl.pl1 */ 4 2 /* Created: 20 Decembber 1978 by G. Palter */ 4 3 /* Modified: 1 July 1983 by G. Palter to merge with mlsys_internal_data_ */ 4 4 4 5 /* Constants defined by the Multics mail system for external use */ 4 6 4 7 dcl mlsys_data_$system_directory character (168) external; /* directory containing per-system data (mail table/queues) */ 4 8 4 9 4 10 /* Static data defined by the Multics mail system for external use */ 4 11 4 12 dcl mlsys_data_$user_default_mailbox_address pointer external; 4 13 /* -> the address of the user's default mailbox */ 4 14 dcl mlsys_data_$user_mail_table_address pointer external; /* -> the address of the user's entry in the mail table */ 4 15 dcl mlsys_data_$user_logbox_address pointer external; /* -> the address of the user's logbox */ 4 16 4 17 /* END INCLUDE FILE ... mlsys_data.incl.pl1 */ 494 495 5 1 /* BEGIN INCLUDE FILE ... sdm_invocation.incl.pl1 */ 5 2 /* Created: August 1983 by G. Palter from portions of emf_info.incl.pl1 */ 5 3 5 4 /* Definition of a single invocation of send_mail */ 5 5 5 6 dcl 1 sdm_invocation aligned based (sdm_invocation_ptr), 5 7 2 type character (8), /* defines this structure as a send_mail invocation */ 5 8 2 sci_ptr pointer, /* -> subsystem utilities invocation data */ 5 9 2 area_ptr pointer, /* -> area to be used by the subsystem */ 5 10 5 11 2 message_info, /* information about the message being constructed */ 5 12 3 message_ptr pointer, /* ... -> the actual message */ 5 13 3 message_state fixed binary, /* ... unprocessed/modified/processed: controls quit query */ 5 14 3 date_time_body_modified fixed binary (71), /* ... last date/time the message body was changed: used to 5 15* display Date/Message-ID fields before transmission */ 5 16 5 17 2 fill_width fixed binary, /* default line length for message filling */ 5 18 2 flags, 5 19 3 brief bit (1) unaligned, /* ON => suppress "Mail delivered..." messages */ 5 20 3 acknowledge bit (1) unaligned, /* ON => user wants acknowledgement from recipients */ 5 21 3 notify bit (1) unaligned, /* ON => send each recipient a notification of delivery */ 5 22 3 fill bit (1) unaligned, /* ON => fill message body whenever modified */ 5 23 3 debug_mode bit (1) unaligned, /* ON => debugging features enabled */ 5 24 3 auto_write bit (1) unaligned, 5 25 3 pad bit (30) unaligned, /* ON => qedx request automatically rewrites on quit (sigh) */ 5 26 5 27 2 rdm_invocation_ptr pointer, /* -> description of read_mail invocation whose reply request 5 28* created this send_mail invocation */ 5 29 5 30 2 original_messages_ptr pointer, /* -> current list of original messages from which the 5 31* In-Reply-To field is to be regenerated after use of 5 32* qedx/apply -header */ 5 33 5 34 2 abort_code fixed binary (35); /* indicates whether send_mail exited with unsent message */ 5 35 5 36 dcl SDM_INVOCATION character (8) static options (constant) initial ("sdm_0008"); 5 37 5 38 dcl sdm_invocation_ptr pointer; 5 39 5 40 dcl sdm_area area based (sdm_invocation.area_ptr); 5 41 5 42 5 43 /* Possible message states: indicate whether the message has been modified in some way since it was last successfully 5 44* transmitted, logged, saved, or writen. This state is used by the quit request to control whether it should query the 5 45* user for permission to exit send_mail */ 5 46 5 47 dcl (UNPROCESSED_MESSAGE initial (-1), /* message has never been transmitted/logged/saved/written */ 5 48 5 49 MODIFIED_MESSAGE initial (1), /* message was transmitted/logged/saved/written but has been 5 50* modified since the last such operation */ 5 51 5 52 PROCESSED_MESSAGE initial (0)) /* message was transmitted/logged/saved/written and hasn't 5 53* been modified since that operation: OK to quit without 5 54* having to ask for the user's permission */ 5 55 fixed binary static options (constant); 5 56 5 57 /* END INCLUDE FILE ... sdm_invocation.incl.pl1 */ 496 497 498 end rdm_mbx_requests_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0815.0 rdm_mbx_requests_.pl1 >spec>install>1079>rdm_mbx_requests_.pl1 488 1 10/27/83 2104.3 rdm_invocation.incl.pl1 >ldd>include>rdm_invocation.incl.pl1 490 2 10/27/83 2104.3 rdm_message_list.incl.pl1 >ldd>include>rdm_message_list.incl.pl1 492 3 10/27/83 2104.3 rdm_message_chains.incl.pl1 >ldd>include>rdm_message_chains.incl.pl1 494 4 10/27/83 2104.2 mlsys_data.incl.pl1 >ldd>include>mlsys_data.incl.pl1 496 5 10/27/83 2104.2 sdm_invocation.incl.pl1 >ldd>include>sdm_invocation.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. ALL_MESSAGES 000052 constant fixed bin(17,0) initial dcl 3-42 set ref 372 381 386* NON_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 360 374 ONLY_DELETED_MESSAGES constant fixed bin(17,0) initial dcl 3-42 ref 373 P_rdm_invocation_ptr parameter pointer dcl 52 ref 43 124 176 258 321 326 P_sci_ptr parameter pointer dcl 51 set ref 43 124 136 162* 166* 176 188 198* 203* 208* 210* 213* 216* 239* 244* 248* 258 267* 272* 277* 279* 283* 286* 306* 328* 331* 335* 339* 364* 383* 392* 401* 406* 406* 406* 430* 433* 467* SDM_INVOCATION 000000 constant char(8) initial packed unaligned dcl 5-36 ref 323 argument based char packed unaligned dcl 62 set ref 366 366 366 369 369 372 372 373 373 374 374 377 377 378 378 381 381 383* 392* 401* argument_idx 000112 automatic fixed bin(17,0) dcl 65 set ref 362* 364* 390* argument_lth 000110 automatic fixed bin(21,0) dcl 64 set ref 364* 366 366 366 369 369 372 372 373 373 374 374 377 377 378 378 381 381 383 383 386* 392 392 399 401 401 430* 431* argument_ptr 000106 automatic pointer dcl 63 set ref 364* 366 366 366 369 369 372 372 373 373 374 374 377 377 378 378 381 381 383 386* 392 398 401 430* 431* check_star_name_$entry 000026 constant entry external dcl 89 ref 212 282 cleanup 000212 stack reference condition dcl 118 ref 131 183 code 000211 automatic fixed bin(35,0) dcl 81 set ref 158* 159 163* 166 166* 197* 198 198* 202* 203 203* 204* 205 205 207* 208 208* 210* 212* 213 213 213 216* 235* 238 241* 245 245* 248 248* 266* 267 267* 271* 272 272* 273* 274 274 276* 277 277* 279* 282* 283 283 283 286* 304* 306 306* 338* 339 386* 388 401* 431* 433 433* 466* 467 467* command_query_$yes_no 000030 constant entry external dcl 90 ref 239 cu_$grow_stack_frame 000032 constant entry external dcl 91 ref 338 current_message 77 based fixed bin(17,0) level 2 dcl 1-6 set ref 472* delete_after_processing 000205 automatic bit(1) dcl 78 set ref 358* 366* 369* 481 error_table_$badopt 000012 external static fixed bin(35,0) dcl 84 set ref 383* error_table_$noentry 000010 external static fixed bin(35,0) dcl 67 ref 205 274 error_table_$nostars 000014 external static fixed bin(35,0) dcl 84 set ref 213* 283* expand_pathname_$add_suffix 000034 constant entry external dcl 92 ref 197 207 266 276 first_message_idx 000260 automatic fixed bin(17,0) dcl 448 set ref 453* 458* 463 have_pathname 000207 automatic bit(1) dcl 78 set ref 356* 392 397* 406 idx 000250 automatic fixed bin(17,0) dcl 419 set ref 429* 430* index builtin function dcl 120 ref 192 366 is_original_request 000204 automatic bit(1) dcl 76 set ref 325* 333* 366 369 421 last_message_idx 000261 automatic fixed bin(17,0) dcl 448 set ref 454* 459* 463 length builtin function dcl 120 ref 192 mail_system_$copy_message 000042 constant entry external dcl 95 ref 304 mail_system_$get_address_pathname 000044 constant entry external dcl 96 ref 160 mail_system_$log_message 000046 constant entry external dcl 97 ref 158 mail_system_$save_message 000050 constant entry external dcl 98 ref 235 241 mailbox_info 6 based structure level 2 dcl 1-6 mailbox_name 24 based varying char(168) level 3 dcl 1-6 set ref 467* marked 20 based pointer level 4 dcl 1-6 ref 453 459 464 marked_chain based structure level 1 dcl 3-30 mbx_dirname 000117 automatic char(168) packed unaligned dcl 72 set ref 160* 162* 162* 197* 204* 207* 213* 213* 216* 216* 235* 239* 239* 241* 248* 248* 266* 273* 276* 283* 283* 286* 286* 304* 306* 306* mbx_ename 000171 automatic char(32) packed unaligned dcl 73 set ref 160* 162* 162* 197* 202* 204* 207* 210* 212* 213* 213* 216* 216* 235* 239* 239* 241* 248* 248* 266* 271* 273* 276* 279* 282* 283* 283* 286* 286* 304* 306* 306* mbx_pathname based char packed unaligned dcl 68 set ref 192 196 197* 198* 202* 203* 207* 208* 265 266* 267* 271* 272* 276* 277* 392* mbx_pathname_lth 000116 automatic fixed bin(21,0) dcl 70 set ref 192 192* 192 196 197 197 198 198 202 202 203 203 207 207 208 208 265 266 266 267 267 271 271 272 272 276 276 277 277 392 392 399* mbx_pathname_ptr 000114 automatic pointer dcl 69 set ref 192 196 197 198 202 203 207 208 265 266 267 271 272 276 277 392 398* message_chain based structure level 1 dcl 3-7 message_chains 12 based structure level 3 dcl 1-6 message_idx 000263 automatic fixed bin(17,0) dcl 448 set ref 463* 464* message_idx_increment 000262 automatic fixed bin(17,0) dcl 448 set ref 455* 460* 463 message_number 000264 automatic fixed bin(17,0) dcl 448 set ref 464* 466* 467* 472* 475* 478* message_ptr 000266 automatic pointer dcl 449 set ref 466* 475* message_specifier_idxs based fixed bin(17,0) array dcl 57 set ref 338 338 390* 430* message_specifier_idxs_ptr 000100 automatic pointer dcl 58 set ref 338 338 338* 390 430 message_type 000104 automatic fixed bin(17,0) dcl 60 set ref 360* 372* 373* 374* 381* 425* 431* messages 1 based fixed bin(17,0) array level 2 dcl 3-30 ref 464 mlsys_data_$user_logbox_address 000112 external static pointer dcl 4-15 set ref 160* mlsys_et_$logbox_created 000016 external static fixed bin(35,0) dcl 84 ref 159 mlsys_et_$no_savebox 000020 external static fixed bin(35,0) dcl 84 ref 238 mlsys_et_$savebox_created 000022 external static fixed bin(35,0) dcl 84 ref 245 n_arguments 000111 automatic fixed bin(17,0) dcl 65 set ref 335* 337 362 n_message_specifiers 000103 automatic fixed bin(17,0) dcl 59 set ref 341* 389* 389 390 421 429 n_message_specifiers_allocated 000102 automatic fixed bin(17,0) dcl 59 set ref 337* 338 338 n_messages based fixed bin(17,0) level 2 dcl 3-30 ref 453 459 null builtin function dcl 120 ref 204 204 273 273 328 p_allow_original_request parameter bit(1) dcl 319 ref 316 323 p_message_number parameter fixed bin(17,0) dcl 232 in procedure "save_the_message" set ref 229 248* p_message_number parameter fixed bin(17,0) dcl 301 in procedure "copy_the_message" set ref 298 306* p_message_number parameter fixed bin(17,0) dcl 155 in procedure "log_the_message" set ref 152 166* p_message_ptr parameter pointer dcl 302 in procedure "copy_the_message" set ref 298 304* p_message_ptr parameter pointer dcl 233 in procedure "save_the_message" set ref 229 235* 241* p_message_ptr parameter pointer dcl 156 in procedure "log_the_message" set ref 152 158* p_pathname_required parameter bit(1) dcl 354 ref 351 392 406 p_processor parameter entry variable dcl 446 ref 443 475 pathname_ 000052 constant entry external dcl 99 ref 162 162 213 213 216 216 239 239 248 248 283 283 286 286 306 306 rdm_invocation based structure level 1 dcl 1-6 rdm_invocation_ptr 16 based pointer level 2 in structure "sdm_invocation" dcl 5-6 in procedure "rdm_mbx_requests_" ref 327 rdm_invocation_ptr 000220 automatic pointer dcl 1-53 in procedure "rdm_mbx_requests_" set ref 129 133 136 144 181 185 188 221 321* 323 327* 328 343* 386* 421* 425* 431* 453 459 464 466* 467 472* 472 478* 481* rdm_mailbox_interface_$delete_messages 000054 constant entry external dcl 100 ref 481 rdm_mailbox_interface_$mark_processed_and_acknowledge 000056 constant entry external dcl 101 ref 478 rdm_mailbox_interface_$read_message 000060 constant entry external dcl 102 ref 466 rdm_mailbox_interface_$set_new_current_msg 000062 constant entry external dcl 103 ref 472 rdm_message_mark_mgr_$clear_marked_messages 000064 constant entry external dcl 104 ref 343 rdm_message_mark_mgr_$mark_current_message 000066 constant entry external dcl 105 ref 425 rdm_message_mark_mgr_$mark_messages 000070 constant entry external dcl 106 ref 431 rdm_message_mark_mgr_$remark_original_messages 000072 constant entry external dcl 108 ref 421 rdm_message_mark_mgr_$validate_message_specifier 000074 constant entry external dcl 109 ref 386 reverse builtin function dcl 120 ref 192 192 reverse_processing 000206 automatic bit(1) dcl 78 set ref 357* 377* 378* 452 saved_rdm_sci_ptr 000202 automatic pointer dcl 75 set ref 129* 133 144 181* 185 221 sci_ptr 2 based pointer level 2 dcl 1-6 set ref 129 133* 136* 144* 181 185* 188* 221* sdm_invocation based structure level 1 dcl 5-6 sdm_invocation_ptr 000222 automatic pointer dcl 5-38 set ref 326* 327 search builtin function dcl 120 ref 196 265 search_paths_$find_dir 000040 constant entry external dcl 94 ref 204 273 size builtin function dcl 120 ref 338 338 ssu_$abort_line 000076 constant entry external dcl 111 ref 166 198 203 208 210 213 216 244 248 267 272 277 279 283 286 306 328 331 339 383 392 401 406 433 467 ssu_$arg_count 000100 constant entry external dcl 112 ref 335 ssu_$arg_ptr 000102 constant entry external dcl 113 ref 364 430 ssu_$get_request_name 000104 constant entry external dcl 114 ref 406 406 ssu_$get_subsystem_and_request_name 000106 constant entry external dcl 115 ref 239 ssu_$print_message 000110 constant entry external dcl 116 ref 162 ssu_et_$unimplemented_request 000024 external static fixed bin(35,0) dcl 84 set ref 331* suffixed_name_$make 000036 constant entry external dcl 93 ref 202 271 try_to_create 000210 automatic bit(1) packed unaligned dcl 79 set ref 239* 241 type based char(8) level 2 dcl 1-6 ref 323 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DEFAULT_INCLUDE_SELF internal static bit(2) initial dcl 1-60 INCLUDE_SELF internal static bit(2) initial dcl 1-60 MODIFIED_MESSAGE internal static fixed bin(17,0) initial dcl 5-47 NO_INCLUDE_SELF internal static bit(2) initial dcl 1-60 PROCESSED_MESSAGE internal static fixed bin(17,0) initial dcl 5-47 RDM_INVOCATION internal static char(8) initial packed unaligned dcl 1-51 UNPROCESSED_MESSAGE internal static fixed bin(17,0) initial dcl 5-47 all_chain based structure level 1 dcl 3-23 deleted_chain based structure level 1 dcl 3-25 marked_as_original_chain based structure level 1 dcl 3-37 message_chain_ptr automatic pointer dcl 3-11 message_list based structure level 1 dcl 2-13 message_list_n_messages automatic fixed bin(17,0) dcl 2-25 mlsys_data_$system_directory external static char(168) packed unaligned dcl 4-7 mlsys_data_$user_default_mailbox_address external static pointer dcl 4-12 mlsys_data_$user_mail_table_address external static pointer dcl 4-14 rdm_area based area(1024) dcl 1-55 sdm_area based area(1024) dcl 5-40 undeleted_chain based structure level 1 dcl 3-24 NAMES DECLARED BY EXPLICIT CONTEXT. copy_request 001207 constant entry external dcl 258 copy_the_message 002502 constant entry internal dcl 298 ref 290 290 log_request 000274 constant entry external dcl 124 log_the_message 001767 constant entry internal dcl 152 ref 142 142 mark_appropriate_messages 003507 constant entry internal dcl 416 ref 140 217 288 process_arguments 003006 constant entry internal dcl 351 ref 138 190 263 process_messages 003643 constant entry internal dcl 443 ref 142 219 290 rdm_mbx_requests_ 000264 constant entry external dcl 43 save_request 000357 constant entry external dcl 176 save_the_message 002170 constant entry internal dcl 229 ref 219 219 setup_request 002620 constant entry internal dcl 316 ref 127 179 261 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5050 5164 4263 5060 Length 5564 4263 114 364 565 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rdm_mbx_requests_ 453 external procedure is an external procedure. on unit on line 131 64 on unit log_the_message 138 internal procedure is assigned to an entry variable. on unit on line 183 64 on unit save_the_message 186 internal procedure is assigned to an entry variable. copy_the_message 160 internal procedure is assigned to an entry variable. setup_request internal procedure shares stack frame of external procedure rdm_mbx_requests_. process_arguments internal procedure shares stack frame of external procedure rdm_mbx_requests_. mark_appropriate_messages internal procedure shares stack frame of external procedure rdm_mbx_requests_. process_messages internal procedure shares stack frame of external procedure rdm_mbx_requests_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rdm_mbx_requests_ 000100 message_specifier_idxs_ptr rdm_mbx_requests_ 000102 n_message_specifiers_allocated rdm_mbx_requests_ 000103 n_message_specifiers rdm_mbx_requests_ 000104 message_type rdm_mbx_requests_ 000106 argument_ptr rdm_mbx_requests_ 000110 argument_lth rdm_mbx_requests_ 000111 n_arguments rdm_mbx_requests_ 000112 argument_idx rdm_mbx_requests_ 000114 mbx_pathname_ptr rdm_mbx_requests_ 000116 mbx_pathname_lth rdm_mbx_requests_ 000117 mbx_dirname rdm_mbx_requests_ 000171 mbx_ename rdm_mbx_requests_ 000202 saved_rdm_sci_ptr rdm_mbx_requests_ 000204 is_original_request rdm_mbx_requests_ 000205 delete_after_processing rdm_mbx_requests_ 000206 reverse_processing rdm_mbx_requests_ 000207 have_pathname rdm_mbx_requests_ 000210 try_to_create rdm_mbx_requests_ 000211 code rdm_mbx_requests_ 000220 rdm_invocation_ptr rdm_mbx_requests_ 000222 sdm_invocation_ptr rdm_mbx_requests_ 000250 idx mark_appropriate_messages 000260 first_message_idx process_messages 000261 last_message_idx process_messages 000262 message_idx_increment process_messages 000263 message_idx process_messages 000264 message_number process_messages 000266 message_ptr process_messages THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry set_chars_eis ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry command_query_$yes_no cu_$grow_stack_frame expand_pathname_$add_suffix mail_system_$copy_message mail_system_$get_address_pathname mail_system_$log_message mail_system_$save_message pathname_ rdm_mailbox_interface_$delete_messages rdm_mailbox_interface_$mark_processed_and_acknowledge rdm_mailbox_interface_$read_message rdm_mailbox_interface_$set_new_current_msg rdm_message_mark_mgr_$clear_marked_messages rdm_message_mark_mgr_$mark_current_message rdm_message_mark_mgr_$mark_messages rdm_message_mark_mgr_$remark_original_messages rdm_message_mark_mgr_$validate_message_specifier search_paths_$find_dir ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$get_request_name ssu_$get_subsystem_and_request_name ssu_$print_message suffixed_name_$make THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noentry error_table_$nostars mlsys_data_$user_logbox_address mlsys_et_$logbox_created mlsys_et_$no_savebox mlsys_et_$savebox_created ssu_et_$unimplemented_request LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 43 000260 46 000271 124 000272 127 000301 129 000305 131 000310 133 000324 134 000331 136 000332 138 000337 140 000343 142 000344 144 000351 146 000354 176 000355 179 000364 181 000370 183 000373 185 000407 186 000414 188 000415 190 000422 192 000426 196 000440 197 000454 198 000512 200 000547 202 000550 203 000602 204 000637 205 000700 207 000705 208 000742 209 000777 210 001000 212 001027 213 001044 216 001123 217 001173 219 001174 221 001201 223 001204 258 001205 261 001214 263 001220 265 001224 266 001240 267 001276 269 001333 271 001334 272 001366 273 001423 274 001464 276 001471 277 001526 278 001563 279 001564 282 001613 283 001630 286 001707 288 001757 290 001760 292 001765 152 001766 158 001774 159 002012 160 002017 162 002053 163 002130 166 002132 169 002166 229 002167 235 002175 238 002231 239 002236 241 002332 244 002373 245 002412 248 002420 252 002500 298 002501 304 002507 306 002535 310 002617 316 002620 321 002622 323 002626 325 002635 326 002637 327 002642 328 002644 330 002675 331 002676 333 002714 335 002715 337 002727 338 002731 339 002745 341 002775 343 002776 345 003005 351 003006 356 003010 357 003011 358 003012 360 003013 362 003015 364 003025 366 003043 369 003077 372 003114 373 003130 374 003143 377 003156 378 003171 381 003203 383 003216 386 003251 388 003305 389 003307 390 003310 391 003314 392 003315 397 003370 398 003372 399 003374 400 003376 401 003377 404 003432 406 003434 410 003506 416 003507 421 003510 425 003524 429 003536 430 003545 431 003564 433 003620 434 003640 437 003642 443 003643 452 003645 453 003647 454 003652 455 003654 456 003656 458 003657 459 003661 460 003664 463 003666 464 003706 466 003712 467 003727 472 003767 475 004003 478 004014 479 004025 481 004030 484 004045 ----------------------------------------------------------- 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