COMPILATION LISTING OF SEGMENT rdm_search_utils_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 12/09/83 1311.5 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: off */ 8 9 /* read_mail Utilities releated to searching the printed representation of various parts of a message for a given 10* character string 11* 12*/* Created: September 1983 by G. Palter */ 13 14 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen,^indcomtxt */ 15 16 17 rdm_search_utils_: 18 procedure (); 19 20 return; /* not an entrypoint */ 21 22 23 /* Parameters */ 24 25 dcl P_rdm_invocation_ptr pointer parameter; 26 dcl P_message_number fixed binary parameter; /* identifies the message */ 27 28 dcl P_regexp_ptr pointer parameter; /* search_message_wwith_regexp: -> the regular expression */ 29 dcl P_regexp_lth fixed binary (21) parameter; /* search_message_wwith_regexp: length of said expression */ 30 31 dcl P_fieldname character (*) varying parameter; /* prepare_*_field_for_search: the name of the field being 32* prepared for use in error messages */ 33 dcl P_field_value pointer parameter; /* prepare_*_field_for_search: -> the value of the field */ 34 dcl P_representation_ptr pointer parameter; /* prepare_*_field_for_search: set -> the printed 35* representation of the field to be used for the search */ 36 dcl P_representation_lth fixed binary (21) parameter; /* prepare_*_field_for_search: set to the length of said 37* printed representation */ 38 /**** format:indcomtxt */ 39 40 41 /* Local copies of parameters */ 42 43 dcl message_number fixed binary; 44 45 dcl the_regexp character (regexp_lth) unaligned based (regexp_ptr); 46 dcl regexp_ptr pointer; 47 dcl regexp_lth fixed binary (21); 48 49 50 /* Remaining declarations */ 51 52 dcl field_formatter 53 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), 54 fixed binary (35)) variable; 55 56 dcl 1 local_fmo aligned like format_message_options; 57 58 dcl message_ptr pointer; 59 dcl previous_buffer_used fixed binary (21); 60 61 dcl code fixed binary (35); 62 63 dcl MINIMUM_BUFFER_SIZE fixed binary (21) static options (constant) initial (32768); 64 65 dcl sys_info$max_seg_size fixed binary (19) external; 66 67 /* format: off */ 68 dcl (error_table_$nomatch, error_table_$smallarg, mlsys_et_$message_too_large, mlsys_et_$no_message_canonical_form) 69 fixed binary (35) external; 70 /* format: on */ 71 72 dcl mail_system_$read_message_canonical_form 73 entry (pointer, fixed binary, pointer, fixed binary (21), fixed binary (35)); 74 dcl mlsys_utils_$format_address_list_field 75 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), 76 fixed binary (35)); 77 dcl mlsys_utils_$format_message_canonical_form 78 entry (pointer, pointer, pointer, fixed binary (21), fixed binary (21), fixed binary (35)); 79 dcl mlsys_utils_$format_references_list_field 80 entry (character (*) varying, pointer, fixed binary, pointer, fixed binary (21), fixed binary (21), 81 fixed binary (35)); 82 dcl rdm_mailbox_interface_$read_message entry (pointer, fixed binary, pointer, fixed binary (35)); 83 dcl search_file_$silent 84 entry (pointer, fixed binary (21), fixed binary (21), pointer, fixed binary (21), fixed binary (21), 85 fixed binary (21), fixed binary (21), fixed binary (35)); 86 dcl ssu_$abort_line entry () options (variable); 87 dcl ssu_$get_temp_segment entry (pointer, character (*), pointer); 88 89 dcl (addcharno, addr, null) builtin; 90 91 /* Search the canonical form of a message for the given qedx regular expression: The canonical form of a message is the 92* text used by the mail system when it stores the message in a mailbox. In order to avoid the expense of constructing 93* this text for each search, this entrypoint first attempts to obtain the canonical form from ring-2; if successfull, 94* this entrypoint then saves the text for the remainder of the read_mail invocation. If ring-2 does not provide a 95* canonical form, this entrypoint will construct it once in its own set of temporary segments and then save it for the 96* life of the invocation */ 97 98 search_message_with_regexp: 99 entry (P_rdm_invocation_ptr, P_message_number, P_regexp_ptr, P_regexp_lth) returns (bit (1) aligned); 100 101 rdm_invocation_ptr = P_rdm_invocation_ptr; 102 regexp_ptr = P_regexp_ptr; 103 regexp_lth = P_regexp_lth; 104 105 message_number = P_message_number; 106 if (message_number < 1) | (message_number > message_list.n_messages) then 107 call ssu_$abort_line (rdm_invocation.sci_ptr, 0, "There is no message ^d.", message_number); 108 if message_list.messages (message_number).message_idx = 0 then 109 call ssu_$abort_line (rdm_invocation.sci_ptr, 0, 110 "Message ^d has already been permanently deleted from the mailbox.", message_number); 111 112 113 if message_list.messages (message_number).search_text_ptr = null () then do; 114 115 /* First time searching this message: check if ring-2 already has the canonical form of this message */ 116 117 call mail_system_$read_message_canonical_form (rdm_invocation.mailbox_ptr, 118 message_list.messages (message_number).message_idx, 119 message_list.messages (message_number).search_text_ptr, 120 message_list.messages (message_number).search_text_lth, code); 121 if (code ^= 0) & (code ^= mlsys_et_$no_message_canonical_form) then 122 call ssu_$abort_line (rdm_invocation.sci_ptr, code, "Reading message #^d from ^a.", message_number, 123 rdm_invocation.mailbox_name); 124 end; 125 126 127 if message_list.messages (message_number).search_text_ptr = null () then do; 128 129 /* First time and ring-2 doesn't have the canonical form of this message: construct it once for this invocation */ 130 131 call rdm_mailbox_interface_$read_message (rdm_invocation_ptr, message_number, message_ptr, code); 132 if code ^= 0 then 133 call ssu_$abort_line (rdm_invocation.sci_ptr, code, "Reading message #^d from ^a.", message_number, 134 rdm_invocation.mailbox_name); 135 136 local_fmo.version = FORMAT_MESSAGE_OPTIONS_VERSION_1; 137 local_fmo.line_length = -1; /* don't bother with making it pretty */ 138 local_fmo.envelope_formatting_mode, /* use the format most familiar to users */ 139 local_fmo.header_formatting_mode, local_fmo.redistributions_list_formatting_mode = 140 DEFAULT_FORMATTING_MODE; 141 local_fmo.include_body = "1"b; 142 143 if (rdm_invocation.last_search_buffer.buffer_used + MINIMUM_BUFFER_SIZE) > (4 * sys_info$max_seg_size) then 144 call get_fresh_buffer_segment (); /* go right to the virgin buffer */ 145 146 RETRY_FORMAT_MESSAGE_CALL: 147 previous_buffer_used = rdm_invocation.last_search_buffer.buffer_used; 148 149 call mlsys_utils_$format_message_canonical_form (message_ptr, addr (local_fmo), 150 rdm_invocation.last_search_buffer.buffer_ptr, 4 * sys_info$max_seg_size, 151 rdm_invocation.last_search_buffer.buffer_used, code); 152 if (code ^= 0) & (code ^= error_table_$smallarg) then 153 call ssu_$abort_line (rdm_invocation.sci_ptr, code, 154 "Attempting to prepare message #^d for searching.", message_number); 155 156 if code = error_table_$smallarg then /* buffer wasn't large enough */ 157 if previous_buffer_used = 0 then 158 call ssu_$abort_line (rdm_invocation.sci_ptr, mlsys_et_$message_too_large, 159 "Attempting to prepare message #^d for searching.", message_number); 160 else do; 161 call get_fresh_buffer_segment (); /* try again with an entire segment as the buffer */ 162 go to RETRY_FORMAT_MESSAGE_CALL; 163 end; 164 165 message_list.messages (message_number).search_text_ptr = 166 addcharno (rdm_invocation.last_search_buffer.buffer_ptr, previous_buffer_used); 167 message_list.messages (message_number).search_text_lth = 168 rdm_invocation.last_search_buffer.buffer_used - previous_buffer_used; 169 end; 170 171 172 /* Now search for given regular expression */ 173 174 call search_file_$silent (regexp_ptr, 1, regexp_lth, message_list.messages (message_number).search_text_ptr, 1, 175 message_list.messages (message_number).search_text_lth, (0), (0), code); 176 177 if (code ^= 0) & (code ^= error_table_$nomatch) then 178 call ssu_$abort_line (rdm_invocation.sci_ptr, code, "Attempting to search message ^d for ""/^a/"".", 179 message_number, the_regexp); 180 181 return ((code = 0)); 182 183 /* Prepares a copy of the printed representation of various types of message fields in the temporary segments managed by 184* this module in order to save other modules which must search said fields the expsense of having to format the fields 185* multiple times. See rdm_msg_requests_ for an example of how to use these entrypoints */ 186 187 prepare_address_list_field_for_search: /* ... address list fields (From, To, etc.) */ 188 entry (P_rdm_invocation_ptr, P_message_number, P_fieldname, P_field_value, P_representation_ptr, 189 P_representation_lth); 190 191 field_formatter = mlsys_utils_$format_address_list_field; 192 go to PREPARE_FIELD_FOR_SEARCH; 193 194 195 prepare_message_references_field_for_search: /* ... list of references fields (ie: In-Reply-To) */ 196 entry (P_rdm_invocation_ptr, P_message_number, P_fieldname, P_field_value, P_representation_ptr, 197 P_representation_lth); 198 199 field_formatter = mlsys_utils_$format_references_list_field; 200 go to PREPARE_FIELD_FOR_SEARCH; 201 202 203 /* Prepare a message field for one or more subsequent searches */ 204 205 PREPARE_FIELD_FOR_SEARCH: 206 rdm_invocation_ptr = P_rdm_invocation_ptr; 207 message_number = P_message_number; 208 209 if (rdm_invocation.last_search_buffer.buffer_used + MINIMUM_BUFFER_SIZE) > (4 * sys_info$max_seg_size) then 210 call get_fresh_buffer_segment (); /* go right to the virgin buffer */ 211 212 RETRY_FORMAT_FIELD_CALL: 213 previous_buffer_used = rdm_invocation.last_search_buffer.buffer_used; 214 215 call field_formatter ("", P_field_value, -1, rdm_invocation.last_search_buffer.buffer_ptr, 216 4 * sys_info$max_seg_size, rdm_invocation.last_search_buffer.buffer_used, code); 217 if (code ^= 0) & (code ^= error_table_$smallarg) then 218 call ssu_$abort_line (rdm_invocation.sci_ptr, code, 219 "Attempting to prepare the ^a field of message #^d for searching.", P_fieldname, message_number); 220 221 if code = error_table_$smallarg then /* buffer wasn't large enough */ 222 if previous_buffer_used = 0 then 223 call ssu_$abort_line (rdm_invocation.sci_ptr, mlsys_et_$message_too_large, 224 "Attempting to prepare the ^a field of message #^d for searching.", P_fieldname, message_number); 225 else do; 226 call get_fresh_buffer_segment (); /* try again with an entire segment as the buffer */ 227 go to RETRY_FORMAT_FIELD_CALL; 228 end; 229 230 P_representation_ptr = addcharno (rdm_invocation.last_search_buffer.buffer_ptr, previous_buffer_used); 231 P_representation_lth = rdm_invocation.last_search_buffer.buffer_used - previous_buffer_used; 232 233 return; 234 235 /* Obtains a fresh temporary segment */ 236 237 get_fresh_buffer_segment: 238 procedure (); 239 240 call ssu_$get_temp_segment (rdm_invocation.sci_ptr, "search-buffer", 241 rdm_invocation.last_search_buffer.buffer_ptr); 242 rdm_invocation.last_search_buffer.buffer_used = 0; 243 244 return; 245 246 end get_fresh_buffer_segment; 247 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 */ 248 249 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 */ 250 251 3 1 /* BEGIN INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Options for the mlsys_utils_$format_message and mlsys_utils_$print_message entrypoints */ 3 5 3 6 dcl 1 format_message_options aligned based (format_message_options_ptr), 3 7 2 version character (8) unaligned, 3 8 2 line_length fixed binary, /* line length to be used to format/print the message */ 3 9 2 envelope_formatting_mode fixed binary, /* level of detail to be displayed for the envelope ... */ 3 10 2 header_formatting_mode fixed binary, /* ... for the message ... */ 3 11 2 redistributions_list_formatting_mode fixed binary, /* ... and for the redistributions list ... */ 3 12 2 include_body bit (1) aligned; /* ON => include message body when formatting/printing; 3 13* OFF => exclude the message body */ 3 14 3 15 dcl FORMAT_MESSAGE_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsfmo01"); 3 16 3 17 dcl format_message_options_ptr pointer; 3 18 3 19 3 20 /* Defined formatting modes */ 3 21 3 22 dcl (NONE_FORMATTING_MODE initial (0), /* exclude this part of the message */ 3 23 BRIEF_FORMATTING_MODE initial (1), /* include only minimal information from this part of the 3 24* message; not valid for the envelope */ 3 25 DEFAULT_FORMATTING_MODE initial (2), /* include default amount of information from this part */ 3 26 LONG_FORMATTING_MODE initial (3)) /* include all information from this part of the message */ 3 27 fixed binary static options (constant); 3 28 3 29 /* END INCLUDE FILE ... mlsys_format_options.incl.pl1 */ 252 253 254 end rdm_search_utils_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/09/83 1255.9 rdm_search_utils_.pl1 >spec>on>mail.pbf5>rdm_search_utils_.pl1 248 1 10/27/83 2104.3 rdm_invocation.incl.pl1 >ldd>include>rdm_invocation.incl.pl1 250 2 10/27/83 2104.3 rdm_message_list.incl.pl1 >ldd>include>rdm_message_list.incl.pl1 252 3 10/27/83 2104.2 mlsys_format_options.incl.pl1 >ldd>include>mlsys_format_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. DEFAULT_FORMATTING_MODE constant fixed bin(17,0) initial dcl 3-22 ref 138 FORMAT_MESSAGE_OPTIONS_VERSION_1 000000 constant char(8) initial unaligned dcl 3-15 ref 136 MINIMUM_BUFFER_SIZE constant fixed bin(21,0) initial dcl 63 ref 143 209 P_field_value parameter pointer dcl 33 set ref 187 195 215* P_fieldname parameter varying char dcl 31 set ref 187 195 217* 221* P_message_number parameter fixed bin(17,0) dcl 26 ref 98 105 187 195 207 P_rdm_invocation_ptr parameter pointer dcl 25 ref 98 101 187 195 205 P_regexp_lth parameter fixed bin(21,0) dcl 29 ref 98 103 P_regexp_ptr parameter pointer dcl 28 ref 98 102 P_representation_lth parameter fixed bin(21,0) dcl 36 set ref 187 195 231* P_representation_ptr parameter pointer dcl 34 set ref 187 195 230* addcharno builtin function dcl 89 ref 165 230 addr builtin function dcl 89 ref 149 149 buffer_ptr 100 based pointer level 3 dcl 1-6 set ref 149* 165 215* 230 240* buffer_used 102 based fixed bin(21,0) level 3 dcl 1-6 set ref 143 146 149* 167 209 212 215* 231 242* code 000125 automatic fixed bin(35,0) dcl 61 set ref 117* 121 121 121* 131* 132 132* 149* 152 152 152* 156 174* 177 177 177* 181 215* 217 217 217* 221 envelope_formatting_mode 3 000112 automatic fixed bin(17,0) level 2 dcl 56 set ref 138* error_table_$nomatch 000012 external static fixed bin(35,0) dcl 68 ref 177 error_table_$smallarg 000014 external static fixed bin(35,0) dcl 68 ref 152 156 217 221 field_formatter 000106 automatic entry variable dcl 52 set ref 191* 199* 215 format_message_options based structure level 1 dcl 3-6 header_formatting_mode 4 000112 automatic fixed bin(17,0) level 2 dcl 56 set ref 138* include_body 6 000112 automatic bit(1) level 2 dcl 56 set ref 141* last_search_buffer 100 based structure level 2 dcl 1-6 line_length 2 000112 automatic fixed bin(17,0) level 2 dcl 56 set ref 137* local_fmo 000112 automatic structure level 1 dcl 56 set ref 149 149 mail_system_$read_message_canonical_form 000022 constant entry external dcl 72 ref 117 mailbox_info 6 based structure level 2 dcl 1-6 mailbox_name 24 based varying char(168) level 3 dcl 1-6 set ref 121* 132* mailbox_ptr 6 based pointer level 3 dcl 1-6 set ref 117* message_idx 2 based fixed bin(17,0) array level 3 dcl 2-13 set ref 108 117* message_list based structure level 1 dcl 2-13 message_list_ptr 10 based pointer level 3 dcl 1-6 ref 106 108 113 117 117 117 127 165 167 174 174 message_number 000100 automatic fixed bin(17,0) dcl 43 set ref 105* 106 106 106* 108 108* 113 117 117 117 121* 127 131* 132* 152* 156* 165 167 174 174 177* 207* 217* 221* message_ptr 000122 automatic pointer dcl 58 set ref 131* 149* messages 2 based structure array level 2 dcl 2-13 mlsys_et_$message_too_large 000016 external static fixed bin(35,0) dcl 68 set ref 156* 221* mlsys_et_$no_message_canonical_form 000020 external static fixed bin(35,0) dcl 68 ref 121 mlsys_utils_$format_address_list_field 000024 constant entry external dcl 74 ref 191 mlsys_utils_$format_message_canonical_form 000026 constant entry external dcl 77 ref 149 mlsys_utils_$format_references_list_field 000030 constant entry external dcl 79 ref 199 n_messages based fixed bin(17,0) level 2 dcl 2-13 ref 106 null builtin function dcl 89 ref 113 127 previous_buffer_used 000124 automatic fixed bin(21,0) dcl 59 set ref 146* 156 165 167 212* 221 230 231 rdm_invocation based structure level 1 dcl 1-6 rdm_invocation_ptr 000126 automatic pointer dcl 1-53 set ref 101* 106 106 108 108 113 117 117 117 117 121 121 127 131* 132 132 143 146 149 149 152 156 165 165 167 167 174 174 177 205* 209 212 215 215 217 221 230 231 240 240 242 rdm_mailbox_interface_$read_message 000032 constant entry external dcl 82 ref 131 redistributions_list_formatting_mode 5 000112 automatic fixed bin(17,0) level 2 dcl 56 set ref 138* regexp_lth 000104 automatic fixed bin(21,0) dcl 47 set ref 103* 174* 177 177 regexp_ptr 000102 automatic pointer dcl 46 set ref 102* 174* 177 sci_ptr 2 based pointer level 2 dcl 1-6 set ref 106* 108* 121* 132* 152* 156* 177* 217* 221* 240* search_file_$silent 000034 constant entry external dcl 83 ref 174 search_text 4 based structure array level 3 dcl 2-13 search_text_lth 6 based fixed bin(21,0) array level 4 dcl 2-13 set ref 117* 167* 174* search_text_ptr 4 based pointer array level 4 dcl 2-13 set ref 113 117* 127 165* 174* ssu_$abort_line 000036 constant entry external dcl 86 ref 106 108 121 132 152 156 177 217 221 ssu_$get_temp_segment 000040 constant entry external dcl 87 ref 240 sys_info$max_seg_size 000010 external static fixed bin(19,0) dcl 65 ref 143 149 209 215 the_regexp based char unaligned dcl 45 set ref 177* version 000112 automatic char(8) level 2 packed unaligned dcl 56 set ref 136* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BRIEF_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 3-22 DEFAULT_INCLUDE_SELF internal static bit(2) initial dcl 1-60 INCLUDE_SELF internal static bit(2) initial dcl 1-60 LONG_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 3-22 NONE_FORMATTING_MODE internal static fixed bin(17,0) initial dcl 3-22 NO_INCLUDE_SELF internal static bit(2) initial dcl 1-60 RDM_INVOCATION internal static char(8) initial unaligned dcl 1-51 format_message_options_ptr automatic pointer dcl 3-17 message_list_n_messages automatic fixed bin(17,0) dcl 2-25 rdm_area based area(1024) dcl 1-55 NAMES DECLARED BY EXPLICIT CONTEXT. PREPARE_FIELD_FOR_SEARCH 001054 constant label dcl 205 ref 192 200 RETRY_FORMAT_FIELD_CALL 001072 constant label dcl 212 set ref 227 RETRY_FORMAT_MESSAGE_CALL 000512 constant label dcl 146 set ref 162 get_fresh_buffer_segment 001275 constant entry internal dcl 237 ref 143 161 209 226 prepare_address_list_field_for_search 001004 constant entry external dcl 187 prepare_message_references_field_for_search 001031 constant entry external dcl 195 rdm_search_utils_ 000146 constant entry external dcl 17 search_message_with_regexp 000170 constant entry external dcl 98 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1632 1674 1330 1642 Length 2154 1330 42 244 301 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rdm_search_utils_ 218 external procedure is an external procedure. get_fresh_buffer_segment internal procedure shares stack frame of external procedure rdm_search_utils_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rdm_search_utils_ 000100 message_number rdm_search_utils_ 000102 regexp_ptr rdm_search_utils_ 000104 regexp_lth rdm_search_utils_ 000106 field_formatter rdm_search_utils_ 000112 local_fmo rdm_search_utils_ 000122 message_ptr rdm_search_utils_ 000124 previous_buffer_used rdm_search_utils_ 000125 code rdm_search_utils_ 000126 rdm_invocation_ptr rdm_search_utils_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_var_desc call_ext_out_desc call_ext_out return signal ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mail_system_$read_message_canonical_form mlsys_utils_$format_address_list_field mlsys_utils_$format_message_canonical_form mlsys_utils_$format_references_list_field rdm_mailbox_interface_$read_message search_file_$silent ssu_$abort_line ssu_$get_temp_segment THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$nomatch error_table_$smallarg mlsys_et_$message_too_large mlsys_et_$no_message_canonical_form sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000145 20 000155 98 000163 101 000176 102 000202 103 000205 105 000207 106 000211 108 000251 113 000310 117 000321 121 000341 127 000402 131 000412 132 000427 136 000466 137 000470 138 000472 141 000476 143 000500 146 000512 149 000515 152 000543 156 000600 161 000637 162 000640 165 000641 167 000652 174 000655 177 000716 181 000762 187 000776 191 001021 192 001026 195 001027 199 001046 200 001053 205 001054 207 001060 209 001062 212 001072 215 001075 217 001143 221 001206 226 001253 227 001254 230 001255 231 001263 233 001266 237 001275 240 001276 242 001323 244 001325 ----------------------------------------------------------- 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