COMPILATION LISTING OF SEGMENT canonicalize_mailbox Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-09-24_2234.40_Thu_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: style2,ifthenstmt,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 8 9 /* canonicalize_mailbox: reads all the messages out of a mailbox, and stores 10* them back in there. This way read_mail's reg-exp search does not have to 11* reformat the message, since they are stored in canonical format until we 12* go to binary messages. */ 13 /* Written: October 1983 by B. Margolin */ 14 /* Modified: 11 November 1983 by B. Margolin to add -force */ 15 /* Modified: 29 November 1983 by B. Margolin to make it copy into a 16* new mbx, and to add -privilege and AIM checking. */ 17 /* Modified: 6 January 1984 by B. Margolin to not reference through null 18* pointer when using -force on an already-canonical mailbox. */ 19 /* Modified: 5 April 1984 by G. Palter to fix mail system error #0439 -- The explanation for canonicalizing a mailbox 20* whose access class is higher than the process authorization contains the word "unaccessible"; it should be 21* "inaccessible" */ 22 23 canonicalize_mailbox: 24 proc options (variable); 25 26 /*** Automatic ***/ 27 28 dcl area_ptr ptr; 29 dcl arg_count fixed bin; 30 dcl arg_idx fixed bin; 31 dcl arg_len fixed bin (21); 32 dcl arg_ptr ptr; 33 dcl code fixed bin (35); 34 dcl dir_priv fixed bin (35); 35 dcl enable_privs bit (1); 36 dcl error_return bit (1); 37 dcl force_access bit (1); 38 dcl link_flag bit (1); 39 dcl 1 local_close_options aligned like close_options; 40 dcl 1 local_delete_options 41 aligned like delete_mailbox_options; 42 dcl 1 local_open_options aligned like open_options; 43 dcl 1 local_status_branch aligned like status_branch; 44 dcl mbx_dir char (168); 45 dcl mbx_entry char (32); 46 dcl mbx_path_len fixed bin (21); 47 dcl mbx_path_ptr ptr; 48 dcl 1 my_acl_entry aligned, 49 2 header like mailbox_acl.header, 50 2 acl_term like mailbox_acl.acl_terms; 51 dcl ring1_priv fixed bin (35); 52 dcl sci_ptr ptr; 53 dcl seg_priv fixed bin (35); 54 dcl star_code fixed bin (35); 55 dcl user_auth bit (72) aligned; 56 57 /*** Based ***/ 58 59 dcl arg char (arg_len) based (arg_ptr); 60 dcl mbx_path char (mbx_path_len) based (mbx_path_ptr); 61 dcl my_area area based (area_ptr); 62 63 /*** Entries ***/ 64 65 dcl ( 66 aim_check_$equal, 67 aim_check_$greater 68 ) entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned) reducible; 69 dcl check_star_name_$entry 70 entry (char (*), fixed bin (35)); 71 dcl com_err_ entry () options (variable); 72 dcl command_query_$yes_no entry () options (variable); 73 dcl convert_authorization_$to_string_short 74 entry (bit (72) aligned, char (*), fixed bin (35)); 75 dcl cu_$arg_list_ptr entry (ptr); 76 dcl cu_$generate_call entry (entry, ptr); 77 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 78 dcl expand_pathname_$add_suffix 79 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 80 dcl (get_authorization_, get_max_authorization_) 81 entry () returns (bit (72) aligned) reducible; 82 dcl get_group_id_ entry () returns (char (32)); 83 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 84 dcl hcs_$get_link_target entry (char (*), char (*), char (*), char (*), fixed bin (35)); 85 dcl hcs_$get_max_length entry (char (*), char (*), fixed bin, fixed bin (35)); 86 dcl hcs_$get_safety_sw entry (char (*), char (*), bit (1), fixed bin (35)); 87 dcl hcs_$get_user_access_modes 88 entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, 89 bit (36) aligned, fixed bin (35)); 90 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, 91 fixed bin (35)); 92 dcl hcs_$status_ entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 93 dcl ( 94 ioa_, 95 ioa_$nnl 96 ) entry () options (variable); 97 dcl mail_system_$close_mailbox 98 entry (ptr, ptr, fixed bin (35)); 99 dcl mail_system_$copy_message 100 entry (ptr, char (*), char (*), fixed bin (35)); 101 dcl mail_system_$open_mailbox 102 entry (char (*), char (*), ptr, char (*), ptr, fixed bin (35)); 103 dcl mail_system_$read_message 104 entry (ptr, fixed bin, fixed bin (35)); 105 dcl mail_system_$read_message_canonical_form 106 entry (ptr, fixed bin, ptr, fixed bin (21), fixed bin (35)); 107 dcl mail_system_$read_new_messages 108 entry (ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 109 dcl mailbox_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 110 dcl mailbox_$get_mode_file 111 entry (char (*), char (*), bit (7), fixed bin (35)); 112 dcl mailbox_$set_max_length_file 113 entry (char (*), char (*), fixed bin (19), fixed bin (35)); 114 dcl mailbox_$set_safety_switch 115 entry (char (*), char (*), bit (1), fixed bin (35)); 116 dcl mlsys_utils_$add_mailbox_acl_entries 117 entry (char (*), char (*), ptr, fixed bin (35)); 118 dcl mlsys_utils_$create_mailbox 119 entry (char (*), char (*), fixed bin (35)); 120 dcl mlsys_utils_$delete_mailbox 121 entry (char (*), char (*), char (*), ptr, fixed bin (35)); 122 dcl mlsys_utils_$list_mailbox_acl 123 entry (char (*), char (*), ptr, char (8), ptr, fixed bin (35)); 124 dcl mlsys_utils_$replace_mailbox_acl_entries 125 entry (char (*), char (*), ptr, fixed bin (35)); 126 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 127 dcl requote_string_ entry (char (*)) returns (char (*)); 128 dcl ssu_$abort_line entry () options (variable); 129 dcl ssu_$arg_count entry (ptr, fixed bin); 130 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 131 dcl ssu_$destroy_invocation 132 entry (ptr); 133 dcl ssu_$get_area entry (ptr, ptr, char (*), ptr); 134 dcl ssu_$print_message entry () options (variable); 135 dcl ssu_$standalone_invocation 136 entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 137 dcl ( 138 system_privilege_$dir_priv_off, 139 system_privilege_$dir_priv_on, 140 system_privilege_$ring1_priv_off, 141 system_privilege_$ring1_priv_on, 142 system_privilege_$seg_priv_off, 143 system_privilege_$seg_priv_on 144 ) entry (fixed bin (35)); 145 dcl ( 146 system_privilege_$reclassify_branch, 147 system_privilege_$reclassify_sys_seg 148 ) entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 149 dcl unique_chars_ entry (bit (*)) returns (char (15)); 150 151 /*** Static ***/ 152 153 dcl ( 154 error_table_$bad_arg, 155 error_table_$badopt, 156 error_table_$incorrect_access, 157 error_table_$insufficient_access, 158 error_table_$noarg, 159 error_table_$noentry, 160 error_table_$not_privileged, 161 error_table_$rqover, 162 error_table_$too_many_args, 163 mlsys_et_$no_message_canonical_form, 164 mlsys_et_$no_more_messages 165 ) fixed bin (35) ext static; 166 dcl sys_info$access_class_ceiling /* system_high */ 167 bit (72) aligned ext static; 168 dcl MBX_SUFFIX char (3) int static options (constant) init ("mbx"); 169 dcl WHOAMI char (20) int static options (constant) init ("canonicalize_mailbox"); 170 dcl VERSION char (3) int static options (constant) init ("1.0"); 171 172 /*** Misc ***/ 173 174 dcl (cleanup, linkage_error) 175 condition; 176 dcl (addr, mod, null, pointer, string, substr, sum) 177 builtin; 178 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 */ 179 180 2 1 /* BEGIN INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 2 2 /* Created: June 1983 by G. Palter */ 2 3 2 4 /* Options for the mail_system_$close_mailbox entrypoint */ 2 5 2 6 dcl 1 close_options aligned based (close_options_ptr), 2 7 2 version character (8) unaligned, 2 8 2 flags, 2 9 3 perform_deletions bit (1) unaligned, /* ON => perform deletions requested earlier */ 2 10 3 report_deletion_errors bit (1) unaligned, /* ON => report problems deleting via sub_err_ */ 2 11 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 2 12 2 13 dcl CLOSE_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsclo02"); 2 14 2 15 dcl close_options_ptr pointer; 2 16 2 17 /* END INCLUDE FILE ... mlsys_close_options.incl.pl1 */ 181 182 3 1 /* BEGIN INCLUDE FILE ... mlsys_delete_error_info.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Describes why the mail system could not delete a message which was marked for deletion: passed to the caller of 3 5* mail_system_$close_mailbox or mail_system_$expunge_messages via sub_err_ */ 3 6 3 7 dcl 1 delete_error_info aligned based (delete_error_info_ptr), 3 8 2 version character (8) unaligned, 3 9 2 message_number fixed binary, /* set to index of message which couldn't be deleted */ 3 10 2 code fixed binary (35), /* set to indicate why message could not be deleted */ 3 11 2 additional_info character (256) varying; /* set to additional information to be displayed with the 3 12* error message for the above status code */ 3 13 3 14 dcl DELETE_ERROR_INFO_VERSION_1 character (8) static options (constant) initial ("mlsdel01"); 3 15 3 16 dcl delete_error_info_ptr pointer; 3 17 3 18 /* END INCLUDE FILE ... mlsys_delete_error_info.incl.pl1 */ 183 184 4 1 /* BEGIN INCLUDE FILE ... mlsys_delete_mailbox.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Options for the mlsys_utils_$delete_mailbox entrypoint */ 4 5 4 6 dcl 1 delete_mailbox_options aligned based (delete_mailbox_options_ptr), 4 7 2 version character (8) unaligned, 4 8 2 flags, 4 9 3 force bit (1) unaligned, /* ON => delete the mailbox without asking permission */ 4 10 3 query bit (1) unaligned, /* ON => do not delete protected mailboxes unless the user 4 11* says it's OK (not in the forseeable future) */ 4 12 3 chase bit (1) unaligned, /* ON => chase links if given pathname is a link */ 4 13 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 4 14 4 15 dcl DELETE_MAILBOX_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsdmbx1"); 4 16 4 17 dcl delete_mailbox_options_ptr pointer; 4 18 4 19 /* END INCLUDE FILE ... mlsys_delete_mailbox.incl.pl1 */ 185 186 5 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 5 2 /* Created: April 1983 by G. Palter */ 5 3 5 4 /* Definition of a mailbox as used by the Multics Mail System */ 5 5 5 6 dcl 1 mailbox aligned based (mailbox_ptr), 5 7 2 version character (8) unaligned, 5 8 2 reserved bit (144), /* for exclusive use of the mail system */ 5 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 5 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 5 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 5 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 5 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 5 14 2 flags, 5 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 5 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 5 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 5 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 5 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 5 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 5 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 5 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 5 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 5 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 5 25 3 key bit (72), /* unique key to read this message if not already read */ 5 26 3 message_ptr pointer; /* -> the message structure */ 5 27 5 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 5 29 5 30 dcl mailbox_ptr pointer; 5 31 5 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 5 33 5 34 5 35 /* Types of mailboxes distinguished by the mail system */ 5 36 5 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 5 38 USER_LOGBOX initial (2), /* the user's logbox */ 5 39 SAVEBOX initial (3), /* a savebox */ 5 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 5 41 fixed binary static options (constant); 5 42 5 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 187 188 6 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox_acl.incl.pl1 */ 6 2 /* Created: June 1983 by G. Palter */ 6 3 6 4 /* Definition of the extended Access Control List (ACL) of a Multics mailbox as presented by the mail system */ 6 5 6 6 dcl 1 mailbox_acl aligned based (mailbox_acl_ptr), 6 7 2 header, 6 8 3 version character (8) unaligned, 6 9 3 n_acl_terms fixed binary, /* # of ACL terms in this structure */ 6 10 3 pad bit (36), 6 11 2 acl_terms (mailbox_acl_n_acl_terms refer (mailbox_acl.n_acl_terms)), 6 12 3 access_name character (32) unaligned, /* ... the access name for this term (Person.Project.tag) */ 6 13 3 extended_mode bit (36), /* ... the extended mode (see mlsys_mailbox_modes) */ 6 14 3 code fixed binary (35); /* ... set to the error code for this entry (if any) */ 6 15 6 16 dcl MAILBOX_ACL_VERSION_1 character (8) static options (constant) initial ("mlsacl01"); 6 17 6 18 dcl mailbox_acl_ptr pointer; 6 19 6 20 dcl mailbox_acl_n_acl_terms fixed binary; /* used when allocating the above */ 6 21 6 22 /* END INCLUDE FILE ... mlsys_mailbox_acl.incl.pl1 */ 189 190 7 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox_modes.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Extended access modes (and combinations thereof) defined for a mailbox */ 7 5 7 6 dcl (N_MBX_ACCESS initial ("0000000"b), /* no access */ 7 7 7 8 A_MBX_ACCESS initial ("1000000"b), /* add messages */ 7 9 D_MBX_ACCESS initial ("0100000"b), /* delete any message (also indicates owner of mailbox) */ 7 10 R_MBX_ACCESS initial ("0010000"b), /* read any message */ 7 11 O_MBX_ACCESS initial ("0001000"b), /* read/delete any message sent by yourself */ 7 12 S_MBX_ACCESS initial ("0000100"b), /* get count of messages in the mailbox */ 7 13 W_MBX_ACCESS initial ("0000010"b), /* can send a wakeup to this mailbox (interactive messages and 7 14* mail notifications) */ 7 15 U_MBX_ACCESS initial ("0000001"b), /* can send an urgent wakeup (unused today) */ 7 16 7 17 ADROSW_MBX_ACCESS initial ("1111110"b), /* access granted to creator/owner of a mailbox */ 7 18 AOW_MBX_ACCESS initial ("1001010"b)) /* access granted to all other users */ 7 19 bit (36) aligned static options (constant); 7 20 7 21 /* END INCLUDE FILE ... mlsys_mailbox_modes.incl.pl1 */ 191 192 8 1 /* BEGIN INCLUDE FILE ... mlsys_message.incl.pl1 */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(85-12-19,Herbst), approve(86-03-25,MCR7367), 8 6* audit(86-04-28,Margolin), install(86-05-22,MR12.0-1059): 8 7* Added seen switch to message. 8 8* END HISTORY COMMENTS */ 8 9 8 10 8 11 /* Created: June 1983 by G. Palter */ 8 12 8 13 /* Definition of a message as used by the Multics Mail System */ 8 14 8 15 dcl 1 message aligned based (message_ptr), 8 16 2 version character (8) unaligned, 8 17 2 reserved bit (144), /* for exclusive use of the mail system */ 8 18 2 n_reply_references fixed binary, /* # of messages for which this is a reply */ 8 19 2 n_user_fields fixed binary, /* # of non-standard header fields in this message */ 8 20 2 n_redistributions fixed binary, /* # of times this message has been forwarded */ 8 21 2 n_body_sections fixed binary, /* # of sections in the body */ 8 22 2 flags, 8 23 3 interactive bit (1) unaligned, /* ON => this is an interactive message */ 8 24 3 can_be_deleted bit (1) unaligned, /* ON => the user can delete this message if desired */ 8 25 3 marked_for_deletion bit (1) unaligned, /* ON => message will be deleted when mailbox is closed */ 8 26 3 must_be_acknowledged bit (1) unaligned, /* ON => an ACK should be generated when message is read */ 8 27 3 seen bit (1) unaligned, /* ON => user has printed message at least once */ 8 28 3 reserved bit (31) unaligned, /* for use by the mail system */ 8 29 2 pad bit (36), 8 30 2 envelope like message_envelope, /* who/when/how the message was mailed & delivered */ 8 31 2 header, 8 32 3 message_id bit (72), /* ID of this message (same value for all copies) */ 8 33 3 access_class bit (72), /* AIM access class of this message */ 8 34 3 date_time_created fixed binary (71), /* date/time this message was composed */ 8 35 3 from pointer, /* -> address list of author(s) of the message */ 8 36 3 reply_to pointer, /* -> address list of recipients for reply (if not authors) */ 8 37 3 to pointer, /* -> address list of primary recipients */ 8 38 3 cc pointer, /* -> address list of secondary recipients */ 8 39 3 bcc pointer, /* -> address list of blind recipients */ 8 40 3 subject like message_text_field, /* subject of the message */ 8 41 3 reply_references pointer, /* -> list of messages for which this message is a reply */ 8 42 3 user_fields_list pointer, /* -> list of user-defined fields in this message */ 8 43 2 redistributions_list pointer, /* -> redistributions list for this message */ 8 44 2 body, 8 45 3 total_lines fixed binary (21), /* total # of lines in the body or -1 if indeterminate */ 8 46 3 pad bit (36), 8 47 3 body_sections (message_n_body_sections refer (message.n_body_sections)) like message_body_section; 8 48 8 49 dcl MESSAGE_VERSION_2 character (8) static options (constant) initial ("mlsmsg02"); 8 50 8 51 dcl message_subject character (message.header.subject.text_lth) unaligned based (message.header.subject.text_ptr); 8 52 8 53 dcl message_ptr pointer; 8 54 8 55 dcl (message_n_body_sections, message_trace_n_relays, message_n_redistributions, message_n_user_fields, 8 56 message_references_list_n_references) 8 57 fixed binary; /* for exclusive use of the mail system */ 8 58 8 59 /* Definition of a message envelope: describes when, by whom, and by what route the message was mailed */ 8 60 8 61 dcl 1 message_envelope aligned based (message_envelope_ptr), 8 62 2 date_time_mailed fixed binary (71), /* date/time this message was entered into the mail system */ 8 63 2 sender pointer, /* -> address of entity that mailed the message */ 8 64 2 trace pointer, /* -> message_trace describing how it got here */ 8 65 2 date_time_delivered fixed binary (71), /* date/time this message was delivered */ 8 66 2 delivered_by pointer, /* -> address of entity that delivered the message */ 8 67 2 acknowledge_to pointer; /* -> address of entity to receive ACK when message is read */ 8 68 8 69 dcl message_envelope_ptr pointer; 8 70 8 71 8 72 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the message envelope */ 8 73 8 74 dcl 1 message_envelope_parameter aligned based (message_envelope_parameter_ptr), 8 75 2 pad pointer, /* forces even word alignment */ 8 76 2 version character (8) unaligned, 8 77 2 envelope like message_envelope; 8 78 8 79 dcl MESSAGE_ENVELOPE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsenv02"); 8 80 8 81 dcl message_envelope_parameter_ptr pointer; 8 82 8 83 8 84 /* Definition of a message trace: describes the route and each relay operation by which a message was passed through the 8 85* networks to reach this recipient */ 8 86 8 87 dcl 1 message_trace aligned based (message_trace_ptr), 8 88 2 version character (8) unaligned, 8 89 2 reserved bit (144), /* ... exclusively for use by the mail system */ 8 90 2 implicit_route pointer, /* -> an address_route which defines the route it took */ 8 91 2 pad bit (36), 8 92 2 n_relays fixed binary, /* # of relay operations required to reach this site */ 8 93 2 relays (message_trace_n_relays refer (message_trace.n_relays)), 8 94 3 date_time_relayed fixed binary (71), /* ... when this relay operation took place */ 8 95 3 sending_host character (256) varying, /* ... the host which relayed the message */ 8 96 3 receiving_host character (256) varying, /* ... the host which received it */ 8 97 3 communications_media character (32) unaligned, /* ... medium over which relay took place (ARPA, Tymnet) */ 8 98 3 communications_protocol character (32) unaligned,/* ... low-level protocol used (TCP, X.25) */ 8 99 3 mail_protocol character (32) unaligned, /* ... mailer protocol used (SMTP, NBS) */ 8 100 3 relay_id bit (72), /* ... unique ID assigned by receiving system or ""b */ 8 101 3 relay_recipient pointer; /* ... -> address of recipient as given by sending system */ 8 102 8 103 dcl MESSAGE_TRACE_VERSION_2 character (8) static options (constant) initial ("mlstrc02"); 8 104 8 105 dcl message_trace_ptr pointer; 8 106 8 107 /* Definition of a message's redistributions list */ 8 108 8 109 dcl 1 message_redistributions_list aligned based (message.redistributions_list), 8 110 2 version character (8) unaligned, 8 111 2 reserved bit (144), /* ... exclusively for use by the mail system */ 8 112 2 pad bit (36), 8 113 2 n_redistributions fixed binary, /* # of redistributions */ 8 114 2 redistributions (message_n_redistributions refer (message_redistributions_list.n_redistributions)) 8 115 like message_redistribution; /* the redistributions: oldest first */ 8 116 8 117 dcl MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsrl002"); 8 118 8 119 8 120 /* Definition of a single redistribution (forwarding) of a message */ 8 121 8 122 dcl 1 message_redistribution aligned based (message_redistribution_ptr), 8 123 2 envelope like message_envelope, 8 124 2 header, 8 125 3 message_id bit (72), /* ID of this redistribution (same for all copies) */ 8 126 3 date_time_created fixed binary (71), /* date/time when this redistribution was made */ 8 127 3 from pointer, /* -> address list of authors of this redistribution */ 8 128 3 to pointer, /* -> address list of recipients of the redistribution */ 8 129 3 comment like message_text_field; /* optional comment associated with the redistribution */ 8 130 8 131 dcl message_redistribution_comment character (message_redistribution.comment.text_lth) unaligned 8 132 based (message_redistribution.comment.text_ptr); 8 133 8 134 dcl message_redistribution_ptr pointer; 8 135 8 136 8 137 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate the redistributions of a message */ 8 138 8 139 dcl 1 message_redistribution_parameter aligned based (message_redistribution_parameter_ptr), 8 140 2 pad pointer, /* forces even word alignment */ 8 141 2 version character (8) unaligned, 8 142 2 redistribution like message_redistribution; 8 143 8 144 dcl MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsdist2"); 8 145 8 146 dcl message_redistribution_parameter_ptr pointer; 8 147 8 148 /* Definition of the list of user-defined fields in a message */ 8 149 8 150 dcl 1 message_user_fields_list aligned based (message.user_fields_list), 8 151 2 version character (8) unaligned, 8 152 2 reserved bit (144), /* ... exclusively for use by the mail system */ 8 153 2 pad bit (36), 8 154 2 n_user_fields fixed binary, /* # of user-defined fields in the message */ 8 155 2 user_fields (message_n_user_fields refer (message_user_fields_list.n_user_fields)) 8 156 like message_user_field; /* the actual user-defined fields */ 8 157 8 158 dcl MESSAGE_USER_FIELDS_LIST_VERSION_2 character (8) static options (constant) initial ("mlsufl02"); 8 159 8 160 8 161 /* Definition of a user defined message header field */ 8 162 8 163 dcl 1 message_user_field aligned based (message_user_field_ptr), 8 164 2 header, 8 165 3 field_id bit (36) aligned, /* identifies the purpose of this field */ 8 166 3 field_type fixed binary, /* type of data contained in this field */ 8 167 2 field_type_variable bit (144); /* the actual data (see below) */ 8 168 8 169 dcl message_user_field_ptr pointer; 8 170 8 171 8 172 /* Defined types of user defined fields */ 8 173 8 174 dcl (MESSAGE_TEXT_USER_FIELD initial (1), /* content of the field is a text string */ 8 175 MESSAGE_ADDRESS_LIST_USER_FIELD initial (2), /* content of the field is an address list */ 8 176 MESSAGE_DATE_USER_FIELD initial (3), /* content of the field is a date/time */ 8 177 MESSAGE_INTEGER_USER_FIELD initial (4)) /* content of the filed is a fixed binary value */ 8 178 fixed binary static options (constant); 8 179 8 180 8 181 /* Structures used to access the data for the different types of user defined fields */ 8 182 8 183 dcl 1 message_text_user_field aligned based (message_user_field_ptr), 8 184 2 header like message_user_field.header, 8 185 2 text like message_text_field; /* the message text */ 8 186 8 187 dcl message_text_user_field_text character (message_text_user_field.text.text_lth) unaligned 8 188 based (message_text_user_field.text.text_ptr); 8 189 8 190 dcl 1 message_address_list_user_field aligned based (message_user_field_ptr), 8 191 2 header like message_user_field.header, 8 192 2 address_list_ptr pointer, /* -> the address list */ 8 193 2 pad bit (72); 8 194 8 195 dcl 1 message_date_user_field aligned based (message_user_field_ptr), 8 196 2 header like message_user_field.header, 8 197 2 date_time fixed binary (71), /* the clock reading */ 8 198 2 pad bit (72); 8 199 8 200 dcl 1 message_integer_user_field aligned based (message_user_field_ptr), 8 201 2 header like message_user_field.header, 8 202 2 value fixed binary (35), /* the integer value */ 8 203 2 pad bit (108); 8 204 8 205 8 206 /* Structure used in calls to mail_system_ entrypoints which manipulate the user-defined fields of a message */ 8 207 8 208 dcl 1 message_user_field_parameter aligned based (message_user_field_parameter_ptr), 8 209 2 pad pointer, /* forces even word alignment */ 8 210 2 version character (8) unaligned, 8 211 2 user_field like message_user_field; 8 212 8 213 dcl MESSAGE_USER_FIELD_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsudf02"); 8 214 8 215 dcl message_user_field_parameter_ptr pointer; 8 216 8 217 /* Definition of a list of message references used as the value of message header fields (eg: In-Reply-To) */ 8 218 8 219 dcl 1 message_references_list aligned based (message_references_list_ptr), 8 220 2 version character (8) unaligned, 8 221 2 reserved bit (144), /* ... exclusively for use by the mail system */ 8 222 2 pad bit (36), 8 223 2 n_references fixed binary, /* # of references in this list */ 8 224 2 references (message_references_list_n_references refer (message_references_list.n_references)) 8 225 like message_reference; /* the references themselves */ 8 226 8 227 dcl MESSAGE_REFERENCES_LIST_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 8 228 8 229 dcl message_references_list_ptr pointer; 8 230 8 231 8 232 /* Definition of a reference to another message */ 8 233 8 234 dcl 1 message_reference aligned based (message_reference_ptr), 8 235 2 message_id bit (72), /* ID of the other message */ 8 236 2 date_time_created fixed binary (71), /* date/time the other message was created */ 8 237 2 from pointer, /* -> address list of authors of the other message */ 8 238 2 subject like message_text_field; /* subject of the other message */ 8 239 8 240 dcl message_reference_subject character (message_reference.subject.text_lth) unaligned 8 241 based (message_reference.subject.text_ptr); 8 242 8 243 dcl message_reference_ptr pointer; 8 244 8 245 8 246 /* Structure used in calls to mail_system_daemon_ entrypoints which manipulate message references */ 8 247 8 248 dcl 1 message_reference_parameter aligned based (message_reference_parameter_ptr), 8 249 2 pad pointer, /* forces even word alignment */ 8 250 2 version character (8) unaligned, 8 251 2 reference like message_reference; 8 252 8 253 dcl MESSAGE_REFERENCE_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsref02"); 8 254 8 255 dcl message_reference_parameter_ptr pointer; 8 256 8 257 8 258 /* Definition of a text field in a message (Subject, Comment, or a user defined field) */ 8 259 8 260 dcl 1 message_text_field aligned based (message_text_field_ptr), 8 261 2 text_ptr pointer, /* -> the actual text */ 8 262 2 text_lth fixed binary (21), /* length of said text */ 8 263 2 flags, 8 264 3 multiline_text bit (1) unaligned, /* ON => the text of this field may span multiple lines; 8 265* OFF => the text will always be a single line */ 8 266 3 reserved bit (35) unaligned; /* for exclusive use of the mail system */ 8 267 8 268 dcl message_text_field_text character (message_text_field.text_lth) unaligned based (message_text_field.text_ptr); 8 269 8 270 dcl message_text_field_ptr pointer; 8 271 8 272 /* Definition of a section of the body of a message */ 8 273 8 274 dcl 1 message_body_section aligned based (message_body_section_ptr), 8 275 2 header, 8 276 3 section_type fixed binary, /* type of "text" stored in this section */ 8 277 3 section_n_lines fixed binary (21), /* # of lines in this section or -1 if indeterminate */ 8 278 2 section_type_variable bit (144); /* the actual data (see below) */ 8 279 8 280 dcl message_body_section_ptr pointer; 8 281 8 282 8 283 /* Defined types of message body sections */ 8 284 8 285 dcl (MESSAGE_PREFORMATTED_BODY_SECTION initial (1), /* text formatted by the authors/sender */ 8 286 MESSAGE_BIT_STRING_BODY_SECTION initial (2)) /* arbitrary bit string */ 8 287 fixed binary static options (constant); 8 288 8 289 8 290 /* Structures used to access the data for the different types of message body sections */ 8 291 8 292 dcl 1 message_preformatted_body_section aligned based (message_body_section_ptr), 8 293 2 header like message_body_section.header, 8 294 2 text_ptr pointer, /* -> the text */ 8 295 2 text_lth fixed binary (21), /* length of said text in characters */ 8 296 2 reserved bit (36); /* for exclusive use of the mail system */ 8 297 8 298 dcl message_preformatted_body_section_text character (message_preformatted_body_section.text_lth) unaligned 8 299 based (message_preformatted_body_section.text_ptr); 8 300 8 301 dcl 1 message_bit_string_body_section aligned based (message_body_section_ptr), 8 302 2 header like message_body_section.header, 8 303 2 bit_string_ptr pointer, /* -> the bit string */ 8 304 2 bit_string_lth fixed binary (24), /* length of said bit string in bits (obviously) */ 8 305 2 reserved bit (36); /* for exclusive use of the mail system */ 8 306 8 307 dcl message_bit_string_body_section_bit_string bit (message_bit_string_body_section.bit_string_lth) unaligned 8 308 based (message_bit_string_body_section.bit_string_ptr); 8 309 8 310 8 311 /* Structure used in calls to mail_system_ entrypoints which manipulate the sections of a message's body */ 8 312 8 313 dcl 1 message_body_section_parameter aligned based (message_body_section_parameter_ptr), 8 314 2 pad pointer, /* forces even word alignment */ 8 315 2 version character (8) unaligned, 8 316 2 section like message_body_section; 8 317 8 318 dcl MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 character (8) static options (constant) initial ("mlsmbs02"); 8 319 8 320 dcl message_body_section_parameter_ptr pointer; 8 321 8 322 /* END INCLUDE FILE ... mlsys_message.incl.pl1 */ 193 194 9 1 /* BEGIN INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 9 2 /* Created: June 1983 by G. Palter */ 9 3 9 4 /* Options for the mail_system_$open_mailbox entrypoint */ 9 5 9 6 dcl 1 open_options aligned based (open_options_ptr), 9 7 2 version character (8), 9 8 2 message_selection_mode fixed binary, /* what types are to be read (all/ordinary/interactive) */ 9 9 2 sender_selection_mode fixed binary, /* selects messages by who sent them */ 9 10 2 message_reading_level fixed binary; /* specifies whether all or only part of a message is read */ 9 11 9 12 dcl OPEN_OPTIONS_VERSION_2 character (8) static options (constant) initial ("mlsopn02"); 9 13 9 14 dcl open_options_ptr pointer; 9 15 9 16 9 17 dcl ALL_MESSAGES fixed binary static options (constant) initial (0); 9 18 /* read all messages in the mailbox ... 9 19* ... used as both a message and sender selection mode */ 9 20 9 21 /* Defined message selection modes */ 9 22 9 23 dcl (ORDINARY_MESSAGES initial (1), /* read only ordinary messages */ 9 24 INTERACTIVE_MESSAGES initial (2)) /* read only interactive messages */ 9 25 fixed binary static options (constant); 9 26 9 27 9 28 /* Defined sender selection modes */ 9 29 9 30 dcl (ACCESSIBLE_MESSAGES initial (-1), /* reads whatever messages are accessible */ 9 31 OWN_MESSAGES initial (1), /* reads only those messages sent by this user */ 9 32 NOT_OWN_MESSAGES initial (2)) /* reads only those messages not sent by this user */ 9 33 fixed binary static options (constant); 9 34 9 35 9 36 /* Defined message reading levels */ 9 37 9 38 dcl (READ_KEYS initial (1), /* reads only the unique key of each message */ 9 39 READ_MESSAGES initial (2)) /* reads the entire content of each message */ 9 40 fixed binary static options (constant); 9 41 9 42 /* END INCLUDE FILE ... mlsys_open_options.incl.pl1 */ 195 196 10 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 10 2 10 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 10 4 10 5 /* This include file contains branch and link structures returned by 10 6* hcs_$status_ and hcs_$status_long. */ 10 7 10 8 dcl 1 status_branch aligned based (status_ptr), 10 9 2 short aligned, 10 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 10 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 10 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 10 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 10 14 3 dtu bit (36) unaligned, /* date/time last used */ 10 15 3 mode bit (5) unaligned, /* caller's effective access */ 10 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 10 17 3 pad1 bit (8) unaligned, 10 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 10 19 10 20 /* Limit of information returned by hcs_$status_ */ 10 21 10 22 2 long aligned, 10 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 10 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 10 25 3 lvid bit (36) unaligned, /* logical volume ID */ 10 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 10 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 10 28 3 pad2 bit (8) unaligned, 10 29 3 copy_switch bit (1) unaligned, /* copy switch */ 10 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 10 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 10 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 10 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 10 34 3 pad3 bit (5) unaligned, 10 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 10 36 3 uid bit (36) unaligned; /* unique ID */ 10 37 10 38 dcl 1 status_link aligned based (status_ptr), 10 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 10 40 2 nnames fixed bin (16) unaligned unsigned, 10 41 2 names_relp bit (18) unaligned, 10 42 2 dtem bit (36) unaligned, 10 43 2 dtd bit (36) unaligned, 10 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 10 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 10 46 10 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 10 48 based (pointer (status_area_ptr, status_branch.names_relp)), 10 49 /* array of names returned */ 10 50 status_pathname character (status_link.pathname_length) aligned 10 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 10 52 /* link target path */ 10 53 status_area_ptr pointer, 10 54 status_ptr pointer; 10 55 10 56 dcl (Link initial (0), 10 57 Segment initial (1), 10 58 Directory initial (2)) fixed bin internal static options (constant); 10 59 /* values for type fields declared above */ 10 60 10 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 197 198 11 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 11 2 11 3 /* This include file contains structures for the hcs_$star_, 11 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 11 5* 11 6* Written 23 October 1978 by Monte Davidoff. 11 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 11 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 11 9**/ 11 10 11 11 /* automatic */ 11 12 11 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 11 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 11 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 11 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 11 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 11 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 11 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 11 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 11 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 11 22 11 23 /* based */ 11 24 11 25 /* hcs_$star_ entry structure */ 11 26 11 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 11 28 2 type fixed binary (2) unsigned unaligned, 11 29 /* storage system type */ 11 30 2 nnames fixed binary (16) unsigned unaligned, 11 31 /* number of names of entry that match star_name */ 11 32 2 nindex fixed binary (18) unsigned unaligned; 11 33 /* index of first name in star_names */ 11 34 11 35 /* hcs_$star_ name structure */ 11 36 11 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 11 38 11 39 /* hcs_$star_list_ branch structure */ 11 40 11 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 11 42 2 type fixed binary (2) unsigned unaligned, 11 43 /* storage system type */ 11 44 2 nnames fixed binary (16) unsigned unaligned, 11 45 /* number of names of entry that match star_name */ 11 46 2 nindex fixed binary (18) unsigned unaligned, 11 47 /* index of first name in star_list_names */ 11 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 11 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 11 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 11 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 11 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 11 53 2 pad bit (7) unaligned, 11 54 2 records fixed binary (18) unsigned unaligned; 11 55 /* records used by branch */ 11 56 11 57 /* hcs_$star_dir_list_ branch structure */ 11 58 11 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 11 60 2 type fixed binary (2) unsigned unaligned, 11 61 /* storage system type */ 11 62 2 nnames fixed binary (16) unsigned unaligned, 11 63 /* number of names of entry that match star_name */ 11 64 2 nindex fixed binary (18) unsigned unaligned, 11 65 /* index of first name in star_list_names */ 11 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 11 67 2 pad bit (36) unaligned, 11 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 11 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 11 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 11 71 2 bit_count fixed binary (24) unaligned; 11 72 /* bit count of the branch */ 11 73 11 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 11 75 11 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 11 77 2 type fixed binary (2) unsigned unaligned, 11 78 /* storage system type */ 11 79 2 nnames fixed binary (16) unsigned unaligned, 11 80 /* number of names of entry that match star_name */ 11 81 2 nindex fixed binary (18) unsigned unaligned, 11 82 /* index of first name in star_list_names */ 11 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 11 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 11 85 2 pathname_len fixed binary (18) unsigned unaligned, 11 86 /* length of the pathname of the link */ 11 87 2 pathname_index fixed binary (18) unsigned unaligned; 11 88 /* index of start of pathname in star_list_names */ 11 89 11 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 11 91 11 92 declare star_list_names char (32) based (star_list_names_ptr) 11 93 dimension (star_links (star_branch_count + star_link_count).nindex 11 94 + star_links (star_branch_count + star_link_count).nnames 11 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 11 96 * binary ( 11 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 11 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 11 99 11 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 11 101 11 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 11 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 11 104 11 105 /* internal static */ 11 106 11 107 /* star_select_sw values */ 11 108 11 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 11 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 11 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 11 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 11 113 fixed binary (3) internal static options (constant) initial (5); 11 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 11 115 fixed binary (3) internal static options (constant) initial (7); 11 116 11 117 /* storage system types */ 11 118 11 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 11 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 11 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 11 122 11 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 199 200 /*** Initialize things used in cleanup handler ***/ 201 sci_ptr = null (); 202 ring1_priv, dir_priv, seg_priv = -1; 203 enable_privs = "0"b; 204 on cleanup call cleanup_canon_mbx (); 205 206 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_canon_mbx, code); 207 if code ^= 0 then do; 208 call com_err_ (code, WHOAMI, "Attempting to create standalone subsystem invocation."); 209 /* GMP, forgive me... */ 210 return; 211 end; 212 call ssu_$arg_count (sci_ptr, arg_count); 213 if arg_count = 0 then call ssu_$abort_line (sci_ptr, 0, "Usage: canonicalize_mailbox mbx_pathname {-ctl_args}"); 214 mbx_path_ptr = null (); 215 force_access = "0"b; 216 do arg_idx = 1 to arg_count; 217 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 218 if arg = "" then 219 call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "The mailbox pathname may not be a null string.") 220 ; 221 if substr (arg, 1, 1) = "-" then do; 222 if arg = "-force" | arg = "-fc" then force_access = "1"b; 223 else if arg = "-no_force" | arg = "-nfc" then force_access = "0"b; 224 else if arg = "-privilege" | arg = "-priv" then enable_privs = "1"b; 225 else if arg = "-no_privilege" | arg = "-npriv" then enable_privs = "0"b; 226 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 227 end; 228 else if mbx_path_ptr ^= null () then 229 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, 230 "Only one mailbox pathname may be specified."); 231 else do; 232 mbx_path_ptr = arg_ptr; 233 mbx_path_len = arg_len; 234 end; 235 end; 236 if mbx_path_ptr = null () then 237 call ssu_$abort_line (sci_ptr, error_table_$noarg, "A mailbox pathname must be supplied."); 238 239 call expand_pathname_$add_suffix (mbx_path, MBX_SUFFIX, mbx_dir, mbx_entry, code); 240 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "The pathname ^a", requote_string_ (mbx_path)); 241 call check_star_name_$entry (mbx_entry, star_code); 242 if star_code > 2 | star_code < 0 then 243 call ssu_$abort_line (sci_ptr, star_code, "The pathname ^a", 244 requote_string_ (pathname_ (mbx_dir, mbx_entry))); 245 else if star_code = 2 then 246 call ssu_$abort_line (sci_ptr, 0, "Invalid return code from check_star_name_$entry."); 247 248 if enable_privs then do; 249 if ^aim_check_$equal (get_max_authorization_ (), sys_info$access_class_ceiling) then 250 call ssu_$abort_line (sci_ptr, error_table_$not_privileged, 251 "A maximum authorization of system_high is required."); 252 on linkage_error 253 call ssu_$abort_line (sci_ptr, error_table_$not_privileged, 254 "Access to the system_privilege_ gate is required."); 255 call system_privilege_$ring1_priv_on (ring1_priv); 256 call system_privilege_$dir_priv_on (dir_priv); 257 call system_privilege_$seg_priv_on (seg_priv); 258 end; 259 else user_auth = get_authorization_ (); 260 261 262 close_options_ptr = addr (local_close_options); 263 close_options.version = CLOSE_OPTIONS_VERSION_2; 264 string (close_options.flags) = ""b; 265 delete_mailbox_options_ptr = addr (local_delete_options); 266 delete_mailbox_options.version = DELETE_MAILBOX_OPTIONS_VERSION_1; 267 string (delete_mailbox_options.flags) = ""b; 268 delete_mailbox_options.force = "1"b; 269 open_options_ptr = addr (local_open_options); 270 open_options.version = OPEN_OPTIONS_VERSION_2; 271 open_options.message_selection_mode = ALL_MESSAGES; 272 open_options.sender_selection_mode = ALL_MESSAGES; 273 open_options.message_reading_level = READ_KEYS; 274 status_ptr = addr (local_status_branch); 275 276 if force_access then do; /* in case we have to */ 277 my_acl_entry.version = MAILBOX_ACL_VERSION_1; 278 my_acl_entry.n_acl_terms = 1; 279 my_acl_entry.access_name = get_group_id_ (); 280 my_acl_entry.extended_mode = ADROSW_MBX_ACCESS; 281 end; 282 call ssu_$get_area (sci_ptr, null (), "ACLs/starnames/names", area_ptr); 283 status_area_ptr = area_ptr; 284 285 if star_code = 0 then 286 call canon_one_mbx (mbx_dir, mbx_entry, abort_nonstar_canon); 287 else /* if star_code = 1 then */ 288 call canon_star_mbx (mbx_dir, mbx_entry); 289 GLOBAL_EXIT: 290 call cleanup_canon_mbx (); 291 return; 292 293 abort_canon_mbx: 294 proc (); 295 296 go to GLOBAL_EXIT; 297 298 end abort_canon_mbx; 299 300 cleanup_canon_mbx: 301 proc (); 302 303 if enable_privs then do; 304 if ring1_priv = 0 then call system_privilege_$ring1_priv_off ((0)); 305 if dir_priv = 0 then call system_privilege_$dir_priv_off ((0)); 306 if seg_priv = 0 then call system_privilege_$seg_priv_off ((0)); 307 end; 308 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 309 310 return; 311 312 end cleanup_canon_mbx; 313 314 canon_one_mbx: 315 proc (P_dir, P_entry, P_abort_label); 316 317 dcl (P_dir, P_entry) char (*) parameter; 318 dcl P_abort_label entry () options (variable) variable parameter; 319 320 dcl access_class bit (72) aligned; 321 dcl auth_string char (256); 322 dcl code fixed bin (35); 323 dcl (delete_new, delete_original, delete_original_by_shriek_entry) 324 bit (1); 325 dcl dir_access_class bit (72) aligned; 326 dcl max_length fixed bin; 327 dcl messages_processed fixed bin; 328 dcl message_idx fixed bin; 329 dcl n_new_messages fixed bin; 330 dcl name_idx fixed bin; 331 dcl safety_sw bit (1); 332 dcl save_acl_ptr ptr; 333 dcl shriek_entry char (32); 334 dcl (target_dir, target_dir_dir) 335 char (168); 336 dcl (target_dir_entry, target_entry) 337 char (32); 338 dcl temp_entry char (32); 339 dcl this_name char (32); 340 341 save_acl_ptr, mailbox_ptr = null (); 342 delete_new, delete_original, delete_original_by_shriek_entry, error_return = "0"b; 343 status_branch.names_relp = ""b; 344 on cleanup 345 begin; 346 if mailbox_ptr ^= null () then call mail_system_$close_mailbox (mailbox_ptr, close_options_ptr, (0)); 347 if delete_original & error_return then 348 if delete_original_by_shriek_entry then 349 call mlsys_utils_$delete_mailbox (target_dir, shriek_entry, WHOAMI, 350 delete_mailbox_options_ptr, (0)); 351 else call mlsys_utils_$delete_mailbox (target_dir, target_entry, WHOAMI, 352 delete_mailbox_options_ptr, (0)); 353 else if force_access & (save_acl_ptr ^= null ()) then call restore_mbx_access ("1"b); 354 if save_acl_ptr ^= null () then free save_acl_ptr -> mailbox_acl in (my_area); 355 if status_branch.names_relp ^= ""b then free status_entry_names in (my_area); 356 if delete_new then 357 call mlsys_utils_$delete_mailbox (target_dir, temp_entry, WHOAMI, delete_mailbox_options_ptr, 358 (0)); 359 end; 360 361 /*** Check access ***/ 362 call check_mbx_access (); 363 364 /*** Find the real mailbox, in case it's a link ***/ 365 if star_code = 0 then do; /* Can only be link if not starname */ 366 call hcs_$status_ (P_dir, P_entry, 0, status_ptr, null (), code); 367 if code ^= 0 then call P_abort_label (sci_ptr, code, "Getting status on ^a.", pathname_ (P_dir, P_entry)); 368 link_flag = (status_branch.type = Link); 369 end; 370 else link_flag = "0"b; 371 372 if link_flag then do; 373 call hcs_$get_link_target (P_dir, P_entry, target_dir, target_entry, code); 374 if code ^= 0 then 375 if code = error_table_$noentry then /* Null link */ 376 call P_abort_label (sci_ptr, code, "The target of the link ^a, ^a, does not exist.", 377 pathname_ (P_dir, P_entry), pathname_ (target_dir, target_entry)); 378 else call P_abort_label (sci_ptr, code, "Trying to find link target of ^a.", 379 pathname_ (P_dir, P_entry)); 380 end; 381 else do; 382 target_dir = P_dir; 383 target_entry = P_entry; 384 end; 385 386 call ioa_$nnl ("Canonicalizing ^a ^[(actually link target ^a)^]...", pathname_ (P_dir, P_entry), link_flag, 387 pathname_ (target_dir, target_entry)); 388 389 /*** Check that we have appropriate access ***/ 390 call check_dir_access (target_dir, P_abort_label); 391 392 call mail_system_$open_mailbox (P_dir, P_entry, open_options_ptr, MAILBOX_VERSION_2, mailbox_ptr, code); 393 if code ^= 0 then call P_abort_label (sci_ptr, code, "Opening ^a", pathname_ (P_dir, P_entry)); 394 395 /*** Create the new mailbox ***/ 396 temp_entry = unique_chars_ (""b) || ".can.mbx"; 397 call mlsys_utils_$create_mailbox (target_dir, temp_entry, code); 398 if code ^= 0 then 399 call P_abort_label (sci_ptr, code, "Cannot create new mailbox ^a.", pathname_ (target_dir, temp_entry)); 400 401 delete_new = "1"b; 402 if enable_privs then do; 403 call expand_pathname_ (target_dir, target_dir_dir, target_dir_entry, (0)); 404 call hcs_$get_access_class (target_dir_dir, target_dir_entry, dir_access_class, code); 405 if code ^= 0 then 406 call P_abort_label (sci_ptr, code, "Cannot determine access class of directory ^a.", target_dir); 407 if aim_check_$equal (dir_access_class, access_class) then 408 /* not upgraded (i.e. multiclass) */ 409 call system_privilege_$reclassify_branch (target_dir, temp_entry, access_class, code); 410 else call system_privilege_$reclassify_sys_seg (target_dir, temp_entry, access_class, code); 411 if code ^= 0 then do; 412 call convert_authorization_$to_string_short (access_class, auth_string, (0)); 413 call P_abort_label (sci_ptr, code, "Can't set access class of new mailbox ^a to ""^a"".", 414 pathname_ (target_dir, temp_entry), auth_string); 415 end; 416 end; 417 call hcs_$get_max_length (P_dir, P_entry, max_length, code); 418 if code = 0 then do; 419 call mailbox_$set_max_length_file (target_dir, temp_entry, (max_length), code); 420 if code ^= 0 then do; 421 call print_message (sci_ptr, code, "Warning: Can't set max length of the new mailbox ^a to ^d.", 422 pathname_ (target_dir, temp_entry), max_length); 423 code = 0; 424 end; 425 end; 426 else do; 427 call print_message (sci_ptr, code, 428 "Can't get max length of ^a;^/the canonicalized mailbox will be the default size.", 429 pathname_ (P_dir, P_entry)); 430 code = 0; 431 end; 432 /*** Begin copying messages ***/ 433 if mailbox_not_canonical () then do; 434 n_new_messages = mailbox.n_messages; 435 messages_processed = 0; 436 437 do while (n_new_messages > 0); 438 do message_idx = messages_processed + 1 to mailbox.n_messages; 439 if mailbox.messages (message_idx).message_ptr = null () then do; 440 call mail_system_$read_message (mailbox_ptr, message_idx, code); 441 if code ^= 0 then 442 call P_abort_label (sci_ptr, code, "Reading message #^d from ^a", message_idx, 443 pathname_ (P_dir, P_entry)); 444 end; 445 message_ptr = mailbox.messages (message_idx).message_ptr; 446 if ^enable_privs & ^aim_check_$equal (message.access_class, user_auth) then 447 call P_abort_label (sci_ptr, 0, 448 "^a^/contains messages at a lower access class than the process authorization.^/Use the -privilege control argument or see a system maintainer for help." 449 , pathname_ (P_dir, P_entry)); 450 call mail_system_$copy_message (message_ptr, target_dir, temp_entry, code); 451 if code ^= 0 then 452 if code = error_table_$rqover then 453 call P_abort_label (sci_ptr, code, 454 "^/The directory ^a^/does not have enough quota for the canonicalized copy of ^a.", 455 target_dir, target_entry); 456 else call P_abort_label (sci_ptr, code, "Copying message #^d from ^a to ^a.", message_idx, 457 pathname_ (P_dir, P_entry), pathname_ (target_dir, temp_entry)); 458 if mod (message_idx, 50) = 0 then call ioa_$nnl (" ^d", message_idx); 459 end; 460 messages_processed = mailbox.n_messages; 461 call mail_system_$read_new_messages (mailbox_ptr, n_new_messages, (0), (0), code); 462 if code ^= 0 then do; 463 if code = mlsys_et_$no_more_messages then do; 464 n_new_messages = 0; 465 code = 0; 466 end; 467 else call P_abort_label (sci_ptr, code, "Trying to read new messages from ^a.", 468 pathname_ (P_dir, P_entry)); 469 end; 470 end; 471 end; 472 else do; /* mailbox is already canonical */ 473 /*** So clean up the mess we've made ... ***/ 474 call mail_system_$close_mailbox (mailbox_ptr, close_options_ptr, (0)); 475 if force_access then 476 call restore_mbx_access ("0"b); 477 else free save_acl_ptr -> mailbox_acl in (my_area); 478 call mlsys_utils_$delete_mailbox (target_dir, temp_entry, WHOAMI, delete_mailbox_options_ptr, (0)); 479 /*** ... and punt ***/ 480 call ioa_ (""); 481 return; 482 end; 483 484 call ioa_ (""); /* newline when done */ 485 486 delete_new = "0"b; 487 call mail_system_$close_mailbox (mailbox_ptr, close_options_ptr, (0)); 488 /*** Copy safety switch, ACL, and names to new mailbox ***/ 489 490 call hcs_$get_safety_sw (P_dir, P_entry, safety_sw, code); 491 if code ^= 0 then do; 492 call print_message (sci_ptr, code, 493 "Can't get safety switch of ^a;^/canonicalized mailbox will have safety switch off.", 494 pathname_ (P_dir, P_entry)); 495 safety_sw = "0"b; 496 code = 0; 497 end; 498 else do; 499 call mailbox_$set_safety_switch (target_dir, temp_entry, safety_sw, code); 500 if code ^= 0 then do; 501 call print_message (sci_ptr, code, 502 "Warning: Can't turn o^[n^;ff^] safety switch of the new mailbox ^a.", safety_sw, 503 pathname_ (target_dir, temp_entry)); 504 code = 0; 505 end; 506 end; 507 508 call mlsys_utils_$replace_mailbox_acl_entries (target_dir, temp_entry, save_acl_ptr, code); 509 if code ^= 0 then do; 510 call print_message (sci_ptr, code, "Warning: Can't copy ACL from ^a to ^a.", pathname_ (P_dir, P_entry), 511 pathname_ (target_dir, temp_entry)); 512 code = 0; 513 end; 514 delete_original = "1"b; /* Everything but names copied, so it is safe to delete it */ 515 /* as the error messages will tell the user where the good */ 516 /* mailbox is. */ 517 518 shriek_entry = unique_chars_ (""b) || ".can_old.mbx"; 519 call mailbox_$chname_file (target_dir, target_entry, "", shriek_entry, code); 520 if code ^= 0 then 521 call P_abort_label (sci_ptr, code, "Adding name ^a to ^a.^/Canonicalized mailbox is ^a.", shriek_entry, 522 pathname_ (target_dir, target_entry), pathname_ (target_dir, temp_entry)); 523 524 delete_original_by_shriek_entry = "1"b; /* As of now, the original name may be on the canonicalized */ 525 /* mailbox; be sure we don't accidently delete the new */ 526 /* mailbox if we are unable to move all the names */ 527 528 /*** Now copy the real names and delete the .can.mbx name ***/ 529 call hcs_$status_ (target_dir, target_entry, 0, status_ptr, area_ptr, code); 530 if code ^= 0 then 531 call P_abort_label (sci_ptr, code, "Getting names of ^a.^/Canonicalized mailbox is ^a.", 532 pathname_ (target_dir, target_entry), pathname_ (target_dir, temp_entry)); 533 do name_idx = 1 to status_branch.nnames; 534 this_name = status_entry_names (name_idx); 535 if this_name ^= shriek_entry then /* Leave shriek name */ call move_name (this_name); 536 end; 537 538 call mailbox_$chname_file (target_dir, temp_entry, temp_entry, "", code); 539 /* Delete .can.mbx name */ 540 if code ^= 0 then do; 541 call print_message (sci_ptr, code, "Warning: Can't delete the name ^a from the canonicalized mailbox ^a.", 542 temp_entry, pathname_ (target_dir, target_entry)); 543 code = 0; 544 end; 545 546 547 /*** Now that we have successfully (hopefully) copied everything, 548* delete the original. ***/ 549 call mlsys_utils_$delete_mailbox (target_dir, shriek_entry, WHOAMI, delete_mailbox_options_ptr, code); 550 if code ^= 0 then do; 551 call print_message (sci_ptr, code, "Can't delete the original mailbox, now named ^a.", 552 pathname_ (target_dir, shriek_entry)); 553 end; 554 free status_entry_names in (my_area); 555 free save_acl_ptr -> mailbox_acl in (my_area); 556 return; 557 558 move_name: 559 proc (P_name); 560 561 dcl P_name char (*) parameter; 562 563 call mailbox_$chname_file (target_dir, shriek_entry, P_name, "", code); 564 /* delete from the old */ 565 if code ^= 0 then 566 call P_abort_label (sci_ptr, code, "Deleting name ^a from ^a.^/Canonicalized mailbox is ^a.", P_name, 567 pathname_ (target_dir, shriek_entry), pathname_ (target_dir, temp_entry)); 568 call mailbox_$chname_file (target_dir, temp_entry, "", P_name, code); 569 /* Add to the new */ 570 if code ^= 0 then 571 call P_abort_label (sci_ptr, code, "Adding name ^a to the canonicalized maibox ^a.", P_name, 572 pathname_ (target_dir, temp_entry)); 573 end move_name; 574 575 mailbox_not_canonical: 576 proc () returns (bit (1) aligned); 577 578 dcl code fixed bin (35); 579 dcl message_idx fixed bin; 580 581 do message_idx = 1 to mailbox.n_messages; 582 call mail_system_$read_message_canonical_form (mailbox_ptr, message_idx, (null ()), (0), code); 583 if code = mlsys_et_$no_message_canonical_form then return ("1"b); 584 else if code ^= 0 then 585 call P_abort_label (sci_ptr, code, "Checking format of message #^d in ^a", message_idx, 586 pathname_ (P_dir, P_entry)); 587 end; 588 return ("0"b); 589 590 end mailbox_not_canonical; 591 592 593 check_mbx_access: 594 proc (); 595 596 dcl mbx_mode bit (7); 597 dcl yes_sw bit (1); 598 599 call mailbox_$get_mode_file (P_dir, P_entry, mbx_mode, code); 600 if code ^= 0 then call P_abort_label (sci_ptr, code, "Checking access to ^a", pathname_ (P_dir, P_entry)); 601 if (mbx_mode & (A_MBX_ACCESS | D_MBX_ACCESS | R_MBX_ACCESS)) = (A_MBX_ACCESS | D_MBX_ACCESS | R_MBX_ACCESS) then 602 call get_mbx_access (); 603 else if force_access then do; 604 call get_mbx_access (); 605 call mlsys_utils_$add_mailbox_acl_entries (P_dir, P_entry, addr (my_acl_entry), code); 606 if code ^= 0 then call P_abort_label (sci_ptr, code, "Forcing access to ^a", pathname_ (P_dir, P_entry)); 607 end; 608 else call P_abort_label (sci_ptr, error_table_$insufficient_access, "adr access is required to ^a", 609 pathname_ (P_dir, P_entry)); 610 611 /*** Get the access class of the mbx ***/ 612 call hcs_$get_access_class (P_dir, P_entry, access_class, code); 613 if code ^= 0 then 614 call P_abort_label (sci_ptr, code, "Getting the access class of ^a", pathname_ (P_dir, P_entry)); 615 if ^enable_privs & aim_check_$greater (access_class, user_auth) then do; 616 call command_query_$yes_no (yes_sw, 0, WHOAMI, 617 "The maximum access class of ^a^/is greater than your process authorization, so there may be inaccessible^/" 618 || 619 "messages which will be lost during canonicalization.^/You may wish to use the -privilege option or see a system administrator.^/Canonicalize anyway?" 620 , 621 "^a^/may contain messages which will be lost due to AIM restrictions.^/Canonicalize anyway? (type ""?"" for more details)" 622 , pathname_ (P_dir, P_entry)); 623 if ^yes_sw then call P_abort_label (sci_ptr, 0); 624 end; 625 626 return; 627 628 get_mbx_access: 629 proc (); 630 631 call mlsys_utils_$list_mailbox_acl (P_dir, P_entry, area_ptr, MAILBOX_ACL_VERSION_1, save_acl_ptr, code); 632 if code ^= 0 then call P_abort_label (sci_ptr, code, "Getting the ACL of ^a", pathname_ (P_dir, P_entry)); 633 return; 634 635 end get_mbx_access; 636 637 end check_mbx_access; 638 639 restore_mbx_access: 640 proc (P_silent); 641 642 dcl P_silent bit (1) aligned parameter; 643 644 call mlsys_utils_$replace_mailbox_acl_entries (P_dir, P_entry, save_acl_ptr, code); 645 free save_acl_ptr -> mailbox_acl in (my_area); 646 save_acl_ptr = null (); 647 if P_silent | (code = 0) then 648 return; 649 else call P_abort_label (sci_ptr, code, "Restoring access on mailbox ^s", pathname_ (P_dir, P_entry)); 650 return; 651 652 end restore_mbx_access; 653 654 print_message: 655 proc () options (variable); 656 657 dcl arg_list_ptr ptr; 658 659 call ioa_ (""); /* So error message comes out at beginning of line */ 660 call cu_$arg_list_ptr (arg_list_ptr); 661 call cu_$generate_call (ssu_$print_message, arg_list_ptr); 662 663 end print_message; 664 665 end canon_one_mbx; 666 667 abort_nonstar_canon: 668 proc () options (variable); 669 670 dcl arg_list_ptr ptr; 671 672 error_return = "1"b; /* So we'll clean up useless original */ 673 call ioa_ (""); /* So error message comes out at beginning of line */ 674 call cu_$arg_list_ptr (arg_list_ptr); 675 call cu_$generate_call (ssu_$abort_line, arg_list_ptr); 676 677 end abort_nonstar_canon; 678 679 check_dir_access: 680 proc (P_dir, P_abort_label); 681 682 dcl P_dir char (*) parameter; 683 dcl P_abort_label entry () options (variable) variable parameter; 684 685 dcl access_class bit (72) aligned; 686 dcl code fixed bin (35); 687 dcl dir_dir char (168); 688 dcl dir_entry char (32); 689 dcl mode bit (36) aligned; 690 691 call expand_pathname_ (P_dir, dir_dir, dir_entry, (0)); 692 call hcs_$get_user_access_modes (dir_dir, dir_entry, "", -1, mode, (""b), code); 693 if code ^= 0 then call P_abort_label (sci_ptr, code, "^/Determining access to the directory ^a.", P_dir); 694 if mode ^= SMA_ACCESS then 695 call P_abort_label (sci_ptr, error_table_$incorrect_access, "^/sma access is required to ^a.", P_dir); 696 if ^enable_privs then do; 697 call hcs_$get_access_class (dir_dir, dir_entry, access_class, code); 698 if code ^= 0 then 699 call P_abort_label (sci_ptr, code, "^/Determining access class of the directory ^a.", P_dir); 700 if ^aim_check_$equal (user_auth, access_class) then 701 call P_abort_label (sci_ptr, error_table_$incorrect_access, 702 "^/The access class of ^a must equal the process authorization.", P_dir); 703 end; 704 return; 705 706 end check_dir_access; 707 708 709 canon_star_mbx: 710 proc (P_dir, P_starname); 711 712 dcl (P_dir, P_starname) char (*) parameter; 713 714 dcl code fixed bin (35); 715 dcl entry_idx fixed bin; 716 717 /*** First check that we have appropriate access to the dir ***/ 718 call check_dir_access (P_dir, ssu_$abort_line); 719 720 call hcs_$star_ (P_dir, P_starname, star_BRANCHES_ONLY, area_ptr, star_entry_count, star_entry_ptr, 721 star_names_ptr, code); 722 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Starname ^a.", pathname_ (P_dir, P_starname)); 723 do entry_idx = 1 to star_entry_count; 724 if star_entries (entry_idx).type = star_SEGMENT then 725 call canon_one_mbx (P_dir, star_names (star_entries (entry_idx).nindex), abort_one_canon); 726 NEXT_MBX: 727 end; 728 729 /* Don't bother freeing star structures, as ssu_ destroys the area */ 730 731 abort_one_canon: 732 proc () options (variable); 733 734 dcl arg_list_ptr ptr; 735 736 error_return = "1"b; /* So we'll clean up useless original */ 737 call ioa_ (""); /* So error message comes out at beginning of line */ 738 call cu_$arg_list_ptr (arg_list_ptr); 739 call cu_$generate_call (ssu_$print_message, arg_list_ptr); 740 if entry_idx ^= star_entry_count then /* no next mailbox */ 741 call ssu_$print_message (sci_ptr, 0, "Skipping to next mailbox matching starname."); 742 go to NEXT_MBX; 743 744 end abort_one_canon; 745 746 end canon_star_mbx; 747 748 end canonicalize_mailbox; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/24/92 2234.4 canonicalize_mailbox.pl1 >spec>inst>1016>canonicalize_mailbox.pl1 179 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 181 2 10/27/83 2204.2 mlsys_close_options.incl.pl1 >ldd>incl>mlsys_close_options.incl.pl1 183 3 10/27/83 2204.2 mlsys_delete_error_info.incl.pl1 >ldd>incl>mlsys_delete_error_info.incl.pl1 185 4 10/27/83 2204.2 mlsys_delete_mailbox.incl.pl1 >ldd>incl>mlsys_delete_mailbox.incl.pl1 187 5 10/27/83 2204.2 mlsys_mailbox.incl.pl1 >ldd>incl>mlsys_mailbox.incl.pl1 189 6 10/27/83 2204.2 mlsys_mailbox_acl.incl.pl1 >ldd>incl>mlsys_mailbox_acl.incl.pl1 191 7 10/27/83 2204.2 mlsys_mailbox_modes.incl.pl1 >ldd>incl>mlsys_mailbox_modes.incl.pl1 193 8 05/22/86 1325.8 mlsys_message.incl.pl1 >ldd>incl>mlsys_message.incl.pl1 195 9 10/27/83 2204.2 mlsys_open_options.incl.pl1 >ldd>incl>mlsys_open_options.incl.pl1 197 10 11/22/82 1055.7 status_structures.incl.pl1 >ldd>incl>status_structures.incl.pl1 199 11 06/10/82 1145.5 star_structures.incl.pl1 >ldd>incl>star_structures.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. ADROSW_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 280 ALL_MESSAGES constant fixed bin(17,0) initial dcl 9-17 ref 271 272 A_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 601 601 CLOSE_OPTIONS_VERSION_2 000010 constant char(8) initial packed unaligned dcl 2-13 ref 263 DELETE_MAILBOX_OPTIONS_VERSION_1 000006 constant char(8) initial packed unaligned dcl 4-15 ref 266 D_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 601 601 Link constant fixed bin(17,0) initial dcl 10-56 ref 368 MAILBOX_ACL_VERSION_1 000002 constant char(8) initial packed unaligned dcl 6-16 set ref 277 631* MAILBOX_VERSION_2 000004 constant char(8) initial packed unaligned dcl 5-28 set ref 392* MBX_SUFFIX 000020 constant char(3) initial packed unaligned dcl 168 set ref 239* OPEN_OPTIONS_VERSION_2 000000 constant char(8) initial packed unaligned dcl 9-12 ref 270 P_abort_label parameter entry variable dcl 683 in procedure "check_dir_access" ref 679 693 694 698 700 P_abort_label parameter entry variable dcl 318 in procedure "canon_one_mbx" set ref 314 367 374 378 390* 393 398 405 413 441 446 451 456 467 520 530 565 570 584 600 606 608 613 623 632 649 P_dir parameter char packed unaligned dcl 712 in procedure "canon_star_mbx" set ref 709 718* 720* 722* 722* 724* P_dir parameter char packed unaligned dcl 682 in procedure "check_dir_access" set ref 679 691* 693* 694* 698* 700* P_dir parameter char packed unaligned dcl 317 in procedure "canon_one_mbx" set ref 314 366* 367* 367* 373* 374* 374* 378* 378* 382 386* 386* 392* 393* 393* 417* 427* 427* 441* 441* 446* 446* 456* 456* 467* 467* 490* 492* 492* 510* 510* 584* 584* 599* 600* 600* 605* 606* 606* 608* 608* 612* 613* 613* 616* 616* 631* 632* 632* 644* 649* 649* P_entry parameter char packed unaligned dcl 317 set ref 314 366* 367* 367* 373* 374* 374* 378* 378* 383 386* 386* 392* 393* 393* 417* 427* 427* 441* 441* 446* 446* 456* 456* 467* 467* 490* 492* 492* 510* 510* 584* 584* 599* 600* 600* 605* 606* 606* 608* 608* 612* 613* 613* 616* 616* 631* 632* 632* 644* 649* 649* P_name parameter char packed unaligned dcl 561 set ref 558 563* 565* 568* 570* P_silent parameter bit(1) dcl 642 ref 639 647 P_starname parameter char packed unaligned dcl 712 set ref 709 720* 722* 722* READ_KEYS constant fixed bin(17,0) initial dcl 9-38 ref 273 R_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 601 601 SMA_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 694 VERSION 000012 constant char(3) initial packed unaligned dcl 170 set ref 206* WHOAMI 000013 constant char(20) initial packed unaligned dcl 169 set ref 206* 208* 347* 351* 356* 478* 549* 616* access_class 32 based bit(72) level 3 in structure "message" dcl 8-15 in procedure "canonicalize_mailbox" set ref 446* access_class 000100 automatic bit(72) dcl 685 in procedure "check_dir_access" set ref 697* 700* access_class 000100 automatic bit(72) dcl 320 in procedure "canon_one_mbx" set ref 407* 407* 410* 412* 612* 615* access_name 4 000230 automatic char(32) level 3 packed packed unaligned dcl 48 set ref 279* acl_term 4 000230 automatic structure level 2 dcl 48 acl_terms 4 based structure array level 2 dcl 6-6 addr builtin function dcl 176 ref 262 265 269 274 605 605 aim_check_$equal 000010 constant entry external dcl 65 ref 249 407 446 700 aim_check_$greater 000012 constant entry external dcl 65 ref 615 area_ptr 000100 automatic pointer dcl 28 set ref 282* 283 354 355 477 529* 554 555 631* 645 720* arg based char packed unaligned dcl 59 set ref 218 221 222 222 223 223 224 224 225 225 226* arg_count 000102 automatic fixed bin(17,0) dcl 29 set ref 212* 213 216 arg_idx 000103 automatic fixed bin(17,0) dcl 30 set ref 216* 217* arg_len 000104 automatic fixed bin(21,0) dcl 31 set ref 217* 218 221 222 222 223 223 224 224 225 225 226 226 233 arg_list_ptr 000100 automatic pointer dcl 657 in procedure "print_message" set ref 660* 661* arg_list_ptr 000100 automatic pointer dcl 670 in procedure "abort_nonstar_canon" set ref 674* 675* arg_list_ptr 000100 automatic pointer dcl 734 in procedure "abort_one_canon" set ref 738* 739* arg_ptr 000106 automatic pointer dcl 32 set ref 217* 218 221 222 222 223 223 224 224 225 225 226 232 auth_string 000102 automatic char(256) packed unaligned dcl 321 set ref 412* 413* check_star_name_$entry 000014 constant entry external dcl 69 ref 241 cleanup 000256 stack reference condition dcl 174 ref 204 344 close_options based structure level 1 dcl 2-6 close_options_ptr 000272 automatic pointer dcl 2-15 set ref 262* 263 264 346* 474* 487* code 000110 automatic fixed bin(35,0) dcl 33 in procedure "canonicalize_mailbox" set ref 206* 207 208* 239* 240 240* code 000202 automatic fixed bin(35,0) dcl 322 in procedure "canon_one_mbx" set ref 366* 367 367* 373* 374 374 374* 378* 392* 393 393* 397* 398 398* 404* 405 405* 407* 410* 411 413* 417* 418 419* 420 421* 423* 427* 430* 440* 441 441* 450* 451 451 451* 456* 461* 462 463 465* 467* 490* 491 492* 496* 499* 500 501* 504* 508* 509 510* 512* 519* 520 520* 529* 530 530* 538* 540 541* 543* 549* 550 551* 563* 565 565* 568* 570 570* 599* 600 600* 605* 606 606* 612* 613 613* 631* 632 632* 644* 647 649* code 000460 automatic fixed bin(35,0) dcl 578 in procedure "mailbox_not_canonical" set ref 582* 583 584 584* code 000102 automatic fixed bin(35,0) dcl 686 in procedure "check_dir_access" set ref 692* 693 693* 697* 698 698* code 000326 automatic fixed bin(35,0) dcl 714 in procedure "canon_star_mbx" set ref 720* 722 722* com_err_ 000016 constant entry external dcl 71 ref 208 command_query_$yes_no 000020 constant entry external dcl 72 ref 616 convert_authorization_$to_string_short 000022 constant entry external dcl 73 ref 412 cu_$arg_list_ptr 000024 constant entry external dcl 75 ref 660 674 738 cu_$generate_call 000026 constant entry external dcl 76 ref 661 675 739 delete_mailbox_options based structure level 1 dcl 4-6 delete_mailbox_options_ptr 000274 automatic pointer dcl 4-17 set ref 265* 266 267 268 347* 351* 356* 478* 549* delete_new 000203 automatic bit(1) packed unaligned dcl 323 set ref 342* 356 401* 486* delete_original 000204 automatic bit(1) packed unaligned dcl 323 set ref 342* 347 514* delete_original_by_shriek_entry 000205 automatic bit(1) packed unaligned dcl 323 set ref 342* 347 524* dir_access_class 000206 automatic bit(72) dcl 325 set ref 404* 407* dir_dir 000103 automatic char(168) packed unaligned dcl 687 set ref 691* 692* 697* dir_entry 000155 automatic char(32) packed unaligned dcl 688 set ref 691* 692* 697* dir_priv 000111 automatic fixed bin(35,0) dcl 34 set ref 202* 256* 305 enable_privs 000112 automatic bit(1) packed unaligned dcl 35 set ref 203* 224* 225* 248 303 402 446 615 696 entry_idx 000327 automatic fixed bin(17,0) dcl 715 set ref 723* 724 724* 740 error_return 000113 automatic bit(1) packed unaligned dcl 36 set ref 342* 347 672* 736* error_table_$bad_arg 000166 external static fixed bin(35,0) dcl 153 set ref 218* error_table_$badopt 000170 external static fixed bin(35,0) dcl 153 set ref 226* error_table_$incorrect_access 000172 external static fixed bin(35,0) dcl 153 set ref 694* 700* error_table_$insufficient_access 000174 external static fixed bin(35,0) dcl 153 set ref 608* error_table_$noarg 000176 external static fixed bin(35,0) dcl 153 set ref 236* error_table_$noentry 000200 external static fixed bin(35,0) dcl 153 ref 374 error_table_$not_privileged 000202 external static fixed bin(35,0) dcl 153 set ref 249* 252* error_table_$rqover 000204 external static fixed bin(35,0) dcl 153 ref 451 error_table_$too_many_args 000206 external static fixed bin(35,0) dcl 153 set ref 228* expand_pathname_ 000030 constant entry external dcl 77 ref 403 691 expand_pathname_$add_suffix 000032 constant entry external dcl 78 ref 239 extended_mode 14 000230 automatic bit(36) level 3 dcl 48 set ref 280* flags 2 based structure level 2 in structure "close_options" dcl 2-6 in procedure "canonicalize_mailbox" set ref 264* flags 2 based structure level 2 in structure "delete_mailbox_options" dcl 4-6 in procedure "canonicalize_mailbox" set ref 267* force 2 based bit(1) level 3 packed packed unaligned dcl 4-6 set ref 268* force_access 000114 automatic bit(1) packed unaligned dcl 37 set ref 215* 222* 223* 276 353 475 603 get_authorization_ 000034 constant entry external dcl 80 ref 259 get_group_id_ 000040 constant entry external dcl 82 ref 279 get_max_authorization_ 000036 constant entry external dcl 80 ref 249 249 hcs_$get_access_class 000042 constant entry external dcl 83 ref 404 612 697 hcs_$get_link_target 000044 constant entry external dcl 84 ref 373 hcs_$get_max_length 000046 constant entry external dcl 85 ref 417 hcs_$get_safety_sw 000050 constant entry external dcl 86 ref 490 hcs_$get_user_access_modes 000052 constant entry external dcl 87 ref 692 hcs_$star_ 000054 constant entry external dcl 90 ref 720 hcs_$status_ 000056 constant entry external dcl 92 ref 366 529 header based structure level 2 in structure "mailbox_acl" dcl 6-6 in procedure "canonicalize_mailbox" header based structure level 2 in structure "message_body_section" dcl 8-274 in procedure "canonicalize_mailbox" header 4 based structure level 3 in structure "message_body_section_parameter" dcl 8-313 in procedure "canonicalize_mailbox" header based structure level 2 in structure "message_user_field" dcl 8-163 in procedure "canonicalize_mailbox" header 64 based structure array level 4 in structure "message" dcl 8-15 in procedure "canonicalize_mailbox" header 000230 automatic structure level 2 in structure "my_acl_entry" dcl 48 in procedure "canonicalize_mailbox" header 10 based structure array level 3 in structure "message_user_fields_list" dcl 8-150 in procedure "canonicalize_mailbox" header 4 based structure level 3 in structure "message_user_field_parameter" dcl 8-208 in procedure "canonicalize_mailbox" header 30 based structure level 2 in structure "message" dcl 8-15 in procedure "canonicalize_mailbox" ioa_ 000060 constant entry external dcl 93 ref 480 484 659 673 737 ioa_$nnl 000062 constant entry external dcl 93 ref 386 458 link_flag 000115 automatic bit(1) packed unaligned dcl 38 set ref 368* 370* 372 386* linkage_error 000264 stack reference condition dcl 174 ref 252 local_close_options 000116 automatic structure level 1 dcl 39 set ref 262 local_delete_options 000121 automatic structure level 1 dcl 40 set ref 265 local_open_options 000124 automatic structure level 1 dcl 42 set ref 269 local_status_branch 000131 automatic structure level 1 dcl 43 set ref 274 mail_system_$close_mailbox 000064 constant entry external dcl 97 ref 346 474 487 mail_system_$copy_message 000066 constant entry external dcl 99 ref 450 mail_system_$open_mailbox 000070 constant entry external dcl 101 ref 392 mail_system_$read_message 000072 constant entry external dcl 103 ref 440 mail_system_$read_message_canonical_form 000074 constant entry external dcl 105 ref 582 mail_system_$read_new_messages 000076 constant entry external dcl 107 ref 461 mailbox based structure level 1 dcl 5-6 mailbox_$chname_file 000100 constant entry external dcl 109 ref 519 538 563 568 mailbox_$get_mode_file 000102 constant entry external dcl 110 ref 599 mailbox_$set_max_length_file 000104 constant entry external dcl 112 ref 419 mailbox_$set_safety_switch 000106 constant entry external dcl 114 ref 499 mailbox_acl based structure level 1 dcl 6-6 ref 354 477 555 645 mailbox_ptr 000276 automatic pointer dcl 5-30 set ref 341* 346 346* 392* 434 438 439 440* 445 460 461* 474* 487* 581 582* max_length 000210 automatic fixed bin(17,0) dcl 326 set ref 417* 419 421* mbx_dir 000143 automatic char(168) packed unaligned dcl 44 set ref 239* 242* 242* 285* 287* mbx_entry 000215 automatic char(32) packed unaligned dcl 45 set ref 239* 241* 242* 242* 285* 287* mbx_mode 000472 automatic bit(7) packed unaligned dcl 596 set ref 599* 601 mbx_path based char packed unaligned dcl 60 set ref 239* 240* mbx_path_len 000225 automatic fixed bin(21,0) dcl 46 set ref 233* 239 239 240 240 mbx_path_ptr 000226 automatic pointer dcl 47 set ref 214* 228 232* 236 239 240 message based structure level 1 dcl 8-15 message_body_section based structure level 1 dcl 8-274 message_envelope based structure level 1 dcl 8-61 message_idx 000461 automatic fixed bin(17,0) dcl 579 in procedure "mailbox_not_canonical" set ref 581* 582* 584* message_idx 000212 automatic fixed bin(17,0) dcl 328 in procedure "canon_one_mbx" set ref 438* 439 440* 441* 445 456* 458 458* message_ptr 106 based pointer array level 3 in structure "mailbox" dcl 5-6 in procedure "canonicalize_mailbox" ref 439 445 message_ptr 000300 automatic pointer dcl 8-53 in procedure "canonicalize_mailbox" set ref 445* 446 450* message_reading_level 4 based fixed bin(17,0) level 2 dcl 9-6 set ref 273* message_redistribution based structure level 1 dcl 8-122 message_reference based structure level 1 dcl 8-234 message_selection_mode 2 based fixed bin(17,0) level 2 dcl 9-6 set ref 271* message_text_field based structure level 1 dcl 8-260 message_user_field based structure level 1 dcl 8-163 messages 104 based structure array level 2 dcl 5-6 messages_processed 000211 automatic fixed bin(17,0) dcl 327 set ref 435* 438 460* mlsys_et_$no_message_canonical_form 000210 external static fixed bin(35,0) dcl 153 ref 583 mlsys_et_$no_more_messages 000212 external static fixed bin(35,0) dcl 153 ref 463 mlsys_utils_$add_mailbox_acl_entries 000110 constant entry external dcl 116 ref 605 mlsys_utils_$create_mailbox 000112 constant entry external dcl 118 ref 397 mlsys_utils_$delete_mailbox 000114 constant entry external dcl 120 ref 347 351 356 478 549 mlsys_utils_$list_mailbox_acl 000116 constant entry external dcl 122 ref 631 mlsys_utils_$replace_mailbox_acl_entries 000120 constant entry external dcl 124 ref 508 644 mod builtin function dcl 176 ref 458 mode 000165 automatic bit(36) dcl 689 set ref 692* 694 my_acl_entry 000230 automatic structure level 1 dcl 48 set ref 605 605 my_area based area(1024) dcl 61 ref 354 355 477 554 555 645 n_acl_terms 2 000230 automatic fixed bin(17,0) level 3 in structure "my_acl_entry" dcl 48 in procedure "canonicalize_mailbox" set ref 278* n_acl_terms 2 based fixed bin(17,0) level 3 in structure "mailbox_acl" dcl 6-6 in procedure "canonicalize_mailbox" ref 354 477 555 645 n_messages 100 based fixed bin(17,0) level 2 dcl 5-6 ref 434 438 460 581 n_new_messages 000213 automatic fixed bin(17,0) dcl 329 set ref 434* 437 461* 464* name_idx 000214 automatic fixed bin(17,0) dcl 330 set ref 533* 534* names_relp 0(18) based bit(18) level 3 packed packed unaligned dcl 10-8 set ref 343* 355 355 534 554 nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 11-27 ref 724 nnames 0(02) based fixed bin(16,0) level 3 packed packed unsigned unaligned dcl 10-8 ref 355 533 554 null builtin function dcl 176 ref 201 206 206 214 228 236 282 282 308 341 346 353 354 366 366 439 582 646 open_options based structure level 1 dcl 9-6 open_options_ptr 000302 automatic pointer dcl 9-14 set ref 269* 270 271 272 273 392* pathname_ 000122 constant entry external dcl 126 ref 242 242 367 367 374 374 374 374 378 378 386 386 386 386 393 393 398 398 413 413 421 421 427 427 441 441 446 446 456 456 456 456 467 467 492 492 501 501 510 510 510 510 520 520 520 520 530 530 530 530 541 541 551 551 565 565 565 565 570 570 584 584 600 600 606 606 608 608 613 613 616 616 632 632 649 649 722 722 pointer builtin function dcl 176 ref 355 534 554 requote_string_ 000124 constant entry external dcl 127 ref 240 242 ring1_priv 000246 automatic fixed bin(35,0) dcl 51 set ref 202* 255* 304 safety_sw 000215 automatic bit(1) packed unaligned dcl 331 set ref 490* 495* 499* 501* save_acl_ptr 000216 automatic pointer dcl 332 set ref 341* 353 354 354 477 508* 555 631* 644* 645 646* sci_ptr 000250 automatic pointer dcl 52 set ref 201* 206* 212* 213* 217* 218* 226* 228* 236* 240* 242* 245* 249* 252* 282* 308 308* 367* 374* 378* 393* 398* 405* 413* 421* 427* 441* 446* 451* 456* 467* 492* 501* 510* 520* 530* 541* 551* 565* 570* 584* 600* 606* 608* 613* 623* 632* 649* 693* 694* 698* 700* 722* 740* seg_priv 000252 automatic fixed bin(35,0) dcl 53 set ref 202* 257* 306 sender_selection_mode 3 based fixed bin(17,0) level 2 dcl 9-6 set ref 272* short based structure level 2 dcl 10-8 shriek_entry 000220 automatic char(32) packed unaligned dcl 333 set ref 347* 518* 519* 520* 535 549* 551* 551* 563* 565* 565* ssu_$abort_line 000126 constant entry external dcl 128 ref 213 218 226 228 236 240 242 245 249 252 675 675 718 718 722 ssu_$arg_count 000130 constant entry external dcl 129 ref 212 ssu_$arg_ptr 000132 constant entry external dcl 130 ref 217 ssu_$destroy_invocation 000134 constant entry external dcl 131 ref 308 ssu_$get_area 000136 constant entry external dcl 133 ref 282 ssu_$print_message 000140 constant entry external dcl 134 ref 661 661 739 739 740 ssu_$standalone_invocation 000142 constant entry external dcl 135 ref 206 star_BRANCHES_ONLY 000114 constant fixed bin(2,0) initial dcl 11-110 set ref 720* star_SEGMENT constant fixed bin(2,0) initial unsigned dcl 11-120 ref 724 star_code 000253 automatic fixed bin(35,0) dcl 54 set ref 241* 242 242 242* 245 285 365 star_entries based structure array level 1 dcl 11-27 star_entry_count 000310 automatic fixed bin(17,0) dcl 11-14 set ref 720* 723 740 star_entry_ptr 000312 automatic pointer dcl 11-15 set ref 720* 724 724 star_names based char(32) array packed unaligned dcl 11-37 set ref 724* star_names_ptr 000314 automatic pointer dcl 11-19 set ref 720* 724 status_area_ptr 000304 automatic pointer dcl 10-47 set ref 283* 355 534 554 status_branch based structure level 1 dcl 10-8 status_entry_names based char(32) array dcl 10-47 ref 355 534 554 status_ptr 000306 automatic pointer dcl 10-47 set ref 274* 343 355 355 355 366* 368 529* 533 534 554 554 string builtin function dcl 176 set ref 264* 267* substr builtin function dcl 176 ref 221 sys_info$access_class_ceiling 000214 external static bit(72) dcl 166 set ref 249* system_privilege_$dir_priv_off 000144 constant entry external dcl 137 ref 305 system_privilege_$dir_priv_on 000146 constant entry external dcl 137 ref 256 system_privilege_$reclassify_branch 000160 constant entry external dcl 145 ref 407 system_privilege_$reclassify_sys_seg 000162 constant entry external dcl 145 ref 410 system_privilege_$ring1_priv_off 000150 constant entry external dcl 137 ref 304 system_privilege_$ring1_priv_on 000152 constant entry external dcl 137 ref 255 system_privilege_$seg_priv_off 000154 constant entry external dcl 137 ref 306 system_privilege_$seg_priv_on 000156 constant entry external dcl 137 ref 257 target_dir 000230 automatic char(168) packed unaligned dcl 334 set ref 347* 351* 356* 373* 374* 374* 382* 386* 386* 390* 397* 398* 398* 403* 405* 407* 410* 413* 413* 419* 421* 421* 450* 451* 456* 456* 478* 499* 501* 501* 508* 510* 510* 519* 520* 520* 520* 520* 529* 530* 530* 530* 530* 538* 541* 541* 549* 551* 551* 563* 565* 565* 565* 565* 568* 570* 570* target_dir_dir 000302 automatic char(168) packed unaligned dcl 334 set ref 403* 404* target_dir_entry 000354 automatic char(32) packed unaligned dcl 336 set ref 403* 404* target_entry 000364 automatic char(32) packed unaligned dcl 336 set ref 351* 373* 374* 374* 383* 386* 386* 451* 519* 520* 520* 529* 530* 530* 541* 541* temp_entry 000374 automatic char(32) packed unaligned dcl 338 set ref 356* 396* 397* 398* 398* 407* 410* 413* 413* 419* 421* 421* 450* 456* 456* 478* 499* 501* 501* 508* 510* 510* 520* 520* 530* 530* 538* 538* 541* 565* 565* 568* 570* 570* this_name 000404 automatic char(32) packed unaligned dcl 339 set ref 534* 535 535* type based fixed bin(2,0) level 3 in structure "status_branch" packed packed unsigned unaligned dcl 10-8 in procedure "canonicalize_mailbox" ref 368 type based fixed bin(2,0) array level 2 in structure "star_entries" packed packed unsigned unaligned dcl 11-27 in procedure "canonicalize_mailbox" ref 724 unique_chars_ 000164 constant entry external dcl 149 ref 396 518 user_auth 000254 automatic bit(72) dcl 55 set ref 259* 446* 615* 700* version 000230 automatic char(8) level 3 in structure "my_acl_entry" packed packed unaligned dcl 48 in procedure "canonicalize_mailbox" set ref 277* version based char(8) level 2 in structure "close_options" packed packed unaligned dcl 2-6 in procedure "canonicalize_mailbox" set ref 263* version based char(8) level 2 in structure "delete_mailbox_options" packed packed unaligned dcl 4-6 in procedure "canonicalize_mailbox" set ref 266* version based char(8) level 2 in structure "open_options" dcl 9-6 in procedure "canonicalize_mailbox" set ref 270* yes_sw 000473 automatic bit(1) packed unaligned dcl 597 set ref 616* 623 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCESSIBLE_MESSAGES internal static fixed bin(17,0) initial dcl 9-30 AOW_MBX_ACCESS internal static bit(36) initial dcl 7-6 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 DELETE_ERROR_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 3-14 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Directory internal static fixed bin(17,0) initial dcl 10-56 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 INTERACTIVE_MESSAGES internal static fixed bin(17,0) initial dcl 9-23 MESSAGE_ADDRESS_LIST_USER_FIELD internal static fixed bin(17,0) initial dcl 8-174 MESSAGE_BIT_STRING_BODY_SECTION internal static fixed bin(17,0) initial dcl 8-285 MESSAGE_BODY_SECTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 8-318 MESSAGE_DATE_USER_FIELD internal static fixed bin(17,0) initial dcl 8-174 MESSAGE_ENVELOPE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 8-79 MESSAGE_INTEGER_USER_FIELD internal static fixed bin(17,0) initial dcl 8-174 MESSAGE_PREFORMATTED_BODY_SECTION internal static fixed bin(17,0) initial dcl 8-285 MESSAGE_REDISTRIBUTIONS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 8-117 MESSAGE_REDISTRIBUTION_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 8-144 MESSAGE_REFERENCES_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 8-227 MESSAGE_REFERENCE_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 8-253 MESSAGE_TEXT_USER_FIELD internal static fixed bin(17,0) initial dcl 8-174 MESSAGE_TRACE_VERSION_2 internal static char(8) initial packed unaligned dcl 8-103 MESSAGE_USER_FIELDS_LIST_VERSION_2 internal static char(8) initial packed unaligned dcl 8-158 MESSAGE_USER_FIELD_PARAMETER_VERSION_2 internal static char(8) initial packed unaligned dcl 8-213 MESSAGE_VERSION_2 internal static char(8) initial packed unaligned dcl 8-49 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 NOT_OWN_MESSAGES internal static fixed bin(17,0) initial dcl 9-30 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 N_MBX_ACCESS internal static bit(36) initial dcl 7-6 ORDINARY_MESSAGES internal static fixed bin(17,0) initial dcl 9-23 OTHER_MAILBOX internal static fixed bin(17,0) initial dcl 5-37 OWN_MESSAGES internal static fixed bin(17,0) initial dcl 9-30 O_MBX_ACCESS internal static bit(36) initial dcl 7-6 READ_MESSAGES internal static fixed bin(17,0) initial dcl 9-38 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 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_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 SAVEBOX internal static fixed bin(17,0) initial dcl 5-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 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 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 S_MBX_ACCESS internal static bit(36) initial dcl 7-6 Segment internal static fixed bin(17,0) initial dcl 10-56 USER_DEFAULT_MAILBOX internal static fixed bin(17,0) initial dcl 5-37 USER_LOGBOX internal static fixed bin(17,0) initial dcl 5-37 U_MBX_ACCESS internal static bit(36) initial dcl 7-6 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 W_MBX_ACCESS internal static bit(36) initial dcl 7-6 delete_error_info based structure level 1 dcl 3-7 delete_error_info_ptr automatic pointer dcl 3-16 mailbox_acl_n_acl_terms automatic fixed bin(17,0) dcl 6-20 mailbox_acl_ptr automatic pointer dcl 6-18 mailbox_n_messages automatic fixed bin(17,0) dcl 5-32 message_address_list_user_field based structure level 1 dcl 8-190 message_bit_string_body_section based structure level 1 dcl 8-301 message_bit_string_body_section_bit_string based bit packed unaligned dcl 8-307 message_body_section_parameter based structure level 1 dcl 8-313 message_body_section_parameter_ptr automatic pointer dcl 8-320 message_body_section_ptr automatic pointer dcl 8-280 message_date_user_field based structure level 1 dcl 8-195 message_envelope_parameter based structure level 1 dcl 8-74 message_envelope_parameter_ptr automatic pointer dcl 8-81 message_envelope_ptr automatic pointer dcl 8-69 message_integer_user_field based structure level 1 dcl 8-200 message_n_body_sections automatic fixed bin(17,0) dcl 8-55 message_n_redistributions automatic fixed bin(17,0) dcl 8-55 message_n_user_fields automatic fixed bin(17,0) dcl 8-55 message_preformatted_body_section based structure level 1 dcl 8-292 message_preformatted_body_section_text based char packed unaligned dcl 8-298 message_redistribution_comment based char packed unaligned dcl 8-131 message_redistribution_parameter based structure level 1 dcl 8-139 message_redistribution_parameter_ptr automatic pointer dcl 8-146 message_redistribution_ptr automatic pointer dcl 8-134 message_redistributions_list based structure level 1 dcl 8-109 message_reference_parameter based structure level 1 dcl 8-248 message_reference_parameter_ptr automatic pointer dcl 8-255 message_reference_ptr automatic pointer dcl 8-243 message_reference_subject based char packed unaligned dcl 8-240 message_references_list based structure level 1 dcl 8-219 message_references_list_n_references automatic fixed bin(17,0) dcl 8-55 message_references_list_ptr automatic pointer dcl 8-229 message_subject based char packed unaligned dcl 8-51 message_text_field_ptr automatic pointer dcl 8-270 message_text_field_text based char packed unaligned dcl 8-268 message_text_user_field based structure level 1 dcl 8-183 message_text_user_field_text based char packed unaligned dcl 8-187 message_trace based structure level 1 dcl 8-87 message_trace_n_relays automatic fixed bin(17,0) dcl 8-55 message_trace_ptr automatic pointer dcl 8-105 message_user_field_parameter based structure level 1 dcl 8-208 message_user_field_parameter_ptr automatic pointer dcl 8-215 message_user_field_ptr automatic pointer dcl 8-169 message_user_fields_list based structure level 1 dcl 8-150 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 11-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 11-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 11-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 11-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 11-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 11-112 star_branch_count automatic fixed bin(17,0) dcl 11-13 star_dir_list_branch based structure array level 1 dcl 11-59 star_link_count automatic fixed bin(17,0) dcl 11-17 star_link_pathname based char packed unaligned dcl 11-102 star_links based structure array level 1 dcl 11-76 star_linkx automatic fixed bin(17,0) dcl 11-18 star_list_branch based structure array level 1 dcl 11-41 star_list_branch_ptr automatic pointer dcl 11-16 star_list_names based char(32) array packed unaligned dcl 11-92 star_list_names_ptr automatic pointer dcl 11-20 star_select_sw automatic fixed bin(3,0) dcl 11-21 status_link based structure level 1 dcl 10-38 status_pathname based char dcl 10-47 sum builtin function dcl 176 NAMES DECLARED BY EXPLICIT CONTEXT. GLOBAL_EXIT 002617 constant label dcl 289 ref 296 NEXT_MBX 011360 constant label dcl 726 ref 742 abort_canon_mbx 002625 constant entry internal dcl 293 ref 206 206 abort_nonstar_canon 010520 constant entry internal dcl 667 ref 285 285 abort_one_canon 011364 constant entry internal dcl 731 ref 724 724 canon_one_mbx 002723 constant entry internal dcl 314 ref 285 724 canon_star_mbx 011124 constant entry internal dcl 709 ref 287 canonicalize_mailbox 001351 constant entry external dcl 23 check_dir_access 010566 constant entry internal dcl 679 ref 390 718 check_mbx_access 007426 constant entry internal dcl 593 ref 362 cleanup_canon_mbx 002636 constant entry internal dcl 300 ref 204 289 get_mbx_access 010201 constant entry internal dcl 628 ref 601 604 mailbox_not_canonical 007272 constant entry internal dcl 575 ref 433 move_name 007005 constant entry internal dcl 558 ref 535 print_message 010455 constant entry internal dcl 654 ref 421 427 492 501 510 541 551 restore_mbx_access 010321 constant entry internal dcl 639 ref 353 475 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12646 13064 11503 12656 Length 13722 11503 216 622 1142 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME canonicalize_mailbox 403 external procedure is an external procedure. on unit on line 204 64 on unit on unit on line 252 92 on unit abort_canon_mbx 64 internal procedure is assigned to an entry variable. cleanup_canon_mbx 70 internal procedure is called by several nonquick procedures. canon_one_mbx 1078 internal procedure enables or reverts conditions. on unit on line 344 98 on unit move_name internal procedure shares stack frame of internal procedure canon_one_mbx. mailbox_not_canonical internal procedure shares stack frame of internal procedure canon_one_mbx. check_mbx_access internal procedure shares stack frame of internal procedure canon_one_mbx. get_mbx_access internal procedure shares stack frame of internal procedure canon_one_mbx. restore_mbx_access 158 internal procedure is called by several nonquick procedures. print_message 80 internal procedure is declared options(variable). abort_nonstar_canon 80 internal procedure is assigned to an entry variable, and is declared options(variable). check_dir_access 170 internal procedure is called by several nonquick procedures. canon_star_mbx internal procedure shares stack frame of external procedure canonicalize_mailbox. abort_one_canon 106 internal procedure is assigned to an entry variable, and is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME abort_nonstar_canon 000100 arg_list_ptr abort_nonstar_canon abort_one_canon 000100 arg_list_ptr abort_one_canon canon_one_mbx 000100 access_class canon_one_mbx 000102 auth_string canon_one_mbx 000202 code canon_one_mbx 000203 delete_new canon_one_mbx 000204 delete_original canon_one_mbx 000205 delete_original_by_shriek_entry canon_one_mbx 000206 dir_access_class canon_one_mbx 000210 max_length canon_one_mbx 000211 messages_processed canon_one_mbx 000212 message_idx canon_one_mbx 000213 n_new_messages canon_one_mbx 000214 name_idx canon_one_mbx 000215 safety_sw canon_one_mbx 000216 save_acl_ptr canon_one_mbx 000220 shriek_entry canon_one_mbx 000230 target_dir canon_one_mbx 000302 target_dir_dir canon_one_mbx 000354 target_dir_entry canon_one_mbx 000364 target_entry canon_one_mbx 000374 temp_entry canon_one_mbx 000404 this_name canon_one_mbx 000460 code mailbox_not_canonical 000461 message_idx mailbox_not_canonical 000472 mbx_mode check_mbx_access 000473 yes_sw check_mbx_access canonicalize_mailbox 000100 area_ptr canonicalize_mailbox 000102 arg_count canonicalize_mailbox 000103 arg_idx canonicalize_mailbox 000104 arg_len canonicalize_mailbox 000106 arg_ptr canonicalize_mailbox 000110 code canonicalize_mailbox 000111 dir_priv canonicalize_mailbox 000112 enable_privs canonicalize_mailbox 000113 error_return canonicalize_mailbox 000114 force_access canonicalize_mailbox 000115 link_flag canonicalize_mailbox 000116 local_close_options canonicalize_mailbox 000121 local_delete_options canonicalize_mailbox 000124 local_open_options canonicalize_mailbox 000131 local_status_branch canonicalize_mailbox 000143 mbx_dir canonicalize_mailbox 000215 mbx_entry canonicalize_mailbox 000225 mbx_path_len canonicalize_mailbox 000226 mbx_path_ptr canonicalize_mailbox 000230 my_acl_entry canonicalize_mailbox 000246 ring1_priv canonicalize_mailbox 000250 sci_ptr canonicalize_mailbox 000252 seg_priv canonicalize_mailbox 000253 star_code canonicalize_mailbox 000254 user_auth canonicalize_mailbox 000272 close_options_ptr canonicalize_mailbox 000274 delete_mailbox_options_ptr canonicalize_mailbox 000276 mailbox_ptr canonicalize_mailbox 000300 message_ptr canonicalize_mailbox 000302 open_options_ptr canonicalize_mailbox 000304 status_area_ptr canonicalize_mailbox 000306 status_ptr canonicalize_mailbox 000310 star_entry_count canonicalize_mailbox 000312 star_entry_ptr canonicalize_mailbox 000314 star_names_ptr canonicalize_mailbox 000326 code canon_star_mbx 000327 entry_idx canon_star_mbx check_dir_access 000100 access_class check_dir_access 000102 code check_dir_access 000103 dir_dir check_dir_access 000155 dir_entry check_dir_access 000165 mode check_dir_access print_message 000100 arg_list_ptr print_message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 mdfx1 enable_op shorten_stack ext_entry int_entry int_entry_desc op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal aim_check_$greater check_star_name_$entry com_err_ command_query_$yes_no convert_authorization_$to_string_short cu_$arg_list_ptr cu_$generate_call expand_pathname_ expand_pathname_$add_suffix get_authorization_ get_group_id_ get_max_authorization_ hcs_$get_access_class hcs_$get_link_target hcs_$get_max_length hcs_$get_safety_sw hcs_$get_user_access_modes hcs_$star_ hcs_$status_ ioa_ ioa_$nnl mail_system_$close_mailbox mail_system_$copy_message mail_system_$open_mailbox mail_system_$read_message mail_system_$read_message_canonical_form mail_system_$read_new_messages mailbox_$chname_file mailbox_$get_mode_file mailbox_$set_max_length_file mailbox_$set_safety_switch mlsys_utils_$add_mailbox_acl_entries mlsys_utils_$create_mailbox mlsys_utils_$delete_mailbox mlsys_utils_$list_mailbox_acl mlsys_utils_$replace_mailbox_acl_entries pathname_ requote_string_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$get_area ssu_$print_message ssu_$standalone_invocation system_privilege_$dir_priv_off system_privilege_$dir_priv_on system_privilege_$reclassify_branch system_privilege_$reclassify_sys_seg system_privilege_$ring1_priv_off system_privilege_$ring1_priv_on system_privilege_$seg_priv_off system_privilege_$seg_priv_on unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badopt error_table_$incorrect_access error_table_$insufficient_access error_table_$noarg error_table_$noentry error_table_$not_privileged error_table_$rqover error_table_$too_many_args mlsys_et_$no_message_canonical_form mlsys_et_$no_more_messages sys_info$access_class_ceiling LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 001350 201 001356 202 001360 203 001364 204 001365 206 001407 207 001450 208 001452 210 001476 212 001477 213 001510 214 001537 215 001541 216 001542 217 001551 218 001566 221 001620 222 001625 223 001641 224 001653 225 001666 226 001700 227 001732 228 001733 232 001764 233 001765 235 001767 236 001771 239 002021 240 002055 241 002132 242 002150 245 002246 248 002276 249 002300 252 002351 255 002412 256 002421 257 002430 258 002437 259 002440 262 002447 263 002451 264 002454 265 002455 266 002457 267 002462 268 002463 269 002465 270 002467 271 002472 272 002474 273 002475 274 002477 276 002501 277 002503 278 002505 279 002507 280 002516 282 002520 283 002553 285 002555 287 002603 289 002617 291 002623 293 002624 296 002632 300 002635 303 002643 304 002646 305 002657 306 002672 308 002705 310 002721 314 002722 341 002743 342 002747 343 002753 344 002755 346 002771 347 003012 351 003055 353 003110 354 003130 355 003143 356 003163 359 003221 362 003222 365 003223 366 003226 367 003267 368 003345 369 003352 370 003353 372 003355 373 003360 374 003413 378 003517 380 003572 382 003573 383 003601 386 003606 390 003701 392 003717 393 003756 396 004035 397 004065 398 004107 401 004162 402 004164 403 004167 404 004214 405 004241 407 004274 410 004340 411 004365 412 004367 413 004411 417 004466 418 004515 419 004517 420 004546 421 004550 423 004624 425 004625 427 004626 430 004701 433 004702 434 004707 435 004713 437 004714 438 004716 439 004731 440 004740 441 004753 445 005035 446 005044 450 005141 451 005167 456 005232 458 005334 459 005357 460 005361 461 005365 462 005406 463 005410 464 005413 465 005414 466 005415 467 005416 470 005471 471 005472 474 005473 475 005510 477 005524 478 005532 480 005565 481 005576 484 005577 486 005610 487 005611 490 005626 491 005655 492 005657 495 005732 496 005734 497 005735 499 005736 500 005763 501 005765 504 006041 508 006042 509 006067 510 006071 512 006167 514 006170 518 006172 519 006222 520 006253 524 006355 529 006357 530 006415 533 006513 534 006525 535 006537 536 006546 538 006550 540 006577 541 006601 543 006655 549 006656 550 006710 551 006712 554 006762 555 006776 556 007004 558 007005 563 007016 565 007051 568 007155 570 007210 573 007271 575 007272 581 007274 582 007305 583 007330 584 007340 587 007421 588 007423 593 007426 599 007427 600 007456 601 007534 603 007547 604 007552 605 007553 606 007605 607 007663 608 007664 612 007741 613 007770 615 010046 616 010067 623 010156 626 010200 628 010201 631 010202 632 010241 633 010317 639 010320 644 010326 645 010355 646 010364 647 010367 649 010375 650 010453 654 010454 659 010462 660 010472 661 010501 663 010516 667 010517 672 010525 673 010530 674 010540 675 010547 677 010564 679 010565 691 010601 692 010627 693 010673 694 010727 696 010765 697 010770 698 011015 700 011051 704 011123 709 011124 718 011142 720 011165 722 011232 723 011310 724 011317 726 011360 746 011362 731 011363 736 011371 737 011374 738 011404 739 011413 740 011430 742 011461 ----------------------------------------------------------- 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