COMPILATION LISTING OF SEGMENT xmail_dir_manager_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/02/88 0752.4 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-01-07,Blair), approve(86-02-26,MCR7358), 16* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 17* 85-03-25 JG Backs: Modified xmail_upgrade internal procedure to initialize 18* values for new personalize options: confirm_print_yn, include_original_yn, 19* file_original_yn. Combined duplicate code for setting default values into 20* one internal procedure SET_DEFAULT, which is called for all options that 21* set yes, no, or ask. 22* 2) change(86-01-07,Blair), approve(86-02-26,MCR7358), 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 24* Add code to set default for allowing suppression of upper window 25* when replying. 26* 3) change(86-02-26,Blair), approve(86-02-26,MCR7358), 27* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 28* Change call to hcs_$make_seg to initiate_file_$create. If the value 29* segment cannot be initiated and the error is due to incorrect access, call 30* the rebuild_xmail_value_seg_ routine to create a new value seg in the 31* process dir. 32* 4) change(86-03-18,Blair), approve(86-03-18,MCR7358), 33* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 34* Make close_dir use the pathname of the value segment rather than a ptr to 35* it. 36* 5) change(86-06-27,Blair), approve(86-07-15,MCR7447), 37* audit(86-07-16,LJAdams), install(86-07-21,MR12.0-1100): 38* Force access for xmail.errors if necessary when containing dir has "sma". 39* TR 18355. Don't check for execution access on the value segment since 40* this causes problems when the user is in a different ring than the seg. TR 41* 20418. 42* 6) change(87-01-20,Blair), approve(87-02-05,MCR7618), 43* audit(87-04-10,RBarstad), install(87-04-26,MR12.1-1025): 44* Initialize msgs_as_mail to its default as part of updating version 4.1. 45* 7) change(88-06-28,Blair), approve(88-07-27,MCR7959), 46* audit(88-08-30,RBarstad), install(88-09-02,MR12.2-1098): 47* Fix various access bugs. Call new entry xmail_rebuild_value_seg_$copy 48* when we have read and no write access to to mlsys value seg. Add acls as 49* necessary rather than replacing them each time xmail is invoked. 50* Create the error segment in the pdir if we can't force access to the 51* mlsys directory. 52* END HISTORY COMMENTS */ 53 54 xmail_dir_manager_: proc (); 55 56 /* BEGIN DESCRIPTION */ 57 58 /*********************************************************************** 59* 60* This subroutine has two entrypoints: 61* 62* open_dir -- makes sure that the xmail directory exists with 63* the proper contents (at least the following: 64* incoming.mbx link to the users default mbx, 65* outgoing.sv.mbx, xmail_data.value). 66* close_dir -- cleans up the directory after use. 67* 68* Some information in the xmail_data structure is used by this 69* subroutine and must be initialized prior to invocation. The 70* information that must be initialized is as follows: 71* 72* For open_dir: 73* 74* xmail_data.person 75* xmail_data.project 76* 77* For close_dir: 78* 79* xmail_data.value_seg 80* 81* The following information is initialized by open_dir: 82* 83* xmail_data.value_seg 84* xmail_data.mail_dir 85* 86* ***********************************************************************/ 87 88 /* History: Written by Suzanne Krupp 1/11/81 89* 90* 83-08-11 DJ Schimke: Modified to use Person_id.mlsys as the xmail directory 91* rather than Person_id.xmail. If Person_id.xmail already existed the new 92* name is added. Mailing lists have an added name with ".mls" as the suffix 93* and the error_log segment is now xmail.error. 94* 95* 83-09-14 DJ Schimke: Modified the error code handling of the value_$init 96* call to ignore a "Segment already known to process" error. phx12785 97* 98* 83-09-15 DJ Schimke: Modified the error code handling of the hcs_$make_seg 99* call to report an inconsistent xmail directory instead of just saying it is 100* an internal error when the user doesn't have access to xmail_data.value. 101* phx12665 102* 103* 83-09-15 DJ Schimke: Modified so user's xmail_data.value segment has access 104* of Person_id.*.* rew rather than Person_id.Project_id.* rew. phx15877 105* 106* 83-11-30 DJ Schimke: Modified to set the default values for the "Outgoing 107* Savefile" and "Save Outgoing Messages" personalization options if they have 108* never been set. This greatly simplifies the code that must handle these 109* options later. These changes and other "one-time" conversion code was 110* consolidated into the internal proc xmail_upgrade which compares the version 111* number before deciding to make changes. 112* 113* 83-12-07 DJ Schimke: Modified xmail_upgrade to also initialize the value 114* for acknowledge_yn if it has never been set. 115* 116* 83-12-12 DJ Schimke: Modified to only look for the link to incoming_mbx (not 117* chase) when determining whether to create the link. 118* 119* 84-06-26 JG Backs: Modified the error code handling of hcs_$append_branchx 120* call to report a user friendly message when the aim level of the home 121* directory and the current process are different. TR phx17650. 122* 123* 84-09-12 JG Backs: Modified internal procedure xmail_upgrade to initialize 124* values for personalize options: lists_as_menus_yn, interactive_msgs_yn, 125* always_escape_keys_yn, multics_mode_yn, remove_menus_yn. 126* 127* 84-10-24 JG Backs: Modified the error code handling of the call to hcs_ 128* $status_long to accept error_table_$no_s_permission as valid. This will 129* permit users to link to mlsys or xmail directories under other projects 130* without having "s" permission on the above directory. 131* 132* 133* 134*END DESCRIPTION 135**/ 136 137 /* AUTOMATIC */ 138 139 dcl a_mode bit (36) aligned; 140 dcl aim_code fixed bin (35); 141 dcl aim_dir_entry char (32); 142 dcl aim_home_dir char (168); 143 dcl aim_level_dir bit (72) aligned; 144 dcl aim_level_proc bit (72) aligned; 145 dcl aim_level_string char (32); 146 dcl answer_yn char (3) var; /* value of yes, no, or ask */ 147 dcl area_ptr ptr; 148 dcl bit_count fixed bin (24); 149 dcl code fixed bin (35); 150 dcl created_sw bit (1) aligned; 151 dcl default_mbx char (32) var; 152 dcl error_seg_ptr ptr; 153 dcl ex_mode bit (36) aligned; 154 dcl home_dir char (168); 155 dcl idx fixed bin; 156 dcl mlsys_dir_entry char (32); 157 dcl mlsys_dir_exists bit (1); 158 dcl mlsys_dir_path char (168); 159 dcl mlsys_dir_uid bit (36); 160 dcl save_mailbox char (32) var; 161 dcl save_message char (32) var; 162 dcl seg_name char (32); 163 dcl target char (168); 164 dcl user_name char (35) var; 165 dcl type fixed bin (2); 166 dcl unused_return char (32) var; 167 dcl user_project char (32) var; 168 dcl value_seg_ptr ptr; 169 dcl version char (32) var; 170 dcl xmail_dir_entry char (32); 171 dcl xmail_dir_exists bit (1); 172 dcl xmail_dir_path char (168); 173 dcl xmail_dir_uid bit (36); 174 175 dcl 1 auto_status_branch like status_branch; 176 dcl 1 auto_segment_acl_array automatic like segment_acl_entry; 177 178 /* BUILTINS */ 179 180 dcl (addr, after, index, ltrim, null, rtrim, reverse, substr, sum) 181 builtin; 182 183 /* CONDITIONS */ 184 185 dcl cleanup condition; 186 187 /* ENTRIES */ 188 189 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 190 dcl com_err_ entry () options (variable); 191 dcl convert_authorization_$to_string entry (bit (72) aligned, char (*), fixed bin (35)); 192 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)); 193 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 194 dcl get_authorization_ entry () returns (bit (72) aligned); 195 dcl get_pdir_ entry() returns(char(168)); 196 dcl get_ring_ entry () returns (fixed bin (3)); 197 dcl get_system_free_area_ entry () returns (ptr); 198 dcl hcs_$add_acl_entries entry (char(*), char(*), ptr, fixed bin, fixed bin(35)); 199 dcl hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), fixed bin (1), fixed bin (24), fixed bin (35)); 200 dcl hcs_$append_link entry (char (*), char (*), char (*), fixed bin (35)); 201 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 202 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 203 dcl hcs_$get_user_access_modes entry (char(*), char(*), char(*), fixed bin, bit(36) aligned, bit(36) aligned, 204 fixed bin(35)); 205 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 206 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 207 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 208 dcl ioa_ entry () options (variable); 209 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 210 dcl initiate_file_$create entry (char(*), char(*), bit(*), ptr, bit(1) aligned, fixed bin(24), fixed bin(35)); 211 dcl mlsys_utils_$create_mailbox entry (char (*), char (*), fixed bin (35)); 212 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 213 dcl user_info_$homedir entry (char (*)); 214 dcl value_$init_seg entry (ptr, fixed bin, ptr, fixed bin (19), fixed bin (35)); 215 dcl xmail_rebuild_value_seg_ entry (ptr, fixed bin (35)); 216 dcl xmail_rebuild_value_seg_$copy entry (ptr, fixed bin (35)); 217 dcl xmail_value_$get_no_validate entry (char (*), char (*) var, fixed bin (35)); 218 dcl xmail_value_$set entry (char (*), char (*) var, char (*) var, fixed bin (35)); 219 220 /* EXTERNAL STATIC */ 221 222 dcl error_table_$ai_restricted fixed bin (35) ext static; 223 dcl error_table_$badcall fixed bin (35) ext static; 224 dcl error_table_$incorrect_access fixed bin (35) ext static; 225 dcl error_table_$moderr fixed bin (35) ext static; 226 dcl error_table_$namedup fixed bin (35) ext static; 227 dcl error_table_$noentry fixed bin (35) ext static; 228 dcl error_table_$nomatch fixed bin (35) ext static; 229 dcl error_table_$no_s_permission fixed bin (35) ext static; 230 dcl error_table_$no_r_permission fixed bin (35) ext static; 231 dcl error_table_$no_w_permission fixed bin (35) ext static; 232 dcl error_table_$segknown fixed bin (35) ext static; 233 dcl error_table_$segnamedup fixed bin (35) ext static; 234 dcl xmail_err_$exit_now fixed bin (35) ext static; 235 236 /* CONSTANTS */ 237 238 dcl ASK char (3) init ("ask") int static options (constant); 239 dcl CHASE fixed bin (1) init (1) int static options (constant); 240 dcl CREATE_DIR fixed bin (1) init (1) int static options (constant); 241 dcl ERROR_LOG_SEGMENT char (11) init ("xmail.error") int static options (constant); 242 dcl INCOMING_MBX char (32) var init ("incoming.mbx") int static options (constant); 243 dcl MBX_SUFFIX char (4) init (".mbx") int static options (constant); 244 dcl MLSYS_DIR_SUFFIX char (6) init (".mlsys") int static options (constant); 245 dcl NO char (2) init ("no") int static options (constant); 246 dcl NO_CHASE fixed bin (1) init (0) int static options (constant); 247 dcl PERMANENT_SEG fixed bin int static options (constant) init (0); 248 dcl SEG_FORCE bit (6) init ("100100"b) int static options (constant); 249 dcl SYSTEM_LOW char (32) init ("system_low") int static options (constant); 250 dcl TERM_FILE_TRUNC_BC bit (2) static options (constant) initial ("11"b); 251 dcl USE_ENTIRE_SEG fixed bin (19) int static options (constant) init (0); 252 dcl VALUE_SEG_NAME char (32) var init ("xmail_data.value") int static options (constant); 253 dcl VERSION char (7) init ("version") int static options (constant); 254 dcl XMAIL_DIR_SUFFIX char (6) init (".xmail") int static options (constant); 255 dcl YES char (3) init ("yes") int static options (constant); 256 dcl ( 257 /*** names of personalization options ***/ 258 ACKNOWLEDGE char (14) init ("acknowledge_yn"), 259 ALWAYS_ESCAPE char (21) init ("always_escape_keys_yn"), 260 CONFIRM_PRINT char (19) init ("confirm_print_yn"), 261 FILE_ORIGINAL char (16) init ("file_original_yn"), 262 INCLUDE_ORIGINAL char (19) init ("include_original_yn"), 263 ORIGINAL_IN_WINDOW char (21) init ("original_up_window_yn"), 264 INTERACTIVE_MSGS char (19) init ("interactive_msgs_yn"), 265 LISTS_AS_MENUS char (17) init ("lists_as_menus_yn"), 266 MSGS_AS_MAIL char (15) init ("msgs_as_mail_yn"), 267 MULTICS_MODE char (15) init ("multics_mode_yn"), 268 OUTGOING_SV_BOX char (32) init ("outgoing.sv.mbx"), 269 REMOVE_MENUS char (15) init ("remove_menus_yn"), 270 SAVE_MAILBOX char (15) init ("save_mailfile"), 271 SAVE_MESSAGE char (15) init ("save_message_yn") 272 ) static options (constant); 273 274 275 /* BEGIN */ 276 277 call com_err_ (error_table_$badcall, "xmail_dir_manager_", "This is not a valid entrypoint."); 278 return; 279 280 open_dir: entry (code); 281 282 code = 0; 283 284 star_names_ptr = null (); 285 star_entry_ptr = null (); 286 on condition (cleanup) call CLEAN_UP; 287 288 user_name = xmail_data.person; 289 user_project = xmail_data.project; 290 call user_info_$homedir (home_dir); 291 292 /* Find out if the xmail and mlsys directories exist in the home dir. */ 293 294 xmail_dir_entry = user_name || XMAIL_DIR_SUFFIX; 295 mlsys_dir_entry = user_name || MLSYS_DIR_SUFFIX; 296 xmail_dir_path = rtrim (home_dir) || ">" || xmail_dir_entry; 297 mlsys_dir_path = rtrim (home_dir) || ">" || mlsys_dir_entry; 298 299 call hcs_$status_long (home_dir, xmail_dir_entry, CHASE, addr (auto_status_branch), null (), code); 300 if code = 0 | code = error_table_$no_s_permission /* accept no s */ 301 then do; 302 xmail_dir_exists = "1"b; 303 xmail_dir_uid = auto_status_branch.long.uid; 304 end; 305 else if code = error_table_$noentry then xmail_dir_exists = "0"b; 306 else goto OPEN_EXIT; 307 308 call hcs_$status_long (home_dir, mlsys_dir_entry, CHASE, addr (auto_status_branch), null (), code); 309 if code = 0 | code = error_table_$no_s_permission /* accept no s */ 310 then do; 311 mlsys_dir_exists = "1"b; 312 mlsys_dir_uid = auto_status_branch.long.uid; 313 end; 314 else if code = error_table_$noentry then mlsys_dir_exists = "0"b; 315 else goto OPEN_EXIT; 316 317 if mlsys_dir_exists & xmail_dir_exists 318 then if xmail_dir_uid ^= mlsys_dir_uid 319 then do; /* ERROR */ 320 call ioa_ ("executive_mail (^a): With this version, xmail uses the mlsys", xmail_version); 321 call ioa_ ("^5xdirectory for its work files. Since you already have both an xmail"); 322 call ioa_ ("^5xdirectory (^a) and the mlsys directory (^a),", xmail_dir_entry, mlsys_dir_entry); 323 call ioa_ ("^5xxmail cannot rename its directory and continue. Please move"); 324 call ioa_ ("^5xeverything into the xmail directory and delete the mlsys directory."); 325 call ioa_ ("^5xIf you have problems, contact your project or site administrator."); 326 code = xmail_err_$exit_now; 327 goto OPEN_EXIT; 328 end; 329 330 if xmail_dir_exists & ^mlsys_dir_exists 331 then do; /* Add name "Person_id.mlsys" */ 332 call hcs_$chname_file (home_dir, xmail_dir_entry, "", mlsys_dir_entry, code); 333 if code ^= 0 then goto OPEN_EXIT; 334 end; 335 336 if ^mlsys_dir_exists & ^xmail_dir_exists 337 then do; /* must create the mlsys dir */ 338 call hcs_$append_branchx (home_dir, mlsys_dir_entry, SMA_ACCESS_BIN, get_ring_ (), user_name || ".*.*", CREATE_DIR, 1, (0), code); 339 if code ^= 0 340 then do; 341 if code ^= error_table_$incorrect_access 342 then goto OPEN_EXIT; 343 else do; /* incorrect access - now check aim level */ 344 345 call expand_pathname_ (home_dir, aim_home_dir, aim_dir_entry, (0)); 346 call hcs_$get_access_class (aim_home_dir, aim_dir_entry, aim_level_dir, aim_code); 347 if aim_code = 0 348 then do; 349 aim_level_proc = get_authorization_ (); 350 if ^aim_check_$equal (aim_level_proc, aim_level_dir) 351 then do; 352 call convert_authorization_$to_string (aim_level_dir, aim_level_string, aim_code); 353 if aim_code = 0 354 then do; 355 if aim_level_string = "" 356 then aim_level_string = SYSTEM_LOW; 357 call com_err_ (error_table_$ai_restricted, "executive_mail", 358 "^/ To invoke executive_mail," || 359 "^/ logout and login using ""-auth ^a"".", aim_level_string); 360 end; 361 else call com_err_ (error_table_$ai_restricted, "executive_mail", 362 "^/ To invoke executive_mail," || 363 "^/ logout and login with the proper authorization."); 364 end; 365 else call com_err_ (code, "executive_mail", 366 "^/ Your home directory is inconsistent (no access)." || 367 "^/ Seek expert help."); 368 end; 369 else call com_err_ (code, "executive_mail", 370 "^/ Cannot determine authorization on home directory." || 371 "^/ Seek expert help."); 372 code = xmail_err_$exit_now; 373 goto OPEN_EXIT; 374 end; 375 end; 376 end; 377 378 xmail_dir_path = mlsys_dir_path; 379 380 /* Make a link to the users default mailbox (link "incoming.mbx" in xmail 381* directory to "person_id.mbx" in users home directory). */ 382 383 call hcs_$status_minf (xmail_dir_path, (INCOMING_MBX), NO_CHASE, type, bit_count, code); 384 if code = error_table_$noentry then do; 385 default_mbx = xmail_data.person || MBX_SUFFIX; 386 target = rtrim (home_dir) || ">" || default_mbx; 387 call hcs_$append_link (xmail_dir_path, (INCOMING_MBX), target, code); 388 end; 389 else if code = error_table_$incorrect_access then do; 390 call com_err_ (code, "executive_mail", 391 "^/ Check your authorization level." || 392 "^/ Incorrect access to ^a.", xmail_dir_path); 393 code = xmail_err_$exit_now; 394 goto OPEN_EXIT; 395 end; 396 else if code ^= 0 397 then goto OPEN_EXIT; 398 399 /* Create the outgoing savebox in the users xmail directory if it is not 400* already there. */ 401 402 call hcs_$status_minf (xmail_dir_path, OUTGOING_SV_BOX, CHASE, type, bit_count, code); 403 if code = error_table_$noentry then do; 404 call mlsys_utils_$create_mailbox (xmail_dir_path, OUTGOING_SV_BOX, code); 405 end; 406 if code ^= 0 407 then goto OPEN_EXIT; 408 409 /* Create and initialize the xmail data segment (a value segment) 410* in the user xmail directory if it is not already there. */ 411 412 auto_segment_acl_array.access_name = xmail_data.person || ".*.*"; 413 auto_segment_acl_array.mode = RW_ACCESS; 414 auto_segment_acl_array.extended_mode = "0"b; 415 416 call initiate_file_$create (xmail_dir_path, (VALUE_SEG_NAME), RW_ACCESS, value_seg_ptr, created_sw, bit_count, code); /* even if the value seg already exists, this call gets the pointer */ 417 if code = error_table_$incorrect_access | code = error_table_$no_r_permission then do; 418 value_seg_ptr = null; 419 call xmail_rebuild_value_seg_ (value_seg_ptr, code); 420 if code ^= 0 then code = xmail_err_$exit_now; 421 end; 422 else if code = error_table_$no_w_permission then do; 423 value_seg_ptr = null; 424 call xmail_rebuild_value_seg_$copy (value_seg_ptr, code); 425 if code ^= 0 then code = xmail_err_$exit_now; 426 end; 427 else if code = error_table_$moderr then do; 428 call com_err_ (code, "executive_mail", "^/Your mail system directory is inconsistent (no access). Seek expert help."); 429 code = xmail_err_$exit_now; 430 end; 431 else if code = 0 then do; /* Give the user access under all accounts */ 432 xmail_data.value_seg_pathname = mlsys_dir_path; 433 call hcs_$get_user_access_modes (xmail_dir_path, (VALUE_SEG_NAME), "", -1, a_mode, ex_mode, code); 434 if code = 0 then do; 435 if a_mode ^= RW_ACCESS then do; 436 call hcs_$add_acl_entries (xmail_dir_path, (VALUE_SEG_NAME), addr (auto_segment_acl_array), 1, code); 437 if code ^= 0 then goto OPEN_EXIT; 438 end; 439 end; 440 else goto OPEN_EXIT; 441 end; 442 if code ^= 0 & code ^= error_table_$segknown & code ^= error_table_$namedup 443 then goto OPEN_EXIT; 444 445 if created_sw then 446 call value_$init_seg (value_seg_ptr, PERMANENT_SEG, null, USE_ENTIRE_SEG, code); 447 if code ^= 0 & code ^= error_table_$segknown 448 then goto OPEN_EXIT; 449 450 xmail_data.mail_dir = xmail_dir_path; 451 452 call xmail_upgrade; /* update to current version if necessary */ 453 454 /* Truncate the error log segment. */ 455 456 call initiate_file_ (xmail_dir_path, ERROR_LOG_SEGMENT, RW_ACCESS, error_seg_ptr, bit_count, code); 457 bit_count = 0; 458 if code = 0 459 then call terminate_file_ (error_seg_ptr, bit_count, TERM_FILE_TRUNC_BC, code); 460 if code = error_table_$moderr | 461 code = error_table_$no_w_permission | 462 code = error_table_$no_r_permission then do; 463 call hcs_$status_long (home_dir, mlsys_dir_entry, CHASE, addr (auto_status_branch), null (), code); 464 /* hcs_$status_long returns a 5 bit mode with the 4 bit set on when the entry is a dir */ 465 if code = 0 466 then if substr(auto_status_branch.mode, 3, 3) = SMA_ACCESS 467 then do; 468 call hcs_$get_user_access_modes (xmail_dir_path,(ERROR_LOG_SEGMENT),"", -1, a_mode, ex_mode, code); 469 if a_mode ^= RW_ACCESS then do; 470 call hcs_$add_acl_entries (xmail_dir_path, (ERROR_LOG_SEGMENT), addr(auto_segment_acl_array), 1, code); 471 if code ^= 0 then goto OPEN_EXIT; 472 end; 473 end; 474 else do; 475 call initiate_file_$create (get_pdir_(), (ERROR_LOG_SEGMENT), RW_ACCESS, error_seg_ptr, created_sw, bit_count, code); 476 bit_count = 0; 477 xmail_data.error_seg_in_pdir = "1"b; 478 if code = 0 479 then call terminate_file_ (error_seg_ptr, bit_count, TERM_FILE_TRUNC_BC, code); 480 end; 481 end; 482 if code = error_table_$noentry then code = 0; 483 484 OPEN_EXIT: 485 call CLEAN_UP; 486 return; /* open_dir entry */ 487 488 close_dir: entry (); 489 490 dcl term_ entry (char(*), char(*), fixed bin(35)); 491 dcl dirname char(168); 492 dcl return_code fixed bin(35); 493 494 dirname = xmail_data.value_seg_pathname; 495 call term_ (rtrim(dirname), (VALUE_SEG_NAME), return_code); 496 497 return; /* close_dir entry */ 498 499 xmail_upgrade: proc; 500 501 502 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 503 /* */ 504 /* This code updates the user's xmail directory for version upgrades. These are things */ 505 /* we can skip if the version matches. The comparison depends on the 10 character */ 506 /* xmail_version to be given as: "2.0a EXL" or such so the major and minor version */ 507 /* numbers are first in the string. The intention is to ignore differences in the */ 508 /* version which are only EXL identifiers etc. */ 509 /* */ 510 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 511 512 call xmail_value_$get_no_validate (VERSION, version, code); 513 if code ^= 0 then version = ""; 514 else do; 515 version = ltrim (version); 516 idx = index (version, " "); 517 if idx ^= 0 518 then version = substr (version, 1, idx - 1); 519 end; 520 if version = xmail_version then goto UPGRADE_EXIT; 521 522 /* Establish default values for personalization options */ 523 524 call xmail_value_$get_no_validate (SAVE_MESSAGE, save_message, code); 525 if code ^= 0 then save_message = ""; 526 call xmail_value_$get_no_validate (SAVE_MAILBOX, save_mailbox, code); 527 if code ^= 0 then save_mailbox = ""; 528 529 if save_message = "" then do; 530 call xmail_value_$set (SAVE_MESSAGE, (YES), unused_return, code); /* don't change the automatic copy, we'll need it later */ 531 if code ^= 0 then goto UPGRADE_EXIT; 532 end; 533 534 if save_mailbox = "" then do; 535 if save_message = "" then call xmail_value_$set (SAVE_MAILBOX, (ASK), save_mailbox, code); 536 else call xmail_value_$set (SAVE_MAILBOX, "outgoing", save_mailbox, code); 537 if code ^= 0 then goto UPGRADE_EXIT; 538 end; 539 540 call SET_DEFAULT (ACKNOWLEDGE, (NO)); 541 call SET_DEFAULT (LISTS_AS_MENUS, (NO)); 542 call SET_DEFAULT (INTERACTIVE_MSGS, (YES)); 543 call SET_DEFAULT (ALWAYS_ESCAPE, (NO)); 544 call SET_DEFAULT (MULTICS_MODE, (NO)); 545 call SET_DEFAULT (MSGS_AS_MAIL, (NO)); 546 call SET_DEFAULT (REMOVE_MENUS, (NO)); 547 call SET_DEFAULT (CONFIRM_PRINT, (YES)); 548 call SET_DEFAULT (INCLUDE_ORIGINAL, (NO)); 549 call SET_DEFAULT (FILE_ORIGINAL, (NO)); 550 call SET_DEFAULT (ORIGINAL_IN_WINDOW, (YES)); 551 552 553 /* Add the current suffix to any existing mailing lists. */ 554 area_ptr = get_system_free_area_ (); 555 556 star_entry_count = 0; 557 call hcs_$star_ (xmail_dir_path, "**.mlist", star_ALL_ENTRIES, area_ptr, star_entry_count, star_entry_ptr, star_names_ptr, code); 558 if code = error_table_$nomatch then code = 0; 559 else if code ^= 0 /* other error */ 560 then goto UPGRADE_EXIT; 561 562 if star_entry_count > 0 then 563 do idx = 1 to star_entry_count; 564 seg_name = star_names (star_entries (idx).nindex); 565 call hcs_$chname_file (xmail_dir_path, rtrim (seg_name), "", 566 reverse (after (reverse (rtrim (seg_name)), reverse (".mlist"))) || ".mls", code); 567 if code ^= 0 & code ^= error_table_$segnamedup then goto UPGRADE_EXIT; 568 end; 569 570 /* Rename the old error log segment if it exists. */ 571 572 call hcs_$status_minf (xmail_dir_path, user_name || ".error", NO_CHASE, type, bit_count, code); 573 if code = 0 then do; 574 call hcs_$chname_file (xmail_dir_path, user_name || ".error", user_name || ".xmail_error", ERROR_LOG_SEGMENT, code); 575 if code = error_table_$segnamedup | code = error_table_$namedup then do; 576 call delete_$path (xmail_dir_path, user_name || ".error", SEG_FORCE, "", code); 577 end; 578 end; 579 else if code = error_table_$noentry then code = 0; 580 if code ^= 0 581 then goto UPGRADE_EXIT; 582 583 /* If everything else succeeds, set the new version in the xmail value segment. */ 584 585 call xmail_value_$set (VERSION, (xmail_version), version, code); 586 if code ^= 0 then goto UPGRADE_EXIT; 587 588 UPGRADE_EXIT: 589 return; 590 591 SET_DEFAULT: proc (sd_value_name, sd_default); 592 593 /* PARAMETERS */ 594 595 dcl sd_value_name char (*); 596 dcl sd_default char (*); 597 598 /* BEGIN */ 599 600 call xmail_value_$get_no_validate (sd_value_name, answer_yn, code); 601 if code ^= 0 | answer_yn = "" 602 then do; 603 call xmail_value_$set (sd_value_name, (sd_default), answer_yn, code); 604 if code ^= 0 605 then goto UPGRADE_EXIT; 606 end; 607 608 end SET_DEFAULT; 609 610 end xmail_upgrade; 611 612 613 CLEAN_UP: proc; 614 if star_names_ptr ^= null () then free star_names;/* order is important */ 615 if star_entry_ptr ^= null () then free star_entries; 616 end CLEAN_UP; 617 1 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 1 2 /* format: style3,indcomtxt,idind30 */ 1 3 1 4 declare acl_ptr pointer; 1 5 declare acl_count fixed bin; 1 6 1 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 1 8 2 version char (8) aligned, 1 9 2 count fixed bin, 1 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 1 11 1 12 declare 1 general_acl_entry based, 1 13 2 access_name character (32) unaligned, 1 14 2 mode bit (36) aligned, 1 15 2 status_code fixed bin (35); 1 16 1 17 1 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 1 19 2 version char (8) aligned, 1 20 2 count fixed bin, 1 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 1 22 1 23 declare 1 general_extended_acl_entry aligned based, 1 24 2 access_name character (32) unaligned, 1 25 2 mode bit (36) aligned, 1 26 2 extended_mode bit (36) aligned, 1 27 2 status_code fixed bin (35); 1 28 1 29 1 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 1 31 2 version char (8) aligned, 1 32 2 count fixed bin, 1 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 1 34 1 35 declare 1 general_delete_acl_entry aligned based, 1 36 2 access_name character (32) unaligned, 1 37 2 status_code fixed bin (35); 1 38 1 39 1 40 declare 1 segment_acl aligned based (acl_ptr), 1 41 2 version fixed bin, 1 42 2 count fixed bin, 1 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 1 44 1 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 1 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 1 47 1 48 1 49 declare 1 directory_acl aligned based (acl_ptr), 1 50 2 version fixed bin, 1 51 2 count fixed bin, 1 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 1 53 1 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 1 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 1 56 1 57 1 58 declare 1 delete_acl based (acl_ptr) aligned, 1 59 2 version fixed bin, 1 60 2 count fixed bin, 1 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 1 62 1 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 1 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 1 65 1 66 1 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 1 68 DIR_ACL_VERSION_1 init ("dra1"), 1 69 DELETE_ACL_VERSION_1 init ("dla1")) 1 70 char (4) int static options (constant); 1 71 1 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 1 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 1 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 1 75 char (8) internal static options (constant); 1 76 1 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 1 78 1 79 /* End include file acl_structures.incl.pl1 */ 618 619 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 620 621 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 622 623 4 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 4 2 4 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 4 4 4 5 /* This include file contains branch and link structures returned by 4 6* hcs_$status_ and hcs_$status_long. */ 4 7 4 8 dcl 1 status_branch aligned based (status_ptr), 4 9 2 short aligned, 4 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 4 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 4 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 4 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 4 14 3 dtu bit (36) unaligned, /* date/time last used */ 4 15 3 mode bit (5) unaligned, /* caller's effective access */ 4 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 4 17 3 pad1 bit (8) unaligned, 4 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 4 19 4 20 /* Limit of information returned by hcs_$status_ */ 4 21 4 22 2 long aligned, 4 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 4 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 4 25 3 lvid bit (36) unaligned, /* logical volume ID */ 4 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 4 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 4 28 3 pad2 bit (8) unaligned, 4 29 3 copy_switch bit (1) unaligned, /* copy switch */ 4 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 4 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 4 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 4 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 4 34 3 pad3 bit (5) unaligned, 4 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 4 36 3 uid bit (36) unaligned; /* unique ID */ 4 37 4 38 dcl 1 status_link aligned based (status_ptr), 4 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 4 40 2 nnames fixed bin (16) unaligned unsigned, 4 41 2 names_relp bit (18) unaligned, 4 42 2 dtem bit (36) unaligned, 4 43 2 dtd bit (36) unaligned, 4 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 4 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 4 46 4 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 4 48 based (pointer (status_area_ptr, status_branch.names_relp)), 4 49 /* array of names returned */ 4 50 status_pathname character (status_link.pathname_length) aligned 4 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 4 52 /* link target path */ 4 53 status_area_ptr pointer, 4 54 status_ptr pointer; 4 55 4 56 dcl (Link initial (0), 4 57 Segment initial (1), 4 58 Directory initial (2)) fixed bin internal static options (constant); 4 59 /* values for type fields declared above */ 4 60 4 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 624 625 5 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 5 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 5 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 5 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 10* Adding switch to indicate request for menu display came from general help. 5 11* This is so general help menu will be displayed in top screen. 5 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 5 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 14* Add switch to indicate whether or not it is permissible to process mail 5 15* in other users' mailboxes (foreign_mailbox). 5 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 5 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 18* Add bit to indicate whether or not this is a true cleanup condition. 5 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 5 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 21* Rearrange to group all the bit flags together in one word with a pad. 5 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 5 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 5 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 5 25* you keep around a pointer to a structure which no longer exists. 5 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 5 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 5 28* Add a field to indicate whether or not we should process interactive msgs. 5 29* Increment version to 4.1 so default value will get set. 5 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 5 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 5 32* Add a field to indicate whether or not we're processing a reply so that we 5 33* will be able to rebuild the screens properly after a disconnect occurs. 5 34* Error_list #114. 5 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 5 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 5 37* Add a bit to indicate whether or not the error segment had to be created 5 38* in the pdir (because we didn't have sma access to the mlsys_dir). 5 39* END HISTORY COMMENTS */ 5 40 5 41 5 42 /* Written 5/13/81 by Paul H. Kyzivat */ 5 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 5 44* and to add n_fkeys_used */ 5 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 5 46* varying string. */ 5 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 5 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 5 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 5 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 5 51 5 52 dcl xmail_data_ptr external static ptr init (null); 5 53 5 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 5 55 2 mail_dir char (168) varying, 5 56 2 first_label label, 5 57 2 quit_label label, 5 58 2 value_seg_pathname char (168) varying, 5 59 2 moved_user_io ptr, 5 60 2 normal_usage char (80) unal, 5 61 2 function_key_info, 5 62 3 function_key_data_ptr ptr, 5 63 3 n_fkeys_used fixed bin, 5 64 2 actee, 5 65 3 person char(32) varying, 5 66 3 project char(32) varying, 5 67 2 flags aligned, 5 68 3 mail_in_incoming bit (1) unal, 5 69 3 lists_as_menus bit (1) unal, /* personalization */ 5 70 3 remove_menus bit (1) unal, /* personalization */ 5 71 3 confirm_print bit (1) unal, /* personalization */ 5 72 3 multics_mode bit (1) unal, /* personalization */ 5 73 3 interactive_msgs bit (1) unal, /* personalization */ 5 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 5 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 5 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 5 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 5 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 5 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 5 80 3 pad bit (24) unal; 5 81 5 82 5 83 5 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 5 85 5 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 626 627 628 end xmail_dir_manager_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/02/88 0735.9 xmail_dir_manager_.pl1 >spec>install>MR12.2-1098>xmail_dir_manager_.pl1 618 1 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 620 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 622 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 624 4 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 626 5 09/02/88 0743.4 xmail_data.incl.pl1 >spec>install>MR12.2-1098>xmail_data.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. ACKNOWLEDGE 000105 constant char(14) initial packed unaligned dcl 256 set ref 540* ALWAYS_ESCAPE 000077 constant char(21) initial packed unaligned dcl 256 set ref 543* ASK 000161 constant char(3) initial packed unaligned dcl 238 ref 535 CHASE 000250 constant fixed bin(1,0) initial dcl 239 set ref 299* 308* 402* 463* CONFIRM_PRINT 000072 constant char(19) initial packed unaligned dcl 256 set ref 547* CREATE_DIR 000250 constant fixed bin(1,0) initial dcl 240 set ref 338* ERROR_LOG_SEGMENT 000156 constant char(11) initial packed unaligned dcl 241 set ref 456* 468 470 475 574* FILE_ORIGINAL 000066 constant char(16) initial packed unaligned dcl 256 set ref 549* INCLUDE_ORIGINAL 000061 constant char(19) initial packed unaligned dcl 256 set ref 548* INCOMING_MBX 000145 constant varying char(32) initial dcl 242 ref 383 387 INTERACTIVE_MSGS 000046 constant char(19) initial packed unaligned dcl 256 set ref 542* LISTS_AS_MENUS 000041 constant char(17) initial packed unaligned dcl 256 set ref 541* MBX_SUFFIX 000144 constant char(4) initial packed unaligned dcl 243 ref 385 MLSYS_DIR_SUFFIX 000142 constant char(6) initial packed unaligned dcl 244 ref 295 MSGS_AS_MAIL 000035 constant char(15) initial packed unaligned dcl 256 set ref 545* MULTICS_MODE 000031 constant char(15) initial packed unaligned dcl 256 set ref 544* NO constant char(2) initial packed unaligned dcl 245 ref 540 541 543 544 545 546 548 549 NO_CHASE 000236 constant fixed bin(1,0) initial dcl 246 set ref 383* 572* ORIGINAL_IN_WINDOW 000053 constant char(21) initial packed unaligned dcl 256 set ref 550* OUTGOING_SV_BOX 000021 constant char(32) initial packed unaligned dcl 256 set ref 402* 404* PERMANENT_SEG 000236 constant fixed bin(17,0) initial dcl 247 set ref 445* REMOVE_MENUS 000015 constant char(15) initial packed unaligned dcl 256 set ref 546* RW_ACCESS 000004 constant bit(3) initial packed unaligned dcl 2-11 set ref 413 416* 435 456* 469 475* SAVE_MAILBOX 000011 constant char(15) initial packed unaligned dcl 256 set ref 526* 535* 536* SAVE_MESSAGE 000005 constant char(15) initial packed unaligned dcl 256 set ref 524* 530* SEG_FORCE 000140 constant bit(6) initial packed unaligned dcl 248 set ref 576* SMA_ACCESS constant bit(3) initial packed unaligned dcl 2-11 ref 465 SMA_ACCESS_BIN 000241 constant fixed bin(5,0) initial dcl 2-36 set ref 338* SYSTEM_LOW 000130 constant char(32) initial packed unaligned dcl 249 ref 355 TERM_FILE_TRUNC_BC 000127 constant bit(2) initial packed unaligned dcl 250 set ref 458* 478* USE_ENTIRE_SEG 000236 constant fixed bin(19,0) initial dcl 251 set ref 445* VALUE_SEG_NAME 000116 constant varying char(32) initial dcl 252 ref 416 433 436 495 VERSION 000114 constant char(7) initial packed unaligned dcl 253 set ref 512* 585* XMAIL_DIR_SUFFIX 000112 constant char(6) initial packed unaligned dcl 254 ref 294 YES 000111 constant char(3) initial packed unaligned dcl 255 ref 530 542 547 550 a_mode 000100 automatic bit(36) dcl 139 set ref 433* 435 468* 469 access_name 000635 automatic char(32) level 2 packed packed unaligned dcl 176 set ref 412* actee 171 based structure level 2 dcl 5-54 addr builtin function dcl 180 ref 299 299 308 308 436 436 463 463 470 470 after builtin function dcl 180 ref 565 aim_check_$equal 000010 constant entry external dcl 189 ref 350 aim_code 000101 automatic fixed bin(35,0) dcl 140 set ref 346* 347 352* 353 aim_dir_entry 000102 automatic char(32) packed unaligned dcl 141 set ref 345* 346* aim_home_dir 000112 automatic char(168) packed unaligned dcl 142 set ref 345* 346* aim_level_dir 000164 automatic bit(72) dcl 143 set ref 346* 350* 352* aim_level_proc 000166 automatic bit(72) dcl 144 set ref 349* 350* aim_level_string 000170 automatic char(32) packed unaligned dcl 145 set ref 352* 355 355* 357* answer_yn 000200 automatic varying char(3) dcl 146 set ref 600* 601 603* area_ptr 000202 automatic pointer dcl 147 set ref 554* 557* auto_segment_acl_array 000635 automatic structure level 1 unaligned dcl 176 set ref 436 436 470 470 auto_status_branch 000623 automatic structure level 1 unaligned dcl 175 set ref 299 299 308 308 463 463 bit_count 000204 automatic fixed bin(24,0) dcl 148 set ref 383* 402* 416* 456* 457* 458* 475* 476* 478* 572* cleanup 000650 stack reference condition dcl 185 ref 286 code parameter fixed bin(35,0) dcl 149 set ref 280 282* 299* 300 300 305 308* 309 309 314 326* 332* 333 338* 339 341 365* 369* 372* 383* 384 387* 389 390* 393* 396 402* 403 404* 406 416* 417 417 419* 420 420* 422 424* 425 425* 427 428* 429* 431 433* 434 436* 437 442 442 442 445* 447 447 456* 458 458* 460 460 460 463* 465 468* 470* 471 475* 478 478* 482 482* 512* 513 524* 525 526* 527 530* 531 535* 536* 537 557* 558 558* 559 565* 567 567 572* 573 574* 575 575 576* 579 579* 580 585* 586 600* 601 603* 604 com_err_ 000012 constant entry external dcl 190 ref 277 357 361 365 369 390 428 convert_authorization_$to_string 000014 constant entry external dcl 191 ref 352 created_sw 000205 automatic bit(1) dcl 150 set ref 416* 445 475* default_mbx 000206 automatic varying char(32) dcl 151 set ref 385* 386 delete_$path 000016 constant entry external dcl 192 ref 576 delete_acl_entry based structure level 1 dcl 1-63 directory_acl_entry based structure level 1 dcl 1-54 dirname 000656 automatic char(168) packed unaligned dcl 491 set ref 494* 495 495 error_seg_in_pdir 213(11) based bit(1) level 3 packed packed unaligned dcl 5-54 set ref 477* error_seg_ptr 000220 automatic pointer dcl 152 set ref 456* 458* 475* 478* error_table_$ai_restricted 000102 external static fixed bin(35,0) dcl 222 set ref 357* 361* error_table_$badcall 000104 external static fixed bin(35,0) dcl 223 set ref 277* error_table_$incorrect_access 000106 external static fixed bin(35,0) dcl 224 ref 341 389 417 error_table_$moderr 000110 external static fixed bin(35,0) dcl 225 ref 427 460 error_table_$namedup 000112 external static fixed bin(35,0) dcl 226 ref 442 575 error_table_$no_r_permission 000122 external static fixed bin(35,0) dcl 230 ref 417 460 error_table_$no_s_permission 000120 external static fixed bin(35,0) dcl 229 ref 300 309 error_table_$no_w_permission 000124 external static fixed bin(35,0) dcl 231 ref 422 460 error_table_$noentry 000114 external static fixed bin(35,0) dcl 227 ref 305 314 384 403 482 579 error_table_$nomatch 000116 external static fixed bin(35,0) dcl 228 ref 558 error_table_$segknown 000126 external static fixed bin(35,0) dcl 232 ref 442 447 error_table_$segnamedup 000130 external static fixed bin(35,0) dcl 233 ref 567 575 ex_mode 000222 automatic bit(36) dcl 153 set ref 433* 468* expand_pathname_ 000020 constant entry external dcl 193 ref 345 extended_mode 11 000635 automatic bit(36) level 2 dcl 176 set ref 414* flags 213 based structure level 2 dcl 5-54 general_acl_entry based structure level 1 unaligned dcl 1-12 general_delete_acl_entry based structure level 1 dcl 1-35 general_extended_acl_entry based structure level 1 dcl 1-23 get_authorization_ 000022 constant entry external dcl 194 ref 349 get_pdir_ 000024 constant entry external dcl 195 ref 475 475 get_ring_ 000026 constant entry external dcl 196 ref 338 338 get_system_free_area_ 000030 constant entry external dcl 197 ref 554 hcs_$add_acl_entries 000032 constant entry external dcl 198 ref 436 470 hcs_$append_branchx 000034 constant entry external dcl 199 ref 338 hcs_$append_link 000036 constant entry external dcl 200 ref 387 hcs_$chname_file 000040 constant entry external dcl 201 ref 332 565 574 hcs_$get_access_class 000042 constant entry external dcl 202 ref 346 hcs_$get_user_access_modes 000044 constant entry external dcl 203 ref 433 468 hcs_$star_ 000046 constant entry external dcl 205 ref 557 hcs_$status_long 000050 constant entry external dcl 206 ref 299 308 463 hcs_$status_minf 000052 constant entry external dcl 207 ref 383 402 572 home_dir 000223 automatic char(168) packed unaligned dcl 154 set ref 290* 296 297 299* 308* 332* 338* 345* 386 463* idx 000275 automatic fixed bin(17,0) dcl 155 set ref 516* 517 517 562* 564* index builtin function dcl 180 ref 516 initiate_file_ 000056 constant entry external dcl 209 ref 456 initiate_file_$create 000060 constant entry external dcl 210 ref 416 475 ioa_ 000054 constant entry external dcl 208 ref 320 321 322 323 324 325 long 4 000623 automatic structure level 2 dcl 175 ltrim builtin function dcl 180 ref 515 mail_dir based varying char(168) level 2 dcl 5-54 set ref 450* mlsys_dir_entry 000276 automatic char(32) packed unaligned dcl 156 set ref 295* 297 308* 322* 332* 338* 463* mlsys_dir_exists 000306 automatic bit(1) packed unaligned dcl 157 set ref 311* 314* 317 330 336 mlsys_dir_path 000307 automatic char(168) packed unaligned dcl 158 set ref 297* 378 432 mlsys_dir_uid 000361 automatic bit(36) packed unaligned dcl 159 set ref 312* 317 mlsys_utils_$create_mailbox 000062 constant entry external dcl 211 ref 404 mode 10 000635 automatic bit(36) level 2 in structure "auto_segment_acl_array" dcl 176 in procedure "xmail_dir_manager_" set ref 413* mode 3 000623 automatic bit(5) level 3 in structure "auto_status_branch" packed packed unaligned dcl 175 in procedure "xmail_dir_manager_" set ref 465 nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 3-27 ref 564 nnames 0(02) based fixed bin(16,0) array level 2 packed packed unsigned unaligned dcl 3-27 ref 614 null builtin function dcl 180 ref 284 285 299 299 308 308 418 423 445 445 463 463 614 615 person 171 based varying char(32) level 3 dcl 5-54 ref 288 385 412 project 202 based varying char(32) level 3 dcl 5-54 ref 289 return_code 000730 automatic fixed bin(35,0) dcl 492 set ref 495* reverse builtin function dcl 180 ref 565 565 565 rtrim builtin function dcl 180 ref 296 297 386 495 495 565 565 565 save_mailbox 000362 automatic varying char(32) dcl 160 set ref 526* 527* 534 535* 536* save_message 000373 automatic varying char(32) dcl 161 set ref 524* 525* 529 535 sd_default parameter char packed unaligned dcl 596 ref 591 603 sd_value_name parameter char packed unaligned dcl 595 set ref 591 600* 603* seg_name 000404 automatic char(32) packed unaligned dcl 162 set ref 564* 565 565 565 segment_acl_entry based structure level 1 dcl 1-45 short 000623 automatic structure level 2 dcl 175 star_ALL_ENTRIES 000242 constant fixed bin(2,0) initial dcl 3-111 set ref 557* star_entries based structure array level 1 dcl 3-27 ref 615 star_entry_count 000731 automatic fixed bin(17,0) dcl 3-14 set ref 556* 557* 562 562 614 615 star_entry_ptr 000732 automatic pointer dcl 3-15 set ref 285* 557* 564 614 615 615 star_names based char(32) array packed unaligned dcl 3-37 ref 564 614 star_names_ptr 000734 automatic pointer dcl 3-19 set ref 284* 557* 564 614 614 status_branch based structure level 1 dcl 4-8 substr builtin function dcl 180 ref 465 517 sum builtin function dcl 180 ref 614 target 000414 automatic char(168) packed unaligned dcl 163 set ref 386* 387* term_ 000134 constant entry external dcl 490 ref 495 terminate_file_ 000064 constant entry external dcl 212 ref 458 478 type 000500 automatic fixed bin(2,0) dcl 165 set ref 383* 402* 572* uid 11 000623 automatic bit(36) level 3 packed packed unaligned dcl 175 set ref 303 312 unused_return 000501 automatic varying char(32) dcl 166 set ref 530* user_info_$homedir 000066 constant entry external dcl 213 ref 290 user_name 000466 automatic varying char(35) dcl 164 set ref 288* 294 295 338 572 574 574 576 user_project 000512 automatic varying char(32) dcl 167 set ref 289* value_$init_seg 000070 constant entry external dcl 214 ref 445 value_seg_pathname 64 based varying char(168) level 2 dcl 5-54 set ref 432* 494 value_seg_ptr 000524 automatic pointer dcl 168 set ref 416* 418* 419* 423* 424* 445* version 000526 automatic varying char(32) dcl 169 set ref 512* 513* 515* 515 516 517* 517 520 585* xmail_data based structure level 1 dcl 5-54 xmail_data_ptr 000136 external static pointer initial dcl 5-52 ref 288 289 385 412 432 450 477 494 xmail_dir_entry 000537 automatic char(32) packed unaligned dcl 170 set ref 294* 296 299* 322* 332* xmail_dir_exists 000547 automatic bit(1) packed unaligned dcl 171 set ref 302* 305* 317 330 336 xmail_dir_path 000550 automatic char(168) packed unaligned dcl 172 set ref 296* 378* 383* 387* 390* 402* 404* 416* 433* 436* 450 456* 468* 470* 557* 565* 572* 574* 576* xmail_dir_uid 000622 automatic bit(36) packed unaligned dcl 173 set ref 303* 317 xmail_err_$exit_now 000132 external static fixed bin(35,0) dcl 234 ref 326 372 393 420 425 429 xmail_rebuild_value_seg_ 000072 constant entry external dcl 215 ref 419 xmail_rebuild_value_seg_$copy 000074 constant entry external dcl 216 ref 424 xmail_value_$get_no_validate 000076 constant entry external dcl 217 ref 512 524 526 600 xmail_value_$set 000100 constant entry external dcl 218 ref 530 535 536 585 603 xmail_version 000000 constant varying char(10) initial dcl 5-84 set ref 320* 520 585 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 1-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 1-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 1-67 Directory internal static fixed bin(17,0) initial dcl 4-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 GENERAL_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 1-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 1-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 1-72 Link internal static fixed bin(17,0) initial dcl 4-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 1-67 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Segment internal static fixed bin(17,0) initial dcl 4-56 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 acl_count automatic fixed bin(17,0) dcl 1-5 acl_ptr automatic pointer dcl 1-4 delete_acl based structure level 1 dcl 1-58 delete_acl_array based structure array level 1 dcl 1-64 directory_acl based structure level 1 dcl 1-49 directory_acl_array based structure array level 1 dcl 1-55 general_acl based structure level 1 dcl 1-7 general_delete_acl based structure level 1 dcl 1-30 general_extended_acl based structure level 1 dcl 1-18 segment_acl based structure level 1 dcl 1-40 segment_acl_array based structure array level 1 dcl 1-46 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 3-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 3-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char packed unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array packed unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 status_area_ptr automatic pointer dcl 4-47 status_entry_names based char(32) array dcl 4-47 status_link based structure level 1 dcl 4-38 status_pathname based char dcl 4-47 status_ptr automatic pointer dcl 4-47 NAMES DECLARED BY EXPLICIT CONTEXT. CLEAN_UP 005031 constant entry internal dcl 613 ref 286 484 OPEN_EXIT 003465 constant label dcl 484 ref 305 314 327 333 341 373 394 396 406 434 437 442 447 471 SET_DEFAULT 004712 constant entry internal dcl 591 ref 540 541 542 543 544 545 546 547 548 549 550 UPGRADE_EXIT 004711 constant label dcl 588 ref 520 531 537 559 567 580 586 604 close_dir 003473 constant entry external dcl 488 open_dir 000700 constant entry external dcl 280 xmail_dir_manager_ 000641 constant entry external dcl 54 xmail_upgrade 003560 constant entry internal dcl 499 ref 452 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6034 6174 5263 6044 Length 6626 5263 140 415 551 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_dir_manager_ 752 external procedure is an external procedure. on unit on line 286 64 on unit xmail_upgrade internal procedure shares stack frame of external procedure xmail_dir_manager_. SET_DEFAULT internal procedure shares stack frame of external procedure xmail_dir_manager_. CLEAN_UP 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xmail_dir_manager_ 000100 a_mode xmail_dir_manager_ 000101 aim_code xmail_dir_manager_ 000102 aim_dir_entry xmail_dir_manager_ 000112 aim_home_dir xmail_dir_manager_ 000164 aim_level_dir xmail_dir_manager_ 000166 aim_level_proc xmail_dir_manager_ 000170 aim_level_string xmail_dir_manager_ 000200 answer_yn xmail_dir_manager_ 000202 area_ptr xmail_dir_manager_ 000204 bit_count xmail_dir_manager_ 000205 created_sw xmail_dir_manager_ 000206 default_mbx xmail_dir_manager_ 000220 error_seg_ptr xmail_dir_manager_ 000222 ex_mode xmail_dir_manager_ 000223 home_dir xmail_dir_manager_ 000275 idx xmail_dir_manager_ 000276 mlsys_dir_entry xmail_dir_manager_ 000306 mlsys_dir_exists xmail_dir_manager_ 000307 mlsys_dir_path xmail_dir_manager_ 000361 mlsys_dir_uid xmail_dir_manager_ 000362 save_mailbox xmail_dir_manager_ 000373 save_message xmail_dir_manager_ 000404 seg_name xmail_dir_manager_ 000414 target xmail_dir_manager_ 000466 user_name xmail_dir_manager_ 000500 type xmail_dir_manager_ 000501 unused_return xmail_dir_manager_ 000512 user_project xmail_dir_manager_ 000524 value_seg_ptr xmail_dir_manager_ 000526 version xmail_dir_manager_ 000537 xmail_dir_entry xmail_dir_manager_ 000547 xmail_dir_exists xmail_dir_manager_ 000550 xmail_dir_path xmail_dir_manager_ 000622 xmail_dir_uid xmail_dir_manager_ 000623 auto_status_branch xmail_dir_manager_ 000635 auto_segment_acl_array xmail_dir_manager_ 000656 dirname xmail_dir_manager_ 000730 return_code xmail_dir_manager_ 000731 star_entry_count xmail_dir_manager_ 000732 star_entry_ptr xmail_dir_manager_ 000734 star_names_ptr xmail_dir_manager_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mpfx2 enable_op shorten_stack ext_entry int_entry reverse_cs set_chars_eis op_freen_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal com_err_ convert_authorization_$to_string delete_$path expand_pathname_ get_authorization_ get_pdir_ get_ring_ get_system_free_area_ hcs_$add_acl_entries hcs_$append_branchx hcs_$append_link hcs_$chname_file hcs_$get_access_class hcs_$get_user_access_modes hcs_$star_ hcs_$status_long hcs_$status_minf initiate_file_ initiate_file_$create ioa_ mlsys_utils_$create_mailbox term_ terminate_file_ user_info_$homedir value_$init_seg xmail_rebuild_value_seg_ xmail_rebuild_value_seg_$copy xmail_value_$get_no_validate xmail_value_$set THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_restricted error_table_$badcall error_table_$incorrect_access error_table_$moderr error_table_$namedup error_table_$no_r_permission error_table_$no_s_permission error_table_$no_w_permission error_table_$noentry error_table_$nomatch error_table_$segknown error_table_$segnamedup xmail_data_ptr xmail_err_$exit_now LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 54 000640 277 000646 278 000674 280 000675 282 000705 284 000707 285 000711 286 000712 288 000734 289 000744 290 000751 294 000761 295 000777 296 001014 297 001054 299 001100 300 001142 302 001150 303 001152 304 001154 305 001155 308 001160 309 001220 311 001226 312 001230 313 001232 314 001233 317 001236 320 001245 321 001265 322 001301 323 001324 324 001340 325 001354 326 001370 327 001374 330 001375 332 001401 333 001431 336 001434 338 001440 339 001553 341 001557 345 001562 346 001606 347 001633 349 001635 350 001644 352 001662 353 001703 355 001705 357 001714 360 001752 361 001753 364 002005 365 002006 368 002041 369 002042 372 002075 373 002101 378 002102 383 002105 384 002151 385 002157 386 002203 387 002244 388 002277 389 002301 390 002303 393 002340 394 002344 396 002345 402 002347 403 002405 404 002412 406 002432 412 002435 413 002456 414 002461 416 002462 417 002531 418 002541 419 002543 420 002553 421 002561 422 002562 423 002564 424 002566 425 002576 426 002604 427 002605 428 002607 429 002640 430 002644 431 002645 432 002647 433 002656 434 002726 435 002732 436 002735 437 003001 442 003005 445 003014 447 003040 450 003046 452 003056 456 003057 457 003115 458 003116 460 003146 463 003157 465 003216 468 003226 469 003274 470 003277 471 003341 473 003344 475 003345 476 003422 477 003423 478 003430 482 003457 484 003465 486 003471 488 003472 494 003500 495 003507 497 003556 499 003560 512 003561 513 003603 515 003610 516 003632 517 003644 520 003652 524 003660 525 003701 526 003705 527 003726 529 003732 530 003737 531 003770 534 003773 535 004000 536 004037 537 004071 540 004074 541 004101 542 004106 543 004113 544 004120 545 004125 546 004132 547 004137 548 004144 549 004151 550 004156 554 004163 556 004172 557 004173 558 004241 559 004250 562 004252 564 004263 565 004274 567 004404 568 004413 572 004415 573 004471 574 004475 575 004562 576 004572 577 004640 578 004641 579 004642 580 004646 585 004651 586 004705 588 004711 591 004712 600 004730 601 004754 603 004764 604 005023 608 005027 613 005030 614 005036 615 005073 616 005102 ----------------------------------------------------------- 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