COMPILATION LISTING OF SEGMENT forum_seg_mgr_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/16/86 1404.7 mst Sat Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1984 * 4* * * 5* ************************************************************** */ 6 7 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 11* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 12* Don't allow removal of *.* ACL with replace entrypoint. 13* Require only 'm' permission on containing dir to change acl. 14* END HISTORY COMMENTS */ 15 16 17 forum_seg_mgr_$create_forum: 18 proc (P_directory, P_name, P_status); 19 20 /* Version 2 Forum -- 21* This module contains routines to create, delete, initiate, and 22* terminate segments of meetings. 23* 24* 12/31/82 Jay Pattin */ 25 /* Modified 03/09/84 by Jeffrey I. Schiller so a chairman without sma 26* access to the containing dir of a forum can set access on the forum. 27* Although he still cannot set "c" access unless he does have "sma" 28* Modified 6/24/84 Jay Pattin to remove above code, which didn't work 29* and replace it with code that allows anyone with "c" access to give 30* "c" access. */ 31 /* Audit changes, J. Spencer Love 10/05/84 */ 32 33 declare (P_acl_count fixed bin, 34 P_acl_ptr ptr, 35 P_area_ptr ptr, 36 P_attendee_seg_ptr ptr, 37 P_directory char (*), 38 P_forum_idx fixed bin, 39 P_lock_switch bit (1) aligned, 40 P_name char (*), 41 P_new_name char (*), 42 P_no_sysdaemon bit (1), 43 P_old_name char (*), 44 P_open_data_ptr ptr, 45 P_real_dir char (*), 46 P_real_name char (*), 47 P_return_ptr ptr, 48 P_seg_index fixed bin, 49 P_status fixed bin (35), 50 P_transaction_seg_ptr ptr, 51 P_uid bit (36) aligned, 52 P_xacl bit (36) aligned) 53 parameter; 54 55 declare acl_count fixed bin, 56 acl_ptr ptr, 57 area_ptr ptr, 58 based_area area based (area_ptr), 59 create_only bit (1) aligned, 60 created bit (1) aligned, 61 directory char (168), 62 dirname_buffer char (168), 63 dirname_len fixed bin, 64 dirname char (dirname_len) based (addr (dirname_buffer)), 65 egress label variable, 66 forum_dir char (168), 67 forum_idx fixed bin, 68 mode fixed bin (5), 69 name char (32), 70 new_name char (32), 71 old_name char (32), 72 p ptr, 73 real_dir char (168), 74 real_name char (32), 75 rings (3) fixed bin (3), 76 safety_switch bit (1), 77 seg_index fixed bin, 78 status fixed bin (35), 79 uid bit (36) aligned, 80 xacl bit (36) aligned; 81 82 declare static_init bit (1) aligned static init ("0"b), 83 my_authorization bit (72) aligned static, 84 full_authorization bit (72) aligned, 85 user_ring fixed bin (3) static, 86 inner_ring fixed bin (3) static, 87 person_id char (22) static, 88 project_id char (9) static, 89 MAX_ATTENDEES fixed bin static options (constant) initial (6000), 90 me char (16) static options (constant) init ("forum_seg_mgr_"); 91 92 declare 1 aim_bits aligned like aim_template based (addr (full_authorization)); 93 94 declare 1 auto_area_info aligned like area_info; 95 96 declare 1 acl_term aligned based, 97 2 access_name char (32), 98 2 modes bit (36), 99 2 xmodes bit (36), 100 2 code fixed bin (35); 101 102 declare 1 one_acl like acl_term, 103 1 two_acls (2) like acl_term, 104 1 acl (acl_count) like acl_term based (acl_ptr), 105 1 delete_acl (acl_count) based (acl_ptr), 106 2 access_name char (32), 107 2 code fixed bin (35); 108 109 declare check_star_name_$entry entry (char (*), fixed bin (35)), 110 define_area_ entry (ptr, fixed bin (35)), 111 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 112 forum_logger_$any_other entry options (variable), 113 forum_open_mgr_$lookup_forum_idx 114 entry (fixed bin, ptr, bit (36) aligned, fixed bin (35)), 115 get_authorization_ entry returns (bit (72) aligned), 116 get_group_id_ entry returns (char (32)), 117 get_lock_id_ entry returns (bit (36) aligned), 118 get_ring_ entry returns (fixed bin (3)), 119 hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)), 120 hcs_$append_branch entry (char (*), char (*), fixed bin (5), fixed bin (35)), 121 hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), 122 fixed bin (1), fixed bin (1), fixed bin (24), fixed bin (35)), 123 hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)), 124 hcs_$del_dir_tree entry (char (*), char (*), fixed bin (35)), 125 hcs_$delentry_file entry (char (*), char (*), fixed bin (35)), 126 hcs_$delete_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)), 127 hcs_$fs_get_access_modes entry (ptr, bit (36) aligned, bit (36) aligned, fixed bin (35)), 128 hcs_$fs_get_brackets entry (ptr, fixed bin (5), (3) fixed bin (3), fixed bin (35)), 129 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 130 hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)), 131 hcs_$get_authorization entry (bit (72) aligned, bit (72) aligned), 132 hcs_$get_safety_sw_seg entry (ptr, bit (1), fixed bin (35)), 133 hcs_$get_uid_seg entry (ptr, bit (36) aligned, fixed bin (35)), 134 hcs_$get_user_effmode entry (char (*), char (*), char (*), fixed bin, fixed bin (5), fixed bin (35)), 135 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, 136 fixed bin (35)), 137 hcs_$level_get entry (fixed bin (3)), 138 hcs_$level_set entry (fixed bin (3)), 139 hcs_$list_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)), 140 hcs_$replace_acl entry (char (*), char (*), ptr, fixed bin, bit (1), fixed bin (35)), 141 hcs_$replace_dir_acl entry (char (*), char (*), ptr, fixed bin, bit (1), fixed bin (35)), 142 hcs_$set_ring_brackets entry (char(*), char(*), (3)fixed bin(3), fixed bin(35)), 143 hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)), 144 hcs_$terminate_noname entry (ptr, fixed bin (35)), 145 pathname_ entry (char (*), char (*)) returns (char (168)), 146 read_write_allowed_ entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned), 147 set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)), 148 set_lock_$unlock entry (bit (36) aligned, fixed bin (35)), 149 user_info_$login_data entry (char (*), char (*), char (*), fixed bin, fixed bin, fixed bin, fixed bin (71), 150 char (*)); 151 152 declare (error_table_$ai_restricted, 153 error_table_$bad_acl_mode, 154 error_table_$dirlong, 155 error_table_$incorrect_access, 156 error_table_$invalid_lock_reset, 157 error_table_$lock_wait_time_exceeded, 158 error_table_$namedup, 159 error_table_$noentry, 160 error_table_$nostars, 161 error_table_$notadir, 162 error_table_$safety_sw_on, 163 error_table_$seg_busted, 164 forum_et_$anon_chairman, 165 forum_et_$blank_forum_name, 166 forum_et_$invalid_seg_idx, 167 forum_et_$long_forum_name, 168 forum_et_$meeting_bloat, 169 forum_et_$need_star_acl, 170 forum_et_$no_suffix, 171 forum_et_$no_such_forum, 172 forum_et_$not_a_forum, 173 forum_et_$unexpected_fault, 174 sys_info$max_seg_size) 175 fixed bin (35) external static; 176 177 declare forum_data_$forum_ring fixed bin (3) external; 178 179 declare (addr, addrel, char, hbound, length, ltrim, null, ptr, rel, rtrim, size, substr, unspec) 180 builtin, 181 (any_other, cleanup, seg_fault_error) 182 condition; 183 1 1 /* BEGIN INCLUDE FILE: forum_structures.incl.pl1 */ 1 2 1 3 /* This include file contains the declarations for all of the structures 1 4* used in a version 2 Forum meeting. 1 5* 1 6* Jay Pattin 12/28/82 */ 1 7 1 8 declare attendee_seg_ptr ptr, 1 9 transaction_seg_ptr ptr, 1 10 attendee_ptr ptr, 1 11 transaction_ptr ptr, 1 12 transaction_block_ptr ptr, 1 13 bit_map_ptr ptr; 1 14 1 15 /* This structure is for the segment "Attendees", it contains the participant 1 16* records and the bit-maps of transactions that have been seen. */ 1 17 1 18 declare 1 attendee_seg aligned based (attendee_seg_ptr), 1 19 2 header like attendee_seg_header, 1 20 2 attendee_area area; /* where attendee and bit map nodes go */ 1 21 1 22 declare 1 attendee_seg_header aligned based, 1 23 2 version char (8), 1 24 2 lock bit (36) aligned, 1 25 2 flags, 1 26 3 adjourned bit (1) unaligned, 1 27 3 am_init bit (1) unaligned, /* on if next value valid */ 1 28 3 am_print_acl_msg bit (1) unaligned, /* on if Sysadmin wants them printed */ 1 29 3 cm_init bit (1) unaligned, /* on if next vaue valid */ 1 30 3 cm_print_acl_msg bit (1) unaligned, /* on if chair wants messages printed */ 1 31 3 salvaging bit (1) unaligned, 1 32 3 mbz1 bit (30) unaligned, 1 33 2 attendee_count fixed bin, /* current number of attendees */ 1 34 2 chairman, 1 35 3 person_id char (22), 1 36 3 project_id char (9), 1 37 2 chairman_message char (256), 1 38 2 first_attendee_offset bit (18), 1 39 2 last_attendee_offset bit (18), 1 40 2 mbz2 (16) fixed bin (35); 1 41 1 42 declare 1 attendee aligned based (attendee_ptr), 1 43 2 version fixed bin, 1 44 2 attendee_uid fixed bin, /* Unique for this meeting only */ 1 45 2 person_id char (22), 1 46 2 project_id char (9), /* of project on when last opened */ 1 47 2 flags, 1 48 3 attending bit (1) unaligned, 1 49 3 participating bit (1) unaligned, 1 50 3 deleted bit (1) unaligned, /* by chairman - dlpt request */ 1 51 3 notify bit (1) unaligned, 1 52 3 acl_change_pending bit (1) unaligned, 1 53 3 message_change_pending bit (1) unaligned, 1 54 3 mbz1 bit (30) unaligned, 1 55 2 xacl bit (36) aligned, /* extended acl - see modes below */ 1 56 2 lock_id bit (36) aligned, 1 57 2 process_id bit (36) aligned, 1 58 2 event_channel fixed bin (71), /* For "A new transaction ..." messages */ 1 59 2 last_time_attended fixed bin (71), 1 60 2 bit_map_first_trans fixed bin, 1 61 2 bit_map_offset bit (18), 1 62 2 bit_map_length fixed bin, 1 63 2 left_son_offset bit (18), /* attendees are in a tree */ 1 64 2 right_son_offset bit (18), 1 65 2 next_offset bit (18); /* For sequential searching */ 1 66 1 67 declare 1 bit_map aligned based (bit_map_ptr), 1 68 2 attendee_uid fixed bin, /* For checking */ 1 69 2 length fixed bin, 1 70 2 map bit (alloc_bit_map_length refer (bit_map.length)); 1 71 1 72 declare alloc_bit_map_length fixed bin; 1 73 1 74 /* This structure is for the segment "Transactions" which contains all 1 75* information about transactions except the subject and text. */ 1 76 1 77 declare 1 transaction_seg aligned based (transaction_seg_ptr), 1 78 2 version char (8), 1 79 2 transaction_count fixed bin, 1 80 2 deleted_count fixed bin, 1 81 2 first_trans_offset bit (18), 1 82 2 last_trans_offset bit (18), 1 83 2 first_block_offset bit (18), 1 84 2 current_block_offset bit (18), /* location of block containing pointer to last trans */ 1 85 2 last_trans_in_block fixed bin, /* When we need to allocate new block */ 1 86 2 current_segno fixed bin, /* Where transactions are being allocated */ 1 87 2 next_trans_offset bit (18), /* offset within that seg */ 1 88 2 free_space_offset bit (18), /* first unused word in this seg */ 1 89 2 first_free_word fixed bin; /* only used to find initial value of previous */ 1 90 1 91 declare 1 transaction based (transaction_ptr), 1 92 2 version fixed bin, 1 93 2 trans_idx fixed bin, 1 94 2 author, 1 95 3 person_id char (22), 1 96 3 project_id char (9), 1 97 2 flags, 1 98 3 deleted bit (1) unaligned, 1 99 3 deleted_by_author bit (1) unaligned, /* As opposed to deleted by chairman */ 1 100 3 unfilled bit (1) unaligned, /* And it should stay that way */ 1 101 3 mbz1 bit (33) unaligned, 1 102 2 pref_offset bit (18), 1 103 2 nref_offset bit (18), 1 104 2 time fixed bin (71), 1 105 2 segno fixed bin, /* What proceeding segment this is in */ 1 106 2 subject_offset bit (18), 1 107 2 subject_length fixed bin (21), 1 108 2 text_offset bit (18), 1 109 2 text_length fixed bin (21), 1 110 2 next_offset bit (18), 1 111 2 prev_offset bit (18); 1 112 1 113 1 114 declare 1 transaction_block based (transaction_block_ptr), 1 115 2 first_trans_idx fixed bin, /* In this block */ 1 116 2 last_trans_idx fixed bin, 1 117 2 time fixed bin (71), /* of first trans in this block */ 1 118 2 prev_block_offset bit (18), 1 119 2 next_block_offset bit (18), 1 120 2 transactions (1014), 1 121 3 offset bit (18); /* -1 if expunged */ 1 122 1 123 declare (ATTENDEE_SEG_VERSION_1 init ("FMCTL_1"), 1 124 TRANS_SEG_VERSION_1 init ("FMTR_1")) 1 125 char (8) static options (constant); 1 126 1 127 declare (ATTENDEE_SEG_NAME init ("Attendees"), 1 128 TRANSACTION_SEG_NAME init ("Transactions"), 1 129 PROCEEDINGS_SEG_NAME init ("Proceedings.")) /* numeric suffix is added */ 1 130 char (32) static options (constant); 1 131 1 132 declare (ATTENDEE_VERSION_1, 1 133 TRANSACTION_VERSION_1) fixed bin static options (constant) init (-42); 1 134 1 135 declare EXPUNGED bit (18) static options (constant) init ("111111111111111111"b); 1 136 1 137 declare (RWC_XACL init ("111"b), 1 138 RW_XACL init ("110"b), 1 139 R_XACL init ("100"b)) 1 140 bit (3) static options (constant); 1 141 1 142 /* END INCLUDE FILE: forum_structures.incl.pl1 */ 184 185 2 1 /* BEGIN INCLUDE FILE: forum_open_data.incl.pl1 */ 2 2 2 3 declare open_data_ptr ptr; 2 4 2 5 declare 1 open_data aligned based (open_data_ptr), 2 6 2 next_open_data_ptr ptr, 2 7 2 prev_open_data_ptr ptr, 2 8 2 forum_name char (168), 2 9 2 forum_idx fixed bin, 2 10 2 forum_uid bit (36), /* UID of attendee seg */ 2 11 2 attendee_seg_ptr ptr, 2 12 2 transaction_seg_ptr ptr, 2 13 2 proceedings_ptrs (16) ptr, 2 14 2 attendee_ptr ptr, /* -> attendee slot for this user */ 2 15 2 bit_map_ptr ptr, /* -> bit_map for this user */ 2 16 2 open_count fixed bin, 2 17 2 invalid bit (1) aligned; 2 18 2 19 /* END INCLUDE FILE: forum_open_data.incl.pl1 */ 186 187 3 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 3 2* 3 3* Values for the "access mode" argument so often used in hardcore 3 4* James R. Davis 26 Jan 81 MCR 4844 3 5* Added constants for SM access 4/28/82 Jay Pattin 3 6* Added text strings 03/19/85 Chris Jones 3 7**/ 3 8 3 9 3 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 3 11 dcl ( 3 12 N_ACCESS init ("000"b), 3 13 R_ACCESS init ("100"b), 3 14 E_ACCESS init ("010"b), 3 15 W_ACCESS init ("001"b), 3 16 RE_ACCESS init ("110"b), 3 17 REW_ACCESS init ("111"b), 3 18 RW_ACCESS init ("101"b), 3 19 S_ACCESS init ("100"b), 3 20 M_ACCESS init ("010"b), 3 21 A_ACCESS init ("001"b), 3 22 SA_ACCESS init ("101"b), 3 23 SM_ACCESS init ("110"b), 3 24 SMA_ACCESS init ("111"b) 3 25 ) bit (3) internal static options (constant); 3 26 3 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 3 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 3 29 3 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 3 31 static options (constant); 3 32 3 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 3 34 static options (constant); 3 35 3 36 dcl ( 3 37 N_ACCESS_BIN init (00000b), 3 38 R_ACCESS_BIN init (01000b), 3 39 E_ACCESS_BIN init (00100b), 3 40 W_ACCESS_BIN init (00010b), 3 41 RW_ACCESS_BIN init (01010b), 3 42 RE_ACCESS_BIN init (01100b), 3 43 REW_ACCESS_BIN init (01110b), 3 44 S_ACCESS_BIN init (01000b), 3 45 M_ACCESS_BIN init (00010b), 3 46 A_ACCESS_BIN init (00001b), 3 47 SA_ACCESS_BIN init (01001b), 3 48 SM_ACCESS_BIN init (01010b), 3 49 SMA_ACCESS_BIN init (01011b) 3 50 ) fixed bin (5) internal static options (constant); 3 51 3 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 188 189 4 1 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 4 2 4 3 /* Created 740723 by PG */ 4 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 4 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 4 6 4 7 /* This structure defines the components of both an access 4 8* class and an access authorization as interpreted by the 4 9* Access Isolation Mechanism. */ 4 10 4 11 4 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 4 13 2 categories bit (36), /* access categories */ 4 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 4 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 4 16 (3 ipc, /* interprocess communication privilege */ 4 17 3 dir, /* directory privilege */ 4 18 3 seg, /* segment privilege */ 4 19 3 soos, /* security out-of-service privilege */ 4 20 3 ring1, /* ring 1 access privilege */ 4 21 3 rcp, /* RCP resource access privilege */ 4 22 3 comm) bit (1), /* communications cross-AIM privilege */ 4 23 3 pad bit (11); 4 24 4 25 4 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 190 191 5 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 5 2 5 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 5 4 5 5 dcl area_infop ptr; 5 6 5 7 dcl 1 area_info aligned based (area_infop), 5 8 2 version fixed bin, /* version number for this structure is 1 */ 5 9 2 control aligned like area_control, /* control bits for the area */ 5 10 2 owner char (32) unal, /* creator of the area */ 5 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 5 12 2 size fixed bin (18), /* size of the area in words */ 5 13 2 version_of_area fixed bin, /* version of area (returned only) */ 5 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 5 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 5 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 5 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 5 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 5 19 5 20 dcl 1 area_control aligned based, 5 21 2 extend bit (1) unal, /* says area is extensible */ 5 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 5 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 5 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 5 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 5 26 2 system bit (1) unal, /* says area is managed by system */ 5 27 2 pad bit (30) unal; 5 28 5 29 /* END INCLUDE FILE area_info.incl.pl1 */ 192 193 194 /* forum_seg_mgr_$create_forum: 195* entry (P_directory, P_name, P_status); */ 196 197 create_only = "0"b; 198 goto CREATE_COMMON; 199 200 forum_seg_mgr_$just_create: /* entry for convert to call */ 201 entry (P_directory, P_name, P_attendee_seg_ptr, P_transaction_seg_ptr, P_status); 202 203 create_only = "1"b; 204 205 CREATE_COMMON: 206 call initialize (CREATE_EXIT); 207 208 created = "0"b; 209 call copy_pathname_args (); 210 211 call check_star_name_$entry (name, status); 212 if status ^= 0 213 then if status = 1 | status = 2 then call error (error_table_$nostars); 214 else call error (status); 215 216 if substr (person_id, 1, 1) = "*" then call error (forum_et_$anon_chairman); 217 218 on any_other call any_other_handler (); 219 on cleanup begin; 220 if created then begin; 221 call hcs_$del_dir_tree (directory, name, (0)); 222 call hcs_$delentry_file (directory, name, (0)); 223 end; 224 call hcs_$level_set (user_ring); 225 end; 226 227 call hcs_$level_set (inner_ring); 228 call hcs_$status_minf (directory, name, 0, (0), (0), status); 229 if status = 0 then call error (error_table_$namedup); 230 else if status ^= error_table_$noentry then call error (status); 231 232 call check_access (); 233 234 rings (1) = forum_data_$forum_ring; 235 rings (2) = 7; 236 call hcs_$append_branchx (directory, name, SMA_ACCESS_BIN, rings, get_group_id_ (), 1, 0, 0, status); 237 if status ^= 0 then call error (status); 238 239 created = "1"b; 240 one_acl.access_name = "*.*.*"; 241 one_acl.modes = SMA_ACCESS; 242 one_acl.xmodes = ""b; 243 244 call hcs_$replace_dir_acl (directory, name, addr (one_acl), 1, "1"b, status); 245 if status ^= 0 then call error (status); 246 247 forum_dir = rtrim (directory) || ">" || name; /* change to inside the meeting */ 248 /* and create first three segs */ 249 rings (1), rings (2), rings (3) = forum_data_$forum_ring; 250 call hcs_$append_branch (forum_dir, ATTENDEE_SEG_NAME, RW_ACCESS_BIN, status); 251 if status ^= 0 then call error (status); 252 call hcs_$set_ring_brackets (forum_dir, ATTENDEE_SEG_NAME, rings, status); 253 if status ^= 0 then call error (status); 254 call hcs_$append_branch (forum_dir, TRANSACTION_SEG_NAME, RW_ACCESS_BIN, status); 255 if status ^= 0 then call error (status); 256 call hcs_$set_ring_brackets (forum_dir, TRANSACTION_SEG_NAME, rings, status); 257 if status ^= 0 then call error (status); 258 259 real_name = rtrim (PROCEEDINGS_SEG_NAME) || "1"; 260 call hcs_$append_branch (forum_dir, real_name, RW_ACCESS_BIN, status); 261 if status ^= 0 then call error (status); 262 call hcs_$set_ring_brackets (forum_dir, real_name, rings, status); 263 264 265 two_acls.access_name (1) = "*.*.*"; 266 two_acls.modes (1) = RW_ACCESS; 267 two_acls.xmodes (1) = N_ACCESS; 268 two_acls.access_name (2) = rtrim (person_id) || ".*.*"; 269 two_acls.modes (2) = RW_ACCESS; 270 two_acls.xmodes (2) = RWC_XACL; /* only set xacl on Attendee seg */ 271 272 call hcs_$replace_acl (forum_dir, ATTENDEE_SEG_NAME, addr (two_acls), 2, "1"b, status); 273 if status ^= 0 then call error (status); 274 275 call hcs_$replace_acl (forum_dir, TRANSACTION_SEG_NAME, addr (two_acls), 1, "1"b, status); 276 if status ^= 0 then call error (status); 277 278 call hcs_$replace_acl (forum_dir, real_name, addr (two_acls), 1, "1"b, status); 279 if status ^= 0 then call error (status); 280 281 call hcs_$initiate (forum_dir, ATTENDEE_SEG_NAME, "", 0, 0, attendee_seg_ptr, status); 282 if attendee_seg_ptr = null () then call error (status); 283 284 call hcs_$initiate (forum_dir, TRANSACTION_SEG_NAME, "", 0, 0, transaction_seg_ptr, status); 285 if transaction_seg_ptr = null () then call error (status); 286 287 attendee_seg.lock = get_lock_id_ (); 288 attendee_seg.version = ATTENDEE_SEG_VERSION_1; 289 attendee_seg.attendee_count = 0; 290 attendee_seg.chairman.person_id = person_id; 291 attendee_seg.chairman.project_id = project_id; 292 attendee_seg.chairman_message = ""; 293 294 unspec (auto_area_info) = ""b; 295 auto_area_info.version = area_info_version_1; 296 auto_area_info.system = "1"b; 297 auto_area_info.zero_on_free = "1"b; 298 auto_area_info.zero_on_alloc = "1"b; 299 auto_area_info.size = sys_info$max_seg_size - size (attendee_seg_header); 300 auto_area_info.areap = addr (attendee_seg.attendee_area); 301 auto_area_info.owner = "forum"; 302 303 call define_area_ (addr (auto_area_info), status); 304 if status ^= 0 then call error (status); 305 306 if ^create_only then do; 307 area_ptr = addr (attendee_seg.attendee_area); 308 allocate attendee in (based_area); 309 alloc_bit_map_length = 504; 310 allocate bit_map in (based_area); 311 attendee_seg.attendee_count = 1; 312 attendee_seg.first_attendee_offset, attendee_seg.last_attendee_offset = rel (attendee_ptr); 313 314 attendee.version = ATTENDEE_VERSION_1; 315 attendee.attendee_uid = 1; 316 attendee.person_id = person_id; 317 attendee.project_id = project_id; 318 attendee.bit_map_first_trans = 1; 319 attendee.bit_map_offset = rel (bit_map_ptr); 320 attendee.bit_map_length = bit_map.length; 321 322 bit_map.attendee_uid = 1; 323 end; 324 325 transaction_block_ptr = addr (transaction_seg.first_free_word); 326 transaction_seg.version = TRANS_SEG_VERSION_1; 327 transaction_seg.first_block_offset, transaction_seg.current_block_offset = rel (transaction_block_ptr); 328 transaction_seg.last_trans_in_block = hbound (transaction_block.transactions, 1); 329 transaction_seg.current_segno = 1; 330 transaction_seg.free_space_offset = rel (addrel (transaction_block_ptr, size (transaction_block))); 331 332 transaction_block.first_trans_idx = 1; 333 transaction_block.last_trans_idx = 1; 334 335 if create_only then do; 336 P_attendee_seg_ptr = attendee_seg_ptr; 337 P_transaction_seg_ptr = transaction_seg_ptr; 338 end; 339 else do; 340 call set_lock_$unlock (attendee_seg.lock, (0)); 341 call hcs_$terminate_noname (attendee_seg_ptr, (0)); 342 call hcs_$terminate_noname (transaction_seg_ptr, (0)); 343 call hcs_$level_set (user_ring); 344 end; 345 346 P_status = 0; 347 return; 348 349 CREATE_EXIT: 350 if created then do; 351 call hcs_$del_dir_tree (directory, name, (0)); 352 call hcs_$delentry_file (directory, name, (0)); 353 end; 354 call hcs_$level_set (user_ring); 355 P_status = status; 356 return; 357 358 forum_seg_mgr_$delete_forum: 359 entry (P_directory, P_name, P_status); 360 361 call initialize (DELETE_EXIT); 362 363 call copy_pathname_args (); 364 365 call initiate_meeting ("0"b); 366 call lock_meeting (); 367 368 call check_access (); 369 370 on cleanup call hcs_$level_set (user_ring); 371 call hcs_$level_set (inner_ring); 372 373 call hcs_$get_safety_sw_seg (attendee_seg_ptr, safety_switch, (0)); 374 if safety_switch then call error (error_table_$safety_sw_on); 375 376 call hcs_$del_dir_tree (directory, name, status); 377 if status ^= 0 then call error (status); 378 379 call hcs_$delentry_file (directory, name, status); 380 if status ^= 0 then call error (status); 381 382 call hcs_$level_set (user_ring); 383 P_status = 0; 384 return; 385 386 DELETE_EXIT: 387 call unlock_meeting (); 388 if attendee_seg_ptr ^= null () then call terminate_meeting (); 389 call hcs_$level_set (user_ring); 390 P_status = status; 391 return; 392 393 394 check_access: 395 proc (); 396 397 call expand_pathname_ (directory, real_dir, real_name, status); 398 if status ^= 0 then call error (status); 399 400 call hcs_$get_user_effmode (real_dir, real_name, "", (user_ring), mode, status); 401 if status ^= 0 then call error (status); 402 if mode < SM_ACCESS_BIN then call error (error_table_$incorrect_access); 403 return; 404 405 end check_access; 406 407 forum_seg_mgr_$chname_forum: 408 entry (P_directory, P_name, P_old_name, P_new_name, P_status); 409 410 call initialize (CHNAME_EXIT); 411 412 call copy_pathname_args (); 413 414 on any_other call any_other_handler (); 415 416 call initiate_meeting ("0"b); 417 call chname (); 418 419 CHNAME_EXIT: 420 call terminate_meeting (); 421 P_status = status; 422 return; 423 424 forum_seg_mgr_$chname_forum_idx: 425 entry (P_forum_idx, P_old_name, P_new_name, P_status); 426 427 call initialize (CHNAME_IDX_EXIT); 428 429 on any_other call any_other_handler (); 430 431 forum_idx = P_forum_idx; 432 433 call forum_open_mgr_$lookup_forum_idx (forum_idx, open_data_ptr, xacl, status); 434 if status ^= 0 then call error (status); 435 attendee_seg_ptr = open_data.attendee_seg_ptr; 436 437 call expand_pathname_ ((open_data.forum_name), directory, name, status); 438 if status ^= 0 then call error (status); 439 440 call chname (); 441 442 call hcs_$fs_get_path_name (attendee_seg_ptr, directory, (0), (""), status); 443 if status ^= 0 then call error (status); 444 445 open_data.forum_name = directory; 446 447 CHNAME_IDX_EXIT: 448 call unlock_meeting (); 449 P_status = status; 450 return; 451 452 chname: proc; 453 454 if length (rtrim (P_old_name)) > 32 | length (rtrim (P_new_name)) > 32 then 455 call error (forum_et_$long_forum_name); 456 457 old_name = P_old_name; 458 if old_name ^= "" then call validate_name (old_name); 459 460 new_name = P_new_name; 461 if new_name ^= "" then do; 462 call validate_name (new_name); 463 call check_star_name_$entry (new_name, status); 464 if status ^= 0 465 then if status = 1 | status = 2 then call error (error_table_$nostars); 466 else call error (status); 467 end; 468 469 on cleanup call hcs_$level_set (user_ring); 470 call hcs_$level_set (inner_ring); 471 472 call hcs_$chname_file (directory, name, old_name, new_name, status); 473 if status ^= 0 then call error (status); 474 475 call hcs_$level_set (user_ring); 476 return; 477 end chname; 478 479 copy_pathname_args: 480 proc; 481 482 if length (rtrim (P_directory)) > 168 then call error (error_table_$dirlong); 483 else directory = P_directory; 484 485 if length (rtrim (P_name)) > 32 then call error (forum_et_$long_forum_name); 486 else name = P_name; 487 call validate_name (name); 488 489 return; 490 end copy_pathname_args; 491 492 validate_name: 493 proc (name); 494 495 declare name char (32), 496 name_len fixed bin; 497 498 if name = "" then call error (forum_et_$blank_forum_name); 499 name_len = length (rtrim (name)) - length (".forum"); 500 if name_len < 1 then call error (forum_et_$no_suffix); 501 if substr (name, name_len + 1) ^= ".forum" then 502 call error (forum_et_$no_suffix); 503 504 return; 505 end validate_name; 506 507 forum_seg_mgr_$create_segment: /* caller should have it locked */ 508 entry (P_open_data_ptr, P_status); 509 510 call initialize (CREATE_SEG_EXIT); 511 512 open_data_ptr = P_open_data_ptr; 513 transaction_seg_ptr = open_data.transaction_seg_ptr; 514 515 directory = open_data.forum_name; 516 seg_index = transaction_seg.current_segno + 1; 517 if seg_index > hbound (open_data.proceedings_ptrs, 1) then 518 call error (forum_et_$meeting_bloat); 519 520 name = rtrim (PROCEEDINGS_SEG_NAME) || ltrim (char (seg_index)); 521 522 on cleanup call hcs_$level_set (user_ring); 523 call hcs_$level_set (inner_ring); 524 525 call hcs_$append_branch (directory, name, RW_ACCESS_BIN, status); 526 if status ^= 0 then call error (status); 527 rings (1), rings (2), rings (3) = forum_data_$forum_ring; 528 call hcs_$set_ring_brackets (directory, name, rings, status); 529 if status ^= 0 then call error (status); 530 531 one_acl.access_name = "*.*.*"; 532 one_acl.modes = RW_ACCESS; 533 one_acl.xmodes =""b; 534 call hcs_$replace_acl (directory, name, addr (one_acl), 1, "1"b, status); 535 if status ^= 0 then call error (status); 536 537 transaction_seg.current_segno = seg_index; 538 transaction_seg.next_trans_offset = ""b; 539 540 CREATE_SEG_EXIT: 541 call hcs_$level_set (user_ring); 542 P_status = status; 543 return; 544 545 forum_seg_mgr_$set_forum_acl: 546 entry (P_directory, P_name, P_acl_ptr, P_acl_count, P_status); 547 548 call initialize (SET_ACL_EXIT); 549 550 call copy_pathname_args (); 551 acl_ptr = P_acl_ptr; 552 acl_count = P_acl_count; 553 554 call initiate_meeting ("0"b); 555 556 if xacl ^= RWC_XACL then call check_access (); 557 558 directory = pathname_ (directory, name); 559 call check_acl (); 560 561 on cleanup call hcs_$level_set (user_ring); 562 call hcs_$level_set (inner_ring); 563 564 call hcs_$add_acl_entries (directory, ATTENDEE_SEG_NAME, acl_ptr, acl_count, status); 565 if status ^= 0 then call error (status); 566 567 call update_acl_change (); 568 569 SET_ACL_EXIT: 570 call terminate_meeting (); 571 call hcs_$level_set (user_ring); 572 P_status = status; 573 return; 574 575 forum_seg_mgr_$replace_forum_acl: 576 entry (P_directory, P_name, P_acl_ptr, P_acl_count, P_no_sysdaemon, P_status); 577 578 call initialize (REPLACE_ACL_EXIT); 579 580 acl_ptr = P_acl_ptr; 581 acl_count = P_acl_count; 582 call copy_pathname_args (); 583 584 call initiate_meeting ("0"b); 585 if xacl ^= RWC_XACL then call check_access (); 586 587 directory = pathname_ (directory, name); 588 call check_acl (); 589 590 do seg_index = 1 to acl_count; 591 if acl.access_name (seg_index) = "*.*.*" then goto HAVE_STAR_ACL; 592 end; 593 call error (forum_et_$need_star_acl); 594 595 HAVE_STAR_ACL: 596 /* check for at least one c acl */ 597 598 on cleanup call hcs_$level_set (user_ring); 599 call hcs_$level_set (inner_ring); 600 601 call hcs_$replace_acl (directory, ATTENDEE_SEG_NAME, P_acl_ptr, P_acl_count, P_no_sysdaemon, status); 602 if status ^= 0 then call error (status); 603 604 call update_acl_change (); 605 606 REPLACE_ACL_EXIT: 607 call terminate_meeting (); 608 call hcs_$level_set (user_ring); 609 P_status = status; 610 return; 611 612 check_acl: 613 proc (); 614 615 declare idx fixed bin; 616 617 do idx = 1 to acl_count; 618 if acl.modes (idx) ^= RW_ACCESS | (acl.xmodes (idx) ^= N_ACCESS & acl.xmodes (idx) ^= R_XACL & 619 acl.xmodes (idx) ^= RW_XACL & acl.xmodes (idx) ^= RWC_XACL) then call error (error_table_$bad_acl_mode); 620 end; 621 622 return; 623 end check_acl; 624 625 626 update_acl_change: 627 proc (); 628 629 declare attendee_count fixed bin, 630 attendee_offset bit (18) aligned; 631 632 attendee_count = 0; 633 do attendee_offset = attendee_seg.first_attendee_offset repeat (attendee.next_offset) 634 while (attendee_offset ^= ""b); 635 attendee_count = attendee_count + 1; 636 if attendee_count > MAX_ATTENDEES then call error (forum_et_$unexpected_fault); 637 attendee_ptr = ptr (attendee_seg_ptr, attendee_offset); 638 if attendee.person_id ^= person_id then attendee.acl_change_pending = "1"b; 639 end; 640 641 return; 642 end update_acl_change; 643 644 forum_seg_mgr_$delete_forum_acl: 645 entry (P_directory, P_name, P_acl_ptr, P_acl_count, P_status); 646 647 call initialize (DELETE_ACL_EXIT); 648 649 call copy_pathname_args (); 650 acl_ptr = P_acl_ptr; 651 acl_count = P_acl_count; 652 653 call initiate_meeting ("0"b); 654 if xacl ^= RWC_XACL then call check_access (); 655 656 directory = rtrim (directory) || ">" || name; 657 658 do seg_index = 1 to acl_count; 659 if delete_acl.access_name (seg_index) = "*.*.*" then call error (forum_et_$need_star_acl); 660 end; 661 662 on cleanup call hcs_$level_set (user_ring); 663 call hcs_$level_set (inner_ring); 664 665 call hcs_$delete_acl_entries (directory, ATTENDEE_SEG_NAME, acl_ptr, acl_count, status); 666 if status ^= 0 then call error (status); 667 668 call update_acl_change (); 669 670 DELETE_ACL_EXIT: 671 call terminate_meeting (); 672 call hcs_$level_set (user_ring); 673 P_status = status; 674 return; 675 676 forum_seg_mgr_$list_forum_acl: 677 entry (P_directory, P_name, P_area_ptr, P_return_ptr, P_acl_ptr, P_acl_count, P_status); 678 679 call initialize (LIST_ACL_EXIT); 680 681 call copy_pathname_args (); 682 683 directory = rtrim (directory) || ">" || name; 684 on cleanup call hcs_$level_set (user_ring); 685 call hcs_$level_set (inner_ring); 686 687 call hcs_$list_acl (directory, ATTENDEE_SEG_NAME, P_area_ptr, P_return_ptr, P_acl_ptr, P_acl_count, status); 688 if status ^= 0 then call error (status); 689 690 call hcs_$level_set (user_ring); 691 P_status = 0; 692 return; 693 694 LIST_ACL_EXIT: 695 call hcs_$level_set (user_ring); 696 P_acl_ptr = null (); 697 P_acl_count = 0; 698 P_status = status; 699 return; 700 701 forum_seg_mgr_$get_forum_path: 702 entry (P_directory, P_name, P_real_dir, P_real_name, P_status); 703 704 call initialize (GET_PATH_EXIT); 705 706 on cleanup call terminate_meeting (); 707 708 call copy_pathname_args (); 709 call initiate_meeting ("0"b); /* verify that it's real */ 710 711 P_real_dir = directory; 712 P_real_name = name; 713 714 call terminate_meeting (); 715 P_status = 0; 716 return; 717 718 GET_PATH_EXIT: 719 call terminate_meeting (); 720 P_real_dir, P_real_name = ""; 721 P_status = status; 722 return; 723 724 forum_seg_mgr_$get_forum_path_idx: 725 entry (P_forum_idx, P_real_dir, P_real_name, P_status); 726 727 call initialize (GET_PATH_EXIT); 728 729 forum_idx = P_forum_idx; 730 call forum_open_mgr_$lookup_forum_idx (forum_idx, open_data_ptr, xacl, status); 731 if status ^= 0 then call error (status); 732 733 attendee_seg_ptr = open_data.attendee_seg_ptr; 734 call unlock_meeting (); 735 736 call expand_pathname_ ((open_data.forum_name), real_dir, real_name, status); 737 P_real_dir = real_dir; 738 P_real_name = real_name; 739 P_status = 0; 740 return; 741 742 forum_seg_mgr_$get_uid_file: 743 entry (P_directory, P_name, P_uid, P_status); 744 745 call initialize (GET_UID_EXIT); 746 747 on cleanup call terminate_meeting (); 748 749 call copy_pathname_args (); 750 call initiate_meeting ("0"b); /* verify that it's real */ 751 752 call hcs_$get_uid_seg (attendee_seg_ptr, uid, status); 753 if status ^= 0 then call error (status); 754 755 call terminate_meeting (); 756 P_uid = uid; 757 P_status = 0; 758 return; 759 760 GET_UID_EXIT: 761 call terminate_meeting (); 762 P_uid = ""b; 763 P_status = status; 764 return; 765 766 forum_seg_mgr_$initiate: 767 entry (P_directory, P_name, P_lock_switch, P_attendee_seg_ptr, P_transaction_seg_ptr, P_xacl, P_status); 768 769 call initialize (INITIATE_EXIT); 770 771 call copy_pathname_args (); 772 773 call initiate_meeting ("1"b); 774 if P_lock_switch then call lock_meeting (); 775 776 P_directory = directory; /* copy back real name */ 777 P_name = name; 778 P_attendee_seg_ptr = attendee_seg_ptr; 779 P_transaction_seg_ptr = transaction_seg_ptr; 780 P_xacl = xacl; 781 P_status = 0; 782 return; 783 784 INITIATE_EXIT: 785 call unlock_meeting (); 786 call terminate_meeting (); 787 P_attendee_seg_ptr = null (); 788 P_transaction_seg_ptr = null (); 789 P_status = status; 790 return; 791 792 initiate_meeting: 793 proc (initiate_trans); 794 795 declare initiate_trans bit (1) aligned, 796 access_class bit (72) aligned; 797 798 on any_other call any_other_handler (); 799 on seg_fault_error call error (error_table_$seg_busted); 800 on cleanup begin; 801 call terminate_meeting (); 802 call hcs_$level_set (user_ring); 803 end; 804 805 call hcs_$level_set (inner_ring); 806 call hcs_$get_access_class (directory, name, access_class, status); 807 if status ^= 0 then 808 if status = error_table_$noentry then call error (forum_et_$no_such_forum); 809 else call error (status); 810 811 if ^read_write_allowed_ (my_authorization, access_class) then do; 812 call hcs_$get_authorization (full_authorization, (""b)); 813 if ^aim_bits.privileges.ipc | 814 ^aim_bits.privileges.seg | 815 ^aim_bits.privileges.dir then 816 call error (error_table_$ai_restricted); 817 end; 818 819 forum_dir = rtrim (directory) || ">" || name; 820 call hcs_$initiate (forum_dir, ATTENDEE_SEG_NAME, "", 0, 0, attendee_seg_ptr, status); 821 if attendee_seg_ptr = null () then 822 if status = error_table_$noentry | status = error_table_$notadir 823 then call error (forum_et_$not_a_forum); 824 else call error (status); 825 826 call hcs_$fs_get_brackets (attendee_seg_ptr, mode, rings, status); 827 if status ^= 0 then call error (status); 828 829 if mode ^= RW_ACCESS_BIN then call error (forum_et_$not_a_forum); 830 831 if (rings (1) ^= forum_data_$forum_ring) | (rings (2) ^= rings (3)) then call error (forum_et_$not_a_forum); 832 833 if attendee_seg.version ^= ATTENDEE_SEG_VERSION_1 then call error (forum_et_$not_a_forum); 834 835 call hcs_$fs_get_path_name (attendee_seg_ptr, dirname_buffer, dirname_len, (""), status); 836 if status ^= 0 then call error (status); 837 838 call expand_pathname_ (dirname, directory, name, status); 839 if status ^= 0 then call error (status); 840 841 call validate_name (name); 842 843 call hcs_$fs_get_access_modes (attendee_seg_ptr, ""b, xacl, status); 844 if status ^= 0 then call error (status); 845 846 if initiate_trans then do; 847 call hcs_$initiate (dirname, TRANSACTION_SEG_NAME, "", 0, 0, transaction_seg_ptr, status); 848 if transaction_seg_ptr = null () then 849 if status = error_table_$noentry then call error (forum_et_$not_a_forum); 850 else call error (status); 851 852 call hcs_$fs_get_brackets (transaction_seg_ptr, mode, rings, status); 853 if status ^= 0 then call error (status); 854 855 if mode ^= RW_ACCESS_BIN then call error (forum_et_$not_a_forum); 856 if rings (1) ^= forum_data_$forum_ring | rings (2) ^= rings (3) then call error (forum_et_$not_a_forum); 857 end; 858 859 call hcs_$level_set (user_ring); 860 return; 861 end initiate_meeting; 862 863 forum_seg_mgr_$lock: 864 entry (P_attendee_seg_ptr, P_status); 865 866 call initialize (LOCK_EXIT); 867 868 attendee_seg_ptr = P_attendee_seg_ptr; 869 call lock_meeting (); 870 P_status = 0; 871 return; 872 873 LOCK_EXIT: 874 P_status = status; 875 return; 876 877 878 lock_meeting: 879 proc (); 880 881 declare count fixed bin, 882 not_locked bit (1) aligned; 883 884 on any_other call any_other_handler (); 885 on seg_fault_error call error (error_table_$seg_busted); 886 887 not_locked = "1"b; 888 do count = 1 to 10 while (not_locked); 889 call set_lock_$lock (attendee_seg.lock, 2, status); 890 if status ^= error_table_$lock_wait_time_exceeded then not_locked = "0"b; 891 end; 892 893 if status ^= 0 then if status ^= error_table_$invalid_lock_reset then 894 call error (status); 895 896 return; 897 end lock_meeting; 898 899 forum_seg_mgr_$initiate_seg: 900 entry (P_open_data_ptr, P_seg_index, P_status); 901 902 call initialize (INITIATE_SEG_EXIT); 903 904 open_data_ptr = P_open_data_ptr; 905 seg_index = P_seg_index; 906 if seg_index < 1 | seg_index > open_data.transaction_seg_ptr -> transaction_seg.current_segno then 907 call error (forum_et_$invalid_seg_idx); 908 909 if open_data.proceedings_ptrs (seg_index) ^= null () then return; 910 name = rtrim (PROCEEDINGS_SEG_NAME) || ltrim (char (seg_index)); 911 912 on cleanup call hcs_$level_set (user_ring); 913 call hcs_$level_set (inner_ring); 914 915 call hcs_$initiate ((open_data.forum_name), name, "", 0, 0, p, status); 916 if p = null () then 917 if status = error_table_$noentry then call error (forum_et_$invalid_seg_idx); 918 else call error (status); 919 920 open_data.proceedings_ptrs (seg_index) = p; 921 call hcs_$level_set (user_ring); 922 P_status = 0; 923 return; 924 925 INITIATE_SEG_EXIT: 926 call hcs_$level_set (user_ring); 927 P_status = status; 928 return; 929 930 forum_seg_mgr_$terminate: 931 entry (P_attendee_seg_ptr, P_transaction_seg_ptr); 932 933 call initialize (TERMINATE_EXIT); 934 935 on cleanup call hcs_$level_set (user_ring); 936 call hcs_$level_set (inner_ring); 937 938 attendee_seg_ptr = P_attendee_seg_ptr; 939 transaction_seg_ptr = P_transaction_seg_ptr; 940 941 call unlock_meeting (); 942 call terminate_meeting (); 943 944 P_attendee_seg_ptr = null (); 945 P_transaction_seg_ptr = null (); 946 947 call hcs_$level_set (user_ring); 948 return; 949 950 forum_seg_mgr_$terminate_all: 951 entry (P_open_data_ptr); 952 953 call initialize (TERMINATE_EXIT); 954 955 on cleanup call hcs_$level_set (user_ring); 956 call hcs_$level_set (inner_ring); 957 958 open_data_ptr = P_open_data_ptr; 959 if open_data_ptr = null () then return; 960 961 if open_data.open_count = 0 then 962 do seg_index = 1 to hbound (open_data.proceedings_ptrs, 1); 963 p = open_data.proceedings_ptrs (seg_index); 964 open_data.proceedings_ptrs (seg_index) = null (); 965 call hcs_$terminate_noname (p, (0)); 966 end; 967 968 attendee_seg_ptr = open_data.attendee_seg_ptr; 969 transaction_seg_ptr = open_data.transaction_seg_ptr; 970 if open_data.open_count = 0 then do; 971 open_data.attendee_seg_ptr = null (); 972 open_data.transaction_seg_ptr = null (); 973 open_data.invalid = "1"b; 974 end; 975 976 call unlock_meeting (); 977 if open_data.open_count = 0 then call terminate_meeting (); 978 979 TERMINATE_EXIT: 980 call hcs_$level_set (user_ring); 981 return; 982 983 terminate_meeting: 984 proc (); 985 dcl old_ring fixed bin (3); 986 987 call hcs_$level_get (old_ring); 988 on cleanup call hcs_$level_set (old_ring); 989 990 call hcs_$level_set (inner_ring); 991 992 p = attendee_seg_ptr; 993 attendee_seg_ptr = null (); 994 call hcs_$terminate_noname (p, (0)); 995 996 p = transaction_seg_ptr; 997 transaction_seg_ptr = null (); 998 call hcs_$terminate_noname (p, (0)); 999 1000 call hcs_$level_set (old_ring); 1001 return; 1002 end terminate_meeting; 1003 1004 forum_seg_mgr_$unlock: 1005 entry (P_attendee_seg_ptr); 1006 1007 call initialize (UNLOCK_EXIT); 1008 1009 attendee_seg_ptr = P_attendee_seg_ptr; 1010 call unlock_meeting (); 1011 UNLOCK_EXIT: 1012 return; 1013 1014 unlock_meeting: 1015 proc (); 1016 1017 if attendee_seg_ptr = null () then return; 1018 1019 on any_other goto PUNT_UNLOCK; 1020 1021 call set_lock_$unlock (attendee_seg.lock, (0)); 1022 PUNT_UNLOCK: 1023 return; 1024 end unlock_meeting; 1025 1026 initialize: 1027 procedure (P_egress); 1028 1029 declare P_egress label variable, 1030 anon fixed bin; 1031 1032 egress = P_egress; 1033 1034 if ^static_init then do; 1035 call user_info_$login_data (person_id, project_id, (""), anon, 0, 0, 0, ("")); 1036 if anon = 1 then person_id = "*" || person_id; 1037 my_authorization = get_authorization_ (); 1038 inner_ring = get_ring_ (); 1039 static_init = "1"b; 1040 end; 1041 call hcs_$level_get (user_ring); 1042 attendee_seg_ptr, transaction_seg_ptr, open_data_ptr = null (); 1043 1044 return; 1045 end initialize; 1046 1047 any_other_handler: 1048 proc (); 1049 1050 on any_other system; 1051 call forum_logger_$any_other (0, me, "^a>^a.", directory, name); 1052 status = forum_et_$unexpected_fault; 1053 goto egress; 1054 1055 end any_other_handler; 1056 1057 error: 1058 procedure (error_code); 1059 1060 declare error_code fixed bin (35); 1061 1062 status = error_code; 1063 goto egress; /* lets PUNT */ 1064 1065 end error; 1066 1067 end forum_seg_mgr_$create_forum; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/16/86 1354.3 forum_seg_mgr_.pl1 >spec>install>1128>forum_seg_mgr_.pl1 184 1 10/31/84 1115.3 forum_structures.incl.pl1 >ldd>include>forum_structures.incl.pl1 186 2 10/31/84 1115.3 forum_open_data.incl.pl1 >ldd>include>forum_open_data.incl.pl1 188 3 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 190 4 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 192 5 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.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. ATTENDEE_SEG_NAME 000020 constant char(32) initial unaligned dcl 1-127 set ref 250* 252* 272* 281* 564* 601* 665* 687* 820* ATTENDEE_SEG_VERSION_1 000032 constant char(8) initial unaligned dcl 1-123 ref 288 833 ATTENDEE_VERSION_1 constant fixed bin(17,0) initial dcl 1-132 ref 314 MAX_ATTENDEES constant fixed bin(17,0) initial dcl 82 ref 636 N_ACCESS constant bit(3) initial unaligned dcl 3-11 ref 267 618 PROCEEDINGS_SEG_NAME 000000 constant char(32) initial unaligned dcl 1-127 ref 259 520 910 P_acl_count parameter fixed bin(17,0) dcl 33 set ref 545 552 575 581 601* 644 651 676 687* 697* P_acl_ptr parameter pointer dcl 33 set ref 545 551 575 580 601* 644 650 676 687* 696* P_area_ptr parameter pointer dcl 33 set ref 676 687* P_attendee_seg_ptr parameter pointer dcl 33 set ref 200 336* 766 778* 787* 863 868 930 938 944* 1004 1009 P_directory parameter char unaligned dcl 33 set ref 17 200 358 407 482 483 545 575 644 676 701 742 766 776* P_egress parameter label variable dcl 1029 ref 1026 1032 P_forum_idx parameter fixed bin(17,0) dcl 33 ref 424 431 724 729 P_lock_switch parameter bit(1) dcl 33 ref 766 774 P_name parameter char unaligned dcl 33 set ref 17 200 358 407 485 486 545 575 644 676 701 742 766 777* P_new_name parameter char unaligned dcl 33 ref 407 424 454 460 P_no_sysdaemon parameter bit(1) unaligned dcl 33 set ref 575 601* P_old_name parameter char unaligned dcl 33 ref 407 424 454 457 P_open_data_ptr parameter pointer dcl 33 ref 507 512 899 904 950 958 P_real_dir parameter char unaligned dcl 33 set ref 701 711* 720* 724 737* P_real_name parameter char unaligned dcl 33 set ref 701 712* 720* 724 738* P_return_ptr parameter pointer dcl 33 set ref 676 687* P_seg_index parameter fixed bin(17,0) dcl 33 ref 899 905 P_status parameter fixed bin(35,0) dcl 33 set ref 17 200 346* 355* 358 383* 390* 407 421* 424 449* 507 542* 545 572* 575 609* 644 673* 676 691* 698* 701 715* 721* 724 739* 742 757* 763* 766 781* 789* 863 870* 873* 899 922* 927* P_transaction_seg_ptr parameter pointer dcl 33 set ref 200 337* 766 779* 788* 930 939 945* P_uid parameter bit(36) dcl 33 set ref 742 756* 762* P_xacl parameter bit(36) dcl 33 set ref 766 780* RWC_XACL constant bit(3) initial unaligned dcl 1-137 ref 270 556 585 618 654 RW_ACCESS constant bit(3) initial unaligned dcl 3-11 ref 266 269 532 618 RW_ACCESS_BIN 000047 constant fixed bin(5,0) initial dcl 3-36 set ref 250* 254* 260* 525* 829 855 RW_XACL constant bit(3) initial unaligned dcl 1-137 ref 618 R_XACL constant bit(3) initial unaligned dcl 1-137 ref 618 SMA_ACCESS constant bit(3) initial unaligned dcl 3-11 ref 241 SMA_ACCESS_BIN 000064 constant fixed bin(5,0) initial dcl 3-36 set ref 236* SM_ACCESS_BIN constant fixed bin(5,0) initial dcl 3-36 ref 402 TRANSACTION_SEG_NAME 000010 constant char(32) initial unaligned dcl 1-127 set ref 254* 256* 275* 284* 847* TRANS_SEG_VERSION_1 000030 constant char(8) initial unaligned dcl 1-123 ref 326 access_class 000100 automatic bit(72) dcl 795 set ref 806* 811* access_name 000470 automatic char(32) level 2 in structure "one_acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 240* 531* access_name based char(32) array level 2 in structure "acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" ref 591 access_name 000503 automatic char(32) array level 2 in structure "two_acls" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 265* 268* access_name based char(32) array level 2 in structure "delete_acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" ref 659 acl based structure array level 1 unaligned dcl 102 acl_change_pending 13(04) based bit(1) level 3 packed unaligned dcl 1-42 set ref 638* acl_count 000100 automatic fixed bin(17,0) dcl 55 set ref 552* 564* 581* 590 617 651* 658 665* acl_ptr 000102 automatic pointer dcl 55 set ref 551* 564* 580* 591 618 618 618 618 618 650* 659 665* acl_term based structure level 1 dcl 96 addr builtin function dcl 179 ref 244 244 272 272 275 275 278 278 300 303 303 307 325 534 534 813 813 813 838 847 addrel builtin function dcl 179 ref 330 aim_bits based structure level 1 dcl 92 aim_template based structure level 1 dcl 4-12 alloc_bit_map_length 000560 automatic fixed bin(17,0) dcl 1-72 set ref 309* 310 310 anon 000662 automatic fixed bin(17,0) dcl 1029 set ref 1035* 1036 any_other 000532 stack reference condition dcl 179 ref 218 414 429 798 884 1019 1050 area_control based structure level 1 dcl 5-20 area_info based structure level 1 dcl 5-7 area_info_version_1 constant fixed bin(17,0) initial dcl 5-3 ref 295 area_ptr 000104 automatic pointer dcl 55 set ref 307* 308 310 areap 16 000444 automatic pointer level 2 dcl 94 set ref 300* attendee based structure level 1 dcl 1-42 set ref 308 attendee_area 140 based area(1024) level 2 dcl 1-18 set ref 300 307 attendee_count 000652 automatic fixed bin(17,0) dcl 629 in procedure "update_acl_change" set ref 632* 635* 635 636 attendee_count 4 based fixed bin(17,0) level 3 in structure "attendee_seg" dcl 1-18 in procedure "forum_seg_mgr_$create_forum" set ref 289* 311* attendee_offset 000653 automatic bit(18) dcl 629 set ref 633* 633* 637* attendee_ptr 000552 automatic pointer dcl 1-8 set ref 308* 312 314 315 316 317 318 319 320 637* 638 638 639 attendee_seg based structure level 1 dcl 1-18 attendee_seg_header based structure level 1 dcl 1-22 ref 299 attendee_seg_ptr 60 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_seg_mgr_$create_forum" set ref 435 733 968 971* attendee_seg_ptr 000546 automatic pointer dcl 1-8 in procedure "forum_seg_mgr_$create_forum" set ref 281* 282 287 288 289 290 291 292 300 307 311 312 312 336 340 341* 373* 388 435* 442* 633 637 733* 752* 778 820* 821 826* 833 835* 843* 868* 889 938* 968* 992 993* 1009* 1017 1021 1042* attendee_uid based fixed bin(17,0) level 2 in structure "bit_map" dcl 1-67 in procedure "forum_seg_mgr_$create_forum" set ref 322* attendee_uid 1 based fixed bin(17,0) level 2 in structure "attendee" dcl 1-42 in procedure "forum_seg_mgr_$create_forum" set ref 315* auto_area_info 000444 automatic structure level 1 dcl 94 set ref 294* 303 303 based_area based area(1024) dcl 55 ref 308 310 bit_map based structure level 1 dcl 1-67 set ref 310 bit_map_first_trans 24 based fixed bin(17,0) level 2 dcl 1-42 set ref 318* bit_map_length 26 based fixed bin(17,0) level 2 dcl 1-42 set ref 320* bit_map_offset 25 based bit(18) level 2 dcl 1-42 set ref 319* bit_map_ptr 000556 automatic pointer dcl 1-8 set ref 310* 319 320 322 chairman 5 based structure level 3 dcl 1-18 chairman_message 16 based char(256) level 3 dcl 1-18 set ref 292* char builtin function dcl 179 ref 520 910 check_star_name_$entry 000030 constant entry external dcl 109 ref 211 463 cleanup 000540 stack reference condition dcl 179 ref 219 370 469 522 561 595 662 684 706 747 800 912 935 955 988 control 1 000444 automatic structure level 2 dcl 94 count 000100 automatic fixed bin(17,0) dcl 881 set ref 888* create_only 000106 automatic bit(1) dcl 55 set ref 197* 203* 306 335 created 000107 automatic bit(1) dcl 55 set ref 208* 220 239* 349 current_block_offset 7 based bit(18) level 2 dcl 1-77 set ref 327* current_segno 11 based fixed bin(17,0) level 2 dcl 1-77 set ref 329* 516 537* 906 define_area_ 000032 constant entry external dcl 109 ref 303 delete_acl based structure array level 1 unaligned dcl 102 dir 1(19) based bit(1) level 3 packed unaligned dcl 92 ref 813 directory 000110 automatic char(168) unaligned dcl 55 set ref 221* 222* 228* 236* 244* 247 351* 352* 376* 379* 397* 437* 442* 445 472* 483* 515* 525* 528* 534* 558* 558* 564* 587* 587* 601* 656* 656 665* 683* 683 687* 711 776 806* 819 838* 1051* dirname based char unaligned dcl 55 set ref 838* 847* dirname_buffer 000162 automatic char(168) unaligned dcl 55 set ref 835* 838 847 dirname_len 000234 automatic fixed bin(17,0) dcl 55 set ref 835* 838 838 847 847 egress 000236 automatic label variable dcl 55 set ref 1032* 1053 1063 error_code parameter fixed bin(35,0) dcl 1060 ref 1057 1062 error_table_$ai_restricted 000144 external static fixed bin(35,0) dcl 152 set ref 813* error_table_$bad_acl_mode 000146 external static fixed bin(35,0) dcl 152 set ref 618* error_table_$dirlong 000150 external static fixed bin(35,0) dcl 152 set ref 482* error_table_$incorrect_access 000152 external static fixed bin(35,0) dcl 152 set ref 402* error_table_$invalid_lock_reset 000154 external static fixed bin(35,0) dcl 152 ref 893 error_table_$lock_wait_time_exceeded 000156 external static fixed bin(35,0) dcl 152 ref 890 error_table_$namedup 000160 external static fixed bin(35,0) dcl 152 set ref 229* error_table_$noentry 000162 external static fixed bin(35,0) dcl 152 ref 230 807 821 848 916 error_table_$nostars 000164 external static fixed bin(35,0) dcl 152 set ref 212* 464* error_table_$notadir 000166 external static fixed bin(35,0) dcl 152 ref 821 error_table_$safety_sw_on 000170 external static fixed bin(35,0) dcl 152 set ref 374* error_table_$seg_busted 000172 external static fixed bin(35,0) dcl 152 set ref 799* 885* expand_pathname_ 000034 constant entry external dcl 109 ref 397 437 736 838 first_attendee_offset 116 based bit(18) level 3 dcl 1-18 set ref 312* 633 first_block_offset 6 based bit(18) level 2 dcl 1-77 set ref 327* first_free_word 14 based fixed bin(17,0) level 2 dcl 1-77 set ref 325 first_trans_idx based fixed bin(17,0) level 2 dcl 1-114 set ref 332* flags 13 based structure level 2 dcl 1-42 forum_data_$forum_ring 000222 external static fixed bin(3,0) dcl 177 ref 234 249 527 831 856 forum_dir 000242 automatic char(168) unaligned dcl 55 set ref 247* 250* 252* 254* 256* 260* 262* 272* 275* 278* 281* 284* 819* 820* forum_et_$anon_chairman 000174 external static fixed bin(35,0) dcl 152 set ref 216* forum_et_$blank_forum_name 000176 external static fixed bin(35,0) dcl 152 set ref 498* forum_et_$invalid_seg_idx 000200 external static fixed bin(35,0) dcl 152 set ref 906* 916* forum_et_$long_forum_name 000202 external static fixed bin(35,0) dcl 152 set ref 454* 485* forum_et_$meeting_bloat 000204 external static fixed bin(35,0) dcl 152 set ref 517* forum_et_$need_star_acl 000206 external static fixed bin(35,0) dcl 152 set ref 593* 659* forum_et_$no_such_forum 000212 external static fixed bin(35,0) dcl 152 set ref 807* forum_et_$no_suffix 000210 external static fixed bin(35,0) dcl 152 set ref 500* 501* forum_et_$not_a_forum 000214 external static fixed bin(35,0) dcl 152 set ref 821* 829* 831* 833* 848* 855* 856* forum_et_$unexpected_fault 000216 external static fixed bin(35,0) dcl 152 set ref 636* 1052 forum_idx 000314 automatic fixed bin(17,0) dcl 55 set ref 431* 433* 729* 730* forum_logger_$any_other 000036 constant entry external dcl 109 ref 1051 forum_name 4 based char(168) level 2 dcl 2-5 set ref 437 445* 515 736 915 forum_open_mgr_$lookup_forum_idx 000040 constant entry external dcl 109 ref 433 730 free_space_offset 13 based bit(18) level 2 dcl 1-77 set ref 330* full_authorization 000442 automatic bit(72) dcl 82 set ref 812* 813 813 813 get_authorization_ 000042 constant entry external dcl 109 ref 1037 get_group_id_ 000044 constant entry external dcl 109 ref 236 236 get_lock_id_ 000046 constant entry external dcl 109 ref 287 get_ring_ 000050 constant entry external dcl 109 ref 1038 hbound builtin function dcl 179 ref 328 517 961 hcs_$add_acl_entries 000052 constant entry external dcl 109 ref 564 hcs_$append_branch 000054 constant entry external dcl 109 ref 250 254 260 525 hcs_$append_branchx 000056 constant entry external dcl 109 ref 236 hcs_$chname_file 000060 constant entry external dcl 109 ref 472 hcs_$del_dir_tree 000062 constant entry external dcl 109 ref 221 351 376 hcs_$delentry_file 000064 constant entry external dcl 109 ref 222 352 379 hcs_$delete_acl_entries 000066 constant entry external dcl 109 ref 665 hcs_$fs_get_access_modes 000070 constant entry external dcl 109 ref 843 hcs_$fs_get_brackets 000072 constant entry external dcl 109 ref 826 852 hcs_$fs_get_path_name 000074 constant entry external dcl 109 ref 442 835 hcs_$get_access_class 000076 constant entry external dcl 109 ref 806 hcs_$get_authorization 000100 constant entry external dcl 109 ref 812 hcs_$get_safety_sw_seg 000102 constant entry external dcl 109 ref 373 hcs_$get_uid_seg 000104 constant entry external dcl 109 ref 752 hcs_$get_user_effmode 000106 constant entry external dcl 109 ref 400 hcs_$initiate 000110 constant entry external dcl 109 ref 281 284 820 847 915 hcs_$level_get 000112 constant entry external dcl 109 ref 987 1041 hcs_$level_set 000114 constant entry external dcl 109 ref 224 227 343 354 370 371 382 389 469 470 475 522 523 540 561 562 571 595 599 608 662 663 672 684 685 690 694 802 805 859 912 913 921 925 935 936 947 955 956 979 988 990 1000 hcs_$list_acl 000116 constant entry external dcl 109 ref 687 hcs_$replace_acl 000120 constant entry external dcl 109 ref 272 275 278 534 601 hcs_$replace_dir_acl 000122 constant entry external dcl 109 ref 244 hcs_$set_ring_brackets 000124 constant entry external dcl 109 ref 252 256 262 528 hcs_$status_minf 000126 constant entry external dcl 109 ref 228 hcs_$terminate_noname 000130 constant entry external dcl 109 ref 341 342 965 994 998 header based structure level 2 dcl 1-18 idx 000642 automatic fixed bin(17,0) dcl 615 set ref 617* 618 618 618 618 618* initiate_trans parameter bit(1) dcl 795 ref 792 846 inner_ring 000015 internal static fixed bin(3,0) dcl 82 set ref 227* 371* 470* 523* 562* 599* 663* 685* 805* 913* 936* 956* 990* 1038* invalid 131 based bit(1) level 2 dcl 2-5 set ref 973* ipc 1(18) based bit(1) level 3 packed unaligned dcl 92 ref 813 last_attendee_offset 117 based bit(18) level 3 dcl 1-18 set ref 312* last_trans_idx 1 based fixed bin(17,0) level 2 dcl 1-114 set ref 333* last_trans_in_block 10 based fixed bin(17,0) level 2 dcl 1-77 set ref 328* length builtin function dcl 179 in procedure "forum_seg_mgr_$create_forum" ref 454 454 482 485 499 499 length 1 based fixed bin(17,0) level 2 in structure "bit_map" dcl 1-67 in procedure "forum_seg_mgr_$create_forum" set ref 310* 320 lock 2 based bit(36) level 3 dcl 1-18 set ref 287* 340* 889* 1021* ltrim builtin function dcl 179 ref 520 910 me 000034 constant char(16) initial unaligned dcl 82 set ref 1051* mode 000315 automatic fixed bin(5,0) dcl 55 set ref 400* 402 826* 829 852* 855 modes 10 based bit(36) array level 2 in structure "acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" ref 618 modes 10 000470 automatic bit(36) level 2 in structure "one_acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 241* 532* modes 10 000503 automatic bit(36) array level 2 in structure "two_acls" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 266* 269* my_authorization 000012 internal static bit(72) dcl 82 set ref 811* 1037* name 000316 automatic char(32) unaligned dcl 55 in procedure "forum_seg_mgr_$create_forum" set ref 211* 221* 222* 228* 236* 244* 247 351* 352* 376* 379* 437* 472* 486* 487* 520* 525* 528* 534* 558* 587* 656 683 712 777 806* 819 838* 841* 910* 915* 1051* name parameter char(32) unaligned dcl 495 in procedure "validate_name" ref 492 498 499 501 name_len 000100 automatic fixed bin(17,0) dcl 495 set ref 499* 500 501 new_name 000326 automatic char(32) unaligned dcl 55 set ref 460* 461 462* 463* 472* next_offset 31 based bit(18) level 2 dcl 1-42 ref 639 next_trans_offset 12 based bit(18) level 2 dcl 1-77 set ref 538* not_locked 000101 automatic bit(1) dcl 881 set ref 887* 888 890* null builtin function dcl 179 ref 282 285 388 696 787 788 821 848 909 916 944 945 959 964 971 972 993 997 1017 1042 old_name 000336 automatic char(32) unaligned dcl 55 set ref 457* 458 458* 472* old_ring 000100 automatic fixed bin(3,0) dcl 985 set ref 987* 988* 1000* one_acl 000470 automatic structure level 1 unaligned dcl 102 set ref 244 244 534 534 open_count 130 based fixed bin(17,0) level 2 dcl 2-5 ref 961 970 977 open_data based structure level 1 dcl 2-5 open_data_ptr 000562 automatic pointer dcl 2-3 set ref 433* 435 437 445 512* 513 515 517 730* 733 736 904* 906 909 915 920 958* 959 961 961 963 964 968 969 970 971 972 973 977 1042* owner 2 000444 automatic char(32) level 2 packed unaligned dcl 94 set ref 301* p 000346 automatic pointer dcl 55 set ref 915* 916 920 963* 965* 992* 994* 996* 998* pathname_ 000132 constant entry external dcl 109 ref 558 587 person_id 000016 internal static char(22) unaligned dcl 82 in procedure "forum_seg_mgr_$create_forum" set ref 216 268 290 316 638 1035* 1036* 1036 person_id 2 based char(22) level 2 in structure "attendee" dcl 1-42 in procedure "forum_seg_mgr_$create_forum" set ref 316* 638 person_id 5 based char(22) level 4 in structure "attendee_seg" dcl 1-18 in procedure "forum_seg_mgr_$create_forum" set ref 290* privileges 1(18) based structure level 2 packed unaligned dcl 92 proceedings_ptrs 64 based pointer array level 2 dcl 2-5 set ref 517 909 920* 961 963 964* project_id 000024 internal static char(9) unaligned dcl 82 in procedure "forum_seg_mgr_$create_forum" set ref 291 317 1035* project_id 13 based char(9) level 4 in structure "attendee_seg" dcl 1-18 in procedure "forum_seg_mgr_$create_forum" set ref 291* project_id 10 based char(9) level 2 in structure "attendee" dcl 1-42 in procedure "forum_seg_mgr_$create_forum" set ref 317* ptr builtin function dcl 179 ref 637 read_write_allowed_ 000134 constant entry external dcl 109 ref 811 real_dir 000350 automatic char(168) unaligned dcl 55 set ref 397* 400* 736* 737 real_name 000422 automatic char(32) unaligned dcl 55 set ref 259* 260* 262* 278* 397* 400* 736* 738 rel builtin function dcl 179 ref 312 319 327 330 rings 000432 automatic fixed bin(3,0) array dcl 55 set ref 234* 235* 236* 249* 249* 249* 252* 256* 262* 527* 527* 527* 528* 826* 831 831 831 852* 856 856 856 rtrim builtin function dcl 179 ref 247 259 268 454 454 482 485 499 520 656 683 819 910 safety_switch 000435 automatic bit(1) unaligned dcl 55 set ref 373* 374 seg 1(20) based bit(1) level 3 packed unaligned dcl 92 ref 813 seg_fault_error 000000 stack reference condition dcl 179 ref 799 885 seg_index 000436 automatic fixed bin(17,0) dcl 55 set ref 516* 517 520 537 590* 591* 658* 659* 905* 906 906 909 910 920 961* 963 964* set_lock_$lock 000136 constant entry external dcl 109 ref 889 set_lock_$unlock 000140 constant entry external dcl 109 ref 340 1021 size 13 000444 automatic fixed bin(18,0) level 2 in structure "auto_area_info" dcl 94 in procedure "forum_seg_mgr_$create_forum" set ref 299* size builtin function dcl 179 in procedure "forum_seg_mgr_$create_forum" ref 299 330 static_init 000010 internal static bit(1) initial dcl 82 set ref 1034 1039* status 000437 automatic fixed bin(35,0) dcl 55 set ref 211* 212 212 212 214* 228* 229 230 230* 236* 237 237* 244* 245 245* 250* 251 251* 252* 253 253* 254* 255 255* 256* 257 257* 260* 261 261* 262* 272* 273 273* 275* 276 276* 278* 279 279* 281* 282* 284* 285* 303* 304 304* 355 376* 377 377* 379* 380 380* 390 397* 398 398* 400* 401 401* 421 433* 434 434* 437* 438 438* 442* 443 443* 449 463* 464 464 464 466* 472* 473 473* 525* 526 526* 528* 529 529* 534* 535 535* 542 564* 565 565* 572 601* 602 602* 609 665* 666 666* 673 687* 688 688* 698 721 730* 731 731* 736* 752* 753 753* 763 789 806* 807 807 809* 820* 821 821 824* 826* 827 827* 835* 836 836* 838* 839 839* 843* 844 844* 847* 848 850* 852* 853 853* 873 889* 890 893 893 893* 915* 916 918* 927 1052* 1062* substr builtin function dcl 179 ref 216 501 sys_info$max_seg_size 000220 external static fixed bin(35,0) dcl 152 ref 299 system 1(05) 000444 automatic bit(1) level 3 packed unaligned dcl 94 set ref 296* transaction_block based structure level 1 unaligned dcl 1-114 set ref 330 transaction_block_ptr 000554 automatic pointer dcl 1-8 set ref 325* 327 328 330 330 332 333 transaction_seg based structure level 1 dcl 1-77 transaction_seg_ptr 000550 automatic pointer dcl 1-8 in procedure "forum_seg_mgr_$create_forum" set ref 284* 285 325 326 327 327 328 329 330 337 342* 513* 516 537 538 779 847* 848 852* 939* 969* 996 997* 1042* transaction_seg_ptr 62 based pointer level 2 in structure "open_data" dcl 2-5 in procedure "forum_seg_mgr_$create_forum" set ref 513 906 969 972* transactions 5 based structure array level 2 packed unaligned dcl 1-114 ref 328 two_acls 000503 automatic structure array level 1 unaligned dcl 102 set ref 272 272 275 275 278 278 uid 000440 automatic bit(36) dcl 55 set ref 752* 756 unspec builtin function dcl 179 set ref 294* user_info_$login_data 000142 constant entry external dcl 109 ref 1035 user_ring 000014 internal static fixed bin(3,0) dcl 82 set ref 224* 343* 354* 370* 382* 389* 400 469* 475* 522* 540* 561* 571* 595* 608* 662* 672* 684* 690* 694* 802* 859* 912* 921* 925* 935* 947* 955* 979* 1041* version 000444 automatic fixed bin(17,0) level 2 in structure "auto_area_info" dcl 94 in procedure "forum_seg_mgr_$create_forum" set ref 295* version based char(8) level 2 in structure "transaction_seg" dcl 1-77 in procedure "forum_seg_mgr_$create_forum" set ref 326* version based char(8) level 3 in structure "attendee_seg" dcl 1-18 in procedure "forum_seg_mgr_$create_forum" set ref 288* 833 version based fixed bin(17,0) level 2 in structure "attendee" dcl 1-42 in procedure "forum_seg_mgr_$create_forum" set ref 314* xacl 000441 automatic bit(36) dcl 55 set ref 433* 556 585 654 730* 780 843* xmodes 11 000503 automatic bit(36) array level 2 in structure "two_acls" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 267* 270* xmodes 11 based bit(36) array level 2 in structure "acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" ref 618 618 618 618 xmodes 11 000470 automatic bit(36) level 2 in structure "one_acl" packed unaligned dcl 102 in procedure "forum_seg_mgr_$create_forum" set ref 242* 533* zero_on_alloc 1(01) 000444 automatic bit(1) level 3 packed unaligned dcl 94 set ref 298* zero_on_free 1(02) 000444 automatic bit(1) level 3 packed unaligned dcl 94 set ref 297* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 3-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 3-33 EXPUNGED internal static bit(18) initial unaligned dcl 1-135 E_ACCESS internal static bit(3) initial unaligned dcl 3-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 M_ACCESS internal static bit(3) initial unaligned dcl 3-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 REW_ACCESS internal static bit(3) initial unaligned dcl 3-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 RE_ACCESS internal static bit(3) initial unaligned dcl 3-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 R_ACCESS internal static bit(3) initial unaligned dcl 3-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SA_ACCESS internal static bit(3) initial unaligned dcl 3-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 3-30 SM_ACCESS internal static bit(3) initial unaligned dcl 3-11 S_ACCESS internal static bit(3) initial unaligned dcl 3-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 TRANSACTION_VERSION_1 internal static fixed bin(17,0) initial dcl 1-132 W_ACCESS internal static bit(3) initial unaligned dcl 3-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 3-36 area_infop automatic pointer dcl 5-5 transaction based structure level 1 unaligned dcl 1-91 transaction_ptr automatic pointer dcl 1-8 NAMES DECLARED BY EXPLICIT CONTEXT. CHNAME_EXIT 002553 constant label dcl 419 ref 410 410 CHNAME_IDX_EXIT 003005 constant label dcl 447 ref 427 427 CREATE_COMMON 000214 constant label dcl 205 ref 198 CREATE_EXIT 002116 constant label dcl 349 ref 205 205 CREATE_SEG_EXIT 003355 constant label dcl 540 ref 510 510 DELETE_ACL_EXIT 004323 constant label dcl 670 ref 647 647 DELETE_EXIT 002421 constant label dcl 386 ref 361 361 GET_PATH_EXIT 004717 constant label dcl 718 ref 704 704 727 727 GET_UID_EXIT 005234 constant label dcl 760 ref 745 745 HAVE_STAR_ACL 003741 constant label dcl 595 ref 591 INITIATE_EXIT 005353 constant label dcl 784 ref 769 769 INITIATE_SEG_EXIT 005722 constant label dcl 925 ref 902 902 LIST_ACL_EXIT 004557 constant label dcl 694 ref 679 679 LOCK_EXIT 005423 constant label dcl 873 ref 866 866 PUNT_UNLOCK 010543 constant label dcl 1022 ref 1019 REPLACE_ACL_EXIT 004042 constant label dcl 606 ref 578 578 SET_ACL_EXIT 003567 constant label dcl 569 ref 548 548 TERMINATE_EXIT 006206 constant label dcl 979 ref 933 933 953 953 UNLOCK_EXIT 006244 constant label dcl 1011 ref 1007 1007 any_other_handler 010701 constant entry internal dcl 1047 ref 218 414 429 798 884 check_access 006245 constant entry internal dcl 394 ref 232 368 556 585 654 check_acl 007054 constant entry internal dcl 612 ref 559 588 chname 006365 constant entry internal dcl 452 ref 417 440 copy_pathname_args 006666 constant entry internal dcl 479 ref 209 363 412 550 582 649 681 708 749 771 error 010767 constant entry internal dcl 1057 ref 212 214 216 229 230 237 245 251 253 255 257 261 273 276 279 282 285 304 374 377 380 398 401 402 434 438 443 454 464 466 473 482 485 498 500 501 517 526 529 535 565 593 602 618 636 659 666 688 731 753 799 807 809 813 821 824 827 829 831 833 836 839 844 848 850 853 855 856 885 893 906 916 918 forum_seg_mgr_$chname_forum 002454 constant entry external dcl 407 forum_seg_mgr_$chname_forum_idx 002567 constant entry external dcl 424 forum_seg_mgr_$create_forum 000131 constant entry external dcl 17 forum_seg_mgr_$create_segment 003020 constant entry external dcl 507 forum_seg_mgr_$delete_forum 002200 constant entry external dcl 358 forum_seg_mgr_$delete_forum_acl 004062 constant entry external dcl 644 forum_seg_mgr_$get_forum_path 004576 constant entry external dcl 701 forum_seg_mgr_$get_forum_path_idx 004750 constant entry external dcl 724 forum_seg_mgr_$get_uid_file 005115 constant entry external dcl 742 forum_seg_mgr_$initiate 005253 constant entry external dcl 766 forum_seg_mgr_$initiate_seg 005432 constant entry external dcl 899 forum_seg_mgr_$just_create 000163 constant entry external dcl 200 forum_seg_mgr_$list_forum_acl 004347 constant entry external dcl 676 forum_seg_mgr_$lock 005373 constant entry external dcl 863 forum_seg_mgr_$replace_forum_acl 003613 constant entry external dcl 575 forum_seg_mgr_$set_forum_acl 003374 constant entry external dcl 545 forum_seg_mgr_$terminate 005740 constant entry external dcl 930 forum_seg_mgr_$terminate_all 006045 constant entry external dcl 950 forum_seg_mgr_$unlock 006220 constant entry external dcl 1004 initialize 010544 constant entry internal dcl 1026 ref 205 361 410 427 510 548 578 647 679 704 727 745 769 866 902 933 953 1007 initiate_meeting 007157 constant entry internal dcl 792 ref 365 416 554 584 653 709 750 773 lock_meeting 010224 constant entry internal dcl 878 ref 366 774 869 terminate_meeting 010357 constant entry internal dcl 983 ref 388 419 569 606 670 706 714 718 747 755 760 786 801 942 977 unlock_meeting 010476 constant entry internal dcl 1014 ref 386 447 734 784 941 976 1010 update_acl_change 007115 constant entry internal dcl 626 ref 567 604 668 validate_name 006761 constant entry internal dcl 492 ref 458 462 487 841 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12764 13210 11013 12774 Length 14072 11013 224 646 1750 20 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_seg_mgr_$create_forum 674 external procedure is an external procedure. on unit on line 218 64 on unit on unit on line 219 84 on unit begin block on line 220 begin block shares stack frame of on unit on line 219. on unit on line 370 68 on unit check_access internal procedure shares stack frame of external procedure forum_seg_mgr_$create_forum. on unit on line 414 64 on unit on unit on line 429 64 on unit chname 112 internal procedure enables or reverts conditions. on unit on line 469 68 on unit copy_pathname_args internal procedure shares stack frame of external procedure forum_seg_mgr_$create_forum. validate_name 72 internal procedure is called by several nonquick procedures. on unit on line 522 68 on unit on unit on line 561 68 on unit on unit on line 595 68 on unit check_acl internal procedure shares stack frame of external procedure forum_seg_mgr_$create_forum. update_acl_change internal procedure shares stack frame of external procedure forum_seg_mgr_$create_forum. on unit on line 662 68 on unit on unit on line 684 68 on unit on unit on line 706 64 on unit on unit on line 747 64 on unit initiate_meeting 142 internal procedure enables or reverts conditions. on unit on line 798 64 on unit on unit on line 799 70 on unit on unit on line 800 68 on unit lock_meeting 88 internal procedure enables or reverts conditions. on unit on line 884 64 on unit on unit on line 885 70 on unit on unit on line 912 68 on unit on unit on line 935 68 on unit on unit on line 955 68 on unit terminate_meeting 84 internal procedure enables or reverts conditions. on unit on line 988 68 on unit unlock_meeting 78 internal procedure enables or reverts conditions. on unit on line 1019 64 on unit initialize internal procedure shares stack frame of external procedure forum_seg_mgr_$create_forum. any_other_handler 96 internal procedure enables or reverts conditions. on unit on line 1050 64 on unit error 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_init forum_seg_mgr_$create_forum 000012 my_authorization forum_seg_mgr_$create_forum 000014 user_ring forum_seg_mgr_$create_forum 000015 inner_ring forum_seg_mgr_$create_forum 000016 person_id forum_seg_mgr_$create_forum 000024 project_id forum_seg_mgr_$create_forum STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME forum_seg_mgr_$create_forum 000100 acl_count forum_seg_mgr_$create_forum 000102 acl_ptr forum_seg_mgr_$create_forum 000104 area_ptr forum_seg_mgr_$create_forum 000106 create_only forum_seg_mgr_$create_forum 000107 created forum_seg_mgr_$create_forum 000110 directory forum_seg_mgr_$create_forum 000162 dirname_buffer forum_seg_mgr_$create_forum 000234 dirname_len forum_seg_mgr_$create_forum 000236 egress forum_seg_mgr_$create_forum 000242 forum_dir forum_seg_mgr_$create_forum 000314 forum_idx forum_seg_mgr_$create_forum 000315 mode forum_seg_mgr_$create_forum 000316 name forum_seg_mgr_$create_forum 000326 new_name forum_seg_mgr_$create_forum 000336 old_name forum_seg_mgr_$create_forum 000346 p forum_seg_mgr_$create_forum 000350 real_dir forum_seg_mgr_$create_forum 000422 real_name forum_seg_mgr_$create_forum 000432 rings forum_seg_mgr_$create_forum 000435 safety_switch forum_seg_mgr_$create_forum 000436 seg_index forum_seg_mgr_$create_forum 000437 status forum_seg_mgr_$create_forum 000440 uid forum_seg_mgr_$create_forum 000441 xacl forum_seg_mgr_$create_forum 000442 full_authorization forum_seg_mgr_$create_forum 000444 auto_area_info forum_seg_mgr_$create_forum 000470 one_acl forum_seg_mgr_$create_forum 000503 two_acls forum_seg_mgr_$create_forum 000546 attendee_seg_ptr forum_seg_mgr_$create_forum 000550 transaction_seg_ptr forum_seg_mgr_$create_forum 000552 attendee_ptr forum_seg_mgr_$create_forum 000554 transaction_block_ptr forum_seg_mgr_$create_forum 000556 bit_map_ptr forum_seg_mgr_$create_forum 000560 alloc_bit_map_length forum_seg_mgr_$create_forum 000562 open_data_ptr forum_seg_mgr_$create_forum 000642 idx check_acl 000652 attendee_count update_acl_change 000653 attendee_offset update_acl_change 000662 anon initialize initiate_meeting 000100 access_class initiate_meeting lock_meeting 000100 count lock_meeting 000101 not_locked lock_meeting terminate_meeting 000100 old_ring terminate_meeting validate_name 000100 name_len validate_name 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 tra_ext_1 tra_ext_2 enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry define_area_ expand_pathname_ forum_logger_$any_other forum_open_mgr_$lookup_forum_idx get_authorization_ get_group_id_ get_lock_id_ get_ring_ hcs_$add_acl_entries hcs_$append_branch hcs_$append_branchx hcs_$chname_file hcs_$del_dir_tree hcs_$delentry_file hcs_$delete_acl_entries hcs_$fs_get_access_modes hcs_$fs_get_brackets hcs_$fs_get_path_name hcs_$get_access_class hcs_$get_authorization hcs_$get_safety_sw_seg hcs_$get_uid_seg hcs_$get_user_effmode hcs_$initiate hcs_$level_get hcs_$level_set hcs_$list_acl hcs_$replace_acl hcs_$replace_dir_acl hcs_$set_ring_brackets hcs_$status_minf hcs_$terminate_noname pathname_ read_write_allowed_ set_lock_$lock set_lock_$unlock user_info_$login_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_restricted error_table_$bad_acl_mode error_table_$dirlong error_table_$incorrect_access error_table_$invalid_lock_reset error_table_$lock_wait_time_exceeded error_table_$namedup error_table_$noentry error_table_$nostars error_table_$notadir error_table_$safety_sw_on error_table_$seg_busted forum_data_$forum_ring forum_et_$anon_chairman forum_et_$blank_forum_name forum_et_$invalid_seg_idx forum_et_$long_forum_name forum_et_$meeting_bloat forum_et_$need_star_acl forum_et_$no_such_forum forum_et_$no_suffix forum_et_$not_a_forum forum_et_$unexpected_fault sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000125 197 000154 198 000155 200 000156 203 000212 205 000214 208 000221 209 000222 211 000223 212 000240 214 000256 216 000264 218 000277 219 000321 220 000335 221 000340 222 000363 224 000406 225 000415 227 000416 228 000425 229 000465 230 000477 232 000510 234 000511 235 000514 236 000516 237 000600 239 000610 240 000612 241 000615 242 000617 244 000620 245 000663 247 000673 249 000732 250 000740 251 000764 252 000774 253 001021 254 001031 255 001056 256 001066 257 001113 259 001123 260 001151 261 001177 262 001207 265 001234 266 001237 267 001241 268 001242 269 001271 270 001274 272 001276 273 001340 275 001350 276 001413 278 001423 279 001466 281 001476 282 001541 284 001553 285 001616 287 001630 288 001640 289 001644 290 001645 291 001651 292 001656 294 001661 295 001664 296 001666 297 001670 298 001672 299 001674 300 001702 301 001704 303 001707 304 001721 306 001731 307 001733 308 001736 309 001743 310 001745 311 001757 312 001762 314 001765 315 001767 316 001772 317 001776 318 002003 319 002005 320 002007 322 002011 325 002013 326 002016 327 002022 328 002025 329 002027 330 002031 332 002035 333 002036 335 002037 336 002042 337 002044 338 002045 340 002046 341 002061 342 002073 343 002105 346 002114 347 002115 349 002116 351 002120 352 002142 354 002164 355 002173 356 002175 358 002176 361 002223 363 002230 365 002231 366 002241 368 002245 370 002246 371 002271 373 002300 374 002314 376 002326 377 002347 379 002357 380 002400 382 002410 383 002417 384 002420 386 002421 388 002425 389 002435 390 002444 391 002446 407 002447 410 002507 412 002514 414 002515 416 002537 417 002547 419 002553 421 002557 422 002561 424 002562 427 002610 429 002615 431 002637 433 002642 434 002657 435 002667 437 002672 438 002723 440 002733 442 002737 443 002771 445 003001 447 003005 449 003011 450 003013 507 003014 510 003030 512 003035 513 003041 515 003043 516 003046 517 003051 520 003062 522 003137 523 003163 525 003172 526 003217 527 003227 528 003234 529 003260 531 003270 532 003273 533 003275 534 003276 535 003341 537 003351 538 003354 540 003355 542 003364 543 003366 545 003367 548 003423 550 003430 551 003431 552 003434 554 003436 556 003446 558 003452 559 003472 561 003473 562 003516 564 003525 565 003556 567 003566 569 003567 571 003573 572 003602 573 003604 575 003605 578 003642 580 003647 581 003652 582 003654 584 003655 585 003665 587 003671 588 003711 590 003712 591 003721 592 003730 593 003732 595 003741 599 003764 601 003773 602 004031 604 004041 606 004042 608 004046 609 004055 610 004057 644 004060 647 004111 649 004116 650 004117 651 004122 653 004124 654 004134 656 004140 658 004177 659 004207 660 004225 662 004227 663 004252 665 004261 666 004312 668 004322 670 004323 672 004327 673 004336 674 004340 676 004341 679 004376 681 004403 683 004404 684 004443 685 004467 687 004476 688 004536 690 004546 691 004555 692 004556 694 004557 696 004566 697 004570 698 004571 699 004573 701 004574 704 004631 706 004636 708 004660 709 004661 711 004671 712 004701 714 004711 715 004715 716 004716 718 004717 720 004723 721 004743 722 004745 724 004746 727 004771 729 004776 730 005001 731 005016 733 005026 734 005031 736 005035 737 005066 738 005076 739 005106 740 005107 742 005110 745 005140 747 005145 749 005167 750 005170 752 005200 753 005213 755 005223 756 005227 757 005232 758 005233 760 005234 762 005240 763 005242 764 005244 766 005245 769 005302 771 005307 773 005310 774 005320 776 005330 777 005336 778 005343 779 005345 780 005347 781 005351 782 005352 784 005353 786 005357 787 005363 788 005365 789 005366 790 005370 863 005371 866 005405 868 005412 869 005415 870 005421 871 005422 873 005423 875 005425 899 005426 902 005442 904 005447 905 005453 906 005455 909 005471 910 005500 912 005555 913 005601 915 005610 916 005657 918 005676 920 005704 921 005711 922 005720 923 005721 925 005722 927 005731 928 005733 930 005734 933 005752 935 005757 936 006002 938 006011 939 006014 941 006017 942 006023 944 006027 945 006031 947 006032 948 006041 950 006042 953 006052 955 006057 956 006102 958 006111 959 006115 961 006121 963 006131 964 006135 965 006141 966 006153 968 006155 969 006160 970 006163 971 006166 972 006170 973 006171 976 006173 977 006177 979 006206 981 006215 1004 006216 1007 006230 1009 006235 1010 006240 1011 006244 394 006245 397 006246 398 006272 400 006302 401 006341 402 006351 403 006363 452 006364 454 006372 457 006445 458 006456 460 006471 461 006502 462 006506 463 006515 464 006533 466 006553 469 006562 470 006605 472 006614 473 006644 475 006656 476 006665 479 006666 482 006667 483 006715 485 006720 486 006746 487 006751 489 006757 492 006760 498 006766 499 007003 500 007020 501 007032 504 007053 612 007054 617 007055 618 007065 620 007112 622 007114 626 007115 632 007116 633 007117 635 007124 636 007125 637 007137 638 007143 639 007152 641 007155 792 007156 798 007164 799 007206 800 007232 801 007246 802 007253 803 007262 805 007263 806 007272 807 007320 809 007336 811 007345 812 007363 813 007377 819 007415 820 007455 821 007521 824 007544 826 007553 827 007571 829 007603 831 007617 833 007636 835 007654 836 007706 838 007720 839 007751 841 007763 843 007773 844 010013 846 010025 847 010031 848 010100 850 010121 852 010130 853 010146 855 010160 856 010174 859 010213 860 010222 878 010223 884 010231 885 010253 887 010277 888 010301 889 010311 890 010330 891 010336 893 010340 896 010355 983 010356 987 010364 988 010372 990 010416 992 010425 993 010431 994 010433 996 010445 997 010451 998 010453 1000 010465 1001 010474 1014 010475 1017 010503 1019 010510 1021 010527 1022 010543 1026 010544 1032 010546 1034 010554 1035 010557 1036 010624 1037 010643 1038 010653 1039 010662 1041 010665 1042 010673 1044 010677 1047 010700 1050 010706 1051 010723 1052 010760 1053 010764 1057 010766 1062 010774 1063 011000 ----------------------------------------------------------- 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