COMPILATION LISTING OF SEGMENT xmail_write_msgs_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0744.7 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 xmail_write_msgs_: proc (xwm_mailbox_ptr, xwm_curr_msgsp); 8 9 /* BEGIN DESCRIPTION 10* 11*function: This procedure writes a copy of the current message(s) to a 12* Multics segment in a format similar to that which is 13* displayed with the "Display" request. It is executed when 14* the "Write" request on either the "Process Incoming Mail" 15* or "Process Filed Mail" menu is selected. 16* 17*description: The user is prompted for a file name. If the segment does 18* not exist, it is created and the current message(s) are 19* written to it. If it does exist, the current message(s) 20* will be appended to the end. 21* 22*known bugs: This code does not check for the remote possibility that 23* the user has rw permission on the segment to be written, 24* but null access to the directory containing that segment. 25* Call to adjust_bit_count_ will fail. JG Backs 84-07-18. 26* 27*history: 28* 29* 84-07-12 JG Backs: Written from xmail_dprint_msgs_.pl1 30* 31* 84-11-07 JG Backs: Deleted "This is an internal programming error." 32* from the error message at the call to subroutine adjust_bit_count_. 33* Audit change. 34* 35*END DESCRIPTION 36**/ 37 38 /* PARAMETERS */ 39 40 dcl (xwm_mailbox_ptr, xwm_curr_msgsp) ptr; /* input pointers to mailbox and current messages */ 41 42 43 /* EXTERNAL STATIC */ 44 45 dcl error_table_$incorrect_access fixed bin (35) ext static; 46 dcl error_table_$noentry fixed bin (35) ext static; 47 dcl xmail_err_$no_curr_msgs fixed bin (35) ext static; 48 49 /* ENTRIES */ 50 51 dcl adjust_bit_count_ entry (char (168) aligned, char (32) aligned, bit (1) aligned, 52 fixed bin (35), fixed bin (35)); 53 dcl delete_$ptr entry (ptr, bit (6) aligned, char (*), fixed bin (35)); 54 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 55 dcl hcs_$append_branch entry (char (*), char (*), fixed bin (5), fixed bin (35)); 56 dcl hcs_$set_bc entry (char (*), char (*), fixed bin (24), fixed bin (35)); 57 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 58 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 59 dcl ioa_ entry () options (variable); 60 dcl ioa_$ioa_switch_nnl entry () options (variable); 61 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 62 dcl iox_$close entry (ptr, fixed bin (35)); 63 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 64 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 65 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 66 dcl iox_$user_io ptr ext static; 67 dcl unique_chars_ entry (bit (*)) returns (char (15)); 68 dcl window_$clear_window entry (ptr, fixed bin (35)); 69 dcl xmail_display_msgs_$ff entry (ptr, ptr, ptr); 70 dcl xmail_error_$code_first entry () options (variable); 71 dcl xmail_get_str_ entry (char (*) var, (*) char (*) var, char (*), char (*), char (*) var); 72 dcl xmail_validate_$curr_msgs entry (ptr, fixed bin (35)); 73 dcl xmail_validate_$mbx entry (ptr, fixed bin (35)); 74 75 76 /* CONDITIONS */ 77 78 dcl cleanup condition; /* QUIT handling */ 79 80 81 /* INTERNAL AUTOMATIC */ 82 83 dcl xwm_bit_count fixed bin (24); /* bit count of segment */ 84 dcl xwm_code fixed bin (35); /* for output of status code during calls */ 85 dcl xwm_dname char (168); /* directory of segment */ 86 dcl xwm_ename char (32); /* entry name of segment */ 87 dcl xwm_iocb_ptr ptr; /* pointer to control block for I/O switch */ 88 dcl xwm_new_seg bit (1); /* flag; ON => new segment to be created */ 89 dcl xwm_new_path char (200) varying;/* pathname of segment */ 90 dcl xwm_seg_ptr ptr; /* pointer to segment */ 91 dcl xwm_type fixed bin (2); /* for output of type during calls, not queried */ 92 dcl xwm_unused_return_bc fixed bin (35); /* for output of bit count during calls, not queried */ 93 94 95 /* CONSTANTS */ 96 97 dcl xwm_CHASE fixed bin (1) init (1) int static options (constant); 98 dcl xwm_DELETE_SEG bit (6) aligned init ("000100"b) int static options (constant); 99 dcl xwm_FILE_PROMPT char (27) varying init ("Enter the name of the file:") int static options (constant); 100 dcl xwm_LAST_CHAR bit (1) aligned init ("1"b) int static options (constant); 101 dcl xwm_ME_CHAR char (17) init ("xmail_write_msgs_") int static options (constant); 102 dcl xwm_ME_ENTRY entry init (xmail_write_msgs_) options (variable); 103 dcl xwm_PATH_NAME char (9) init ("path_name") int static options (constant); 104 dcl xwm_PROMPT_REPLIES_HELP char (28) init ("xmail_prompt_replies.gi.info") int static options (constant); 105 dcl xwm_UNUSED_BIT bit (1) aligned init ("0"b) int static options (constant); 106 107 108 /* BUILTINS */ 109 110 dcl (codeptr, null, rtrim) builtin; 111 112 113 114 /* INCLUDE FILES */ 115 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 116 117 2 1 /* Begin include file ..... iox_modes.incl.pl1 */ 2 2 2 3 /* Written by C. D. Tavares, 03/17/75 */ 2 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 2 5 2 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 2 7 ("stream_input", "stream_output", "stream_input_output", 2 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 2 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 2 10 "direct_input", "direct_output", "direct_update"); 2 11 2 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 2 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 2 14 2 15 dcl (Stream_input initial (1), 2 16 Stream_output initial (2), 2 17 Stream_input_output initial (3), 2 18 Sequential_input initial (4), 2 19 Sequential_output initial (5), 2 20 Sequential_input_output initial (6), 2 21 Sequential_update initial (7), 2 22 Keyed_sequential_input initial (8), 2 23 Keyed_sequential_output initial (9), 2 24 Keyed_sequential_update initial (10), 2 25 Direct_input initial (11), 2 26 Direct_output initial (12), 2 27 Direct_update initial (13)) fixed bin int static options (constant); 2 28 2 29 /* End include file ..... iox_modes.incl.pl1 */ 118 119 3 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 3 2 /* Created: April 1983 by G. Palter */ 3 3 3 4 /* Definition of a mailbox as used by the Multics Mail System */ 3 5 3 6 dcl 1 mailbox aligned based (mailbox_ptr), 3 7 2 version character (8) unaligned, 3 8 2 reserved bit (144), /* for exclusive use of the mail system */ 3 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 3 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 3 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 3 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 3 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 3 14 2 flags, 3 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 3 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 3 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 3 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 3 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 3 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 3 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 3 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 3 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 3 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 3 25 3 key bit (72), /* unique key to read this message if not already read */ 3 26 3 message_ptr pointer; /* -> the message structure */ 3 27 3 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 3 29 3 30 dcl mailbox_ptr pointer; 3 31 3 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 3 33 3 34 3 35 /* Types of mailboxes distinguished by the mail system */ 3 36 3 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 3 38 USER_LOGBOX initial (2), /* the user's logbox */ 3 39 SAVEBOX initial (3), /* a savebox */ 3 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 3 41 fixed binary static options (constant); 3 42 3 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 120 121 4 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 4 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 4 7* Added seen switch to message. 4 8* END HISTORY COMMENTS */ 4 9 4 10 4 11 /* Created: June 1983 by G. Palter */ 4 12 4 13 /* Definition of a message as used by the Multics Mail System */ 4 14 4 15 dcl 1 message aligned based (message_ptr), 4 16 2 version character (8) unaligned, 4 17 2 reserved bit (144), /* for exclusive use of the mail system */ 4 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 4 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 4 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 4 21 2 n_body_sections fixed binary, /* # of sections in the body */ 4 22 2 flags, 4 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 4 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 4 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 4 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 4 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 4 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 4 29 2 pad bit (36), 4 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 4 31 2 header, 4 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 4 33 3 access_class bit (72), /* AIM access class of this message */ 4 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 4 35 3 from pointer, /* -> address list of author(s) of the message */ 4 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 4 37 3 to pointer, /* -> address list of primary recipients */ 4 38 3 cc pointer, /* -> address list of secondary recipients */ 4 39 3 bcc pointer, /* -> address list of blind recipients */ 4 40 3 subject like message_text_field, /* subject of the message */ 4 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 4 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 4 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 4 44 2 body, 4 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 4 46 3 pad bit (36), 4 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 4 48 4 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 4 50 4 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 4 52 4 53 dcl message_ptr pointer; 4 54 4 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 4 56 message_references_list_n_references) 4 57 fixed binary; /* for exclusive use of the mail system */ 4 58 4 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 4 60 4 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 4 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 4 63 2 sender pointer, /* -> address of entity that mailed the message */ 4 64 2 trace pointer, /* -> message_trace describing how it got here */ 4 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 4 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 4 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 4 68 4 69 dcl message_envelope_ptr pointer; 4 70 4 71 4 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 4 73 4 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 4 75 2 pad pointer, /* forces even word alignment */ 4 76 2 version character (8) unaligned, 4 77 2 envelope like message_envelope; 4 78 4 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 4 80 4 81 dcl message_envelope_parameter_ptr pointer; 4 82 4 83 4 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 4 85* networks to reach this recipient */ 4 86 4 87 dcl 1 message_trace aligned based (message_trace_ptr), 4 88 2 version character (8) unaligned, 4 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 4 91 2 pad bit (36), 4 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 4 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 4 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 4 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 4 96 3 receiving_host character (256) varying, /* ... the host which received it */ 4 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 4 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 4 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 4 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 4 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 4 102 4 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 4 104 4 105 dcl message_trace_ptr pointer; 4 106 4 107 /* Definition of a message's redistributions list */ 4 108 4 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 4 110 2 version character (8) unaligned, 4 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 112 2 pad bit (36), 4 113 2 n_redistributions fixed binary, /* # of redistributions */ 4 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 4 115 like message_redistribution; /* the redistributions: oldest first */ 4 116 4 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 4 118 4 119 4 120 /* Definition of a single redistribution (forwarding) of a message */ 4 121 4 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 4 123 2 envelope like message_envelope, 4 124 2 header, 4 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 4 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 4 127 3 from pointer, /* -> address list of authors of this redistribution */ 4 128 3 to pointer, /* -> address list of recipients of the redistribution */ 4 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 4 130 4 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 4 132 based (message_redistribution.comment.text_ptr); 4 133 4 134 dcl message_redistribution_ptr pointer; 4 135 4 136 4 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 4 138 4 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 4 140 2 pad pointer, /* forces even word alignment */ 4 141 2 version character (8) unaligned, 4 142 2 redistribution like message_redistribution; 4 143 4 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 4 145 4 146 dcl message_redistribution_parameter_ptr pointer; 4 147 4 148 /* Definition of the list of user-defined fields in a message */ 4 149 4 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 4 151 2 version character (8) unaligned, 4 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 153 2 pad bit (36), 4 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 4 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 4 156 like message_user_field; /* the actual user-defined fields */ 4 157 4 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 4 159 4 160 4 161 /* Definition of a user defined message header field */ 4 162 4 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 4 164 2 header, 4 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 4 166 3 field_type fixed binary, /* type of data contained in this field */ 4 167 2 field_type_variable bit (144); /* the actual data (see below) */ 4 168 4 169 dcl message_user_field_ptr pointer; 4 170 4 171 4 172 /* Defined types of user defined fields */ 4 173 4 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 4 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 4 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 4 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 4 178 fixed binary static options (constant); 4 179 4 180 4 181 /* Structures used to access the data for the different types of user defined fields */ 4 182 4 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 4 184 2 header like message_user_field.header, 4 185 2 text like message_text_field; /* the message text */ 4 186 4 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 4 188 based (message_text_user_field.text.text_ptr); 4 189 4 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 4 191 2 header like message_user_field.header, 4 192 2 address_list_ptr pointer, /* -> the address list */ 4 193 2 pad bit (72); 4 194 4 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 4 196 2 header like message_user_field.header, 4 197 2 date_time fixed binary (71), /* the clock reading */ 4 198 2 pad bit (72); 4 199 4 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 4 201 2 header like message_user_field.header, 4 202 2 value fixed binary (35), /* the integer value */ 4 203 2 pad bit (108); 4 204 4 205 4 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 4 207 4 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 4 209 2 pad pointer, /* forces even word alignment */ 4 210 2 version character (8) unaligned, 4 211 2 user_field like message_user_field; 4 212 4 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 4 214 4 215 dcl message_user_field_parameter_ptr pointer; 4 216 4 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 4 218 4 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 4 220 2 version character (8) unaligned, 4 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 4 222 2 pad bit (36), 4 223 2 n_references fixed binary, /* # of references in this list */ 4 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 4 225 like message_reference; /* the references themselves */ 4 226 4 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 4 228 4 229 dcl message_references_list_ptr pointer; 4 230 4 231 4 232 /* Definition of a reference to another message */ 4 233 4 234 dcl 1 message_reference aligned based (message_reference_ptr), 4 235 2 message_id bit (72), /* ID of the other message */ 4 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 4 237 2 from pointer, /* -> address list of authors of the other message */ 4 238 2 subject like message_text_field; /* subject of the other message */ 4 239 4 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 4 241 based (message_reference.subject.text_ptr); 4 242 4 243 dcl message_reference_ptr pointer; 4 244 4 245 4 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 4 247 4 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 4 249 2 pad pointer, /* forces even word alignment */ 4 250 2 version character (8) unaligned, 4 251 2 reference like message_reference; 4 252 4 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 4 254 4 255 dcl message_reference_parameter_ptr pointer; 4 256 4 257 4 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 4 259 4 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 4 261 2 text_ptr pointer, /* -> the actual text */ 4 262 2 text_lth fixed binary (21), /* length of said text */ 4 263 2 flags, 4 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 4 265* OFF => the text will always be a single line */ 4 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 4 267 4 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 4 269 4 270 dcl message_text_field_ptr pointer; 4 271 4 272 /* Definition of a section of the body of a message */ 4 273 4 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 4 275 2 header, 4 276 3 section_type fixed binary, /* type of "text" stored in this section */ 4 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 4 278 2 section_type_variable bit (144); /* the actual data (see below) */ 4 279 4 280 dcl message_body_section_ptr pointer; 4 281 4 282 4 283 /* Defined types of message body sections */ 4 284 4 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 4 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 4 287 fixed binary static options (constant); 4 288 4 289 4 290 /* Structures used to access the data for the different types of message body sections */ 4 291 4 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 4 293 2 header like message_body_section.header, 4 294 2 text_ptr pointer, /* -> the text */ 4 295 2 text_lth fixed binary (21), /* length of said text in characters */ 4 296 2 reserved bit (36); /* for exclusive use of the mail system */ 4 297 4 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 4 299 based (message_preformatted_body_section.text_ptr); 4 300 4 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 4 302 2 header like message_body_section.header, 4 303 2 bit_string_ptr pointer, /* -> the bit string */ 4 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 4 305 2 reserved bit (36); /* for exclusive use of the mail system */ 4 306 4 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 4 308 based (message_bit_string_body_section.bit_string_ptr); 4 309 4 310 4 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 4 312 4 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 4 314 2 pad pointer, /* forces even word alignment */ 4 315 2 version character (8) unaligned, 4 316 2 section like message_body_section; 4 317 4 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 4 319 4 320 dcl message_body_section_parameter_ptr pointer; 4 321 4 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 122 123 5 1 /* Created 06/17/81 by Suzanne Krupp */ 5 2 5 3 dcl n_messages fixed bin; 5 4 dcl MSG_STRUCT_VERSION_1 fixed bin int static options(constant) init(1); 5 5 5 6 dcl curr_msgsp ptr; 5 7 5 8 dcl 1 curr_msgs based(curr_msgsp), 5 9 2 version fixed bin, 5 10 2 count fixed bin, 5 11 2 numbers (n_messages refer(curr_msgs.count)) fixed bin; 5 12 5 13 dcl nonexist_msgsp ptr; 5 14 5 15 dcl 1 nonexist_msgs based(nonexist_msgsp), 5 16 2 version fixed bin, 5 17 2 count fixed bin, 5 18 2 numbers (n_messages refer(nonexist_msgs.count)) fixed bin; 5 19 5 20 dcl msg_structp ptr; 5 21 5 22 dcl 1 msg_struct based(msg_structp), 5 23 2 version fixed bin, 5 24 2 count fixed bin, 5 25 2 numbers(n_messages refer(msg_struct.count)) fixed bin; 125 6 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 6 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 6 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 6 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 10* Adding switch to indicate request for menu display came from general help. 6 11* This is so general help menu will be displayed in top screen. 6 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 6 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 14* Add switch to indicate whether or not it is permissible to process mail 6 15* in other users' mailboxes (foreign_mailbox). 6 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 6 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 18* Add bit to indicate whether or not this is a true cleanup condition. 6 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 6 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 21* Rearrange to group all the bit flags together in one word with a pad. 6 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 6 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 6 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 6 25* you keep around a pointer to a structure which no longer exists. 6 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 6 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 6 28* Add a field to indicate whether or not we should process interactive msgs. 6 29* Increment version to 4.1 so default value will get set. 6 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 6 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 6 32* Add a field to indicate whether or not we're processing a reply so that we 6 33* will be able to rebuild the screens properly after a disconnect occurs. 6 34* Error_list #114. 6 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 6 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 6 37* Add a bit to indicate whether or not the error segment had to be created 6 38* in the pdir (because we didn't have sma access to the mlsys_dir). 6 39* END HISTORY COMMENTS */ 6 40 6 41 6 42 /* Written 5/13/81 by Paul H. Kyzivat */ 6 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 6 44* and to add n_fkeys_used */ 6 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 6 46* varying string. */ 6 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 6 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 6 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 6 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 6 51 6 52 dcl xmail_data_ptr external static ptr init (null); 6 53 6 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 6 55 2 mail_dir char (168) varying, 6 56 2 first_label label, 6 57 2 quit_label label, 6 58 2 value_seg_pathname char (168) varying, 6 59 2 moved_user_io ptr, 6 60 2 normal_usage char (80) unal, 6 61 2 function_key_info, 6 62 3 function_key_data_ptr ptr, 6 63 3 n_fkeys_used fixed bin, 6 64 2 actee, 6 65 3 person char(32) varying, 6 66 3 project char(32) varying, 6 67 2 flags aligned, 6 68 3 mail_in_incoming bit (1) unal, 6 69 3 lists_as_menus bit (1) unal, /* personalization */ 6 70 3 remove_menus bit (1) unal, /* personalization */ 6 71 3 confirm_print bit (1) unal, /* personalization */ 6 72 3 multics_mode bit (1) unal, /* personalization */ 6 73 3 interactive_msgs bit (1) unal, /* personalization */ 6 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 6 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 6 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 6 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 6 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 6 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 6 80 3 pad bit (24) unal; 6 81 6 82 6 83 6 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 6 85 6 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 126 127 7 1 /* BEGIN INCLUDE FILE xmail_responses.incl.pl1 */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(86-02-07,Blair), approve(86-03-06,MCR7358), 7 5* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 6* 85-03-05 JG Backs: Modified to add a response of date. 7 7* 85-03-11 JG Backs: Modified to add short forms of keywords (a,l,p,f). 7 8* 85-03-14 JG Backs: Modified to add ASK, SET, and S. 7 9* 2) change(86-02-07,Blair), approve(86-03-06,MCR7358), 7 10* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 7 11* Modify to add SEEN and UNSEEN. 7 12* END HISTORY COMMENTS */ 7 13 7 14 /* Created 06/17/81 by Suzanne Krupp */ 7 15 7 16 dcl (QUESTION char(1) init("?"), 7 17 LIST char(2) init("??"), 7 18 A char(1) init("a"), 7 19 ALL char(3) init("all"), 7 20 ASK char(3) init("ask"), 7 21 DATE char(4) init("date"), 7 22 F char(1) init("f"), 7 23 FIRST char(5) init("first"), 7 24 L char(1) init("l"), 7 25 LAST char(4) init("last"), 7 26 N char (1) init ("n"), 7 27 NO char(2) init("no"), 7 28 NEXT char(4) init("next"), 7 29 NEW char(3) init("new"), 7 30 P char(1) init("p"), 7 31 PREV char(4) init("prev"), 7 32 S char(1) init("s"), 7 33 SEEN char (4) init("seen"), 7 34 SET char(3) init("set"), 7 35 SEARCH char(6) init("search"), 7 36 UNSEEN char (6) init("unseen"), 7 37 Y char (1) init ("y"), 7 38 YES char(3) init("yes")) 7 39 int static options(constant); 7 40 7 41 /* END INCLUDE FILE ... xmail_responses.incl.pl1 */ 128 129 130 /* BEGIN */ 131 132 xwm_iocb_ptr, xwm_seg_ptr = null; 133 xwm_new_seg = "0"b; 134 135 on cleanup call CLEANUP; 136 137 /* Validate input parameters */ 138 139 call xmail_validate_$mbx (xwm_mailbox_ptr, xwm_code); 140 if xwm_code ^= 0 141 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 142 "^/ Invalid mailbox structure. This is an internal programming error."); 143 144 if xwm_curr_msgsp = null 145 then call xmail_error_$code_first (xmail_err_$no_curr_msgs, xwm_ME_CHAR, "i"); 146 else do; 147 call xmail_validate_$curr_msgs (xwm_curr_msgsp, xwm_code); 148 if xwm_code ^= 0 149 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 150 "^/ Invalid message structure. This is an internal programming error."); 151 end; 152 153 curr_msgsp = xwm_curr_msgsp; 154 mailbox_ptr = xwm_mailbox_ptr; 155 156 /* Request input of file name (segment) */ 157 158 xwm_new_path = ""; 159 do while (xwm_new_path = ""); 160 call xmail_get_str_ (xwm_FILE_PROMPT, "", xwm_PROMPT_REPLIES_HELP, xwm_PATH_NAME, xwm_new_path); 161 if xwm_new_path = "" 162 then call ioa_ ("^/ You must provide a file name."); 163 if xwm_new_path = LIST 164 then do; 165 call ioa_ ("^/ A list of all possible files you can write to is not available with ??"); 166 xwm_new_path = ""; 167 end; 168 end; /* do while */ 169 170 call expand_pathname_ ((xwm_new_path), xwm_dname, xwm_ename, xwm_code); 171 if xwm_code ^= 0 172 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 173 "^/ ""^a"" is not a valid file name.", xwm_new_path); 174 175 /* Determine status of segment name */ 176 177 call hcs_$status_minf (xwm_dname, xwm_ename, xwm_CHASE, xwm_type, xwm_bit_count, xwm_code); 178 if xwm_code ^= 0 179 then do; 180 if xwm_code = error_table_$noentry 181 then do; 182 /* Segment does not exist; create new segment */ 183 184 xwm_new_seg = "1"b; 185 186 call hcs_$append_branch (xwm_dname, xwm_ename, RW_ACCESS_BIN, xwm_code); 187 if xwm_code ^= 0 188 then if xwm_code = error_table_$incorrect_access 189 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 190 "^/ You do not have correct access to directory ""^a"" to create file ""^a"".", 191 xwm_dname, xwm_ename); 192 else call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 193 "^/ Unable to create new file ""^a"" in directory ""^a"".", 194 xwm_ename, xwm_dname); 195 end; 196 else if xwm_code = error_table_$incorrect_access 197 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 198 "^/ You do not have correct access to file ""^a"" in directory ""^a"".", 199 xwm_ename, xwm_dname); 200 else call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 201 "^/ There is an error with file ""^a"" in directory ""^a"".", 202 xwm_ename, xwm_dname); 203 204 end; /* do */ 205 206 /* Now try to write to segment */ 207 208 call initiate_file_ (xwm_dname, xwm_ename, RW_ACCESS, xwm_seg_ptr, xwm_bit_count, xwm_code); 209 if xwm_code ^= 0 210 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 211 "^/ Unable to initiate file ""^a"" in directory ""^a"".", 212 xwm_ename, xwm_dname); 213 call iox_$attach_name (unique_chars_ ("0"b), xwm_iocb_ptr, 214 "vfile_ " || rtrim (xwm_dname) || ">" || (xwm_ename) || " -extend", codeptr (xwm_ME_ENTRY), xwm_code); 215 if xwm_code = 0 216 then call iox_$open (xwm_iocb_ptr, Stream_input_output, xwm_UNUSED_BIT, xwm_code); 217 if xwm_code ^= 0 218 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 219 "^/ Unable to prepare output switch to file. This is an internal programming error."); 220 221 if ^xwm_new_seg 222 then call ioa_$ioa_switch_nnl (xwm_iocb_ptr, "^|"); 223 224 call xmail_display_msgs_$ff (mailbox_ptr, curr_msgsp, xwm_iocb_ptr); 225 226 call adjust_bit_count_ ((xwm_dname), (xwm_ename), xwm_LAST_CHAR, xwm_unused_return_bc, xwm_code); 227 if xwm_code ^= 0 228 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 229 "^/ Unable to adjust bit count of file."); 230 231 /* Complete by destroying I/O control block pointer, clearing screen, & writing message to user */ 232 233 call close_detach_and_destroy (xwm_iocb_ptr); 234 235 call window_$clear_window (iox_$user_io, xwm_code); 236 if xwm_code ^= 0 237 then call xmail_error_$code_first (xwm_code, xwm_ME_CHAR, "q", 238 "^/ Unable to clear window. This is an internal programming error."); 239 240 call ioa_ ("Message^[s^] ^v(^d ^)^[written^;appended^] to ^a.", (curr_msgs.count > 1), 241 curr_msgs.count, curr_msgs.numbers, xwm_new_seg, xwm_ename); 242 243 return; 244 245 /* Internal procedures */ 246 247 close_detach_and_destroy: proc (cdad_iocb_ptr); 248 249 /* Internal procedure to finish with the control block pointer for the I/O switch */ 250 251 /* PARAMETERS */ 252 253 dcl cdad_iocb_ptr ptr; /* input pointer to I/O control block */ 254 255 /* BEGIN */ 256 257 if cdad_iocb_ptr ^= null 258 then do; 259 call iox_$close (cdad_iocb_ptr, (0)); /* ignore code */ 260 call iox_$detach_iocb (cdad_iocb_ptr, (0)); /* ignore code */ 261 call iox_$destroy_iocb (cdad_iocb_ptr, (0)); /* ignore code */ 262 end; 263 264 end close_detach_and_destroy; 265 266 CLEANUP: proc; 267 268 /* Internal procedure for cleanup condition: 269* to delete non-null segment pointer if a new file, 270* or restore bit count if existing file */ 271 272 /* BEGIN */ 273 274 call close_detach_and_destroy (xwm_iocb_ptr); 275 276 if xwm_seg_ptr ^= null 277 then if xwm_new_seg 278 then do; 279 call delete_$ptr (xwm_seg_ptr, xwm_DELETE_SEG, "", xwm_code); 280 if xwm_code = 0 281 then xwm_seg_ptr = null; 282 end; 283 else call hcs_$set_bc (xwm_dname, xwm_ename, xwm_bit_count, (0)); /* ignore code */ 284 285 end CLEANUP; 286 287 288 end xmail_write_msgs_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0744.7 xmail_write_msgs_.pl1 >spec>install>MR12.2-1098>xmail_write_msgs_.pl1 116 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 118 2 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 120 3 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 122 4 05/22/86 1225.8 mlsys_message.incl.pl1 >ldd>include>mlsys_message.incl.pl1 124 5 06/08/82 1329.4 xmail_curr_msg_info.incl.pl1 >ldd>include>xmail_curr_msg_info.incl.pl1 126 6 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.incl.pl1 128 7 05/28/86 1117.7 xmail_responses.incl.pl1 >ldd>include>xmail_responses.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. LIST 002330 constant char(2) initial packed unaligned dcl 7-16 ref 163 RW_ACCESS 000001 constant bit(3) initial packed unaligned dcl 1-11 set ref 208* RW_ACCESS_BIN 000077 constant fixed bin(5,0) initial dcl 1-36 set ref 186* Stream_input_output 000000 constant fixed bin(17,0) initial dcl 2-15 set ref 215* adjust_bit_count_ 000016 constant entry external dcl 51 ref 226 cdad_iocb_ptr parameter pointer dcl 253 set ref 247 257 259* 260* 261* cleanup 000100 stack reference condition dcl 78 ref 135 codeptr builtin function dcl 110 ref 213 213 count 1 based fixed bin(17,0) level 2 dcl 5-8 set ref 240 240* 240 curr_msgs based structure level 1 unaligned dcl 5-8 curr_msgsp 000272 automatic pointer dcl 5-6 set ref 153* 224* 240 240 240 delete_$ptr 000020 constant entry external dcl 53 ref 279 error_table_$incorrect_access 000010 external static fixed bin(35,0) dcl 45 ref 187 196 error_table_$noentry 000012 external static fixed bin(35,0) dcl 46 ref 180 expand_pathname_ 000022 constant entry external dcl 54 ref 170 hcs_$append_branch 000024 constant entry external dcl 55 ref 186 hcs_$set_bc 000026 constant entry external dcl 56 ref 283 hcs_$status_minf 000030 constant entry external dcl 57 ref 177 header based structure level 2 in structure "message_body_section" dcl 4-274 in procedure "xmail_write_msgs_" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 4-313 in procedure "xmail_write_msgs_" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 4-150 in procedure "xmail_write_msgs_" header 64 based structure array level 4 in structure "message" dcl 4-15 in procedure "xmail_write_msgs_" header based structure level 2 in structure "message_user_field" dcl 4-163 in procedure "xmail_write_msgs_" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 4-208 in procedure "xmail_write_msgs_" initiate_file_ 000032 constant entry external dcl 58 ref 208 ioa_ 000034 constant entry external dcl 59 ref 161 165 240 ioa_$ioa_switch_nnl 000036 constant entry external dcl 60 ref 221 iox_$attach_name 000040 constant entry external dcl 61 ref 213 iox_$close 000042 constant entry external dcl 62 ref 259 iox_$destroy_iocb 000044 constant entry external dcl 63 ref 261 iox_$detach_iocb 000046 constant entry external dcl 64 ref 260 iox_$open 000050 constant entry external dcl 65 ref 215 iox_$user_io 000052 external static pointer dcl 66 set ref 235* mailbox_ptr 000270 automatic pointer dcl 3-30 set ref 154* 224* message_body_section based structure level 1 dcl 4-274 message_envelope based structure level 1 dcl 4-61 message_redistribution based structure level 1 dcl 4-122 message_reference based structure level 1 dcl 4-234 message_text_field based structure level 1 dcl 4-260 message_user_field based structure level 1 dcl 4-163 null builtin function dcl 110 ref 132 144 257 276 280 numbers 2 based fixed bin(17,0) array level 2 dcl 5-8 set ref 240* rtrim builtin function dcl 110 ref 213 unique_chars_ 000054 constant entry external dcl 67 ref 213 213 window_$clear_window 000056 constant entry external dcl 68 ref 235 xmail_display_msgs_$ff 000060 constant entry external dcl 69 ref 224 xmail_err_$no_curr_msgs 000014 external static fixed bin(35,0) dcl 47 set ref 144* xmail_error_$code_first 000062 constant entry external dcl 70 ref 140 144 148 171 187 192 196 200 209 217 227 236 xmail_get_str_ 000064 constant entry external dcl 71 ref 160 xmail_validate_$curr_msgs 000066 constant entry external dcl 72 ref 147 xmail_validate_$mbx 000070 constant entry external dcl 73 ref 139 xwm_CHASE 000101 constant fixed bin(1,0) initial dcl 97 set ref 177* xwm_DELETE_SEG 000041 constant bit(6) initial dcl 98 set ref 279* xwm_FILE_PROMPT 000021 constant varying char(27) initial dcl 99 set ref 160* xwm_LAST_CHAR 000053 constant bit(1) initial dcl 100 set ref 226* xwm_ME_CHAR 000014 constant char(17) initial packed unaligned dcl 101 set ref 140* 144* 148* 171* 187* 192* 196* 200* 209* 217* 227* 236* xwm_ME_ENTRY 000264 automatic entry variable initial dcl 102 set ref 102* 213 213 xwm_PATH_NAME 000011 constant char(9) initial packed unaligned dcl 103 set ref 160* xwm_PROMPT_REPLIES_HELP 000002 constant char(28) initial packed unaligned dcl 104 set ref 160* xwm_UNUSED_BIT 000076 constant bit(1) initial dcl 105 set ref 215* xwm_bit_count 000106 automatic fixed bin(24,0) dcl 83 set ref 177* 208* 283* xwm_code 000107 automatic fixed bin(35,0) dcl 84 set ref 139* 140 140* 147* 148 148* 170* 171 171* 177* 178 180 186* 187 187 187* 192* 196 196* 200* 208* 209 209* 213* 215 215* 217 217* 226* 227 227* 235* 236 236* 279* 280 xwm_curr_msgsp parameter pointer dcl 40 set ref 7 144 147* 153 xwm_dname 000110 automatic char(168) packed unaligned dcl 85 set ref 170* 177* 186* 187* 192* 196* 200* 208* 209* 213 226 283* xwm_ename 000162 automatic char(32) packed unaligned dcl 86 set ref 170* 177* 186* 187* 192* 196* 200* 208* 209* 213 226 240* 283* xwm_iocb_ptr 000172 automatic pointer dcl 87 set ref 132* 213* 215* 221* 224* 233* 274* xwm_mailbox_ptr parameter pointer dcl 40 set ref 7 139* 154 xwm_new_path 000175 automatic varying char(200) dcl 89 set ref 158* 159 160* 161 163 166* 170 171* xwm_new_seg 000174 automatic bit(1) packed unaligned dcl 88 set ref 133* 184* 221 240* 276 xwm_seg_ptr 000260 automatic pointer dcl 90 set ref 132* 208* 276 279* 280* xwm_type 000262 automatic fixed bin(2,0) dcl 91 set ref 177* xwm_unused_return_bc 000263 automatic fixed bin(35,0) dcl 92 set ref 226* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A internal static char(1) initial packed unaligned dcl 7-16 ALL internal static char(3) initial packed unaligned dcl 7-16 ASK internal static char(3) initial packed unaligned dcl 7-16 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DATE internal static char(4) initial packed unaligned dcl 7-16 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 F internal static char(1) initial packed unaligned dcl 7-16 FIRST internal static char(5) initial packed unaligned dcl 7-16 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 L internal static char(1) initial packed unaligned dcl 7-16 LAST internal static char(4) initial packed unaligned dcl 7-16 MAILBOX_VERSION_2 internal static char(8) initial packed unaligned dcl 3-28 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 4-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 4-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 4-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 4-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 4-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 4-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 4-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 4-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 4-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 4-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 4-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 4-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 4-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 4-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 4-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 4-49 MSG_STRUCT_VERSION_1 internal static fixed bin(17,0) initial dcl 5-4 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N internal static char(1) initial packed unaligned dcl 7-16 NEW internal static char(3) initial packed unaligned dcl 7-16 NEXT internal static char(4) initial packed unaligned dcl 7-16 NO internal static char(2) initial packed unaligned dcl 7-16 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 3-37 P internal static char(1) initial packed unaligned dcl 7-16 PREV internal static char(4) initial packed unaligned dcl 7-16 QUESTION internal static char(1) initial packed unaligned dcl 7-16 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S internal static char(1) initial packed unaligned dcl 7-16 SAVEBOX internal static fixed bin(17,0) initial dcl 3-37 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEARCH internal static char(6) initial packed unaligned dcl 7-16 SEEN internal static char(4) initial packed unaligned dcl 7-16 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SET internal static char(3) initial packed unaligned dcl 7-16 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Stream_input internal static fixed bin(17,0) initial dcl 2-15 Stream_output internal static fixed bin(17,0) initial dcl 2-15 UNSEEN internal static char(6) initial packed unaligned dcl 7-16 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 3-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 3-37 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Y internal static char(1) initial packed unaligned dcl 7-16 YES internal static char(3) initial packed unaligned dcl 7-16 iox_modes internal static char(24) initial array dcl 2-6 mailbox based structure level 1 dcl 3-6 mailbox_n_messages automatic fixed bin(17,0) dcl 3-32 message based structure level 1 dcl 4-15 message_address_list_user_field based structure level 1 dcl 4-190 message_bit_string_body_section based structure level 1 dcl 4-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 4-307 message_body_section_parameter based structure level 1 dcl 4-313 message_body_section_parameter_ptr automatic pointer dcl 4-320 message_body_section_ptr automatic pointer dcl 4-280 message_date_user_field based structure level 1 dcl 4-195 message_envelope_parameter based structure level 1 dcl 4-74 message_envelope_parameter_ptr automatic pointer dcl 4-81 message_envelope_ptr automatic pointer dcl 4-69 message_integer_user_field based structure level 1 dcl 4-200 message_n_body_sections automatic fixed bin(17,0) dcl 4-55 message_n_redistributions automatic fixed bin(17,0) dcl 4-55 message_n_user_fields automatic fixed bin(17,0) dcl 4-55 message_preformatted_body_section based structure level 1 dcl 4-292 message_preformatted_body_section_text based char packed unaligned dcl 4-298 message_ptr automatic pointer dcl 4-53 message_redistribution_comment based char packed unaligned dcl 4-131 message_redistribution_parameter based structure level 1 dcl 4-139 message_redistribution_parameter_ptr automatic pointer dcl 4-146 message_redistribution_ptr automatic pointer dcl 4-134 message_redistributions_list based structure level 1 dcl 4-109 message_reference_parameter based structure level 1 dcl 4-248 message_reference_parameter_ptr automatic pointer dcl 4-255 message_reference_ptr automatic pointer dcl 4-243 message_reference_subject based char packed unaligned dcl 4-240 message_references_list based structure level 1 dcl 4-219 message_references_list_n_references automatic fixed bin(17,0) dcl 4-55 message_references_list_ptr automatic pointer dcl 4-229 message_subject based char packed unaligned dcl 4-51 message_text_field_ptr automatic pointer dcl 4-270 message_text_field_text based char packed unaligned dcl 4-268 message_text_user_field based structure level 1 dcl 4-183 message_text_user_field_text based char packed unaligned dcl 4-187 message_trace based structure level 1 dcl 4-87 message_trace_n_relays automatic fixed bin(17,0) dcl 4-55 message_trace_ptr automatic pointer dcl 4-105 message_user_field_parameter based structure level 1 dcl 4-208 message_user_field_parameter_ptr automatic pointer dcl 4-215 message_user_field_ptr automatic pointer dcl 4-169 message_user_fields_list based structure level 1 dcl 4-150 msg_struct based structure level 1 unaligned dcl 5-22 msg_structp automatic pointer dcl 5-20 n_messages automatic fixed bin(17,0) dcl 5-3 nonexist_msgs based structure level 1 unaligned dcl 5-15 nonexist_msgsp automatic pointer dcl 5-13 short_iox_modes internal static char(4) initial array dcl 2-12 xmail_data based structure level 1 dcl 6-54 xmail_data_ptr external static pointer initial dcl 6-52 xmail_version internal static varying char(10) initial dcl 6-84 NAMES DECLARED BY EXPLICIT CONTEXT. CLEANUP 002223 constant entry internal dcl 266 ref 135 close_detach_and_destroy 002151 constant entry internal dcl 247 ref 233 274 xmail_write_msgs_ 000447 constant entry external dcl 7 ref 102 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2664 2756 2332 2674 Length 3346 2332 72 354 332 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_write_msgs_ 332 external procedure is an external procedure. on unit on line 135 96 on unit close_detach_and_destroy 72 internal procedure is called by several nonquick procedures. CLEANUP internal procedure shares stack frame of on unit on line 135. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xmail_write_msgs_ 000106 xwm_bit_count xmail_write_msgs_ 000107 xwm_code xmail_write_msgs_ 000110 xwm_dname xmail_write_msgs_ 000162 xwm_ename xmail_write_msgs_ 000172 xwm_iocb_ptr xmail_write_msgs_ 000174 xwm_new_seg xmail_write_msgs_ 000175 xwm_new_path xmail_write_msgs_ 000260 xwm_seg_ptr xmail_write_msgs_ 000262 xwm_type xmail_write_msgs_ 000263 xwm_unused_return_bc xmail_write_msgs_ 000264 xwm_ME_ENTRY xmail_write_msgs_ 000270 mailbox_ptr xmail_write_msgs_ 000272 curr_msgsp xmail_write_msgs_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_bit_count_ delete_$ptr expand_pathname_ hcs_$append_branch hcs_$set_bc hcs_$status_minf initiate_file_ ioa_ ioa_$ioa_switch_nnl iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open unique_chars_ window_$clear_window xmail_display_msgs_$ff xmail_error_$code_first xmail_get_str_ xmail_validate_$curr_msgs xmail_validate_$mbx THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$incorrect_access error_table_$noentry iox_$user_io xmail_err_$no_curr_msgs LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000443 102 000454 132 000460 133 000463 135 000464 139 000502 140 000514 144 000550 147 000601 148 000612 153 000646 154 000652 158 000655 159 000656 160 000663 161 000726 163 000747 165 000754 166 000770 168 000771 170 000772 171 001027 177 001070 178 001125 180 001127 184 001132 186 001134 187 001160 192 001227 195 001270 196 001271 200 001335 208 001376 209 001433 213 001477 215 001626 217 001646 221 001702 224 001724 226 001737 227 001764 233 002020 235 002026 236 002037 240 002073 243 002147 247 002150 257 002156 259 002163 260 002174 261 002207 264 002222 266 002223 274 002224 276 002234 279 002244 280 002271 282 002276 283 002277 285 002325 ----------------------------------------------------------- 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