COMPILATION LISTING OF SEGMENT mlsys_mailbox_utils_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/06/87 1021.7 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(83-07-01,Palter), approve(), audit(), install(): 13* Created: July 1983 by G. Palter. 14* 2) change(86-10-31,Lippard), approve(86-11-24,MCR7578), 15* audit(87-07-13,Dickson), install(87-08-06,MR12.1-1067): 16* Modified to use error_table_$bad_file_name instead of $badstar. 17* END HISTORY COMMENTS */ 18 19 20 /* format: off */ 21 22 /* Mail System Utilities related to mailbox management */ 23 24 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 25 26 27 mlsys_mailbox_utils_: 28 procedure (); 29 30 return; /* not an entrypoint */ 31 32 33 /* Common Parameters */ 34 35 dcl P_code fixed binary (35) parameter; 36 37 dcl P_mailbox_dirname character (*) parameter; /* pathname of the directory containing a mailbox */ 38 dcl P_mailbox_ename character (*) parameter; /* entryname of the mailbox (suffix optional) */ 39 40 dcl P_mailbox_acl_ptr pointer parameter; /* -> a mailbox_acl structure */ 41 42 43 /* list_mailbox_acl Parameters */ 44 45 dcl P_area_ptr pointer parameter; /* -> area where we'll allocate results */ 46 dcl P_mailbox_acl_version character (8) parameter; /* version of mailbox_acl structure desired */ 47 48 49 /* classify_mailbox_address Parameters */ 50 51 dcl P_mailbox_address_ptr pointer parameter; /* -> the mailbox address to classify */ 52 dcl P_mailbox_type fixed binary parameter; /* set to the type of mailbox at the address */ 53 54 55 /* delete_mailbox Parameters */ 56 57 dcl P_command_name character (*) parameter; /* name to be used in calls to command_query_ */ 58 dcl P_delete_mailbox_options_ptr pointer parameter; /* -> options which control when to delete the mailbox */ 59 60 61 /* Local copies of parameters */ 62 63 dcl code fixed binary (35); 64 65 dcl mailbox_dirname character (168); 66 dcl mailbox_ename character (32); 67 68 dcl the_area area based (the_area_ptr); 69 dcl the_area_ptr pointer; 70 71 72 /* Remaining declarations */ 73 74 dcl 1 listed_acl (mailbox_acl_n_acl_terms) aligned based (listed_acl_ptr) like segment_acl_entry; 75 dcl listed_acl_ptr pointer; 76 77 dcl 1 local_ma aligned, /* for setting newly created mailbox ACLs */ 78 2 header like mailbox_acl.header, 79 2 acl_terms (3) like mailbox_acl.acl_terms; 80 81 dcl idx fixed binary; 82 83 dcl addresses_match bit (1) aligned; 84 dcl try_to_delete bit (1); 85 86 dcl ANONYMOUS character (9) static options (constant) initial ("anonymous"); 87 88 /* format: off */ 89 dcl (error_table_$action_not_performed, error_table_$bad_subr_arg, error_table_$bad_file_name, error_table_$entlong, 90 error_table_$link, error_table_$moderr, error_table_$noalloc, error_table_$noentry, error_table_$not_seg_type, 91 error_table_$safety_sw_on, error_table_$unimplemented_version, mlsys_et_$mailbox_exists, mlsys_et_$no_mailbox, 92 mlsys_et_$not_mailbox) 93 fixed binary (35) external; 94 /* format: on */ 95 96 dcl command_query_$yes_no entry () options (variable); 97 dcl get_system_free_area_ entry () returns (pointer); 98 dcl hcs_$get_link_target entry (character (*), character (*), character (*), character (*), fixed binary (35)); 99 dcl mail_system_$compare_addresses entry (pointer, pointer, fixed binary (35)) returns (bit (1) aligned); 100 dcl mail_system_$get_address_pathname entry (pointer, character (*), character (*), character (*), fixed binary (35)); 101 dcl mailbox_$close entry (fixed binary, fixed binary (35)); 102 dcl mailbox_$create entry (character (*), character (*), fixed binary (35)); 103 dcl mailbox_$delete entry (character (*), character (*), fixed binary (35)); 104 dcl mailbox_$mbx_acl_add entry (character (*), character (*), pointer, fixed binary, fixed binary (35)); 105 dcl mailbox_$mbx_acl_delete entry (character (*), character (*), pointer, fixed binary, fixed binary (35)); 106 dcl mailbox_$mbx_acl_list entry (character (*), character (*), pointer, fixed binary, pointer, fixed binary (35)); 107 dcl mailbox_$mbx_acl_replace entry (character (*), character (*), pointer, fixed binary, fixed binary (35)); 108 dcl mailbox_$open entry (character (*), character (*), fixed binary, fixed binary (35)); 109 dcl mailbox_$set_safety_switch entry (character (*), character (*), bit (1) aligned, fixed binary (35)); 110 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 111 112 dcl (area, cleanup) condition; 113 114 dcl (addr, index, length, max, null, reverse, rtrim, substr) builtin; 115 116 /* Create the user's default mailbox (>udd>Project_id>Person_id>Person_id.mbx) if it doesn't already exist */ 117 118 create_default_mailbox: 119 entry (P_code); 120 121 call mail_system_$get_address_pathname (mlsys_data_$user_default_mailbox_address, mailbox_dirname, 122 mailbox_ename, ((32)" "), (0)); /* default mailbox pathname has to be OK */ 123 124 if mailbox_already_exists (mailbox_dirname, mailbox_ename, code) then code = mlsys_et_$mailbox_exists; 125 /* like it says: it's already there */ 126 127 else if code = error_table_$noentry then do; /* not there: try to create it */ 128 call mailbox_$create (mailbox_dirname, mailbox_ename, code); 129 if code = 0 then do; /* created it! */ 130 local_ma.version = MAILBOX_ACL_VERSION_1; 131 local_ma.n_acl_terms = 3; 132 if mlsys_data_$user_is_anonymous then /* ... special case the user ID */ 133 local_ma.acl_terms (1).access_name = ANONYMOUS || "." || mlsys_data_$project_id || ".*"; 134 else local_ma.acl_terms (1).access_name = mlsys_data_$person_id || ".*.*"; 135 local_ma.acl_terms (1).extended_mode = ADROSW_MBX_ACCESS; 136 local_ma.acl_terms (2).access_name = "*.SysDaemon.*"; 137 local_ma.acl_terms (3).access_name = "*.*.*"; 138 local_ma.acl_terms (2).extended_mode, local_ma.acl_terms (3).extended_mode = AOW_MBX_ACCESS; 139 call replace_mailbox_acl_entries (mailbox_dirname, mailbox_ename, addr (local_ma), code); 140 end; 141 end; 142 143 P_code = code; /* let the caller know what happened */ 144 145 return; 146 147 /* Create the user's logbox (>udd>Project_id>Person_id>Person_id.mbx) if it doesn't already exist */ 148 149 create_logbox: 150 entry (P_code); 151 152 call mail_system_$get_address_pathname (mlsys_data_$user_logbox_address, mailbox_dirname, mailbox_ename, 153 ((32)" "), (0)); /* logbox pathname has to be OK */ 154 155 if mailbox_already_exists (mailbox_dirname, mailbox_ename, code) then code = mlsys_et_$mailbox_exists; 156 /* like it says: it's already there */ 157 158 else if code = error_table_$noentry then do; /* not there: try to create it */ 159 call mailbox_$create (mailbox_dirname, mailbox_ename, code); 160 if code = 0 then do; /* created it! */ 161 local_ma.version = MAILBOX_ACL_VERSION_1; 162 local_ma.n_acl_terms = 1; 163 if mlsys_data_$user_is_anonymous then /* ... special case the user ID */ 164 local_ma.acl_terms (1).access_name = ANONYMOUS || "." || mlsys_data_$project_id || ".*"; 165 else local_ma.acl_terms (1).access_name = mlsys_data_$person_id || ".*.*"; 166 local_ma.acl_terms (1).extended_mode = ADROSW_MBX_ACCESS; 167 call replace_mailbox_acl_entries (mailbox_dirname, mailbox_ename, addr (local_ma), code); 168 end; 169 end; 170 171 P_code = code; /* let the caller know what happened */ 172 173 return; 174 175 /* Create one of the user's saveboxes */ 176 177 create_savebox: 178 entry (P_mailbox_dirname, P_mailbox_ename, P_code); 179 180 mailbox_dirname = P_mailbox_dirname; 181 182 if index (reverse (rtrim (P_mailbox_ename)), reverse (".sv")) = 1 then 183 mailbox_ename = substr (P_mailbox_ename, 1, (length (rtrim (P_mailbox_ename)) - length (".sv"))); 184 else mailbox_ename = P_mailbox_ename; /* already has right suffix or will be added shortly */ 185 call add_suffix (mailbox_ename, "sv.mbx", mailbox_ename, P_code); 186 if P_code ^= 0 then return; /* can't create proper pathname */ 187 188 if mailbox_already_exists (mailbox_dirname, mailbox_ename, code) then code = mlsys_et_$mailbox_exists; 189 /* like it says: it's already there */ 190 191 else if code = error_table_$noentry then do; /* not there: try to create it */ 192 call mailbox_$create (mailbox_dirname, mailbox_ename, code); 193 if code = 0 then do; /* created it! */ 194 local_ma.version = MAILBOX_ACL_VERSION_1; 195 local_ma.n_acl_terms = 1; 196 if mlsys_data_$user_is_anonymous then /* ... special case the user ID */ 197 local_ma.acl_terms (1).access_name = ANONYMOUS || "." || mlsys_data_$project_id || ".*"; 198 else local_ma.acl_terms (1).access_name = mlsys_data_$person_id || ".*.*"; 199 local_ma.acl_terms (1).extended_mode = ADROSW_MBX_ACCESS; 200 call replace_mailbox_acl_entries (mailbox_dirname, mailbox_ename, addr (local_ma), code); 201 end; 202 end; 203 204 P_code = code; /* let caller know what happened */ 205 206 return; 207 208 /* Create an arbitrary mailbox */ 209 210 create_mailbox: 211 entry (P_mailbox_dirname, P_mailbox_ename, P_code); 212 213 mailbox_dirname = P_mailbox_dirname; 214 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 215 if P_code ^= 0 then return; /* can't create proper pathname */ 216 217 if mailbox_already_exists (mailbox_dirname, mailbox_ename, code) then code = mlsys_et_$mailbox_exists; 218 /* like it says: it's already there */ 219 220 else if code = error_table_$noentry then do; /* not there: try to create it */ 221 call mailbox_$create (mailbox_dirname, mailbox_ename, code); 222 if code = 0 then do; /* created it! */ 223 local_ma.version = MAILBOX_ACL_VERSION_1; 224 local_ma.n_acl_terms = 3; 225 if mlsys_data_$user_is_anonymous then /* ... special case the user ID */ 226 local_ma.acl_terms (1).access_name = ANONYMOUS || "." || mlsys_data_$project_id || ".*"; 227 else local_ma.acl_terms (1).access_name = mlsys_data_$person_id || ".*.*"; 228 local_ma.acl_terms (1).extended_mode = ADROSW_MBX_ACCESS; 229 local_ma.acl_terms (2).access_name = "*.SysDaemon.*"; 230 local_ma.acl_terms (3).access_name = "*.*.*"; 231 local_ma.acl_terms (2).extended_mode, local_ma.acl_terms (3).extended_mode = AOW_MBX_ACCESS; 232 call replace_mailbox_acl_entries (mailbox_dirname, mailbox_ename, addr (local_ma), code); 233 end; 234 end; 235 236 P_code = code; /* let caller know what happened */ 237 238 return; 239 240 /* Add the specified entries to the ACL of a mailbox: A simpler interface than mailbox_$mbx_acl_add */ 241 242 add_mailbox_acl_entries: 243 entry (P_mailbox_dirname, P_mailbox_ename, P_mailbox_acl_ptr, P_code); 244 245 mailbox_dirname = P_mailbox_dirname; 246 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 247 if P_code ^= 0 then return; /* bad entryname */ 248 249 mailbox_acl_ptr = P_mailbox_acl_ptr; 250 if mailbox_acl.version ^= MAILBOX_ACL_VERSION_1 then do; 251 P_code = error_table_$unimplemented_version; 252 return; 253 end; 254 255 if mailbox_acl.n_acl_terms < 1 then do; /* must add at least one term */ 256 P_code = error_table_$bad_subr_arg; 257 return; 258 end; 259 260 begin; /* must make a slightly different copy of the ACL structure */ 261 262 dcl 1 mbx_acl_array (mailbox_acl.n_acl_terms) aligned like segment_acl_entry; 263 264 do idx = 1 to mailbox_acl.n_acl_terms; 265 mbx_acl_array (idx).access_name = mailbox_acl.acl_terms (idx).access_name; 266 mbx_acl_array (idx).mode = RW_ACCESS; /* caller doesn't supply this ... */ 267 mbx_acl_array (idx).extended_mode = mailbox_acl.acl_terms (idx).extended_mode; 268 end; 269 270 call mailbox_$mbx_acl_add (mailbox_dirname, mailbox_ename, addr (mbx_acl_array), mailbox_acl.n_acl_terms, 271 code); 272 273 do idx = 1 to mailbox_acl.n_acl_terms; 274 mailbox_acl.acl_terms (idx).code = mbx_acl_array (idx).status_code; 275 end; 276 end; 277 278 P_code = code; /* global result */ 279 280 return; 281 282 /* Delete the specified entries from the ACL of a mailbox: A simpler interface than mailbox_$mbx_acl_delete */ 283 284 delete_mailbox_acl_entries: 285 entry (P_mailbox_dirname, P_mailbox_ename, P_mailbox_acl_ptr, P_code); 286 287 mailbox_dirname = P_mailbox_dirname; 288 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 289 if P_code ^= 0 then return; /* bad entryname */ 290 291 mailbox_acl_ptr = P_mailbox_acl_ptr; 292 if mailbox_acl.version ^= MAILBOX_ACL_VERSION_1 then do; 293 P_code = error_table_$unimplemented_version; 294 return; 295 end; 296 297 if mailbox_acl.n_acl_terms < 1 then do; /* must delete at least one term */ 298 P_code = error_table_$bad_subr_arg; 299 return; 300 end; 301 302 begin; /* must make a slightly different copy of the ACL structure */ 303 304 dcl 1 mbx_acl_array (mailbox_acl.n_acl_terms) aligned like segment_acl_entry; 305 306 do idx = 1 to mailbox_acl.n_acl_terms; 307 mbx_acl_array (idx).access_name = mailbox_acl.acl_terms (idx).access_name; 308 end; /* mode fields are ignored */ 309 310 call mailbox_$mbx_acl_delete (mailbox_dirname, mailbox_ename, addr (mbx_acl_array), 311 mailbox_acl.n_acl_terms, code); 312 313 do idx = 1 to mailbox_acl.n_acl_terms; 314 mailbox_acl.acl_terms (idx).code = mbx_acl_array (idx).status_code; 315 end; 316 end; 317 318 P_code = code; /* global result */ 319 320 return; 321 322 /* Replace the ACL of a mailbox: A simpler interface than mailbox_$mbx_acl_replace */ 323 324 replace_mailbox_acl_entries: 325 entry (P_mailbox_dirname, P_mailbox_ename, P_mailbox_acl_ptr, P_code); 326 327 mailbox_dirname = P_mailbox_dirname; 328 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 329 if P_code ^= 0 then return; /* bad entryname */ 330 331 mailbox_acl_ptr = P_mailbox_acl_ptr; 332 if mailbox_acl.version ^= MAILBOX_ACL_VERSION_1 then do; 333 P_code = error_table_$unimplemented_version; 334 return; 335 end; 336 337 begin; /* must make a slightly different copy of the ACL structure */ 338 339 dcl 1 mbx_acl_array (max (1, mailbox_acl.n_acl_terms)) aligned like segment_acl_entry; 340 /* PL/I abhors a vacuum */ 341 dcl n_replacement_acl_terms fixed binary; 342 343 do idx = 1 to mailbox_acl.n_acl_terms; 344 mbx_acl_array (idx).access_name = mailbox_acl.acl_terms (idx).access_name; 345 mbx_acl_array (idx).mode = RW_ACCESS; /* caller doesn't supply this ... */ 346 mbx_acl_array (idx).extended_mode = mailbox_acl.acl_terms (idx).extended_mode; 347 end; 348 349 if mailbox_acl.n_acl_terms = 0 then /* mailbox_ uses -1 instead of 0 for an empty ACL */ 350 n_replacement_acl_terms = -1; 351 else n_replacement_acl_terms = mailbox_acl.n_acl_terms; 352 353 call mailbox_$mbx_acl_replace (mailbox_dirname, mailbox_ename, addr (mbx_acl_array), 354 n_replacement_acl_terms, code); 355 356 do idx = 1 to mailbox_acl.n_acl_terms; 357 mailbox_acl.acl_terms (idx).code = mbx_acl_array (idx).status_code; 358 end; 359 end; 360 361 P_code = code; /* global result */ 362 363 return; 364 365 /* List the ACL of a mailbox: A simpler interface than mailbox_$mbx_acl_list */ 366 367 list_mailbox_acl: 368 entry (P_mailbox_dirname, P_mailbox_ename, P_area_ptr, P_mailbox_acl_version, P_mailbox_acl_ptr, P_code); 369 370 mailbox_dirname = P_mailbox_dirname; 371 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 372 if P_code ^= 0 then return; /* bad entryname */ 373 374 if P_area_ptr = null () then /* where to put the listing */ 375 the_area_ptr = get_system_free_area_ (); 376 else the_area_ptr = P_area_ptr; 377 378 if P_mailbox_acl_version ^= MAILBOX_ACL_VERSION_1 then do; 379 P_code = error_table_$unimplemented_version; 380 return; 381 end; 382 383 mailbox_acl_ptr, listed_acl_ptr = null (); /* for cleanup handler */ 384 385 on condition (cleanup) 386 begin; 387 if mailbox_acl_ptr ^= null () then free mailbox_acl in (the_area); 388 if listed_acl_ptr ^= null () then free listed_acl in (the_area); 389 end; 390 391 on condition (area) 392 begin; /* something won't fit */ 393 code = error_table_$noalloc; 394 go to ERROR_RETURN_FROM_LIST_MAILBOX_ACL; 395 end; 396 397 call mailbox_$mbx_acl_list (mailbox_dirname, mailbox_ename, listed_acl_ptr, mailbox_acl_n_acl_terms, 398 the_area_ptr, code); 399 400 if code = 0 then do; /* got something back */ 401 allocate mailbox_acl in (the_area) set (mailbox_acl_ptr); 402 mailbox_acl.version = MAILBOX_ACL_VERSION_1; 403 do idx = 1 to mailbox_acl.n_acl_terms; 404 mailbox_acl.acl_terms (idx).access_name = listed_acl (idx).access_name; 405 mailbox_acl.acl_terms (idx).extended_mode = listed_acl (idx).extended_mode; 406 mailbox_acl.acl_terms (idx).code = listed_acl (idx).status_code; 407 end; 408 free listed_acl in (the_area); 409 listed_acl_ptr = null (); 410 P_mailbox_acl_ptr = mailbox_acl_ptr; /* ... don't set output parameter unless we got something */ 411 end; 412 413 P_code = code; /* global result */ 414 415 return; 416 417 418 /* Control arrives here iff it wasn't possible to allocate the ACL in the caller's area */ 419 420 ERROR_RETURN_FROM_LIST_MAILBOX_ACL: 421 if mailbox_acl_ptr ^= null () then free mailbox_acl in (the_area); 422 if listed_acl_ptr ^= null () then free listed_acl in (the_area); 423 424 P_code = code; 425 426 return; 427 428 /* Determine the type of a mailbox (user's default/logbox/savebox/other) given the address of the mailbox */ 429 430 classify_mailbox_address: 431 entry (P_mailbox_address_ptr, P_mailbox_type, P_code); 432 433 addresses_match = /* is it our default mailbox? */ 434 mail_system_$compare_addresses (P_mailbox_address_ptr, mlsys_data_$user_default_mailbox_address, code); 435 if code ^= 0 then do; /* something's wrong (with the address probably) */ 436 CANT_CLASSIFY_THE_MAILBOX: 437 P_code = code; 438 return; 439 end; 440 441 if addresses_match then /* yes, it is */ 442 P_mailbox_type = USER_DEFAULT_MAILBOX; 443 444 else do; /* no: is it the user's logbox */ 445 addresses_match = 446 mail_system_$compare_addresses (P_mailbox_address_ptr, mlsys_data_$user_logbox_address, code); 447 if code ^= 0 then go to CANT_CLASSIFY_THE_MAILBOX; 448 449 if addresses_match then 450 P_mailbox_type = USER_LOGBOX; 451 452 else do; /* no: either savebox/ordinary depending on suffix */ 453 call mail_system_$get_address_pathname (P_mailbox_address_ptr, ((168)" "), mailbox_ename, ((32)" "), 454 code); 455 if code ^= 0 then go to CANT_CLASSIFY_THE_MAILBOX; 456 457 if index (reverse (rtrim (mailbox_ename)), reverse (".sv.mbx")) = 1 then 458 P_mailbox_type = SAVEBOX; 459 else P_mailbox_type = OTHER_MAILBOX; 460 end; 461 end; 462 463 P_code = 0; /* here iff we succeeded */ 464 465 return; 466 467 /* Delete the specified mailbox: If the mailbox is protected by its safety switch, this entrypoint will query the user 468* for permission to delete the mailbox at the caller's request */ 469 470 delete_mailbox: 471 entry (P_mailbox_dirname, P_mailbox_ename, P_command_name, P_delete_mailbox_options_ptr, P_code); 472 473 mailbox_dirname = P_mailbox_dirname; 474 call add_suffix (P_mailbox_ename, "mbx", mailbox_ename, P_code); 475 if P_code ^= 0 then return; /* can't create proper pathname */ 476 477 delete_mailbox_options_ptr = P_delete_mailbox_options_ptr; 478 if delete_mailbox_options.version ^= DELETE_MAILBOX_OPTIONS_VERSION_1 then 479 call return_from_delete_mailbox (error_table_$unimplemented_version); 480 if delete_mailbox_options.mbz ^= ""b then call return_from_delete_mailbox (error_table_$bad_subr_arg); 481 482 483 /* Try to delete the mailbox: chase links if necessary */ 484 485 RETRY_MAILBOX_DELETE_CALL: 486 call mailbox_$delete (mailbox_dirname, mailbox_ename, code); 487 488 if (code = error_table_$bad_file_name) | (code = error_table_$not_seg_type) then 489 call return_from_delete_mailbox (mlsys_et_$not_mailbox); 490 491 else if code = error_table_$link then /* the pathname supplied is that of a link ... */ 492 if delete_mailbox_options.chase then do; /* ... but that's OK: try to delete the target */ 493 call hcs_$get_link_target (mailbox_dirname, mailbox_ename, mailbox_dirname, mailbox_ename, code); 494 if code ^= 0 then call return_from_delete_mailbox (code); 495 go to RETRY_MAILBOX_DELETE_CALL; 496 end; 497 else call return_from_delete_mailbox (error_table_$link); 498 499 500 /* Safety switch processing */ 501 502 if code = error_table_$safety_sw_on then 503 if delete_mailbox_options.force then do; /* turn of the safety switch (if possible) and try again... */ 504 call mailbox_$set_safety_switch (mailbox_dirname, mailbox_ename, "0"b, code); 505 if code ^= 0 then call return_from_delete_mailbox (code); 506 go to RETRY_MAILBOX_DELETE_CALL; 507 end; 508 509 else if delete_mailbox_options.query then do;/* ask the user's permission to delete it */ 510 call command_query_$yes_no (try_to_delete, 0, P_command_name, "", 511 "^a is protected by safety switch. Do you want to delete it?", 512 pathname_ (mailbox_dirname, mailbox_ename)); 513 if try_to_delete then do; /* ... user said it's OK to try ... */ 514 call mailbox_$set_safety_switch (mailbox_dirname, mailbox_ename, "0"b, code); 515 if code ^= 0 then call return_from_delete_mailbox (code); 516 go to RETRY_MAILBOX_DELETE_CALL; 517 end; 518 else call return_from_delete_mailbox (error_table_$action_not_performed); 519 end; /* ... inform caller that the user denied permission */ 520 521 else call return_from_delete_mailbox (error_table_$safety_sw_on); 522 523 524 /* Inform the caller of the success/failure of the deletion */ 525 526 if code = error_table_$noentry then /* we never return this code ... */ 527 call return_from_delete_mailbox (mlsys_et_$no_mailbox); 528 else call return_from_delete_mailbox (code); 529 530 531 532 /* Returns from the delete_mailbox entrypoint with the specified status code */ 533 534 return_from_delete_mailbox: 535 procedure (p_code); 536 537 dcl p_code fixed binary (35) parameter; 538 539 P_code = p_code; /* set the caller's status code */ 540 go to RETURN_FROM_DELETE_MAILBOX; 541 542 end return_from_delete_mailbox; 543 544 RETURN_FROM_DELETE_MAILBOX: 545 return; 546 547 /* Add the specified suffix to an entryname if possible */ 548 549 add_suffix: 550 procedure (p_ename, p_suffix, p_new_ename, p_code); 551 552 dcl (p_ename, p_suffix) character (*) parameter; 553 dcl p_new_ename character (32) parameter; 554 dcl p_code fixed binary (35) parameter; 555 556 dcl (trimmed_ename, trimmed_suffix) character (33) varying; 557 558 if length (rtrim (p_ename)) > length (p_new_ename) then do; 559 p_code = error_table_$entlong; 560 return; 561 end; 562 563 trimmed_ename = rtrim (p_ename); 564 trimmed_suffix = "." || rtrim (p_suffix); 565 566 if length (trimmed_ename) > length (trimmed_suffix) then 567 /* original name has room for the suffix */ 568 if substr (trimmed_ename, (length (trimmed_ename) - length (trimmed_suffix) + 1)) = trimmed_suffix then 569 ; /* proper suffix is already present */ 570 else trimmed_ename = trimmed_ename || trimmed_suffix; 571 else trimmed_ename = trimmed_ename || trimmed_suffix; 572 573 p_new_ename = trimmed_ename; /* return it */ 574 575 if length (trimmed_ename) <= length (p_new_ename) then 576 p_code = 0; /* it fit */ 577 else p_code = error_table_$entlong; /* sorry */ 578 579 return; 580 581 end add_suffix; 582 583 /* Determines if the specified mailbox already exists */ 584 585 mailbox_already_exists: 586 procedure (p_mailbox_dirname, p_mailbox_ename, p_code) returns (bit (1) aligned); 587 588 dcl p_mailbox_dirname character (*) parameter; 589 dcl p_mailbox_ename character (*) parameter; 590 dcl p_code fixed binary (35); 591 592 dcl mailbox_index fixed binary; 593 594 mailbox_index = 0; /* for cleanup handler */ 595 596 on condition (cleanup) 597 begin; 598 if mailbox_index ^= 0 then call mailbox_$close (mailbox_index, (0)); 599 end; 600 601 call mailbox_$open (p_mailbox_dirname, p_mailbox_ename, mailbox_index, p_code); 602 if p_code = error_table_$moderr then p_code = 0; /* ... it's there but we don't have access */ 603 604 call mailbox_$close (mailbox_index, (0)); /* don't need it open anymore */ 605 mailbox_index = 0; 606 607 return ((p_code = 0)); 608 609 end mailbox_already_exists; 610 1 1 /* BEGIN INCLUDE FILE ... mlsys_data.incl.pl1 */ 1 2 /* Created: 20 Decembber 1978 by G. Palter */ 1 3 /* Modified: 1 July 1983 by G. Palter to merge with mlsys_internal_data_ */ 1 4 1 5 /* Constants defined by the Multics mail system for external use */ 1 6 1 7 dcl mlsys_data_$system_directory character (168) external; /* directory containing per-system data (mail table/queues) */ 1 8 1 9 1 10 /* Static data defined by the Multics mail system for external use */ 1 11 1 12 dcl mlsys_data_$user_default_mailbox_address pointer external; 1 13 /* -> the address of the user's default mailbox */ 1 14 dcl mlsys_data_$user_mail_table_address pointer external; /* -> the address of the user's entry in the mail table */ 1 15 dcl mlsys_data_$user_logbox_address pointer external; /* -> the address of the user's logbox */ 1 16 1 17 /* END INCLUDE FILE ... mlsys_data.incl.pl1 */ 611 612 2 1 /* BEGIN INCLUDE FILE ... mlsys_internal_data.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-06-11,Mills), approve(86-06-11,MCR7419), 2 6* audit(86-06-17,Margolin), install(86-06-30,MR12.0-1080): 2 7* Added mlsys_data_$domains_available. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Created: May 1981 by G. Palter */ 2 12 /* Modified: July 1983 by G. Palter to merge with mlsys_data_ */ 2 13 2 14 /* Constants used internally by the Multics mail system */ 2 15 2 16 dcl mlsys_data_$max_opening_retries fixed binary external; /* maximum number of times to reopen a mailbox if it gets 2 17* damaged and salvaged while open */ 2 18 2 19 dcl mlsys_data_$max_lock_wait_retries fixed binary external; 2 20 /* maximum number of times to try to send a message while the 2 21* mailbox is locked (being salvaged?) */ 2 22 2 23 2 24 /* Allocation overhead factors: When allocating those structures with refer extents, insure that the variable portion of 2 25* the structure contains a multiple of the appropriate constant number of slots. These extra slots will be used for 2 26* later additions to the structure; when a new element must be added to a full structure, add this many new slots (rather 2 27* than a single new slot) 2 28* 2 29* The following expression should be used to determine the initial allocation: 2 30* 2 31* n_slots_to_allocate = n_slots_needed + CONSTANT - mod (n_slots_needed, CONSTANT); */ 2 32 2 33 dcl (mlsys_data_$mailbox_allocation, /* mailbox.messages */ 2 34 mlsys_data_$message_body_sections_allocation, /* message.body_sections */ 2 35 mlsys_data_$message_redistributions_list_allocation, /* message_redistributions_list.redistributions */ 2 36 mlsys_data_$message_user_fields_allocation, /* message_user_fields_list.user_fields */ 2 37 mlsys_data_$message_references_list_allocation, /* message_references_list.references */ 2 38 mlsys_data_$address_list_allocation) /* address_list.addresses */ 2 39 fixed binary external; 2 40 2 41 2 42 /* Static data user by the Multics mail system */ 2 43 2 44 dcl (mlsys_data_$forum_not_available, /* 1 => forum isn't available on the system or in this ring */ 2 45 mlsys_data_$ism_not_available, /* 1 => no inter-system mailer on this system */ 2 46 mlsys_data_$domains_available) /* 1 => domain name system software on this sytem */ 2 47 fixed binary (1) external; 2 48 2 49 dcl (mlsys_data_$subsystem_ring, /* ring in which the mail system is secured */ 2 50 mlsys_data_$highest_usable_ring, /* highest ring of execution which may use the mail system */ 2 51 mlsys_data_$lowest_forum_ring) /* lowest ring of execution with access to forum */ 2 52 fixed binary (3) external; 2 53 2 54 dcl mlsys_data_$temp_segment_list_ptr pointer external; /* -> list of all mail system temporary segments */ 2 55 2 56 dcl mlsys_data_$valid_segments (0:4095) bit (1) unaligned external; 2 57 /* indicates which segments have been used by the mail system 2 58* for the allocation of user-visible data in order to 2 59* validate that pointers passed from the user-ring are OK */ 2 60 2 61 dcl mlsys_area area based (mlsys_data_$subsystem_area_ptr);/* area used for all user-visible allocations ... */ 2 62 dcl mlsys_data_$subsystem_area_ptr pointer external; /* ... and the pointer on which it is based */ 2 63 2 64 dcl mlsys_data_$hash_tables_segment_ptr pointer external; /* -> hash tables used by the mail system */ 2 65 2 66 dcl mlsys_data_$transmit_cache_ptr pointer external; /* -> cache of recently used mailboxes for mlsys_transmit_ */ 2 67 2 68 dcl mlsys_data_$user_is_anonymous bit (1) aligned external;/* ON => the user is an anonymous user */ 2 69 2 70 dcl mlsys_data_$person_id character (24) varying external; /* the user's Person_id */ 2 71 dcl mlsys_data_$project_id character (12) varying external;/* the user's Project_id */ 2 72 dcl mlsys_data_$user_id character (32) varying external; /* the user's User_id (Person_id.Project_id) */ 2 73 2 74 /* END INCLUDE FILE ... mlsys_internal_data.incl.pl1 */ 613 614 3 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox_acl.incl.pl1 */ 3 2 /* Created: June 1983 by G. Palter */ 3 3 3 4 /* Definition of the extended Access Control List (ACL) of a Multics mailbox as presented by the mail system */ 3 5 3 6 dcl 1 mailbox_acl aligned based (mailbox_acl_ptr), 3 7 2 header, 3 8 3 version character (8) unaligned, 3 9 3 n_acl_terms fixed binary, /* # of ACL terms in this structure */ 3 10 3 pad bit (36), 3 11 2 acl_terms (mailbox_acl_n_acl_terms refer (mailbox_acl.n_acl_terms)), 3 12 3 access_name character (32) unaligned, /* ... the access name for this term (Person.Project.tag) */ 3 13 3 extended_mode bit (36), /* ... the extended mode (see mlsys_mailbox_modes) */ 3 14 3 code fixed binary (35); /* ... set to the error code for this entry (if any) */ 3 15 3 16 dcl MAILBOX_ACL_VERSION_1 character (8) static options (constant) initial ("mlsacl01"); 3 17 3 18 dcl mailbox_acl_ptr pointer; 3 19 3 20 dcl mailbox_acl_n_acl_terms fixed binary; /* used when allocating the above */ 3 21 3 22 /* END INCLUDE FILE ... mlsys_mailbox_acl.incl.pl1 */ 615 616 4 1 /* BEGIN INCLUDE FILE ... mlsys_delete_mailbox.incl.pl1 */ 4 2 /* Created: June 1983 by G. Palter */ 4 3 4 4 /* Options for the mlsys_utils_$delete_mailbox entrypoint */ 4 5 4 6 dcl 1 delete_mailbox_options aligned based (delete_mailbox_options_ptr), 4 7 2 version character (8) unaligned, 4 8 2 flags, 4 9 3 force bit (1) unaligned, /* ON => delete the mailbox without asking permission */ 4 10 3 query bit (1) unaligned, /* ON => do not delete protected mailboxes unless the user 4 11* says it's OK (not in the forseeable future) */ 4 12 3 chase bit (1) unaligned, /* ON => chase links if given pathname is a link */ 4 13 3 mbz bit (33) unaligned; /* must be set to ""b by the caller */ 4 14 4 15 dcl DELETE_MAILBOX_OPTIONS_VERSION_1 character (8) static options (constant) initial ("mlsdmbx1"); 4 16 4 17 dcl delete_mailbox_options_ptr pointer; 4 18 4 19 /* END INCLUDE FILE ... mlsys_delete_mailbox.incl.pl1 */ 617 618 5 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 5 2 /* format: style3,indcomtxt,idind30 */ 5 3 5 4 declare acl_ptr pointer; 5 5 declare acl_count fixed bin; 5 6 5 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 5 8 2 version char (8) aligned, 5 9 2 count fixed bin, 5 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 5 11 5 12 declare 1 general_acl_entry based, 5 13 2 access_name character (32) unaligned, 5 14 2 mode bit (36) aligned, 5 15 2 status_code fixed bin (35); 5 16 5 17 5 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 5 19 2 version char (8) aligned, 5 20 2 count fixed bin, 5 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 5 22 5 23 declare 1 general_extended_acl_entry aligned based, 5 24 2 access_name character (32) unaligned, 5 25 2 mode bit (36) aligned, 5 26 2 extended_mode bit (36) aligned, 5 27 2 status_code fixed bin (35); 5 28 5 29 5 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 5 31 2 version char (8) aligned, 5 32 2 count fixed bin, 5 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 5 34 5 35 declare 1 general_delete_acl_entry aligned based, 5 36 2 access_name character (32) unaligned, 5 37 2 status_code fixed bin (35); 5 38 5 39 5 40 declare 1 segment_acl aligned based (acl_ptr), 5 41 2 version fixed bin, 5 42 2 count fixed bin, 5 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 5 44 5 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 5 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 5 47 5 48 5 49 declare 1 directory_acl aligned based (acl_ptr), 5 50 2 version fixed bin, 5 51 2 count fixed bin, 5 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 5 53 5 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 5 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 5 56 5 57 5 58 declare 1 delete_acl based (acl_ptr) aligned, 5 59 2 version fixed bin, 5 60 2 count fixed bin, 5 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 5 62 5 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 5 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 5 65 5 66 5 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 5 68 DIR_ACL_VERSION_1 init ("dra1"), 5 69 DELETE_ACL_VERSION_1 init ("dla1")) 5 70 char (4) int static options (constant); 5 71 5 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 5 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 5 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 5 75 char (8) internal static options (constant); 5 76 5 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 5 78 5 79 /* End include file acl_structures.incl.pl1 */ 619 620 6 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 6 2* 6 3* Values for the "access mode" argument so often used in hardcore 6 4* James R. Davis 26 Jan 81 MCR 4844 6 5* Added constants for SM access 4/28/82 Jay Pattin 6 6* Added text strings 03/19/85 Chris Jones 6 7**/ 6 8 6 9 6 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 11 dcl ( 6 12 N_ACCESS init ("000"b), 6 13 R_ACCESS init ("100"b), 6 14 E_ACCESS init ("010"b), 6 15 W_ACCESS init ("001"b), 6 16 RE_ACCESS init ("110"b), 6 17 REW_ACCESS init ("111"b), 6 18 RW_ACCESS init ("101"b), 6 19 S_ACCESS init ("100"b), 6 20 M_ACCESS init ("010"b), 6 21 A_ACCESS init ("001"b), 6 22 SA_ACCESS init ("101"b), 6 23 SM_ACCESS init ("110"b), 6 24 SMA_ACCESS init ("111"b) 6 25 ) bit (3) internal static options (constant); 6 26 6 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 6 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 6 29 6 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 6 31 static options (constant); 6 32 6 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 6 34 static options (constant); 6 35 6 36 dcl ( 6 37 N_ACCESS_BIN init (00000b), 6 38 R_ACCESS_BIN init (01000b), 6 39 E_ACCESS_BIN init (00100b), 6 40 W_ACCESS_BIN init (00010b), 6 41 RW_ACCESS_BIN init (01010b), 6 42 RE_ACCESS_BIN init (01100b), 6 43 REW_ACCESS_BIN init (01110b), 6 44 S_ACCESS_BIN init (01000b), 6 45 M_ACCESS_BIN init (00010b), 6 46 A_ACCESS_BIN init (00001b), 6 47 SA_ACCESS_BIN init (01001b), 6 48 SM_ACCESS_BIN init (01010b), 6 49 SMA_ACCESS_BIN init (01011b) 6 50 ) fixed bin (5) internal static options (constant); 6 51 6 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 621 622 7 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox_modes.incl.pl1 */ 7 2 /* Created: June 1983 by G. Palter */ 7 3 7 4 /* Extended access modes (and combinations thereof) defined for a mailbox */ 7 5 7 6 dcl (N_MBX_ACCESS initial ("0000000"b), /* no access */ 7 7 7 8 A_MBX_ACCESS initial ("1000000"b), /* add messages */ 7 9 D_MBX_ACCESS initial ("0100000"b), /* delete any message (also indicates owner of mailbox) */ 7 10 R_MBX_ACCESS initial ("0010000"b), /* read any message */ 7 11 O_MBX_ACCESS initial ("0001000"b), /* read/delete any message sent by yourself */ 7 12 S_MBX_ACCESS initial ("0000100"b), /* get count of messages in the mailbox */ 7 13 W_MBX_ACCESS initial ("0000010"b), /* can send a wakeup to this mailbox (interactive messages and 7 14* mail notifications) */ 7 15 U_MBX_ACCESS initial ("0000001"b), /* can send an urgent wakeup (unused today) */ 7 16 7 17 ADROSW_MBX_ACCESS initial ("1111110"b), /* access granted to creator/owner of a mailbox */ 7 18 AOW_MBX_ACCESS initial ("1001010"b)) /* access granted to all other users */ 7 19 bit (36) aligned static options (constant); 7 20 7 21 /* END INCLUDE FILE ... mlsys_mailbox_modes.incl.pl1 */ 623 624 8 1 /* BEGIN INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 8 2 /* Created: April 1983 by G. Palter */ 8 3 8 4 /* Definition of a mailbox as used by the Multics Mail System */ 8 5 8 6 dcl 1 mailbox aligned based (mailbox_ptr), 8 7 2 version character (8) unaligned, 8 8 2 reserved bit (144), /* for exclusive use of the mail system */ 8 9 2 mailbox_address pointer, /* mail system address of this mailbox */ 8 10 2 mailbox_dirname character (168) unaligned, /* directory containing this mailbox */ 8 11 2 mailbox_ename character (32) unaligned, /* entry name of this mailbox (includes ".mbx") */ 8 12 2 mailbox_type fixed binary, /* type of mailbox (see below) */ 8 13 2 mode bit (36), /* user's effective extended access to this mailbox */ 8 14 2 flags, 8 15 3 salvaged bit (1) unaligned, /* ON => this mailbox has been salvaged since last open */ 8 16 3 reserved bit (35) unaligned, /* for exclusive use of the mail system */ 8 17 2 message_selection_mode fixed binary, /* types of messages read: all/ordinary/interactive */ 8 18 2 sender_selection_mode fixed binary, /* whose messages were read: all/own/not-own */ 8 19 2 message_reading_level fixed binary, /* how much of each message read: keys/messages */ 8 20 2 n_messages fixed binary, /* total # of messages in this mailbox structure */ 8 21 2 n_ordinary_messages fixed binary, /* ... # of ordinary messages here */ 8 22 2 n_interactive_messages fixed binary, /* ... # of interactive messages here */ 8 23 2 n_deleted_messages fixed binary, /* ... # of messages here marked for later deletion */ 8 24 2 messages (mailbox_n_messages refer (mailbox.n_messages)), 8 25 3 key bit (72), /* unique key to read this message if not already read */ 8 26 3 message_ptr pointer; /* -> the message structure */ 8 27 8 28 dcl MAILBOX_VERSION_2 character (8) static options (constant) initial ("mlsmbx02"); 8 29 8 30 dcl mailbox_ptr pointer; 8 31 8 32 dcl mailbox_n_messages fixed binary; /* for exclusive use of the mail system */ 8 33 8 34 8 35 /* Types of mailboxes distinguished by the mail system */ 8 36 8 37 dcl (USER_DEFAULT_MAILBOX initial (1), /* the user's default mailbox for receiving mail */ 8 38 USER_LOGBOX initial (2), /* the user's logbox */ 8 39 SAVEBOX initial (3), /* a savebox */ 8 40 OTHER_MAILBOX initial (4)) /* any other type of mailbox */ 8 41 fixed binary static options (constant); 8 42 8 43 /* END INCLUDE FILE ... mlsys_mailbox.incl.pl1 */ 625 626 627 end mlsys_mailbox_utils_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/87 1021.7 mlsys_mailbox_utils_.pl1 >spec>install>1067>mlsys_mailbox_utils_.pl1 611 1 10/27/83 2104.2 mlsys_data.incl.pl1 >ldd>include>mlsys_data.incl.pl1 613 2 06/30/86 2023.8 mlsys_internal_data.incl.pl1 >ldd>include>mlsys_internal_data.incl.pl1 615 3 10/27/83 2104.2 mlsys_mailbox_acl.incl.pl1 >ldd>include>mlsys_mailbox_acl.incl.pl1 617 4 10/27/83 2104.2 mlsys_delete_mailbox.incl.pl1 >ldd>include>mlsys_delete_mailbox.incl.pl1 619 5 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 621 6 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 623 7 10/27/83 2104.2 mlsys_mailbox_modes.incl.pl1 >ldd>include>mlsys_mailbox_modes.incl.pl1 625 8 10/27/83 2104.2 mlsys_mailbox.incl.pl1 >ldd>include>mlsys_mailbox.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ADROSW_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 135 166 199 228 ANONYMOUS 000004 constant char(9) initial unaligned dcl 86 ref 132 163 196 225 AOW_MBX_ACCESS constant bit(36) initial dcl 7-6 ref 138 231 DELETE_MAILBOX_OPTIONS_VERSION_1 000000 constant char(8) initial unaligned dcl 4-15 ref 478 MAILBOX_ACL_VERSION_1 000002 constant char(8) initial unaligned dcl 3-16 ref 130 161 194 223 250 292 332 378 402 OTHER_MAILBOX constant fixed bin(17,0) initial dcl 8-37 ref 459 P_area_ptr parameter pointer dcl 45 ref 367 374 376 P_code parameter fixed bin(35,0) dcl 35 set ref 118 143* 149 171* 177 185* 186 204* 210 214* 215 236* 242 246* 247 251* 256* 278* 284 288* 289 293* 298* 318* 324 328* 329 333* 361* 367 371* 372 379* 413* 424* 430 436* 463* 470 474* 475 539* P_command_name parameter char unaligned dcl 57 set ref 470 510* P_delete_mailbox_options_ptr parameter pointer dcl 58 ref 470 477 P_mailbox_acl_ptr parameter pointer dcl 40 set ref 242 249 284 291 324 331 367 410* P_mailbox_acl_version parameter char(8) unaligned dcl 46 ref 367 378 P_mailbox_address_ptr parameter pointer dcl 51 set ref 430 433* 445* 453* P_mailbox_dirname parameter char unaligned dcl 37 ref 177 180 210 213 242 245 284 287 324 327 367 370 470 473 P_mailbox_ename parameter char unaligned dcl 38 set ref 177 182 182 182 184 210 214* 242 246* 284 288* 324 328* 367 371* 470 474* P_mailbox_type parameter fixed bin(17,0) dcl 52 set ref 430 441* 449* 457* 459* RW_ACCESS constant bit(3) initial unaligned dcl 6-11 ref 266 345 SAVEBOX constant fixed bin(17,0) initial dcl 8-37 ref 457 USER_DEFAULT_MAILBOX constant fixed bin(17,0) initial dcl 8-37 ref 441 USER_LOGBOX constant fixed bin(17,0) initial dcl 8-37 ref 449 access_name 000100 automatic char(32) array level 2 in structure "mbx_acl_array" packed unaligned dcl 262 in begin block on line 260 set ref 265* access_name 000100 automatic char(32) array level 2 in structure "mbx_acl_array" packed unaligned dcl 339 in begin block on line 337 set ref 344* access_name based char(32) array level 2 in structure "listed_acl" packed unaligned dcl 74 in procedure "mlsys_mailbox_utils_" ref 404 access_name 000100 automatic char(32) array level 2 in structure "mbx_acl_array" packed unaligned dcl 304 in begin block on line 302 set ref 307* access_name 4 based char(32) array level 3 in structure "mailbox_acl" packed unaligned dcl 3-6 in procedure "mlsys_mailbox_utils_" set ref 265 307 344 404* access_name 4 000170 automatic char(32) array level 3 in structure "local_ma" packed unaligned dcl 77 in procedure "mlsys_mailbox_utils_" set ref 132* 134* 136* 137* 163* 165* 196* 198* 225* 227* 229* 230* acl_terms 4 based structure array level 2 in structure "mailbox_acl" dcl 3-6 in procedure "mlsys_mailbox_utils_" acl_terms 4 000170 automatic structure array level 2 in structure "local_ma" dcl 77 in procedure "mlsys_mailbox_utils_" addr builtin function dcl 114 ref 139 139 167 167 200 200 232 232 270 270 310 310 353 353 addresses_match 000233 automatic bit(1) dcl 83 set ref 433* 441 445* 449 area 000236 stack reference condition dcl 112 ref 391 chase 2(02) based bit(1) level 3 packed unaligned dcl 4-6 ref 491 cleanup 000244 stack reference condition dcl 112 ref 385 596 code 000100 automatic fixed bin(35,0) dcl 63 in procedure "mlsys_mailbox_utils_" set ref 124* 124* 127 128* 129 139* 143 155* 155* 158 159* 160 167* 171 188* 188* 191 192* 193 200* 204 217* 217* 220 221* 222 232* 236 270* 278 310* 318 353* 361 393* 397* 400 413 424 433* 435 436 445* 447 453* 455 485* 488 488 491 493* 494 494* 502 504* 505 505* 514* 515 515* 526 528* code 15 based fixed bin(35,0) array level 3 in structure "mailbox_acl" dcl 3-6 in procedure "mlsys_mailbox_utils_" set ref 274* 314* 357* 406* command_query_$yes_no 000044 constant entry external dcl 96 ref 510 delete_acl_entry based structure level 1 dcl 5-63 delete_mailbox_options based structure level 1 dcl 4-6 delete_mailbox_options_ptr 000256 automatic pointer dcl 4-17 set ref 477* 478 480 491 502 509 directory_acl_entry based structure level 1 dcl 5-54 error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 89 set ref 518* error_table_$bad_file_name 000014 external static fixed bin(35,0) dcl 89 ref 488 error_table_$bad_subr_arg 000012 external static fixed bin(35,0) dcl 89 set ref 256 298 480* error_table_$entlong 000016 external static fixed bin(35,0) dcl 89 ref 559 577 error_table_$link 000020 external static fixed bin(35,0) dcl 89 set ref 491 497* error_table_$moderr 000022 external static fixed bin(35,0) dcl 89 ref 602 error_table_$noalloc 000024 external static fixed bin(35,0) dcl 89 ref 393 error_table_$noentry 000026 external static fixed bin(35,0) dcl 89 ref 127 158 191 220 526 error_table_$not_seg_type 000030 external static fixed bin(35,0) dcl 89 ref 488 error_table_$safety_sw_on 000032 external static fixed bin(35,0) dcl 89 set ref 502 521* error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 89 set ref 251 293 333 379 478* extended_mode 11 000100 automatic bit(36) array level 2 in structure "mbx_acl_array" dcl 339 in begin block on line 337 set ref 346* extended_mode 11 000100 automatic bit(36) array level 2 in structure "mbx_acl_array" dcl 262 in begin block on line 260 set ref 267* extended_mode 11 based bit(36) array level 2 in structure "listed_acl" dcl 74 in procedure "mlsys_mailbox_utils_" ref 405 extended_mode 14 000170 automatic bit(36) array level 3 in structure "local_ma" dcl 77 in procedure "mlsys_mailbox_utils_" set ref 135* 138* 138* 166* 199* 228* 231* 231* extended_mode 14 based bit(36) array level 3 in structure "mailbox_acl" dcl 3-6 in procedure "mlsys_mailbox_utils_" set ref 267 346 405* flags 2 based structure level 2 dcl 4-6 force 2 based bit(1) level 3 packed unaligned dcl 4-6 ref 502 general_acl_entry based structure level 1 unaligned dcl 5-12 general_delete_acl_entry based structure level 1 dcl 5-35 general_extended_acl_entry based structure level 1 dcl 5-23 get_system_free_area_ 000046 constant entry external dcl 97 ref 374 hcs_$get_link_target 000050 constant entry external dcl 98 ref 493 header based structure level 2 in structure "mailbox_acl" dcl 3-6 in procedure "mlsys_mailbox_utils_" header 000170 automatic structure level 2 in structure "local_ma" dcl 77 in procedure "mlsys_mailbox_utils_" idx 000232 automatic fixed bin(17,0) dcl 81 set ref 264* 265 265 266 267 267* 273* 274 274* 306* 307 307* 313* 314 314* 343* 344 344 345 346 346* 356* 357 357* 403* 404 404 405 405 406 406* index builtin function dcl 114 ref 182 457 length builtin function dcl 114 ref 182 182 558 558 566 566 566 566 575 575 listed_acl based structure array level 1 dcl 74 ref 388 408 422 listed_acl_ptr 000166 automatic pointer dcl 75 set ref 383* 388 388 397* 404 405 406 408 409* 422 422 local_ma 000170 automatic structure level 1 dcl 77 set ref 139 139 167 167 200 200 232 232 mail_system_$compare_addresses 000052 constant entry external dcl 99 ref 433 445 mail_system_$get_address_pathname 000054 constant entry external dcl 100 ref 121 152 453 mailbox_$close 000056 constant entry external dcl 101 ref 598 604 mailbox_$create 000060 constant entry external dcl 102 ref 128 159 192 221 mailbox_$delete 000062 constant entry external dcl 103 ref 485 mailbox_$mbx_acl_add 000064 constant entry external dcl 104 ref 270 mailbox_$mbx_acl_delete 000066 constant entry external dcl 105 ref 310 mailbox_$mbx_acl_list 000070 constant entry external dcl 106 ref 397 mailbox_$mbx_acl_replace 000072 constant entry external dcl 107 ref 353 mailbox_$open 000074 constant entry external dcl 108 ref 601 mailbox_$set_safety_switch 000076 constant entry external dcl 109 ref 504 514 mailbox_acl based structure level 1 dcl 3-6 set ref 387 401 420 mailbox_acl_n_acl_terms 000254 automatic fixed bin(17,0) dcl 3-20 set ref 388 397* 401 401 408 422 mailbox_acl_ptr 000252 automatic pointer dcl 3-18 set ref 249* 250 255 262 264 265 267 270 273 274 291* 292 297 304 306 307 310 313 314 331* 332 339 343 344 346 349 351 356 357 383* 387 387 401* 402 403 404 405 406 410 420 420 mailbox_dirname 000101 automatic char(168) unaligned dcl 65 set ref 121* 124* 128* 139* 152* 155* 159* 167* 180* 188* 192* 200* 213* 217* 221* 232* 245* 270* 287* 310* 327* 353* 370* 397* 473* 485* 493* 493* 504* 510* 510* 514* mailbox_ename 000153 automatic char(32) unaligned dcl 66 set ref 121* 124* 128* 139* 152* 155* 159* 167* 182* 184* 185* 185* 188* 192* 200* 214* 217* 221* 232* 246* 270* 288* 310* 328* 353* 371* 397* 453* 457 474* 485* 493* 493* 504* 510* 510* 514* mailbox_index 000100 automatic fixed bin(17,0) dcl 592 set ref 594* 598 598* 601* 604* 605* max builtin function dcl 114 ref 339 mbx_acl_array 000100 automatic structure array level 1 dcl 339 in begin block on line 337 set ref 353 353 mbx_acl_array 000100 automatic structure array level 1 dcl 304 in begin block on line 302 set ref 310 310 mbx_acl_array 000100 automatic structure array level 1 dcl 262 in begin block on line 260 set ref 270 270 mbz 2(03) based bit(33) level 3 packed unaligned dcl 4-6 ref 480 mlsys_data_$person_id 000110 external static varying char(24) dcl 2-70 ref 134 165 198 227 mlsys_data_$project_id 000112 external static varying char(12) dcl 2-71 ref 132 163 196 225 mlsys_data_$user_default_mailbox_address 000102 external static pointer dcl 1-12 set ref 121* 433* mlsys_data_$user_is_anonymous 000106 external static bit(1) dcl 2-68 ref 132 163 196 225 mlsys_data_$user_logbox_address 000104 external static pointer dcl 1-15 set ref 152* 445* mlsys_et_$mailbox_exists 000036 external static fixed bin(35,0) dcl 89 ref 124 155 188 217 mlsys_et_$no_mailbox 000040 external static fixed bin(35,0) dcl 89 set ref 526* mlsys_et_$not_mailbox 000042 external static fixed bin(35,0) dcl 89 set ref 488* mode 10 000100 automatic bit(36) array level 2 in structure "mbx_acl_array" dcl 262 in begin block on line 260 set ref 266* mode 10 000100 automatic bit(36) array level 2 in structure "mbx_acl_array" dcl 339 in begin block on line 337 set ref 345* n_acl_terms 2 000170 automatic fixed bin(17,0) level 3 in structure "local_ma" dcl 77 in procedure "mlsys_mailbox_utils_" set ref 131* 162* 195* 224* n_acl_terms 2 based fixed bin(17,0) level 3 in structure "mailbox_acl" dcl 3-6 in procedure "mlsys_mailbox_utils_" set ref 255 262 264 270* 273 297 304 306 310* 313 339 343 349 351 356 387 401* 403 420 n_replacement_acl_terms 000100 automatic fixed bin(17,0) dcl 341 set ref 349* 351* 353* null builtin function dcl 114 ref 374 383 387 388 409 420 422 p_code parameter fixed bin(35,0) dcl 554 in procedure "add_suffix" set ref 549 559* 575* 577* p_code parameter fixed bin(35,0) dcl 537 in procedure "return_from_delete_mailbox" ref 534 539 p_code parameter fixed bin(35,0) dcl 590 in procedure "mailbox_already_exists" set ref 585 601* 602 602* 607 p_ename parameter char unaligned dcl 552 ref 549 558 563 p_mailbox_dirname parameter char unaligned dcl 588 set ref 585 601* p_mailbox_ename parameter char unaligned dcl 589 set ref 585 601* p_new_ename parameter char(32) unaligned dcl 553 set ref 549 558 573* 575 p_suffix parameter char unaligned dcl 552 ref 549 564 pathname_ 000100 constant entry external dcl 110 ref 510 510 query 2(01) based bit(1) level 3 packed unaligned dcl 4-6 ref 509 reverse builtin function dcl 114 ref 182 182 457 457 rtrim builtin function dcl 114 ref 182 182 457 558 563 564 segment_acl_entry based structure level 1 dcl 5-45 status_code 12 000100 automatic fixed bin(35,0) array level 2 in structure "mbx_acl_array" dcl 339 in begin block on line 337 set ref 357 status_code 12 based fixed bin(35,0) array level 2 in structure "listed_acl" dcl 74 in procedure "mlsys_mailbox_utils_" ref 406 status_code 12 000100 automatic fixed bin(35,0) array level 2 in structure "mbx_acl_array" dcl 262 in begin block on line 260 set ref 274 status_code 12 000100 automatic fixed bin(35,0) array level 2 in structure "mbx_acl_array" dcl 304 in begin block on line 302 set ref 314 substr builtin function dcl 114 ref 182 566 the_area based area(1024) dcl 68 ref 387 388 401 408 420 422 the_area_ptr 000164 automatic pointer dcl 69 set ref 374* 376* 387 388 397* 401 408 420 422 trimmed_ename 000302 automatic varying char(33) dcl 556 set ref 563* 566 566 566 570* 570 571* 571 573 575 trimmed_suffix 000314 automatic varying char(33) dcl 556 set ref 564* 566 566 566 570 571 try_to_delete 000234 automatic bit(1) unaligned dcl 84 set ref 510* 513 version 000170 automatic char(8) level 3 in structure "local_ma" packed unaligned dcl 77 in procedure "mlsys_mailbox_utils_" set ref 130* 161* 194* 223* version based char(8) level 2 in structure "delete_mailbox_options" packed unaligned dcl 4-6 in procedure "mlsys_mailbox_utils_" ref 478 version based char(8) level 3 in structure "mailbox_acl" packed unaligned dcl 3-6 in procedure "mlsys_mailbox_utils_" set ref 250 292 332 402* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 5-77 A_ACCESS internal static bit(3) initial unaligned dcl 6-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 A_MBX_ACCESS internal static bit(36) initial dcl 7-6 DELETE_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-33 DIR_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 D_MBX_ACCESS internal static bit(36) initial dcl 7-6 E_ACCESS internal static bit(3) initial unaligned dcl 6-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 GENERAL_ACL_VERSION_1 internal static char(8) initial unaligned dcl 5-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial unaligned dcl 5-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial unaligned dcl 5-72 MAILBOX_VERSION_2 internal static char(8) initial unaligned dcl 8-28 M_ACCESS internal static bit(3) initial unaligned dcl 6-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 N_ACCESS internal static bit(3) initial unaligned dcl 6-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 N_MBX_ACCESS internal static bit(36) initial dcl 7-6 O_MBX_ACCESS internal static bit(36) initial dcl 7-6 REW_ACCESS internal static bit(3) initial unaligned dcl 6-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RE_ACCESS internal static bit(3) initial unaligned dcl 6-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 R_ACCESS internal static bit(3) initial unaligned dcl 6-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 R_MBX_ACCESS internal static bit(36) initial dcl 7-6 SA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-30 SEG_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 SMA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SM_ACCESS internal static bit(3) initial unaligned dcl 6-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 S_ACCESS internal static bit(3) initial unaligned dcl 6-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 S_MBX_ACCESS internal static bit(36) initial dcl 7-6 U_MBX_ACCESS internal static bit(36) initial dcl 7-6 W_ACCESS internal static bit(3) initial unaligned dcl 6-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 W_MBX_ACCESS internal static bit(36) initial dcl 7-6 acl_count automatic fixed bin(17,0) dcl 5-5 acl_ptr automatic pointer dcl 5-4 delete_acl based structure level 1 dcl 5-58 delete_acl_array based structure array level 1 dcl 5-64 directory_acl based structure level 1 dcl 5-49 directory_acl_array based structure array level 1 dcl 5-55 general_acl based structure level 1 dcl 5-7 general_delete_acl based structure level 1 dcl 5-30 general_extended_acl based structure level 1 dcl 5-18 mailbox based structure level 1 dcl 8-6 mailbox_n_messages automatic fixed bin(17,0) dcl 8-32 mailbox_ptr automatic pointer dcl 8-30 mlsys_area based area(1024) dcl 2-61 mlsys_data_$address_list_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$domains_available external static fixed bin(1,0) dcl 2-44 mlsys_data_$forum_not_available external static fixed bin(1,0) dcl 2-44 mlsys_data_$hash_tables_segment_ptr external static pointer dcl 2-64 mlsys_data_$highest_usable_ring external static fixed bin(3,0) dcl 2-49 mlsys_data_$ism_not_available external static fixed bin(1,0) dcl 2-44 mlsys_data_$lowest_forum_ring external static fixed bin(3,0) dcl 2-49 mlsys_data_$mailbox_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$max_lock_wait_retries external static fixed bin(17,0) dcl 2-19 mlsys_data_$max_opening_retries external static fixed bin(17,0) dcl 2-16 mlsys_data_$message_body_sections_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$message_redistributions_list_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$message_references_list_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$message_user_fields_allocation external static fixed bin(17,0) dcl 2-33 mlsys_data_$subsystem_area_ptr external static pointer dcl 2-62 mlsys_data_$subsystem_ring external static fixed bin(3,0) dcl 2-49 mlsys_data_$system_directory external static char(168) unaligned dcl 1-7 mlsys_data_$temp_segment_list_ptr external static pointer dcl 2-54 mlsys_data_$transmit_cache_ptr external static pointer dcl 2-66 mlsys_data_$user_id external static varying char(32) dcl 2-72 mlsys_data_$user_mail_table_address external static pointer dcl 1-14 mlsys_data_$valid_segments external static bit(1) array unaligned dcl 2-56 segment_acl based structure level 1 dcl 5-40 segment_acl_array based structure array level 1 dcl 5-46 NAMES DECLARED BY EXPLICIT CONTEXT. CANT_CLASSIFY_THE_MAILBOX 003034 constant label dcl 436 ref 447 455 ERROR_RETURN_FROM_LIST_MAILBOX_ACL 002753 constant label dcl 420 ref 394 RETRY_MAILBOX_DELETE_CALL 003317 constant label dcl 485 ref 495 506 516 RETURN_FROM_DELETE_MAILBOX 003646 constant label dcl 544 set ref 540 add_mailbox_acl_entries 001461 constant entry external dcl 242 add_suffix 003654 constant entry internal dcl 549 ref 185 214 246 288 328 371 474 classify_mailbox_address 003004 constant entry external dcl 430 create_default_mailbox 000105 constant entry external dcl 118 create_logbox 000366 constant entry external dcl 149 create_mailbox 001160 constant entry external dcl 210 create_savebox 000640 constant entry external dcl 177 delete_mailbox 003176 constant entry external dcl 470 delete_mailbox_acl_entries 001724 constant entry external dcl 284 list_mailbox_acl 002430 constant entry external dcl 367 mailbox_already_exists 004043 constant entry internal dcl 585 ref 124 155 188 217 mlsys_mailbox_utils_ 000074 constant entry external dcl 27 replace_mailbox_acl_entries 002160 constant entry external dcl 324 ref 139 167 200 232 return_from_delete_mailbox 003647 constant entry internal dcl 534 ref 478 480 488 494 497 505 515 518 521 526 528 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5002 5116 4201 5012 Length 5606 4201 114 454 600 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mlsys_mailbox_utils_ 324 external procedure is an external procedure. begin block on line 260 94 begin block uses auto adjustable storage. begin block on line 302 94 begin block uses auto adjustable storage. begin block on line 337 96 begin block uses auto adjustable storage. on unit on line 385 64 on unit on unit on line 391 64 on unit return_from_delete_mailbox internal procedure shares stack frame of external procedure mlsys_mailbox_utils_. add_suffix internal procedure shares stack frame of external procedure mlsys_mailbox_utils_. mailbox_already_exists 93 internal procedure enables or reverts conditions. on unit on line 596 72 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 260 000100 mbx_acl_array begin block on line 260 begin block on line 302 000100 mbx_acl_array begin block on line 302 begin block on line 337 000100 mbx_acl_array begin block on line 337 000100 n_replacement_acl_terms begin block on line 337 mailbox_already_exists 000100 mailbox_index mailbox_already_exists mlsys_mailbox_utils_ 000100 code mlsys_mailbox_utils_ 000101 mailbox_dirname mlsys_mailbox_utils_ 000153 mailbox_ename mlsys_mailbox_utils_ 000164 the_area_ptr mlsys_mailbox_utils_ 000166 listed_acl_ptr mlsys_mailbox_utils_ 000170 local_ma mlsys_mailbox_utils_ 000232 idx mlsys_mailbox_utils_ 000233 addresses_match mlsys_mailbox_utils_ 000234 try_to_delete mlsys_mailbox_utils_ 000252 mailbox_acl_ptr mlsys_mailbox_utils_ 000254 mailbox_acl_n_acl_terms mlsys_mailbox_utils_ 000256 delete_mailbox_options_ptr mlsys_mailbox_utils_ 000302 trimmed_ename add_suffix 000314 trimmed_suffix add_suffix THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ext_in_desc call_ext_out_desc call_ext_out call_int_this_desc return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc set_chars_eis op_alloc_ op_freen_ ix_rev_chars THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_$yes_no get_system_free_area_ hcs_$get_link_target mail_system_$compare_addresses mail_system_$get_address_pathname mailbox_$close mailbox_$create mailbox_$delete mailbox_$mbx_acl_add mailbox_$mbx_acl_delete mailbox_$mbx_acl_list mailbox_$mbx_acl_replace mailbox_$open mailbox_$set_safety_switch pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_file_name error_table_$bad_subr_arg error_table_$entlong error_table_$link error_table_$moderr error_table_$noalloc error_table_$noentry error_table_$not_seg_type error_table_$safety_sw_on error_table_$unimplemented_version mlsys_data_$person_id mlsys_data_$project_id mlsys_data_$user_default_mailbox_address mlsys_data_$user_is_anonymous mlsys_data_$user_logbox_address mlsys_et_$mailbox_exists mlsys_et_$no_mailbox mlsys_et_$not_mailbox LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000073 30 000101 118 000102 121 000115 124 000152 127 000205 128 000211 129 000231 130 000233 131 000235 132 000237 134 000277 135 000317 136 000322 137 000325 138 000330 139 000333 143 000361 145 000363 149 000364 152 000376 155 000433 158 000466 159 000472 160 000512 161 000514 162 000516 163 000520 165 000560 166 000600 167 000603 171 000631 173 000633 177 000634 180 000663 182 000671 184 000722 185 000726 186 000753 188 000755 191 001010 192 001014 193 001034 194 001036 195 001040 196 001042 198 001102 199 001122 200 001125 204 001153 206 001155 210 001156 213 001203 214 001211 215 001240 217 001242 220 001275 221 001301 222 001321 223 001323 224 001325 225 001327 227 001367 228 001407 229 001412 230 001415 231 001420 232 001423 236 001451 238 001453 242 001454 245 001506 246 001514 247 001543 249 001545 250 001550 251 001554 252 001557 255 001560 256 001563 257 001566 260 001567 262 001572 264 001601 265 001612 266 001625 267 001630 268 001633 270 001635 273 001671 274 001704 275 001714 276 001716 278 001717 280 001721 284 001722 287 001751 288 001757 289 002006 291 002010 292 002013 293 002017 294 002022 297 002023 298 002026 299 002031 302 002032 304 002035 306 002044 307 002054 308 002067 310 002071 313 002125 314 002140 315 002150 316 002152 318 002153 320 002155 324 002156 327 002205 328 002213 329 002242 331 002244 332 002247 333 002253 334 002256 337 002257 339 002262 343 002274 344 002304 345 002317 346 002322 347 002325 349 002327 351 002335 353 002336 356 002371 357 002404 358 002414 359 002416 361 002417 363 002421 367 002422 370 002455 371 002463 372 002512 374 002514 376 002531 378 002534 379 002542 380 002545 383 002546 385 002551 387 002565 388 002600 389 002611 391 002612 393 002626 394 002631 397 002634 400 002670 401 002672 402 002703 403 002706 404 002715 405 002730 406 002734 407 002736 408 002740 409 002744 410 002746 413 002750 415 002752 420 002753 422 002765 424 002775 426 002777 430 003000 433 003014 435 003032 436 003034 438 003036 441 003037 445 003046 447 003064 449 003066 453 003075 455 003135 457 003137 459 003164 463 003167 465 003170 470 003171 473 003226 474 003234 475 003263 477 003265 478 003271 480 003304 485 003317 488 003340 491 003355 493 003363 494 003411 495 003415 497 003416 502 003424 504 003434 505 003462 506 003466 509 003467 510 003472 513 003554 514 003557 515 003606 516 003612 518 003613 519 003622 521 003623 526 003631 528 003644 544 003646 534 003647 539 003651 540 003653 549 003654 558 003672 559 003711 560 003714 563 003715 564 003724 566 003760 570 003777 571 004012 573 004024 575 004031 577 004036 579 004041 585 004042 594 004063 596 004064 598 004100 599 004114 601 004115 602 004144 604 004152 605 004163 607 004164 ----------------------------------------------------------- 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