COMPILATION LISTING OF SEGMENT set_mailing_address Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 06/26/90 0924.4 mdt Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1989 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 8* * * 9* *********************************************************** */ 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(88-12-05,Parisek), approve(89-01-11,MCR8044), 15* audit(89-01-16,Farley), install(89-01-19,MR12.3-1006): 16* A. Return aliases for the specified name supplied to dsmla. 17* B. Accept starnames as input to the dsmla command using case 18* insensitivity. 19* 2) change(90-03-26,Kallstrom), approve(90-03-26,MCR8168), 20* audit(90-04-16,Zimmerman), install(90-04-25,MR12.4-1008): 21* A. Add a check for self-referencing addresses 22* B. Fix the infinite loop which occurs when a control argument 23* directly follows the -entry control arg. 24* 3) change(90-06-14,Zimmerman), approve(90-06-14,MCR8168), 25* audit(90-06-18,WAAnderson), install(90-06-26,MR12.4-1017): 26* PBF: Fix path thru code that tests improperly set variable. 27* (validate_mte_path) 28* END HISTORY COMMENTS */ 29 30 31 /* format: style2,ifthenstmt,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 32 33 /* (set display)_mailing_address: These commands are used by 34* ordinary users to manipulate their own Mail Table addresses, to 35* manipulate Mail Table addresses for which tey have been granted 36* access by an administrator, and to display any user's mailing 37* address. */ 38 39 /* Written: July 1983 by B. Margolin */ 40 /* Modified: February 1984 by B. Margolin to suppress "No ACS path" in 41* display_mailing_address and to compare the input entry name length against 42* maxlength of the internal variable, not length */ 43 44 set_mailing_address: 45 smla: 46 proc options (variable); 47 48 dcl check_star_name_ entry (char (*), bit (36), fixed bin (2), fixed bin (35)); 49 dcl com_err_ entry () options (variable); 50 dcl ioa_ entry () options (variable); 51 dcl mail_system_$free_address 52 entry (ptr, fixed bin (35)); 53 dcl mail_table_$get entry (char (*) varying, ptr, char (*), fixed bin (35)); 54 dcl mail_table_$get_aliases 55 entry (char (*) var, char (*), ptr, ptr, fixed bin (35)); 56 dcl mail_table_$get_name_by_index 57 entry (fixed bin, char (*), char (*) var, fixed bin (35)); 58 dcl mail_table_$set entry (char (*) var, ptr, fixed bin (35)); 59 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 60 dcl mlsys_utils_$format_address_field 61 entry (char (*) var, ptr, fixed bin, ptr, fixed bin (21), fixed bin (21), 62 fixed bin (35)); 63 dcl mlsys_utils_$parse_address_control_args 64 entry (ptr, fixed bin, ptr, ptr, fixed bin (35)); 65 dcl ssu_$abort_line entry () options (variable); 66 dcl ssu_$get_area entry (ptr, ptr, char (*), ptr); 67 dcl ssu_$arg_count entry (ptr, fixed bin); 68 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 69 dcl ssu_$destroy_invocation 70 entry (ptr); 71 dcl ssu_$print_message entry () options (variable); 72 dcl ssu_$release_area entry (ptr, ptr); 73 dcl ssu_$standalone_invocation 74 entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 75 76 dcl address_ptr ptr; 77 dcl alias_area_ptr ptr; 78 dcl arg char (arg_len) based (arg_ptr); 79 dcl arg_count fixed bin; 80 dcl arg_idx fixed bin; 81 dcl arg_len fixed bin (21); 82 dcl arg_ptr ptr; 83 dcl ca_address_ptr ptr; 84 dcl cleanup condition; 85 dcl code fixed bin (35); 86 dcl default_project bit (1); 87 dcl ignore_code fixed bin (35); 88 dcl match_stars bit (1); 89 dcl 1 pcao aligned like parse_ca_options; 90 dcl person_id char (32) varying; 91 dcl person_id_specified bit (1); 92 dcl sci_ptr ptr; 93 dcl star_name bit (1); 94 dcl star_type fixed bin (2); 95 dcl WHOAMI char (23); 96 dcl VERSION char (3) init ("1.0") int static options (constant); 97 dcl ( 98 error_table_$action_not_performed, 99 error_table_$bad_arg, 100 error_table_$bad_index, 101 error_table_$bad_subr_arg, 102 error_table_$badopt, 103 error_table_$bigarg, 104 error_table_$id_not_found, 105 error_table_$inconsistent, 106 error_table_$insufficient_access, 107 error_table_$lock_wait_time_exceeded, 108 error_table_$no_record, 109 error_table_$no_w_permission, 110 error_table_$noarg, 111 error_table_$too_many_args, 112 mlsys_et_$circular_mtes 113 ) fixed bin (35) ext static; 114 dcl (addr, index, length, maxlength, null, rtrim, substr) 115 builtin; 116 1 1 /* BEGIN: check_star_name.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-14,JSLove), approve(86-08-14,MCR7518), 1 5* audit(86-08-14,FCSmith), install(86-10-02,MR12.0-1174): 1 6* Created, to support check_star_name_ entrypoint. 1 7* 2) change(87-06-01,GDixon), approve(87-07-13,MCR7740), 1 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 9* Change structures and bit structures to be unaligned, to match the 1 10* check_star_name_ parameters to which such strings are passed. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* format: style3,comcol71,ifthenstmt,indcomtxt,indproc,idind30 */ 1 14 1 15 declare 1 check_star aligned based, 1 16 2 reject_wild bit (1) unaligned, 1 17 2 ignore_archive bit (1) unaligned, 1 18 2 process_archive bit (1) unaligned, 1 19 2 ignore_entrypoint bit (1) unaligned, 1 20 2 process_entrypoint bit (1) unaligned, 1 21 2 ignore_path bit (1) unaligned, 1 22 2 process_path bit (1) unaligned, 1 23 2 ignore_equal bit (1) unaligned, 1 24 2 ignore_length bit (1) unaligned, 1 25 2 ignore_nonascii bit (1) unaligned, 1 26 2 ignore_null bit (1) unaligned, 1 27 2 unimplemented bit (25) unaligned; 1 28 1 29 declare ( 1 30 CHECK_STAR_ENTRY_DEFAULT initial ("00010001000"b), /* Behavior of check_star_name_$entry (obsolete). */ 1 31 CHECK_STAR_IGNORE_ALL initial ("01010101111"b), /* Check for *** and classify only. */ 1 32 CHECK_STAR_IGNORE_ARCHIVE initial ("01000000000"b), /* Do not reject archive convention "::". */ 1 33 CHECK_STAR_IGNORE_ENTRYPOINT initial ("00010000000"b), /* Do not reject "$" or "|" characters. */ 1 34 CHECK_STAR_IGNORE_EQUAL initial ("00000001000"b), /* Do not reject "=" or "%" characters. */ 1 35 CHECK_STAR_IGNORE_LENGTH initial ("00000000100"b), /* Do not reject star names longer than 32 chars. */ 1 36 CHECK_STAR_IGNORE_NONASCII initial ("00000000010"b), /* No not reject star names with nonASCII chars. */ 1 37 CHECK_STAR_IGNORE_NULL initial ("00000000001"b), /* Do not reject names with null components. */ 1 38 CHECK_STAR_IGNORE_PATH initial ("00000100000"b), /* Do not reject "<" or ">" characters. */ 1 39 CHECK_STAR_PATH_DEFAULT initial ("00110011100"b), /* Behavior of check_star_name_$path (obsolete). */ 1 40 CHECK_STAR_PROCESS_ARCHIVE initial ("00100000000"b), /* Process "::" as archive delimiter. */ 1 41 CHECK_STAR_PROCESS_ENTRYPOINT initial ("00001000000"b), /* Ignore trailing entrypoint if present. */ 1 42 CHECK_STAR_PROCESS_PATH initial ("00000010000"b), /* Ignore leading directory path if present. */ 1 43 CHECK_STAR_REJECT_WILD initial ("10000000000"b), /* Return error_table_$nostars if type not zero. */ 1 44 CHECK_STAR_UNIMPLEMENTED initial ("001FFFFFF"b4) /* Nonexistent test flags. Reject them. */ 1 45 ) bit (36) static options (constant); 1 46 1 47 declare ( 1 48 STAR_TYPE_MATCHES_EVERYTHING initial (2), 1 49 STAR_TYPE_USE_MATCH_PROCEDURE initial (1), 1 50 STAR_TYPE_USE_PL1_COMPARE initial (0) 1 51 ) fixed bin (2) static options (constant); 1 52 1 53 /* END OF: check_star_name.incl.pl1 * * * * * */ 117 118 2 1 /* BEGIN INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 2 2 /* Created: June 1983 by G. Palter */ 2 3 /* Modified: March 1984 by G. Palter to remove ignore_log_save option */ 2 4 2 5 /* Options for the mlsys_utils_$parse_address_control_arguments, mlsys_utils_$parse_address_list_control_arguments, and 2 6* mlsys_utils_$parse_mailbox_control_arguments entrypoints */ 2 7 2 8 dcl 1 parse_ca_options aligned based (parse_ca_options_ptr), 2 9 2 version character (8) unaligned, 2 10 2 logbox_creation_mode fixed binary, /* specifies the action to be taken if the address/mailbox is 2 11* the user's logbox, address/mailbox validation is requested, 2 12* and the logbox does not exist */ 2 13 2 savebox_creation_mode fixed binary, /* ... same as above but for any savebox */ 2 14 2 flags, 2 15 3 abort_on_errors bit (1) unaligned, /* ON => use ssu_$abort_line to report errors (ie: abort on 2 16* the first error); OFF => use ssu_$print_message */ 2 17 3 validate_addresses bit (1) unaligned, /* ON => validate the existence of the address/mailbox; 2 18* OFF => only validate the command/request line syntax */ 2 19 3 mbz bit (34) unaligned; /* must be set to ""b by the caller */ 2 20 2 21 dcl PARSE_CA_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlspca01"); 2 22 2 23 dcl parse_ca_options_ptr pointer; 2 24 2 25 2 26 /* Defined logbox/savebox creation modes */ 2 27 2 28 dcl (DONT_CREATE_MAILBOX initial (0), /* do not create the mailbox and issue an error message */ 2 29 QUERY_TO_CREATE_MAILBOX initial (1), /* ask the user for permission to create the mailbox */ 2 30 CREATE_AND_ANNOUNCE_MAILBOX initial (2), /* create the mailbox and inform the user of this action */ 2 31 SILENTLY_CREATE_MAILBOX initial (3)) /* create the mailbox but don't inform the user */ 2 32 fixed binary static options (constant); 2 33 2 34 /* END INCLUDE FILE ... mlsys_parse_ca_options.incl.pl1 */ 119 120 3 1 /* START OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 /* Written by B. Margolin - 7/4/83 */ 3 4 3 5 /* format: style2,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 3 6 declare 1 mail_table_entry aligned based (mail_table_entry_ptr), 3 7 2 version char (8), 3 8 2 name char (32) varying, /* Person_id or entry name */ 3 9 2 acs_path, 3 10 3 dir char (168), 3 11 3 entry char (32), 3 12 2 default_project char (12) varying, 3 13 2 mailing_address char (256) varying; 3 14 3 15 declare mail_table_entry_ptr ptr; 3 16 declare MAIL_TABLE_ENTRY_VERSION_1 3 17 char (8) int static options (constant) init ("mte_0001"); 3 18 3 19 declare 1 mail_table_raw_entry 3 20 aligned based (mail_table_raw_entry_ptr), 3 21 2 version char (8), 3 22 2 name char (32) varying, 3 23 2 primary_name char (32) varying, /* for alias entries */ 3 24 2 flags, 3 25 3 alias_entry bit (1) unaligned, 3 26 3 registered_user bit (1) unaligned, /* In the PNT */ 3 27 3 mbz bit (34) unaligned, 3 28 2 n_names fixed bin, /* # names, including primary */ 3 29 2 next_name char (32) varying, /* Make a */ 3 30 2 prev_name char (32) varying, /* linked list */ 3 31 2 acs_path, 3 32 3 dir char (168), 3 33 3 entry char (32), 3 34 2 default_project char (12) varying, 3 35 2 mailing_address char (256) varying; 3 36 3 37 declare mail_table_raw_entry_ptr 3 38 ptr; 3 39 declare MAIL_TABLE_RAW_ENTRY_VERSION_1 3 40 char (8) int static options (constant) init ("mtre_001"); 3 41 3 42 declare 1 mail_table_aliases aligned based (mail_table_aliases_ptr), 3 43 2 version char (8), 3 44 2 n_names fixed bin, 3 45 2 names (mail_table_aliases_extent refer (mail_table_aliases.n_names)) char (32) varying; 3 46 3 47 declare mail_table_aliases_ptr 3 48 ptr; 3 49 declare mail_table_aliases_extent 3 50 fixed bin; 3 51 declare MAIL_TABLE_ALIASES_VERSION_1 3 52 int static options (constant) char (8) init ("mta_0001"); 3 53 3 54 /* END OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 121 122 4 1 /* BEGIN INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Types of addresses supported by the Multics Mail System */ 4 5 4 6 dcl (INVALID_ADDRESS initial (0), /* a syntactically invalid address: used as a place holder 4 7* when parsing printed representations */ 4 8 USER_MAILBOX_ADDRESS initial (1), /* identifies a user's default mailbox */ 4 9 LOGBOX_ADDRESS initial (2), /* identifies a user's logbox */ 4 10 SAVEBOX_ADDRESS initial (3), /* identifies one of a user's saveboxes by pathname */ 4 11 MAILBOX_ADDRESS initial (4), /* identifies some other mailbox by pathname */ 4 12 FORUM_ADDRESS initial (5), /* identifies a forum meeting by pathname */ 4 13 FOREIGN_ADDRESS initial (6), /* identifies a user (or group) on another compute system */ 4 14 MAIL_TABLE_ADDRESS initial (7), /* identifies an entry in the system's mail table */ 4 15 MAILING_LIST_ADDRESS initial (8), /* identifies a mailing list by pathname */ 4 16 NAMED_GROUP_ADDRESS initial (9)) /* identifies a named group of addresses */ 4 17 fixed binary static options (constant); 4 18 4 19 /* END INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 123 124 125 126 WHOAMI = "set_mailing_address"; 127 sci_ptr = null (); 128 code = 0; 129 address_ptr = null (); 130 on cleanup call cleanup_smla (); 131 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_smla, code); 132 if code ^= 0 then do; 133 call com_err_ (code, WHOAMI, "Creating standalone subsystem invocation."); 134 return; 135 end; 136 call ssu_$arg_count (sci_ptr, arg_count); 137 if arg_count = 0 then call ssu_$abort_line (sci_ptr, 0, "Usage: ^a {address} {-control_args}", WHOAMI); 138 pcao.version = PARSE_CA_OPTIONS_VERSION_1; 139 pcao.logbox_creation_mode = QUERY_TO_CREATE_MAILBOX; 140 pcao.savebox_creation_mode = QUERY_TO_CREATE_MAILBOX; 141 pcao.abort_on_errors = "1"b; 142 pcao.validate_addresses = "1"b; 143 pcao.flags.mbz = ""b; 144 person_id = ""; 145 person_id_specified = "0"b; 146 default_project = "0"b; 147 do arg_idx = 1 to arg_count; 148 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 149 if arg = "-entry" | arg = "-et" then do; 150 if person_id_specified then 151 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "-entry may only be specified once."); 152 person_id_specified = "1"b; 153 154 /*** NO_NAME used to be immediately after 'arg_idx = arg_idx +1;' . ***/ 155 /*** This caused an infinite loop when '-entry' was followed by ***/ 156 /*** a hyphen, as 'arg_idx' was never incremented to get by the ***/ 157 /*** argument preceded by the hyphen. For example, ***/ 158 /*** smla -entry -bad ***/ 159 160 NO_NAME: 161 arg_idx = arg_idx + 1; 162 if arg_idx > arg_count then 163 call ssu_$abort_line (sci_ptr, error_table_$noarg, 164 "-entry must be followed by a Mail Table entry name."); 165 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 166 if arg = "" then 167 call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 168 "A blank name is not permitted after -entry."); 169 if substr (arg, 1, 1) = "-" then go to NO_NAME; 170 /* Control arg is not name */ 171 if arg_len > maxlength (person_id) then 172 call ssu_$abort_line (sci_ptr, error_table_$bigarg, "The Mail Table entry name ""^va"".", 173 arg_len, arg); /* Pad it the way it was given */ 174 person_id = arg; 175 end; 176 else if arg = "-default_project" | arg = "-dp" then default_project = "1"b; 177 else do; 178 /*** Unrecognized by me, must be an address ***/ 179 call mlsys_utils_$parse_address_control_args (sci_ptr, arg_idx, addr (pcao), ca_address_ptr, code); 180 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Parsing address control arguments."); 181 if address_ptr ^= null () then do; /* Already have one */ 182 call mail_system_$free_address (ca_address_ptr, ignore_code); 183 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, 184 "^/Only one address may be specified."); 185 end; 186 arg_idx = arg_idx - 1; /* will be incremented by do loop */ 187 address_ptr = ca_address_ptr; 188 189 end; 190 191 end; 192 if default_project & address_ptr ^= null () then 193 call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 194 "^/Both an address and -default_project may not be specified."); 195 if ^default_project & address_ptr = null () then 196 call ssu_$abort_line (sci_ptr, error_table_$noarg, 197 "Either an address or -default_project must be specified."); 198 call validate_mte_path (person_id, address_ptr, code); 199 if code ^= 0 then do; 200 call ssu_$abort_line (sci_ptr, code, ""); 201 call cleanup_smla(); 202 return; 203 end; 204 205 call mail_table_$set (person_id, address_ptr, code); 206 if code ^= 0 then do; 207 if code = error_table_$action_not_performed then 208 call ssu_$abort_line (sci_ptr, code, "^/Anonymous users have no Mail Table entries."); 209 else if code = error_table_$bigarg then /* We have already checked the size of the name */ 210 call ssu_$abort_line (sci_ptr, 0, "The address is too large to be stored in the Mail Table."); 211 else if code = error_table_$insufficient_access then 212 call ssu_$abort_line (sci_ptr, code, 213 "^/You do not have access to modify ^[^a'^[s^]^;your^] mailing address.", person_id_specified, 214 person_id, ^ends_in_s (person_id)); 215 else if code = error_table_$no_w_permission then 216 call ssu_$abort_line (sci_ptr, code, 217 "^/You do not have access to modify the Mail Table; this may only be performed^/at an AIM authorization of system_low." 218 ); 219 else if code = error_table_$bad_subr_arg then 220 call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 221 "^/-default_project may not be specified^[ for ^a^;^s^], as ^[it is^;you are^] not a registered user.", 222 person_id_specified, person_id, person_id_specified); 223 else if code = error_table_$id_not_found then 224 call ssu_$abort_line (sci_ptr, code, "^/There is no Mail Table entry for ^[^a^;you^].", 225 person_id_specified, person_id); 226 else if code = error_table_$lock_wait_time_exceeded then 227 call ssu_$abort_line (sci_ptr, code, "^/The Mail Table is being updated; try again in a few minutes.") 228 ; 229 else call ssu_$abort_line (sci_ptr, code, "^/Storing the new Mail Table entry for ^[^a^;you^].", 230 person_id_specified, person_id); 231 end; 232 call cleanup_smla (); 233 RETURN_FROM_SMLA: 234 return; 235 236 validate_mte_path: 237 procedure (P_name, P_address_ptr, P_code); 238 239 /*** parameters ***/ 240 241 dcl P_name parameter char (*) var; 242 dcl P_address_ptr parameter pointer; 243 dcl P_code parameter fixed bin (35); 244 245 /*** automatics ***/ 246 247 dcl src_person_id char (32) varying; 248 dcl tgt_person_id char (32) varying; 249 dcl last_mte_name char (32) varying; 250 dcl code fixed bin (35); 251 dcl mail_table_address_ptr pointer; 252 253 /*** based values ***/ 254 255 dcl 01 address_header aligned based (mail_table_address_ptr), 256 02 version char (8) unaligned, 257 02 type fixed bin, 258 02 reference_count fixed bin, 259 02 name, 260 03 name_ptr ptr, 261 03 name_lth fixed bin (21), 262 02 comment, 263 03 comment_ptr ptr, 264 03 comment_lth fixed bin (21), 265 02 flags, 266 03 never_free bit (1) unaligned, 267 03 free_name bit (1) unaligned, 268 03 free_comment bit (1) unaligned, 269 03 pad bit (33) unaligned; 270 271 dcl 01 mail_table_address aligned based (mail_table_address_ptr), 272 02 header aligned like address_header, 273 02 mte_name char (32) var; 274 275 276 /*** internal procedure ***/ 277 278 expand_mail_table_entry: 279 proc (mail_table_name, expanded_name, code); 280 281 /* parameters */ 282 283 dcl mail_table_name parameter char (*) varying; 284 dcl expanded_name parameter char (*) varying; 285 dcl code parameter fixed bin (35); 286 287 /* automatics */ 288 289 dcl next_mte_name char (32) varying; 290 291 /* begin code */ 292 293 code = 0; 294 295 call mail_table_$get (mail_table_name, mail_table_address_ptr, ((168) " "), code); 296 if (code ^= 0) then do; 297 expanded_name = ""; 298 return; 299 end; 300 301 if (address_header.type ^= MAIL_TABLE_ADDRESS) then do; 302 if address_header.type = FOREIGN_ADDRESS then expanded_name = "..Foreign Address.."; 303 else expanded_name = mail_table_address.mte_name; 304 call mail_system_$free_address (mail_table_address_ptr, code); 305 return; 306 end; 307 308 if (last_mte_name = mail_table_address.mte_name) then do; 309 expanded_name = ""; 310 call mail_system_$free_address (mail_table_address_ptr, code); 311 return; 312 end; 313 314 last_mte_name, next_mte_name = mail_table_address.mte_name; 315 316 call mail_system_$free_address (mail_table_address_ptr, code); 317 318 call expand_mail_table_entry (next_mte_name, expanded_name, code); 319 320 end expand_mail_table_entry; 321 322 323 /*** BEGIN MAIN ROUTINE ***/ 324 325 code = 0; 326 327 /* Only set when a potential self reference is encountered */ 328 329 P_code = 0; 330 331 mail_table_address_ptr = null; 332 333 call expand_mail_table_entry (P_name, src_person_id, code); 334 335 if (code = 0 & P_address_ptr ^= null) then do; 336 if (P_address_ptr->address_header.type = MAIL_TABLE_ADDRESS) then do; 337 call expand_mail_table_entry (P_address_ptr->mail_table_address.mte_name, tgt_person_id, code); 338 if (code ^= 0) then return; 339 340 if (src_person_id = tgt_person_id | tgt_person_id = "") then 341 P_code = mlsys_et_$circular_mtes; 342 end; 343 344 end; 345 346 end validate_mte_path; 347 348 cleanup_smla: 349 proc (); 350 351 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, ignore_code); 352 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 353 return; 354 355 end cleanup_smla; 356 357 abort_smla: 358 proc (); 359 360 call cleanup_smla (); 361 go to RETURN_FROM_SMLA; 362 363 end abort_smla; 364 365 ends_in_s: 366 proc (P_string) returns (bit (1)) reducible; 367 368 dcl P_string char (*) varying; 369 dcl length builtin; 370 dcl last_char char (1); 371 372 last_char = substr (P_string, length (P_string), 1); 373 return (last_char = "s" | last_char = "S"); 374 end ends_in_s; 375 376 377 display_mailing_address: 378 dsmla: 379 entry options (variable); 380 381 WHOAMI = "display_mailing_address"; 382 sci_ptr = null (); 383 address_ptr, alias_area_ptr = null (); 384 code = 0; 385 on cleanup call cleanup_dsmla (); 386 387 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_dsmla, code); 388 if code ^= 0 then do; 389 call com_err_ (code, WHOAMI, "Creating standalone subsystem invocation."); 390 return; 391 end; 392 call ssu_$arg_count (sci_ptr, arg_count); 393 if arg_count = 0 then 394 call display_one_address (""); /* Default to self */ 395 else do; 396 match_stars = "1"b; /* set */ 397 do arg_idx = 1 to arg_count; /* Now process them */ 398 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 399 if index (arg, "-") = 1 then do; 400 if arg = "-name" | arg = "-nm" then do; 401 call ssu_$arg_ptr (sci_ptr, arg_idx + 1, arg_ptr, arg_len); 402 if arg = "" then 403 call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 404 "The null string is not a valid Mail Table entry name."); 405 else do; 406 match_stars = "0"b; /* name may literally contains star characters, don't match */ 407 arg_idx = arg_idx + 1; /* now increment it */ 408 end; 409 end; 410 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 411 end; 412 person_id = arg; 413 call display_one_address (person_id); 414 end; 415 end; 416 call cleanup_dsmla (); 417 RETURN_FROM_DSMLA: 418 return; 419 420 display_one_address: 421 proc (P_name); 422 423 dcl P_name char (*) varying; 424 425 dcl acs_path char (201); 426 dcl alias_names char (256) varying; 427 dcl code fixed bin (35); 428 dcl buffer char (256); 429 dcl buffer_used char (buffer_used_len) based (addr (buffer)); 430 dcl buffer_used_len fixed bin (21); 431 dcl s_name_lower char (32); 432 dcl r_name char (32) varying; 433 dcl r_name_lower char (32); 434 dcl mta_idx fixed bin; 435 dcl mte_idx fixed bin; 436 dcl 1 mta aligned like mail_table_aliases based (mtap); 437 dcl mtap ptr; 438 dcl translate builtin; 439 dcl lowercase char (26) int static options (constant) init ("abcdefghijklmnopqrstuvwxyz"); 440 dcl UPPERCASE char (26) int static options (constant) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 441 442 star_name = "0"b; 443 mte_idx = 0; 444 call check_star_name_ (rtrim (P_name), CHECK_STAR_IGNORE_ALL, star_type, code); 445 if code ^= 0 then call ssu_$print_message (sci_ptr, code, "Unable to check starname type."); 446 if star_type = STAR_TYPE_USE_PL1_COMPARE | ^match_stars then go to get_primary_name; 447 s_name_lower = translate (P_name, lowercase, UPPERCASE); 448 /* lowercase version of starname */ 449 450 get_indexed_name: 451 mte_idx = mte_idx + 1; 452 call mail_table_$get_name_by_index (mte_idx, MAIL_TABLE_RAW_ENTRY_VERSION_1, r_name, code); 453 if code = error_table_$bad_index then return; /* end of table */ 454 else if code = error_table_$no_record then go to get_indexed_name; 455 else if code ^= 0 then call ssu_$abort_line (sci_ptr, code, ""); 456 r_name_lower = translate (r_name, lowercase, UPPERCASE); 457 /* lowercase version of matchname */ 458 if star_type = STAR_TYPE_USE_MATCH_PROCEDURE then do; 459 star_name = "1"b; 460 call match_star_name_ (r_name_lower, s_name_lower, code); 461 if code = 0 then do; 462 P_name = r_name; 463 go to get_primary_name; 464 end; 465 else go to get_indexed_name; 466 end; 467 else if star_type = STAR_TYPE_MATCHES_EVERYTHING then do; 468 star_name = "1"b; 469 P_name = r_name; 470 go to get_primary_name; 471 end; 472 473 get_primary_name: 474 call mail_table_$get (P_name, address_ptr, acs_path, code); 475 if code ^= 0 then 476 if code = error_table_$id_not_found then 477 call ssu_$print_message (sci_ptr, code, "There is no Mail Table entry for ^[you^;^a^].", 478 (length (P_name) = 0), P_name); 479 else call ssu_$print_message (sci_ptr, code, "Getting ^[your^;^a'^[s^]^] mailing address.", 480 (length (P_name) = 0), P_name, ^ends_in_s (P_name)); 481 else do; 482 buffer_used_len = 0; 483 call mlsys_utils_$format_address_field ("", address_ptr, -1, addr (buffer), length (buffer), 484 buffer_used_len, code); 485 if code ^= 0 then /* Shouldn't happen */ 486 call ssu_$print_message (sci_ptr, code, 487 "Internal error while formatting ^[your^;^a'^[s^] mailing address.", (P_name = ""), P_name, 488 ^ends_in_s (P_name)); 489 490 if P_name ^= "" then do; 491 call ssu_$get_area (sci_ptr, null (), "Get aliases", alias_area_ptr); 492 call mail_table_$get_aliases (P_name, MAIL_TABLE_ALIASES_VERSION_1, alias_area_ptr, mtap, code); 493 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Getting aliases for ^a", P_name); 494 alias_names = ""; 495 do mta_idx = 1 to mta.n_names; 496 if mta.names (mta_idx) ^= P_name then alias_names = alias_names || mta.names (mta_idx) || ", "; 497 end; 498 check_aliases: 499 if alias_names ^= "" then do; 500 alias_names = substr (alias_names, 1, length (alias_names) - 2); 501 /* remove the trailing comma and space */ 502 end; 503 else alias_names = "No aliases"; 504 end; 505 display: 506 if P_name = "" then 507 call ioa_ ("Your Mail Table entry:"); 508 else do; 509 call ioa_ ("Mail Table entry: ^a", P_name); 510 call ioa_ (" Aliases: ^a", alias_names); 511 if acs_path ^= "" then call ioa_ (" ACS pathname: ^a", acs_path); 512 end; 513 call ioa_ (" Mailing address: ^a", buffer_used); 514 end; 515 if star_name then go to get_indexed_name; 516 end display_one_address; 517 518 cleanup_dsmla: 519 proc (); 520 521 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, ignore_code); 522 if alias_area_ptr ^= null () then call ssu_$release_area (sci_ptr, alias_area_ptr); 523 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 524 return; 525 526 end cleanup_dsmla; 527 528 abort_dsmla: 529 proc (); 530 531 call cleanup_dsmla (); 532 go to RETURN_FROM_DSMLA; 533 534 end abort_dsmla; 535 536 537 end set_mailing_address; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/26/90 0924.4 set_mailing_address.pl1 >spec>install>1017>set_mailing_address.pl1 117 1 08/06/87 1013.4 check_star_name.incl.pl1 >ldd>include>check_star_name.incl.pl1 119 2 06/18/84 1424.1 mlsys_parse_ca_options.incl.pl1 >ldd>include>mlsys_parse_ca_options.incl.pl1 121 3 10/27/83 2204.2 mail_table_entry.incl.pl1 >ldd>include>mail_table_entry.incl.pl1 123 4 10/27/83 2204.2 mlsys_address_types.incl.pl1 >ldd>include>mlsys_address_types.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. CHECK_STAR_IGNORE_ALL 000024 constant bit(36) initial packed unaligned dcl 1-29 set ref 444* FOREIGN_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 302 MAIL_TABLE_ADDRESS constant fixed bin(17,0) initial dcl 4-6 ref 301 336 MAIL_TABLE_ALIASES_VERSION_1 000016 constant char(8) initial packed unaligned dcl 3-51 set ref 492* MAIL_TABLE_RAW_ENTRY_VERSION_1 000020 constant char(8) initial packed unaligned dcl 3-39 set ref 452* PARSE_CA_OPTIONS_VERSION_1 000022 constant char(8) initial packed unaligned dcl 2-21 ref 138 P_address_ptr parameter pointer dcl 242 ref 236 335 336 337 P_code parameter fixed bin(35,0) dcl 243 set ref 236 329* 340* P_name parameter varying char dcl 241 in procedure "validate_mte_path" set ref 236 333* P_name parameter varying char dcl 423 in procedure "display_one_address" set ref 420 444 444 447 462* 469* 473* 475 475* 479 479* 479* 485 485* 485* 490 492* 493* 496 505 509* P_string parameter varying char dcl 368 ref 365 372 372 QUERY_TO_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 2-28 ref 139 140 STAR_TYPE_MATCHES_EVERYTHING constant fixed bin(2,0) initial dcl 1-47 ref 467 STAR_TYPE_USE_MATCH_PROCEDURE constant fixed bin(2,0) initial dcl 1-47 ref 458 STAR_TYPE_USE_PL1_COMPARE constant fixed bin(2,0) initial dcl 1-47 ref 446 UPPERCASE 000000 constant char(26) initial packed unaligned dcl 440 ref 447 456 VERSION 000025 constant char(3) initial packed unaligned dcl 96 set ref 131* 387* WHOAMI 000152 automatic char(23) packed unaligned dcl 95 set ref 126* 131* 133* 137* 381* 387* 389* abort_on_errors 4 000126 automatic bit(1) level 3 packed packed unaligned dcl 89 set ref 141* acs_path 000244 automatic char(201) packed unaligned dcl 425 set ref 473* 511 511* addr builtin function dcl 114 ref 179 179 483 483 513 address_header based structure level 1 dcl 255 address_ptr 000100 automatic pointer dcl 76 set ref 129* 181 187* 192 195 198* 205* 351 351* 383* 473* 483* 521 521* alias_area_ptr 000102 automatic pointer dcl 77 set ref 383* 491* 492* 522 522* alias_names 000327 automatic varying char(256) dcl 426 set ref 494* 496* 496 498 500* 500 500 503* 510* arg based char packed unaligned dcl 78 set ref 149 149 166 169 171* 174 176 176 399 400 400 402 410* 412 arg_count 000104 automatic fixed bin(17,0) dcl 79 set ref 136* 137 147 162 392* 393 397 arg_idx 000105 automatic fixed bin(17,0) dcl 80 set ref 147* 148* 160* 160 162 165* 179* 186* 186* 397* 398* 401 407* 407* arg_len 000106 automatic fixed bin(21,0) dcl 81 set ref 148* 149 149 165* 166 169 171 171* 171 171 174 176 176 398* 399 400 400 401* 402 410 410 412 arg_ptr 000110 automatic pointer dcl 82 set ref 148* 149 149 165* 166 169 171 174 176 176 398* 399 400 400 401* 402 410 412 buffer 000431 automatic char(256) packed unaligned dcl 428 set ref 483 483 483 483 513 buffer_used based char packed unaligned dcl 429 set ref 513* buffer_used_len 000531 automatic fixed bin(21,0) dcl 430 set ref 482* 483* 513 513 ca_address_ptr 000112 automatic pointer dcl 83 set ref 179* 182* 187 check_star_name_ 000010 constant entry external dcl 48 ref 444 cleanup 000114 stack reference condition dcl 84 ref 130 385 code parameter fixed bin(35,0) dcl 285 in procedure "expand_mail_table_entry" set ref 278 293* 295* 296 304* 310* 316* 318* code 000223 automatic fixed bin(35,0) dcl 250 in procedure "validate_mte_path" set ref 325* 333* 335 337* 338 code 000430 automatic fixed bin(35,0) dcl 427 in procedure "display_one_address" set ref 444* 445 445* 452* 453 454 455 455* 460* 461 473* 475 475 475* 479* 483* 485 485* 492* 493 493* code 000122 automatic fixed bin(35,0) dcl 85 in procedure "smla" set ref 128* 131* 132 133* 179* 180 180* 198* 199 200* 205* 206 207 207* 209 211 211* 215 215* 219 223 223* 226 226* 229* 384* 387* 388 389* com_err_ 000012 constant entry external dcl 49 ref 133 389 default_project 000123 automatic bit(1) packed unaligned dcl 86 set ref 146* 176* 192 195 error_table_$action_not_performed 000056 external static fixed bin(35,0) dcl 97 ref 207 error_table_$bad_arg 000060 external static fixed bin(35,0) dcl 97 set ref 166* 402* error_table_$bad_index 000062 external static fixed bin(35,0) dcl 97 ref 453 error_table_$bad_subr_arg 000064 external static fixed bin(35,0) dcl 97 ref 219 error_table_$badopt 000066 external static fixed bin(35,0) dcl 97 set ref 410* error_table_$bigarg 000070 external static fixed bin(35,0) dcl 97 set ref 171* 209 error_table_$id_not_found 000072 external static fixed bin(35,0) dcl 97 ref 223 475 error_table_$inconsistent 000074 external static fixed bin(35,0) dcl 97 set ref 192* 219* error_table_$insufficient_access 000076 external static fixed bin(35,0) dcl 97 ref 211 error_table_$lock_wait_time_exceeded 000100 external static fixed bin(35,0) dcl 97 ref 226 error_table_$no_record 000102 external static fixed bin(35,0) dcl 97 ref 454 error_table_$no_w_permission 000104 external static fixed bin(35,0) dcl 97 ref 215 error_table_$noarg 000106 external static fixed bin(35,0) dcl 97 set ref 162* 195* error_table_$too_many_args 000110 external static fixed bin(35,0) dcl 97 set ref 150* 183* expanded_name parameter varying char dcl 284 set ref 278 297* 302* 303* 309* 318* flags 4 000126 automatic structure level 2 dcl 89 ignore_code 000124 automatic fixed bin(35,0) dcl 87 set ref 182* 351* 521* index builtin function dcl 114 ref 399 ioa_ 000014 constant entry external dcl 50 ref 505 509 510 511 513 last_char 000234 automatic char(1) packed unaligned dcl 370 set ref 372* 373 373 last_mte_name 000212 automatic varying char(32) dcl 249 set ref 308 314* length builtin function dcl 369 in procedure "ends_in_s" ref 372 length builtin function dcl 114 in procedure "smla" ref 475 479 483 483 500 logbox_creation_mode 2 000126 automatic fixed bin(17,0) level 2 dcl 89 set ref 139* lowercase 000007 constant char(26) initial packed unaligned dcl 439 ref 447 456 mail_system_$free_address 000016 constant entry external dcl 51 ref 182 304 310 316 351 521 mail_table_$get 000020 constant entry external dcl 53 ref 295 473 mail_table_$get_aliases 000022 constant entry external dcl 54 ref 492 mail_table_$get_name_by_index 000024 constant entry external dcl 56 ref 452 mail_table_$set 000026 constant entry external dcl 58 ref 205 mail_table_address based structure level 1 dcl 271 mail_table_address_ptr 000224 automatic pointer dcl 251 set ref 295* 301 302 303 304* 308 310* 314 316* 331* mail_table_aliases based structure level 1 dcl 3-42 mail_table_name parameter varying char dcl 283 set ref 278 295* match_star_name_ 000030 constant entry external dcl 59 ref 460 match_stars 000125 automatic bit(1) packed unaligned dcl 88 set ref 396* 406* 446 maxlength builtin function dcl 114 ref 171 mbz 4(02) 000126 automatic bit(34) level 3 packed packed unaligned dcl 89 set ref 143* mlsys_et_$circular_mtes 000112 external static fixed bin(35,0) dcl 97 ref 340 mlsys_utils_$format_address_field 000032 constant entry external dcl 60 ref 483 mlsys_utils_$parse_address_control_args 000034 constant entry external dcl 63 ref 179 mta based structure level 1 dcl 436 mta_idx 000563 automatic fixed bin(17,0) dcl 434 set ref 495* 496 496* mtap 000566 automatic pointer dcl 437 set ref 492* 495 496 496 mte_idx 000564 automatic fixed bin(17,0) dcl 435 set ref 443* 450* 450 452* mte_name 14 based varying char(32) level 2 dcl 271 set ref 303 308 314 337* n_names 2 based fixed bin(17,0) level 2 dcl 436 ref 495 names 3 based varying char(32) array level 2 dcl 436 ref 496 496 next_mte_name 000100 automatic varying char(32) dcl 289 set ref 314* 318* null builtin function dcl 114 ref 127 129 131 131 181 192 195 331 335 351 352 382 383 387 387 491 491 521 522 523 parse_ca_options based structure level 1 dcl 2-8 pcao 000126 automatic structure level 1 dcl 89 set ref 179 179 person_id 000133 automatic varying char(32) dcl 90 set ref 144* 171 174* 198* 205* 211* 211* 219* 223* 229* 412* 413* person_id_specified 000144 automatic bit(1) packed unaligned dcl 91 set ref 145* 150 152* 211* 219* 219* 223* 229* r_name 000542 automatic varying char(32) dcl 432 set ref 452* 456 462 469 r_name_lower 000553 automatic char(32) packed unaligned dcl 433 set ref 456* 460* rtrim builtin function dcl 114 ref 444 444 s_name_lower 000532 automatic char(32) packed unaligned dcl 431 set ref 447* 460* savebox_creation_mode 3 000126 automatic fixed bin(17,0) level 2 dcl 89 set ref 140* sci_ptr 000146 automatic pointer dcl 92 set ref 127* 131* 136* 137* 148* 150* 162* 165* 166* 171* 179* 180* 183* 192* 195* 200* 207* 209* 211* 215* 219* 223* 226* 229* 352 352* 382* 387* 392* 398* 401* 402* 410* 445* 455* 475* 479* 485* 491* 493* 522* 523 523* src_person_id 000170 automatic varying char(32) dcl 247 set ref 333* 340 ssu_$abort_line 000036 constant entry external dcl 65 ref 137 150 162 166 171 180 183 192 195 200 207 209 211 215 219 223 226 229 402 410 455 493 ssu_$arg_count 000042 constant entry external dcl 67 ref 136 392 ssu_$arg_ptr 000044 constant entry external dcl 68 ref 148 165 398 401 ssu_$destroy_invocation 000046 constant entry external dcl 69 ref 352 523 ssu_$get_area 000040 constant entry external dcl 66 ref 491 ssu_$print_message 000050 constant entry external dcl 71 ref 445 475 479 485 ssu_$release_area 000052 constant entry external dcl 72 ref 522 ssu_$standalone_invocation 000054 constant entry external dcl 73 ref 131 387 star_name 000150 automatic bit(1) packed unaligned dcl 93 set ref 442* 459* 468* 515 star_type 000151 automatic fixed bin(2,0) dcl 94 set ref 444* 446 458 467 substr builtin function dcl 114 ref 169 372 500 tgt_person_id 000201 automatic varying char(32) dcl 248 set ref 337* 340 340 translate builtin function dcl 438 ref 447 456 type 2 based fixed bin(17,0) level 2 dcl 255 ref 301 302 336 validate_addresses 4(01) 000126 automatic bit(1) level 3 packed packed unaligned dcl 89 set ref 142* version 000126 automatic char(8) level 2 packed packed unaligned dcl 89 set ref 138* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHECK_STAR_ENTRY_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_EQUAL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_LENGTH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NONASCII internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NULL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PATH_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_REJECT_WILD internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_UNIMPLEMENTED internal static bit(36) initial packed unaligned dcl 1-29 CREATE_AND_ANNOUNCE_MAILBOX internal static fixed bin(17,0) initial dcl 2-28 DONT_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 2-28 FORUM_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 INVALID_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 LOGBOX_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 MAILBOX_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 MAILING_LIST_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 MAIL_TABLE_ENTRY_VERSION_1 internal static char(8) initial packed unaligned dcl 3-16 NAMED_GROUP_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 SAVEBOX_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 2-28 USER_MAILBOX_ADDRESS internal static fixed bin(17,0) initial dcl 4-6 check_star based structure level 1 dcl 1-15 mail_table_aliases_extent automatic fixed bin(17,0) dcl 3-49 mail_table_aliases_ptr automatic pointer dcl 3-47 mail_table_entry based structure level 1 dcl 3-6 mail_table_entry_ptr automatic pointer dcl 3-15 mail_table_raw_entry based structure level 1 dcl 3-19 mail_table_raw_entry_ptr automatic pointer dcl 3-37 parse_ca_options_ptr automatic pointer dcl 2-23 NAMES DECLARED BY EXPLICIT CONTEXT. NO_NAME 001207 constant label dcl 160 ref 169 RETURN_FROM_DSMLA 002624 constant label dcl 417 ref 532 RETURN_FROM_SMLA 002240 constant label dcl 233 ref 361 abort_dsmla 004641 constant entry internal dcl 528 ref 387 387 abort_smla 003235 constant entry internal dcl 357 ref 131 131 check_aliases 004370 constant label dcl 498 cleanup_dsmla 004563 constant entry internal dcl 518 ref 385 416 531 cleanup_smla 003175 constant entry internal dcl 348 ref 130 201 232 360 display 004411 constant label dcl 505 display_mailing_address 002251 constant entry external dcl 377 display_one_address 003310 constant entry internal dcl 420 ref 393 413 dsmla 002242 constant entry external dcl 377 ends_in_s 003252 constant entry internal dcl 365 ref 211 479 485 expand_mail_table_entry 002743 constant entry internal dcl 278 ref 318 333 337 get_indexed_name 003442 constant label dcl 450 ref 454 461 515 get_primary_name 003616 constant label dcl 473 ref 446 463 470 set_mailing_address 000710 constant entry external dcl 44 smla 000701 constant entry external dcl 44 validate_mte_path 002625 constant entry internal dcl 236 ref 198 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5630 5744 5106 5640 Length 6334 5106 114 354 521 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME smla 616 external procedure is an external procedure. on unit on line 130 64 on unit validate_mte_path internal procedure shares stack frame of external procedure smla. expand_mail_table_entry 136 internal procedure calls itself recursively. cleanup_smla 70 internal procedure is called by several nonquick procedures. abort_smla 64 internal procedure is assigned to an entry variable. ends_in_s internal procedure shares stack frame of external procedure smla. on unit on line 385 64 on unit display_one_address internal procedure shares stack frame of external procedure smla. cleanup_dsmla 70 internal procedure is called by several nonquick procedures. abort_dsmla 64 internal procedure is assigned to an entry variable. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME expand_mail_table_entry 000100 next_mte_name expand_mail_table_entry smla 000100 address_ptr smla 000102 alias_area_ptr smla 000104 arg_count smla 000105 arg_idx smla 000106 arg_len smla 000110 arg_ptr smla 000112 ca_address_ptr smla 000122 code smla 000123 default_project smla 000124 ignore_code smla 000125 match_stars smla 000126 pcao smla 000133 person_id smla 000144 person_id_specified smla 000146 sci_ptr smla 000150 star_name smla 000151 star_type smla 000152 WHOAMI smla 000170 src_person_id validate_mte_path 000201 tgt_person_id validate_mte_path 000212 last_mte_name validate_mte_path 000223 code validate_mte_path 000224 mail_table_address_ptr validate_mte_path 000234 last_char ends_in_s 000244 acs_path display_one_address 000327 alias_names display_one_address 000430 code display_one_address 000431 buffer display_one_address 000531 buffer_used_len display_one_address 000532 s_name_lower display_one_address 000542 r_name display_one_address 000553 r_name_lower display_one_address 000563 mta_idx display_one_address 000564 mte_idx display_one_address 000566 mtap display_one_address THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars 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 enable_op shorten_stack ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_ com_err_ ioa_ mail_system_$free_address mail_table_$get mail_table_$get_aliases mail_table_$get_name_by_index mail_table_$set match_star_name_ mlsys_utils_$format_address_field mlsys_utils_$parse_address_control_args ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$get_area ssu_$print_message ssu_$release_area ssu_$standalone_invocation THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_arg error_table_$bad_index error_table_$bad_subr_arg error_table_$badopt error_table_$bigarg error_table_$id_not_found error_table_$inconsistent error_table_$insufficient_access error_table_$lock_wait_time_exceeded error_table_$no_record error_table_$no_w_permission error_table_$noarg error_table_$too_many_args mlsys_et_$circular_mtes LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 44 000700 126 000715 127 000720 128 000722 129 000723 130 000724 131 000746 132 001007 133 001011 134 001035 136 001036 137 001047 138 001102 139 001104 140 001106 141 001107 142 001111 143 001113 144 001115 145 001116 146 001117 147 001120 148 001127 149 001144 150 001156 152 001205 160 001207 162 001210 165 001237 166 001254 169 001306 171 001313 174 001354 175 001365 176 001366 179 001401 180 001422 181 001450 182 001454 183 001465 186 001511 187 001513 191 001515 192 001517 195 001551 198 001603 199 001623 200 001625 201 001646 202 001652 205 001653 206 001674 207 001676 209 001725 211 001754 215 002026 219 002054 223 002115 226 002153 229 002201 232 002234 233 002240 377 002241 381 002256 382 002261 383 002263 384 002266 385 002267 387 002311 388 002352 389 002354 390 002400 392 002401 393 002412 396 002421 397 002423 398 002431 399 002446 400 002462 401 002472 402 002512 406 002545 407 002546 409 002547 410 002550 412 002602 413 002613 414 002616 416 002620 417 002624 236 002625 325 002636 329 002637 331 002641 333 002643 335 002664 336 002673 337 002700 338 002717 340 002722 346 002741 278 002742 293 002763 295 002765 296 003015 297 003020 298 003022 301 003023 302 003030 303 003044 304 003055 305 003066 308 003067 309 003075 310 003077 311 003110 314 003111 316 003136 318 003150 320 003173 348 003174 351 003202 352 003217 353 003233 357 003234 360 003242 361 003247 365 003252 372 003263 373 003272 420 003310 442 003321 443 003322 444 003323 445 003373 446 003422 447 003426 450 003442 452 003444 453 003471 454 003476 455 003500 456 003522 458 003534 459 003540 460 003542 461 003562 462 003564 463 003576 467 003577 468 003601 469 003603 470 003615 473 003616 475 003645 479 003714 482 004004 483 004005 485 004053 490 004147 491 004156 492 004210 493 004242 494 004301 495 004302 496 004313 497 004365 498 004370 500 004375 502 004403 503 004404 505 004411 509 004440 510 004461 511 004502 513 004531 515 004557 516 004561 518 004562 521 004570 522 004605 523 004623 524 004637 528 004640 531 004646 532 004653 ----------------------------------------------------------- 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