COMPILATION LISTING OF SEGMENT add_mail_table_entry Compiled by: Multics PL/I Compiler, Release 32e, of September 22, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/02/89 0819.9 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(89-07-17,Lee), approve(89-08-01,MCR8124), 13* audit(89-09-25,LZimmerman), install(89-10-02,MR12.3-1079): 14* phx20861 (Mail 507) - modified update_mail_table_entry command to validate 15* address; modified update/add_mail_table_entry to not require participant 16* access to meetings which are added/updated by calling the new procedure 17* get_meeting_arg for meeting arguments. 18* 2) change(89-08-02,Lee), approve(89-08-22,MCR8128), 19* audit(89-09-25,LZimmerman), install(89-10-02,MR12.3-1079): 20* phx20700 (Mail 504), phx20967 (Mail 445) - modified 21* delete_mail_table_entry command to handle entry names case-insensitively 22* by calling mail_table_priv_$get to fetch the name with the exact case for 23* deleting; modified update_mail_table_entry command to delete alias entries 24* case-insensitively by calling the newly added 25* mail_table_priv_$delete_alias_case_ins instead of 26* mail_table_priv_$delete_alias; reformatting. 27* END HISTORY COMMENTS */ 28 29 30 /* format: style2,ifthenstmt,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 31 32 /* (add update delete)_mail_table_entry: these commands are used by 33* administrators to manipulate Mail Table entries. */ 34 35 /* Written: July 1983 by B. Margolin */ 36 /* Modified: 6 March 1984 by G. Palter to fix error #0427 -- delete_mail_table_entry does not give a usage message when 37* invoked with no arguments. In addition, the error message produced when attempting to delete an entry corresponding to 38* a PNT entry is incorrect */ 39 /* Modified: 10 April 1984 by G. Palter to fix error #0440 -- the mail table administrative commands do not enforce the 40* "acs" suffix on the ACS pathname */ 41 42 add_mail_table_entry: 43 proc options (variable); 44 45 dcl acs_dir char (168); 46 dcl acs_entry char (32); 47 dcl acs_given bit (1); 48 dcl acs_type fixed bin (2); 49 dcl addr builtin; 50 dcl address_ptr ptr; 51 dcl alias (1000) char (32) varying based (alias_ptr); 52 dcl alias_count fixed bin; 53 dcl alias_ptr ptr; 54 dcl arg char (arg_len) based (arg_ptr); 55 dcl arg_count fixed bin; 56 dcl arg_idx fixed bin; 57 dcl arg_len fixed bin (21); 58 dcl arg_ptr ptr; 59 dcl buffer char (256); 60 dcl buffer_used char (buffer_used_len) based (addr (buffer)); 61 dcl buffer_used_len fixed bin (21); 62 dcl cleanup condition; 63 dcl code fixed bin (35); 64 dcl dl_alias (1000) char (32) varying based (dl_alias_ptr); 65 dcl dl_alias_count fixed bin; 66 dcl dl_alias_ptr ptr; 67 dcl index builtin; 68 dcl length builtin; 69 dcl maxlength builtin; 70 dcl min builtin; 71 dcl 1 mte aligned like mail_table_entry; 72 dcl null builtin; 73 dcl 1 pcao aligned like parse_ca_options; 74 dcl (name, name1) char (32) varying; 75 dcl sci_ptr ptr; 76 dcl substr builtin; 77 dcl VERSION char (4) int static options (constant) init ("1.0"); 78 dcl WHOAMI char (32); 79 dcl yes_sw bit (1); 80 81 dcl ( 82 error_table_$bad_arg, 83 error_table_$bad_subr_arg, 84 error_table_$badopt, 85 error_table_$bigarg, 86 error_table_$id_already_exists, 87 error_table_$id_not_found, 88 error_table_$noarg, 89 error_table_$noentry, 90 error_table_$too_many_args, 91 mlsys_et_$ambiguous_address, 92 forum_error_table_$not_eligible 93 ) fixed bin (35) ext static; 94 95 dcl com_err_ entry () options (variable); 96 dcl command_query_$yes_no entry () options (variable); 97 dcl expand_pathname_$add_suffix 98 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 99 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), 100 fixed bin (35)); 101 dcl mail_system_$free_address 102 entry (ptr, fixed bin (35)); 103 dcl mail_system_$validate_address 104 entry (ptr, bit (1) aligned, fixed bin (35)); 105 dcl mail_table_$get entry (char (*) var, ptr, char (*), fixed bin (35)); 106 dcl mail_table_priv_$add entry (ptr, bit (1), fixed bin (35)); 107 dcl mail_table_priv_$add_alias 108 entry (char (*) var, char (*) var, bit (1), fixed bin (35)); 109 dcl mail_table_priv_$delete 110 entry (char (*) var, bit (1), fixed bin (35)); 111 dcl mail_table_priv_$delete_alias_case_ins 112 entry (char (*) var, bit (1), fixed bin (35)); 113 dcl mail_table_priv_$get entry (char (*) var, ptr, fixed bin (35)); 114 dcl mail_table_priv_$update 115 entry (ptr, bit (1), fixed bin (35)); 116 dcl mlsys_utils_$format_address_field 117 entry (char (*) var, ptr, fixed bin, ptr, fixed bin (21), fixed bin (21), 118 fixed bin (35)); 119 dcl mlsys_utils_$parse_address_control_args 120 entry (ptr, fixed bin, ptr, ptr, fixed bin (35)); 121 dcl mlsys_utils_$print_validate_results 122 entry (ptr, ptr, fixed bin (35)); 123 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 124 dcl ssu_$abort_line entry () options (variable); 125 dcl ssu_$arg_count entry (ptr, fixed bin); 126 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 127 dcl ssu_$destroy_invocation 128 entry (ptr); 129 dcl ssu_$get_temp_segment entry (ptr, char (*), ptr); 130 dcl ssu_$print_message entry () options (variable); 131 dcl ssu_$release_temp_segment 132 entry (ptr, ptr); 133 dcl ssu_$standalone_invocation 134 entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)); 135 1 1 /* START OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* Written by B. Margolin - 7/4/83 */ 1 4 1 5 /* format: style2,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 1 6 declare 1 mail_table_entry aligned based (mail_table_entry_ptr), 1 7 2 version char (8), 1 8 2 name char (32) varying, /* Person_id or entry name */ 1 9 2 acs_path, 1 10 3 dir char (168), 1 11 3 entry char (32), 1 12 2 default_project char (12) varying, 1 13 2 mailing_address char (256) varying; 1 14 1 15 declare mail_table_entry_ptr ptr; 1 16 declare MAIL_TABLE_ENTRY_VERSION_1 1 17 char (8) int static options (constant) init ("mte_0001"); 1 18 1 19 declare 1 mail_table_raw_entry 1 20 aligned based (mail_table_raw_entry_ptr), 1 21 2 version char (8), 1 22 2 name char (32) varying, 1 23 2 primary_name char (32) varying, /* for alias entries */ 1 24 2 flags, 1 25 3 alias_entry bit (1) unaligned, 1 26 3 registered_user bit (1) unaligned, /* In the PNT */ 1 27 3 mbz bit (34) unaligned, 1 28 2 n_names fixed bin, /* # names, including primary */ 1 29 2 next_name char (32) varying, /* Make a */ 1 30 2 prev_name char (32) varying, /* linked list */ 1 31 2 acs_path, 1 32 3 dir char (168), 1 33 3 entry char (32), 1 34 2 default_project char (12) varying, 1 35 2 mailing_address char (256) varying; 1 36 1 37 declare mail_table_raw_entry_ptr 1 38 ptr; 1 39 declare MAIL_TABLE_RAW_ENTRY_VERSION_1 1 40 char (8) int static options (constant) init ("mtre_001"); 1 41 1 42 declare 1 mail_table_aliases aligned based (mail_table_aliases_ptr), 1 43 2 version char (8), 1 44 2 n_names fixed bin, 1 45 2 names (mail_table_aliases_extent refer (mail_table_aliases.n_names)) char (32) varying; 1 46 1 47 declare mail_table_aliases_ptr 1 48 ptr; 1 49 declare mail_table_aliases_extent 1 50 fixed bin; 1 51 declare MAIL_TABLE_ALIASES_VERSION_1 1 52 int static options (constant) char (8) init ("mta_0001"); 1 53 1 54 /* END OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 136 137 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 */ 138 139 3 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 3 2 3 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 3 4 3 5 /* This include file contains branch and link structures returned by 3 6* hcs_$status_ and hcs_$status_long. */ 3 7 3 8 dcl 1 status_branch aligned based (status_ptr), 3 9 2 short aligned, 3 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 3 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 3 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 3 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 3 14 3 dtu bit (36) unaligned, /* date/time last used */ 3 15 3 mode bit (5) unaligned, /* caller's effective access */ 3 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 3 17 3 pad1 bit (8) unaligned, 3 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 3 19 3 20 /* Limit of information returned by hcs_$status_ */ 3 21 3 22 2 long aligned, 3 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 3 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 3 25 3 lvid bit (36) unaligned, /* logical volume ID */ 3 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 3 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 3 28 3 pad2 bit (8) unaligned, 3 29 3 copy_switch bit (1) unaligned, /* copy switch */ 3 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 3 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 3 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 3 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 3 34 3 pad3 bit (5) unaligned, 3 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 3 36 3 uid bit (36) unaligned; /* unique ID */ 3 37 3 38 dcl 1 status_link aligned based (status_ptr), 3 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 3 40 2 nnames fixed bin (16) unaligned unsigned, 3 41 2 names_relp bit (18) unaligned, 3 42 2 dtem bit (36) unaligned, 3 43 2 dtd bit (36) unaligned, 3 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 3 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 3 46 3 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 3 48 based (pointer (status_area_ptr, status_branch.names_relp)), 3 49 /* array of names returned */ 3 50 status_pathname character (status_link.pathname_length) aligned 3 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 3 52 /* link target path */ 3 53 status_area_ptr pointer, 3 54 status_ptr pointer; 3 55 3 56 dcl (Link initial (0), 3 57 Segment initial (1), 3 58 Directory initial (2)) fixed bin internal static options (constant); 3 59 /* values for type fields declared above */ 3 60 3 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 140 141 142 143 WHOAMI = "add_mail_table_entry"; 144 code = 0; 145 acs_given = "0"b; 146 sci_ptr, address_ptr, alias_ptr = null (); 147 acs_dir, acs_entry = ""; 148 on cleanup call cleanup_amte (); 149 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_amte, code); 150 if code ^= 0 then do; 151 call com_err_ (code, WHOAMI, "Creating standalone subsystem invocation."); 152 return; 153 end; 154 call ssu_$arg_count (sci_ptr, arg_count); 155 if arg_count < 2 then call ssu_$abort_line (sci_ptr, 0, "Usage: ^a name address {-control_args}", WHOAMI); 156 arg_idx = 1; 157 call get_name_arg (); 158 call ssu_$get_temp_segment (sci_ptr, "aliases", alias_ptr); 159 alias_count = 0; 160 pcao.version = PARSE_CA_OPTIONS_VERSION_1; 161 pcao.logbox_creation_mode = QUERY_TO_CREATE_MAILBOX; 162 pcao.savebox_creation_mode = QUERY_TO_CREATE_MAILBOX; 163 pcao.abort_on_errors = "1"b; 164 pcao.flags.mbz = ""b; 165 do arg_idx = 2 to arg_count; 166 167 pcao.validate_addresses = "1"b; 168 169 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 170 if arg = "-alias" then do; 171 call get_alias_arg (alias, alias_count); 172 if check_ambiguous_name (alias (alias_count)) then do; 173 call ssu_$print_message (sci_ptr, error_table_$id_already_exists, 174 "^/The alias ""^a"" will not be added.", alias (alias_count)); 175 alias_count = alias_count - 1; 176 end; 177 end; 178 else if arg = "-acs_path" then call get_acs_arg (); 179 else if arg = "-mtg" | arg = "-meeting" then call get_meeting_args (); 180 else call get_address_args (); 181 end; 182 if check_ambiguous_name (name) then 183 call ssu_$abort_line (sci_ptr, error_table_$id_already_exists, "The name ""^a"".", name); 184 if address_ptr = null () then 185 call ssu_$abort_line (sci_ptr, error_table_$noarg, "An address must be supplied."); 186 mte.version = MAIL_TABLE_ENTRY_VERSION_1; 187 mte.name = name; 188 if acs_given then do; 189 mte.dir = acs_dir; 190 mte.entry = acs_entry; 191 end; 192 else mte.dir, mte.entry = ""; 193 mte.default_project = ""; 194 buffer_used_len = 0; 195 call mlsys_utils_$format_address_field ("", address_ptr, -1, addr (buffer), 196 min (maxlength (mte.mailing_address), length (buffer)), buffer_used_len, code); 197 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Formatting address."); 198 mte.mailing_address = buffer_used; 199 call mail_table_priv_$add (addr (mte), "0"b, code); 200 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Adding Mail table entry for ""^a"".", name); 201 do arg_idx = 1 to alias_count; 202 call mail_table_priv_$add_alias (name, alias (arg_idx), "0"b, code); 203 if code ^= 0 then do; 204 if code = error_table_$id_not_found then 205 call ssu_$abort_line (sci_ptr, code, 206 "^/The new Mail Table entry for ""^a"" has been deleted by another user.", name); 207 call ssu_$print_message (sci_ptr, code, "Adding alias ""^a"" to ""^a"";this one will be skipped.", 208 alias (arg_idx), name); 209 code = 0; 210 end; 211 end; 212 RETURN_FROM_AMTE: 213 call cleanup_amte (); 214 return; 215 216 cleanup_amte: 217 proc (); 218 219 if alias_ptr ^= null () then call ssu_$release_temp_segment (sci_ptr, alias_ptr); 220 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 221 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 222 return; 223 224 end cleanup_amte; 225 226 abort_amte: 227 proc (); 228 229 go to RETURN_FROM_AMTE; 230 231 end abort_amte; 232 233 update_mail_table_entry: 234 entry options (variable); 235 236 WHOAMI = "update_mail_table_entry"; 237 code = 0; 238 address_ptr, sci_ptr, alias_ptr, dl_alias_ptr = null (); 239 alias_count, dl_alias_count = 0; 240 acs_given = "0"b; 241 acs_dir, acs_entry = ""; 242 on cleanup call cleanup_umte (); 243 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_umte, code); 244 if code ^= 0 then do; 245 call com_err_ (code, WHOAMI, "Creating standalone subsystem invocation."); 246 return; 247 end; 248 call ssu_$arg_count (sci_ptr, arg_count); 249 if arg_count < 2 then call ssu_$abort_line (sci_ptr, 0, "Usage: ^a name {address} {-control_args}", WHOAMI); 250 arg_idx = 1; 251 call get_name_arg (); 252 call ssu_$get_temp_segment (sci_ptr, "add_aliases", alias_ptr); 253 call ssu_$get_temp_segment (sci_ptr, "dl_aliases", dl_alias_ptr); 254 pcao.version = PARSE_CA_OPTIONS_VERSION_1; 255 pcao.logbox_creation_mode = QUERY_TO_CREATE_MAILBOX; 256 pcao.savebox_creation_mode = QUERY_TO_CREATE_MAILBOX; 257 pcao.abort_on_errors = "1"b; 258 pcao.flags.mbz = ""b; 259 260 do arg_idx = 2 to arg_count; 261 pcao.validate_addresses = "1"b; 262 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 263 if arg = "-alias" then do; 264 call get_alias_arg (alias, alias_count); 265 if check_ambiguous_name (alias (alias_count)) then do; 266 call ssu_$print_message (sci_ptr, error_table_$id_already_exists, 267 "^/The alias ""^a"" will not be added.", alias (alias_count)); 268 alias_count = alias_count - 1; 269 end; 270 end; 271 else if arg = "-delete_alias" then do; 272 call get_alias_arg (dl_alias, dl_alias_count); 273 if ^check_ambiguous_name (dl_alias (dl_alias_count)) then do; 274 call ssu_$print_message (sci_ptr, error_table_$id_not_found, 275 "^/The alias ""^a"" will not be deleted.", dl_alias (dl_alias_count)); 276 dl_alias_count = dl_alias_count - 1; 277 end; 278 end; 279 else if arg = "-acs_path" then call get_acs_arg (); 280 else call get_address_args (); 281 end; 282 mte.version = MAIL_TABLE_ENTRY_VERSION_1; 283 call mail_table_priv_$get (name, addr (mte), code); 284 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Retrieving old Mail Table entry for ""^a"".", name); 285 if acs_given then do; 286 mte.dir = acs_dir; 287 mte.entry = acs_entry; 288 end; 289 if address_ptr ^= null () then do; 290 buffer_used_len = 0; 291 call mlsys_utils_$format_address_field ("", address_ptr, -1, addr (buffer), 292 min (maxlength (mte.mailing_address), length (buffer)), buffer_used_len, code); 293 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Formatting address."); 294 mte.mailing_address = buffer_used; 295 end; 296 if acs_given | address_ptr ^= null () then do; /* Don't bother if just hacking aliases */ 297 call mail_table_priv_$update (addr (mte), "0"b, code); 298 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Updating the Mail Table entry for ""^a"".", name); 299 end; 300 name1 = mte.name; 301 do arg_idx = 1 to alias_count; 302 call mail_table_priv_$add_alias (name1, alias (arg_idx), "0"b, code); 303 if code ^= 0 then do; 304 if code = error_table_$id_not_found then 305 call ssu_$abort_line (sci_ptr, code, 306 "The Mail Table entry for ""^a"" has been deleted by another process.", name1); 307 call ssu_$print_message (sci_ptr, code, "Adding alias ""^a"" for ""^a""; skipping this one.", 308 alias (arg_idx), name); 309 code = 0; 310 end; 311 end; 312 do arg_idx = 1 to dl_alias_count; 313 call mail_table_priv_$get (dl_alias (arg_idx), addr (mte), code); 314 if code ^= 0 then do; 315 call ssu_$print_message (sci_ptr, code, "Looking up the alias ""^a""; skipping this one.", 316 dl_alias (arg_idx)); 317 code = 0; 318 end; 319 else do; 320 if mte.name = name1 then do; 321 call mail_table_priv_$delete_alias_case_ins (dl_alias (arg_idx), "0"b, code); 322 if code ^= 0 then do; 323 if code = error_table_$bad_subr_arg then 324 call ssu_$print_message (sci_ptr, 0, 325 "The name ""^a"" is a primary name or login alias; skipping this one.", 326 dl_alias (arg_idx)); 327 else call ssu_$print_message (sci_ptr, code, "Deleting the alias ""^a""; skiping this one.", 328 dl_alias (arg_idx)); 329 code = 0; 330 end; 331 end; 332 else call ssu_$print_message (sci_ptr, 0, """^a"" is not an alias for ""^a""; skipping this one.", 333 dl_alias (arg_idx), name); 334 end; 335 end; 336 RETURN_FROM_UMTE: 337 call cleanup_umte (); 338 return; 339 340 cleanup_umte: 341 proc (); 342 343 if alias_ptr ^= null () then call ssu_$release_temp_segment (sci_ptr, alias_ptr); 344 if dl_alias_ptr ^= null () then call ssu_$release_temp_segment (sci_ptr, dl_alias_ptr); 345 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 346 if sci_ptr ^= null () then call ssu_$destroy_invocation (sci_ptr); 347 return; 348 349 end cleanup_umte; 350 351 abort_umte: 352 proc (); 353 354 go to RETURN_FROM_UMTE; 355 356 end abort_umte; 357 358 delete_mail_table_entry: 359 entry options (variable); 360 361 WHOAMI = "delete_mail_table_entry"; 362 code = 0; 363 sci_ptr, alias_ptr = null (); 364 on cleanup 365 begin; 366 if sci_ptr ^= null then call ssu_$destroy_invocation (sci_ptr); 367 end; 368 call ssu_$standalone_invocation (sci_ptr, WHOAMI, VERSION, null (), abort_dmte, code); 369 if code ^= 0 then do; 370 call com_err_ (code, WHOAMI, "Creating standalone invocation."); 371 return; 372 end; 373 call ssu_$arg_count (sci_ptr, arg_count); 374 if arg_count = 0 then call ssu_$abort_line (sci_ptr, 0, "Usage: ^a names", WHOAMI); 375 call ssu_$get_temp_segment (sci_ptr, "names", alias_ptr); 376 do arg_idx = 1 to arg_count; /* Validate all the args first */ 377 call get_name_arg (); 378 alias (arg_idx) = name; 379 end; 380 381 mte.version = MAIL_TABLE_ENTRY_VERSION_1; 382 383 do arg_idx = 1 to arg_count; /* Now process them */ 384 385 call mail_table_priv_$get (alias (arg_idx), addr (mte), code); 386 if code ^= 0 then do; 387 call ssu_$print_message (sci_ptr, code, "Looking up the Mail Table entry ""^a""; skipping this one.", 388 alias (arg_idx)); 389 code = 0; 390 end; 391 else do; 392 393 call mail_table_priv_$delete (mte.name, "0"b, code); 394 if code ^= 0 then 395 if code = error_table_$bad_subr_arg then 396 call ssu_$print_message (sci_ptr, error_table_$bad_arg, 397 "The Mail Table entry ""^a"" corresponds to a registered user and may not be deleted.", 398 alias (arg_idx)); 399 else call ssu_$print_message (sci_ptr, code, "Deleting ""^a""; it will be skipped.", 400 alias (arg_idx)); 401 end; 402 end; 403 RETURN_FROM_DMTE: 404 call ssu_$release_temp_segment (sci_ptr, alias_ptr); 405 call ssu_$destroy_invocation (sci_ptr); 406 return; 407 408 abort_dmte: 409 proc (); 410 411 go to RETURN_FROM_DMTE; 412 413 end abort_dmte; 414 415 get_alias_arg: 416 proc (P_alias_array, P_alias_count); 417 418 dcl P_alias_array (*) char (*) varying; 419 dcl P_alias_count fixed bin; 420 421 dcl ctl_arg char (12); 422 423 ctl_arg = arg; 424 if arg_idx = arg_count then do; 425 NO_ALIAS: 426 call ssu_$abort_line (sci_ptr, error_table_$noarg, "^a must be followed by a name.", ctl_arg); 427 end; 428 arg_idx = arg_idx + 1; 429 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 430 if arg = "" then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "An alias may not be the null string."); 431 if substr (arg, 1, 1) = "-" then go to NO_ALIAS; 432 if arg_len > maxlength (mte.name) then 433 call ssu_$abort_line (sci_ptr, error_table_$bigarg, "^/The alias ""^a"" is longer than ^d characters.", 434 arg, maxlength (mte.name)); 435 P_alias_count = P_alias_count + 1; 436 P_alias_array (P_alias_count) = arg; 437 return; 438 439 end get_alias_arg; 440 441 442 get_acs_arg: 443 proc (); 444 445 if arg_idx = arg_count then do; 446 NO_ACS_PATH: 447 call ssu_$abort_line (sci_ptr, error_table_$noarg, "-acs_path must be followed by a pathname."); 448 end; 449 arg_idx = arg_idx + 1; 450 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 451 if index (arg, "-") = 1 then go to NO_ACS_PATH; 452 if arg = "" then 453 acs_dir, acs_entry = ""; 454 else do; 455 call expand_pathname_$add_suffix (arg, "acs", acs_dir, acs_entry, code); 456 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Expanding pathname ""^a"".", arg); 457 call hcs_$status_minf (acs_dir, acs_entry, 1, acs_type, (0), code); 458 if code = 0 then do; 459 if acs_type ^= Segment then do; 460 call command_query_$yes_no (yes_sw, 0, WHOAMI, 461 "A valid ACS must be a segment, but ^a is a directory.^/Set this ACS pathname anyway?", 462 "The specified ACS, ^a, is not a segment. Set it anyway?", pathname_ (acs_dir, acs_entry)); 463 if ^yes_sw then return; 464 end; 465 end; 466 else if code = error_table_$noentry then do; 467 call command_query_$yes_no (yes_sw, error_table_$noentry, WHOAMI, 468 "The specified ACS does not exist, so it will be treated as if there were^/no ACS path until the segment is created.^/Set this ACS pathname anyway?", 469 "The specified ACS, ^a, does not exist. Set it anyway?", pathname_ (acs_dir, acs_entry)); 470 if ^yes_sw then return; 471 end; 472 else call ssu_$abort_line (sci_ptr, code, "The acs segment ^a.", pathname_ (acs_dir, acs_entry)); 473 end; 474 acs_given = "1"b; 475 return; 476 477 end get_acs_arg; 478 479 get_name_arg: 480 proc (); 481 482 call ssu_$arg_ptr (sci_ptr, arg_idx, arg_ptr, arg_len); 483 if arg = "" then 484 call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 485 "The null string is not a valid Mail Table entry name."); 486 if substr (arg, 1, 1) = "-" then /* First arg must be name, not control arg */ 487 if WHOAMI = "delete_mail_table_entry" then 488 call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 489 else call ssu_$abort_line (sci_ptr, error_table_$noarg, 490 "^/The first argument must be the Mail Table entry name."); 491 if arg_len > maxlength (mte.name) then 492 call ssu_$abort_line (sci_ptr, error_table_$bigarg, "^/""^a"" is longer than ^d characters.", arg, 493 maxlength (mte.name)); 494 name = arg; 495 return; 496 end get_name_arg; 497 498 499 500 get_meeting_args: 501 proc (); 502 503 dcl ca_address_ptr ptr; 504 505 ca_address_ptr = null (); 506 on cleanup 507 begin; 508 if ca_address_ptr ^= null () then call mail_system_$free_address (ca_address_ptr, (0)); 509 end; 510 511 pcao.validate_addresses = "0"b; /* we'll do our own validation */ 512 call mlsys_utils_$parse_address_control_args (sci_ptr, arg_idx, addr (pcao), ca_address_ptr, code); 513 pcao.validate_addresses = "1"b; /* re-enable validation for others */ 514 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Parsing address arguments"); 515 call mail_system_$validate_address (ca_address_ptr, "0"b, code); 516 if code = forum_error_table_$not_eligible then code = 0; 517 /* not being a participant is okay */ 518 519 if code ^= 0 then do; 520 call mlsys_utils_$print_validate_results (sci_ptr, ca_address_ptr, code); 521 call mail_system_$free_address (ca_address_ptr, (0)); 522 call ssu_$abort_line (sci_ptr); 523 end; 524 525 if address_ptr ^= null () then do; /* Already gave an address */ 526 call mail_system_$free_address (ca_address_ptr, (0)); 527 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "Only one address may be specified."); 528 end; 529 revert cleanup; 530 address_ptr = ca_address_ptr; 531 arg_idx = arg_idx - 1; /* do loop will increment */ 532 return; 533 534 end get_meeting_args; 535 536 537 get_address_args: 538 proc (); 539 540 dcl ca_address_ptr ptr; 541 542 call mlsys_utils_$parse_address_control_args (sci_ptr, arg_idx, addr (pcao), ca_address_ptr, code); 543 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Parsing address arguments"); 544 if address_ptr ^= null () then do; /* Already gave an address */ 545 call mail_system_$free_address (ca_address_ptr, (0)); 546 call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "Only one address may be specified."); 547 end; 548 address_ptr = ca_address_ptr; 549 arg_idx = arg_idx - 1; /* do loop will increment */ 550 return; 551 552 end get_address_args; 553 554 /**** Returns TRUE if the name is in use (case-insensitively) ****/ 555 check_ambiguous_name: 556 proc (P_name) returns (bit (1)); 557 558 dcl P_name char (*) varying parameter; 559 560 dcl address_ptr ptr; 561 dcl code fixed bin (35); 562 563 address_ptr = null (); 564 code = 0; 565 on cleanup 566 begin; 567 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 568 end; 569 call mail_table_$get (P_name, address_ptr, (""), code); 570 if address_ptr ^= null () then call mail_system_$free_address (address_ptr, (0)); 571 revert cleanup; 572 if code = 0 | code = mlsys_et_$ambiguous_address then return ("1"b); 573 else if code = error_table_$id_not_found then return ("0"b); 574 else call ssu_$abort_line (sci_ptr, code, "Looking for ""^a"" in the Mail Table.", P_name); 575 576 end check_ambiguous_name; 577 578 579 end add_mail_table_entry; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/89 0815.0 add_mail_table_entry.pl1 >spec>install>1079>add_mail_table_entry.pl1 136 1 10/27/83 2104.2 mail_table_entry.incl.pl1 >ldd>include>mail_table_entry.incl.pl1 138 2 06/18/84 1324.1 mlsys_parse_ca_options.incl.pl1 >ldd>include>mlsys_parse_ca_options.incl.pl1 140 3 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_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. MAIL_TABLE_ENTRY_VERSION_1 000002 constant char(8) initial packed unaligned dcl 1-16 ref 186 282 381 PARSE_CA_OPTIONS_VERSION_1 000000 constant char(8) initial packed unaligned dcl 2-21 ref 160 254 P_alias_array parameter varying char array dcl 418 set ref 415 436* P_alias_count parameter fixed bin(17,0) dcl 419 set ref 415 435* 435 436 P_name parameter varying char dcl 558 set ref 555 569* 574* QUERY_TO_CREATE_MAILBOX constant fixed bin(17,0) initial dcl 2-28 ref 161 162 255 256 Segment constant fixed bin(17,0) initial dcl 3-56 ref 459 VERSION 000004 constant char(4) initial packed unaligned dcl 77 set ref 149* 243* 368* WHOAMI 000550 automatic char(32) packed unaligned dcl 78 set ref 143* 149* 151* 155* 236* 243* 245* 249* 361* 368* 370* 374* 460* 467* 486 abort_on_errors 4 000516 automatic bit(1) level 3 packed packed unaligned dcl 73 set ref 163* 257* acs_dir 000100 automatic char(168) packed unaligned dcl 45 set ref 147* 189 241* 286 452* 455* 457* 460* 460* 467* 467* 472* 472* acs_entry 000152 automatic char(32) packed unaligned dcl 46 set ref 147* 190 241* 287 452* 455* 457* 460* 460* 467* 467* 472* 472* acs_given 000162 automatic bit(1) packed unaligned dcl 47 set ref 145* 188 240* 285 296 474* acs_path 13 000314 automatic structure level 2 dcl 71 acs_type 000163 automatic fixed bin(2,0) dcl 48 set ref 457* 459 addr builtin function dcl 49 ref 195 195 198 199 199 283 283 291 291 294 297 297 313 313 385 385 512 512 542 542 address_ptr 000100 automatic pointer dcl 560 in procedure "check_ambiguous_name" set ref 563* 567 567* 569* 570 570* address_ptr 000164 automatic pointer dcl 50 in procedure "add_mail_table_entry" set ref 146* 184 195* 220 220* 238* 289 291* 296 345 345* 525 530* 544 548* alias based varying char(32) array dcl 51 set ref 171* 172* 173* 202* 207* 264* 265* 266* 302* 307* 378* 385* 387* 394* 399* alias_count 000166 automatic fixed bin(17,0) dcl 52 set ref 159* 171* 172 173 175* 175 201 239* 264* 265 266 268* 268 301 alias_ptr 000170 automatic pointer dcl 53 set ref 146* 158* 171 172 173 202 207 219 219* 238* 252* 264 265 266 302 307 343 343* 363* 375* 378 385 387 394 399 403* arg based char packed unaligned dcl 54 set ref 170 178 179 179 263 271 279 423 430 431 432* 436 451 452 455* 456* 483 486 486* 491* 494 arg_count 000172 automatic fixed bin(17,0) dcl 55 set ref 154* 155 165 248* 249 260 373* 374 376 383 424 445 arg_idx 000173 automatic fixed bin(17,0) dcl 56 set ref 156* 165* 169* 201* 202 207* 250* 260* 262* 301* 302 307* 312* 313 315 321 323 327 332* 376* 378* 383* 385 387 394 399* 424 428* 428 429* 445 449* 449 450* 482* 512* 531* 531 542* 549* 549 arg_len 000174 automatic fixed bin(21,0) dcl 57 set ref 169* 170 178 179 179 262* 263 271 279 423 429* 430 431 432 432 432 436 450* 451 452 455 455 456 456 482* 483 486 486 486 491 491 491 494 arg_ptr 000176 automatic pointer dcl 58 set ref 169* 170 178 179 179 262* 263 271 279 423 429* 430 431 432 436 450* 451 452 455 456 482* 483 486 486 491 494 buffer 000200 automatic char(256) packed unaligned dcl 59 set ref 195 195 195 195 198 291 291 291 291 294 buffer_used based char packed unaligned dcl 60 ref 198 294 buffer_used_len 000300 automatic fixed bin(21,0) dcl 61 set ref 194* 195* 198 290* 291* 294 ca_address_ptr 000624 automatic pointer dcl 540 in procedure "get_address_args" set ref 542* 545* 548 ca_address_ptr 000100 automatic pointer dcl 503 in procedure "get_meeting_args" set ref 505* 508 508* 512* 515* 520* 521* 526* 530 cleanup 000302 stack reference condition dcl 62 ref 148 242 364 506 529 565 571 code 000310 automatic fixed bin(35,0) dcl 63 in procedure "add_mail_table_entry" set ref 144* 149* 150 151* 195* 197 197* 199* 200 200* 202* 203 204 204* 207* 209* 237* 243* 244 245* 283* 284 284* 291* 293 293* 297* 298 298* 302* 303 304 304* 307* 309* 313* 314 315* 317* 321* 322 323 327* 329* 362* 368* 369 370* 385* 386 387* 389* 393* 394 394 399* 455* 456 456* 457* 458 466 472* 512* 514 514* 515* 516 516* 519 520* 542* 543 543* code 000102 automatic fixed bin(35,0) dcl 561 in procedure "check_ambiguous_name" set ref 564* 569* 572 572 573 574* com_err_ 000036 constant entry external dcl 95 ref 151 245 370 command_query_$yes_no 000040 constant entry external dcl 96 ref 460 467 ctl_arg 000576 automatic char(12) packed unaligned dcl 421 set ref 423* 425* default_project 75 000314 automatic varying char(12) level 2 dcl 71 set ref 193* dir 13 000314 automatic char(168) level 3 dcl 71 set ref 189* 192* 286* dl_alias based varying char(32) array dcl 64 set ref 272* 273* 274* 313* 315* 321* 323* 327* 332* dl_alias_count 000311 automatic fixed bin(17,0) dcl 65 set ref 239* 272* 273 274 276* 276 312 dl_alias_ptr 000312 automatic pointer dcl 66 set ref 238* 253* 272 273 274 313 315 321 323 327 332 344 344* entry 65 000314 automatic char(32) level 3 dcl 71 set ref 190* 192* 287* error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 81 set ref 394* 430* 483* error_table_$bad_subr_arg 000012 external static fixed bin(35,0) dcl 81 ref 323 394 error_table_$badopt 000014 external static fixed bin(35,0) dcl 81 set ref 486* error_table_$bigarg 000016 external static fixed bin(35,0) dcl 81 set ref 432* 491* error_table_$id_already_exists 000020 external static fixed bin(35,0) dcl 81 set ref 173* 182* 266* error_table_$id_not_found 000022 external static fixed bin(35,0) dcl 81 set ref 204 274* 304 573 error_table_$noarg 000024 external static fixed bin(35,0) dcl 81 set ref 184* 425* 446* 489* error_table_$noentry 000026 external static fixed bin(35,0) dcl 81 set ref 466 467* error_table_$too_many_args 000030 external static fixed bin(35,0) dcl 81 set ref 527* 546* expand_pathname_$add_suffix 000042 constant entry external dcl 97 ref 455 flags 4 000516 automatic structure level 2 dcl 73 forum_error_table_$not_eligible 000034 external static fixed bin(35,0) dcl 81 ref 516 hcs_$status_minf 000044 constant entry external dcl 99 ref 457 index builtin function dcl 67 ref 451 length builtin function dcl 68 ref 195 195 291 291 logbox_creation_mode 2 000516 automatic fixed bin(17,0) level 2 dcl 73 set ref 161* 255* mail_system_$free_address 000046 constant entry external dcl 101 ref 220 345 508 521 526 545 567 570 mail_system_$validate_address 000050 constant entry external dcl 103 ref 515 mail_table_$get 000052 constant entry external dcl 105 ref 569 mail_table_entry based structure level 1 dcl 1-6 mail_table_priv_$add 000054 constant entry external dcl 106 ref 199 mail_table_priv_$add_alias 000056 constant entry external dcl 107 ref 202 302 mail_table_priv_$delete 000060 constant entry external dcl 109 ref 393 mail_table_priv_$delete_alias_case_ins 000062 constant entry external dcl 111 ref 321 mail_table_priv_$get 000064 constant entry external dcl 113 ref 283 313 385 mail_table_priv_$update 000066 constant entry external dcl 114 ref 297 mailing_address 101 000314 automatic varying char(256) level 2 dcl 71 set ref 195 195 198* 291 291 294* maxlength builtin function dcl 69 ref 195 195 291 291 432 432 432 491 491 491 mbz 4(02) 000516 automatic bit(34) level 3 packed packed unaligned dcl 73 set ref 164* 258* min builtin function dcl 70 ref 195 195 291 291 mlsys_et_$ambiguous_address 000032 external static fixed bin(35,0) dcl 81 ref 572 mlsys_utils_$format_address_field 000070 constant entry external dcl 116 ref 195 291 mlsys_utils_$parse_address_control_args 000072 constant entry external dcl 119 ref 512 542 mlsys_utils_$print_validate_results 000074 constant entry external dcl 121 ref 520 mte 000314 automatic structure level 1 dcl 71 set ref 199 199 283 283 297 297 313 313 385 385 name 000523 automatic varying char(32) dcl 74 in procedure "add_mail_table_entry" set ref 182* 182* 187 200* 202* 204* 207* 283* 284* 298* 307* 332* 378 494* name 2 000314 automatic varying char(32) level 2 in structure "mte" dcl 71 in procedure "add_mail_table_entry" set ref 187* 300 320 393* 432 432 432 491 491 491 name1 000534 automatic varying char(32) dcl 74 set ref 300* 302* 304* 320 null builtin function dcl 72 ref 146 149 149 184 219 220 221 238 243 243 289 296 343 344 345 346 363 366 368 368 505 508 525 544 563 567 570 parse_ca_options based structure level 1 dcl 2-8 pathname_ 000076 constant entry external dcl 123 ref 460 460 467 467 472 472 pcao 000516 automatic structure level 1 dcl 73 set ref 512 512 542 542 savebox_creation_mode 3 000516 automatic fixed bin(17,0) level 2 dcl 73 set ref 162* 256* sci_ptr 000546 automatic pointer dcl 75 set ref 146* 149* 154* 155* 158* 169* 173* 182* 184* 197* 200* 204* 207* 219* 221 221* 238* 243* 248* 249* 252* 253* 262* 266* 274* 284* 293* 298* 304* 307* 315* 323* 327* 332* 343* 344* 346 346* 363* 366 366* 368* 373* 374* 375* 387* 394* 399* 403* 405* 425* 429* 430* 432* 446* 450* 456* 472* 482* 483* 486* 489* 491* 512* 514* 520* 522* 527* 542* 543* 546* 574* ssu_$abort_line 000100 constant entry external dcl 124 ref 155 182 184 197 200 204 249 284 293 298 304 374 425 430 432 446 456 472 483 486 489 491 514 522 527 543 546 574 ssu_$arg_count 000102 constant entry external dcl 125 ref 154 248 373 ssu_$arg_ptr 000104 constant entry external dcl 126 ref 169 262 429 450 482 ssu_$destroy_invocation 000106 constant entry external dcl 127 ref 221 346 366 405 ssu_$get_temp_segment 000110 constant entry external dcl 129 ref 158 252 253 375 ssu_$print_message 000112 constant entry external dcl 130 ref 173 207 266 274 307 315 323 327 332 387 394 399 ssu_$release_temp_segment 000114 constant entry external dcl 131 ref 219 343 344 403 ssu_$standalone_invocation 000116 constant entry external dcl 133 ref 149 243 368 substr builtin function dcl 76 ref 431 486 validate_addresses 4(01) 000516 automatic bit(1) level 3 packed packed unaligned dcl 73 set ref 167* 261* 511* 513* version 000516 automatic char(8) level 2 in structure "pcao" packed packed unaligned dcl 73 in procedure "add_mail_table_entry" set ref 160* 254* version 000314 automatic char(8) level 2 in structure "mte" dcl 71 in procedure "add_mail_table_entry" set ref 186* 282* 381* yes_sw 000560 automatic bit(1) packed unaligned dcl 79 set ref 460* 463 467* 470 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. 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 Directory internal static fixed bin(17,0) initial dcl 3-56 Link internal static fixed bin(17,0) initial dcl 3-56 MAIL_TABLE_ALIASES_VERSION_1 internal static char(8) initial packed unaligned dcl 1-51 MAIL_TABLE_RAW_ENTRY_VERSION_1 internal static char(8) initial packed unaligned dcl 1-39 SILENTLY_CREATE_MAILBOX internal static fixed bin(17,0) initial dcl 2-28 mail_table_aliases based structure level 1 dcl 1-42 mail_table_aliases_extent automatic fixed bin(17,0) dcl 1-49 mail_table_aliases_ptr automatic pointer dcl 1-47 mail_table_entry_ptr automatic pointer dcl 1-15 mail_table_raw_entry based structure level 1 dcl 1-19 mail_table_raw_entry_ptr automatic pointer dcl 1-37 parse_ca_options_ptr automatic pointer dcl 2-23 status_area_ptr automatic pointer dcl 3-47 status_branch based structure level 1 dcl 3-8 status_entry_names based char(32) array dcl 3-47 status_link based structure level 1 dcl 3-38 status_pathname based char dcl 3-47 status_ptr automatic pointer dcl 3-47 NAMES DECLARED BY EXPLICIT CONTEXT. NO_ACS_PATH 005030 constant label dcl 446 ref 451 NO_ALIAS 004625 constant label dcl 425 ref 431 RETURN_FROM_AMTE 002204 constant label dcl 212 ref 229 RETURN_FROM_DMTE 004354 constant label dcl 403 ref 411 RETURN_FROM_UMTE 003661 constant label dcl 336 ref 354 abort_amte 004455 constant entry internal dcl 226 ref 149 149 abort_dmte 004574 constant entry internal dcl 408 ref 368 368 abort_umte 004563 constant entry internal dcl 351 ref 243 243 add_mail_table_entry 001113 constant entry external dcl 42 check_ambiguous_name 006335 constant entry internal dcl 555 ref 172 182 265 273 cleanup_amte 004376 constant entry internal dcl 216 ref 148 212 cleanup_umte 004466 constant entry internal dcl 340 ref 242 336 delete_mail_table_entry 003667 constant entry external dcl 358 get_acs_arg 005024 constant entry internal dcl 442 ref 178 279 get_address_args 006215 constant entry internal dcl 537 ref 180 280 get_alias_arg 004604 constant entry internal dcl 415 ref 171 264 272 get_meeting_args 005737 constant entry internal dcl 500 ref 179 get_name_arg 005521 constant entry internal dcl 479 ref 157 251 377 update_mail_table_entry 002212 constant entry external dcl 233 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7354 7474 6537 7364 Length 10112 6537 120 401 614 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME add_mail_table_entry 821 external procedure is an external procedure. on unit on line 148 64 on unit cleanup_amte 71 internal procedure is called by several nonquick procedures. abort_amte 64 internal procedure is assigned to an entry variable. on unit on line 242 64 on unit cleanup_umte 71 internal procedure is called by several nonquick procedures. abort_umte 64 internal procedure is assigned to an entry variable. on unit on line 364 68 on unit abort_dmte 64 internal procedure is assigned to an entry variable. get_alias_arg internal procedure shares stack frame of external procedure add_mail_table_entry. get_acs_arg internal procedure shares stack frame of external procedure add_mail_table_entry. get_name_arg internal procedure shares stack frame of external procedure add_mail_table_entry. get_meeting_args 101 internal procedure enables or reverts conditions. on unit on line 506 72 on unit get_address_args internal procedure shares stack frame of external procedure add_mail_table_entry. check_ambiguous_name 112 internal procedure enables or reverts conditions. on unit on line 565 72 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add_mail_table_entry 000100 acs_dir add_mail_table_entry 000152 acs_entry add_mail_table_entry 000162 acs_given add_mail_table_entry 000163 acs_type add_mail_table_entry 000164 address_ptr add_mail_table_entry 000166 alias_count add_mail_table_entry 000170 alias_ptr add_mail_table_entry 000172 arg_count add_mail_table_entry 000173 arg_idx add_mail_table_entry 000174 arg_len add_mail_table_entry 000176 arg_ptr add_mail_table_entry 000200 buffer add_mail_table_entry 000300 buffer_used_len add_mail_table_entry 000310 code add_mail_table_entry 000311 dl_alias_count add_mail_table_entry 000312 dl_alias_ptr add_mail_table_entry 000314 mte add_mail_table_entry 000516 pcao add_mail_table_entry 000523 name add_mail_table_entry 000534 name1 add_mail_table_entry 000546 sci_ptr add_mail_table_entry 000550 WHOAMI add_mail_table_entry 000560 yes_sw add_mail_table_entry 000576 ctl_arg get_alias_arg 000624 ca_address_ptr get_address_args check_ambiguous_name 000100 address_ptr check_ambiguous_name 000102 code check_ambiguous_name get_meeting_args 000100 ca_address_ptr get_meeting_args THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 signal_op enable_op ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_$yes_no expand_pathname_$add_suffix hcs_$status_minf mail_system_$free_address mail_system_$validate_address mail_table_$get mail_table_priv_$add mail_table_priv_$add_alias mail_table_priv_$delete mail_table_priv_$delete_alias_case_ins mail_table_priv_$get mail_table_priv_$update mlsys_utils_$format_address_field mlsys_utils_$parse_address_control_args mlsys_utils_$print_validate_results pathname_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$destroy_invocation ssu_$get_temp_segment ssu_$print_message ssu_$release_temp_segment ssu_$standalone_invocation THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_subr_arg error_table_$badopt error_table_$bigarg error_table_$id_already_exists error_table_$id_not_found error_table_$noarg error_table_$noentry error_table_$too_many_args forum_error_table_$not_eligible mlsys_et_$ambiguous_address LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 001112 143 001120 144 001123 145 001124 146 001125 147 001131 148 001137 149 001161 150 001222 151 001224 152 001250 154 001251 155 001262 156 001316 157 001320 158 001321 159 001343 160 001344 161 001346 162 001350 163 001351 164 001353 165 001355 167 001365 169 001367 170 001404 171 001412 172 001427 173 001451 175 001504 177 001506 178 001507 179 001515 180 001532 181 001533 182 001535 184 001607 186 001637 187 001641 188 001646 189 001650 190 001653 191 001656 192 001657 193 001665 194 001666 195 001667 197 001735 198 001766 199 001776 200 002015 201 002047 202 002057 203 002107 204 002111 207 002143 209 002201 211 002202 212 002204 214 002210 233 002211 236 002217 237 002222 238 002223 239 002230 240 002232 241 002233 242 002241 243 002263 244 002324 245 002326 246 002352 248 002353 249 002364 250 002420 251 002422 252 002423 253 002450 254 002474 255 002476 256 002500 257 002501 258 002503 260 002505 261 002515 262 002517 263 002534 264 002542 265 002557 266 002601 268 002634 270 002636 271 002637 272 002643 273 002660 274 002702 276 002735 278 002737 279 002740 280 002746 281 002747 282 002751 283 002753 284 002776 285 003030 286 003032 287 003035 289 003040 290 003044 291 003045 293 003113 294 003144 296 003154 297 003162 298 003201 300 003233 301 003240 302 003247 303 003277 304 003301 307 003333 309 003371 311 003372 312 003374 313 003403 314 003430 315 003432 317 003465 318 003466 320 003467 321 003475 322 003523 323 003525 327 003564 329 003616 331 003617 332 003620 335 003657 336 003661 338 003665 358 003666 361 003674 362 003677 363 003700 364 003703 366 003717 367 003732 368 003733 369 003774 370 003776 371 004022 373 004023 374 004034 375 004072 376 004114 377 004123 378 004124 379 004136 381 004140 383 004142 385 004151 386 004176 387 004200 389 004233 390 004234 393 004235 394 004260 399 004320 402 004352 403 004354 405 004365 406 004374 216 004375 219 004403 220 004420 221 004437 222 004453 226 004454 229 004462 340 004465 343 004473 344 004510 345 004526 346 004545 347 004561 351 004562 354 004570 408 004573 411 004601 415 004604 423 004615 424 004622 425 004625 428 004655 429 004656 430 004673 431 004725 432 004732 435 004775 436 004777 437 005023 442 005024 445 005025 446 005030 449 005054 450 005055 451 005072 452 005106 455 005121 456 005157 457 005217 458 005257 459 005261 460 005264 463 005350 465 005354 466 005355 467 005360 470 005442 471 005446 472 005447 474 005516 475 005520 479 005521 482 005522 483 005537 486 005571 489 005635 491 005661 494 005724 495 005735 500 005736 505 005744 506 005746 508 005762 509 006000 511 006001 512 006004 513 006025 514 006030 515 006056 516 006074 519 006102 520 006104 521 006116 522 006130 525 006142 526 006147 527 006161 529 006206 530 006207 531 006212 532 006214 537 006215 542 006216 543 006237 544 006265 545 006271 546 006303 548 006327 549 006331 550 006333 555 006334 563 006350 564 006352 565 006353 567 006367 568 006405 569 006406 570 006435 571 006453 572 006454 573 006467 574 006477 576 006531 ----------------------------------------------------------- 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