COMPILATION LISTING OF SEGMENT suffix_forum_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/14/88 1220.6 mst Fri Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 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* removed per-attendee switches because of errors when called 13* by non-participants. 14* 2) change(88-09-13,Beattie), approve(88-08-01,MCR7948), 15* audit(88-10-11,Farley), install(88-10-14,MR12.2-1165): 16* Fix bug in list_acl entry which is called when fs_util_$list_acl 17* is used. Needed to copy access_name entries from one array to another. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style2,idind30,indcomtxt */ 22 23 suffix_forum_: 24 procedure; 25 26 /* Interface to forum for the extended acl / extended object facility 27* Jay Pattin 1/25/83 */ 28 /* Moved to the new interfaces, BIM, 831002 */ 29 30 declare P_acl_ptr ptr; 31 declare P_area_ptr ptr; 32 declare P_bit_count fixed bin (24); 33 declare P_copy_options_ptr ptr; 34 declare P_desired_version char (*); 35 declare P_directory char (*); 36 declare P_max_length fixed bin (19); 37 declare (P_mode, P_exmode) bit (36) aligned; 38 declare P_name char (*); 39 declare P_new_name char (*); 40 declare P_no_sysdaemon bit (1); 41 declare P_old_name char (*); 42 declare P_return_ptr ptr; 43 declare P_ring fixed bin; 44 declare P_ring_brackets (*) fixed bin (3); 45 declare P_status fixed bin (35); 46 declare P_suffix_info_ptr ptr; 47 declare P_switch_list_ptr ptr; 48 declare P_switch_name char (*); 49 declare P_user_name char (*); 50 declare P_value bit (1) aligned; 51 52 declare area_ptr pointer; 53 declare based_area area based (area_ptr); 54 declare directory char (168); 55 declare dir_rings (2) fixed bin (3); 56 declare idx fixed bin; 57 declare name char (32); 58 59 declare ( 60 error_table_$unimplemented_version, 61 error_table_$argerr, 62 error_table_$noentry, 63 error_table_$not_seg_type, 64 forum_et_$invalid_switch_name, 65 forum_et_$no_such_user, 66 forum_et_$not_a_forum 67 ) fixed bin (35) external; 68 69 declare (addr, hbound, lbound, null, rtrim, string) 70 builtin; 71 72 declare old_acl_ptr pointer; 73 declare switches (5) char (32) static options (constant) 74 init ("safety", "adjourned", "adj", 75 "meeting_eligibility_messages", "mtg_emsg"); 76 77 declare get_system_free_area_ entry () returns (ptr); 78 declare hcs_$get_dir_ring_brackets entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 79 declare hcs_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, 80 bit (36) aligned, fixed bin (35)); 81 declare forum_$chname_forum entry (char (*), char (*), char (*), char (*), fixed bin (35)); 82 declare forum_$copy entry (ptr, fixed bin (35)); 83 declare forum_$delete_forum entry (char (*), char (*), fixed bin (35)); 84 declare forum_$delete_forum_acl entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 85 declare forum_$get_forum_path entry (char (*), char (*), char (*), char (*), fixed bin (35)); 86 declare forum_$get_switch entry (char (*), char (*), char (*), char (*), bit (1) aligned, 87 fixed bin (35)); 88 declare forum_$list_forum_acl entry (char (*), char (*), ptr, ptr, ptr, fixed bin, fixed bin (35)); 89 declare forum_$replace_forum_acl entry (char (*), char (*), ptr, fixed bin, bit (1), fixed bin (35)); 90 declare forum_$set_forum_acl entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 91 declare forum_$set_switch entry (char (*), char (*), char (*), char (*), bit (1) aligned, 92 fixed bin (35)); 93 94 declare forum_data_$print_eligibility_messages 95 bit (1) aligned external; 96 /* format: off */ 97 declare system_free_area area based (get_system_free_area_ ()); 98 declare cleanup condition; 99 100 /* 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 */ 100 101 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 2 2 /* format: style3,indcomtxt,idind30 */ 2 3 /**** Jay Pattin 2/13/83 2 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 2 5* 2 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 2 7* 2 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 2 9 2 10 declare suffix_info_ptr ptr; 2 11 2 12 declare 1 suffix_info aligned based (suffix_info_ptr), 2 13 2 version char (8), 2 14 2 type char (32) unaligned, 2 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 2 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 2 17 2 flags unaligned, 2 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 2 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 2 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 2 21 3 mbz1 bit (33) unaligned, 2 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 2 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 2 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 2 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 2 26 2 info_pathname char (168) unaligned; 2 27 /* pathname of info segment containing more info */ 2 28 2 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 2 30 2 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 2 32 2 33 declare switch_list_ptr ptr, 2 34 alloc_switch_count fixed bin, 2 35 alloc_switch_name_count fixed bin; 2 36 2 37 declare 1 switch_list aligned based (switch_list_ptr), 2 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 2 39 2 switch_count fixed bin, /* total number of switches */ 2 40 2 switch_name_count fixed bin, /* total number of names */ 2 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 2 42 3 name_index fixed bin, /* index of first name for this switch */ 2 43 3 name_count fixed bin, /* number of names for this switch */ 2 44 3 default_value bit (1) aligned, /* default setting for this switch */ 2 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 2 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 2 47 2 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 2 49 2 50 declare ( 2 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 2 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 2 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 2 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 2 55 FS_OBJECT_TYPE_LINK init ("-link") 2 56 ) char (32) unaligned int static options (constant); 2 57 2 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 101 102 /* BEGIN INCLUDE FILE: copy_options.incl.pl1 */ 3 2 3 3 /* This structure declares the input structure used by the copy_ subroutine. 3 4* 3 5* NOTE: This include file depends on declarations in the include file 3 6* copy_flags.incl.pl1. 3 7* 3 8* Jay Pattin 6/1/83 */ 3 9 3 10 declare copy_options_ptr ptr; 3 11 3 12 declare 1 copy_options aligned based (copy_options_ptr), 3 13 2 version char (8), /* currently COPY_OPTIONS_VERSION_1 */ 3 14 2 caller_name char (32) unal, /* Used in nd_handler_ call */ 3 15 2 source_dir char (168) unal, 3 16 2 source_name char (32) unal, 3 17 2 target_dir char (168) unal, 3 18 2 target_name char (32) unal, 3 19 2 flags, 3 20 3 no_name_dup bit (1) unaligned, /* ON = don't call nd_handler_ */ 3 21 3 raw bit (1) unaligned, /* ON = don't call object_type_, use hcs_ */ 3 22 3 force bit (1) unaligned, /* ON = delete or force access to target */ 3 23 3 delete bit (1) unaligned, /* ON = delete original after copy (for move) */ 3 24 3 target_err_switch bit (1) unaligned, 3 25 3 mbz bit (31) unaligned, 3 26 2 copy_items like copy_flags; /* see copy_flags.incl.pl1 */ 3 27 3 28 declare COPY_OPTIONS_VERSION_1 char (8) static options (constant) init ("CPOPT001"); 3 29 3 30 /* END INCLUDE FILE: copy_options.incl.pl1 */ 102 103 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 4 2 4 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 4 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 4 5* 4 6* Jay Pattin 6/23/83 */ 4 7 4 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 4 9 2 names bit (1) unaligned, 4 10 2 acl bit (1) unaligned, 4 11 2 ring_brackets bit (1) unaligned, 4 12 2 max_length bit (1) unaligned, 4 13 2 copy_switch bit (1) unaligned, 4 14 2 safety_switch bit (1) unaligned, 4 15 2 dumper_switches bit (1) unaligned, 4 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 4 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 4 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 4 19 2 mbz bit (26) unaligned; 4 20 4 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 103 104 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 5 2* 5 3* Values for the "access mode" argument so often used in hardcore 5 4* James R. Davis 26 Jan 81 MCR 4844 5 5* Added constants for SM access 4/28/82 Jay Pattin 5 6* Added text strings 03/19/85 Chris Jones 5 7**/ 5 8 5 9 5 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 11 dcl ( 5 12 N_ACCESS init ("000"b), 5 13 R_ACCESS init ("100"b), 5 14 E_ACCESS init ("010"b), 5 15 W_ACCESS init ("001"b), 5 16 RE_ACCESS init ("110"b), 5 17 REW_ACCESS init ("111"b), 5 18 RW_ACCESS init ("101"b), 5 19 S_ACCESS init ("100"b), 5 20 M_ACCESS init ("010"b), 5 21 A_ACCESS init ("001"b), 5 22 SA_ACCESS init ("101"b), 5 23 SM_ACCESS init ("110"b), 5 24 SMA_ACCESS init ("111"b) 5 25 ) bit (3) internal static options (constant); 5 26 5 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 5 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 5 29 5 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 5 31 static options (constant); 5 32 5 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 5 34 static options (constant); 5 35 5 36 dcl ( 5 37 N_ACCESS_BIN init (00000b), 5 38 R_ACCESS_BIN init (01000b), 5 39 E_ACCESS_BIN init (00100b), 5 40 W_ACCESS_BIN init (00010b), 5 41 RW_ACCESS_BIN init (01010b), 5 42 RE_ACCESS_BIN init (01100b), 5 43 REW_ACCESS_BIN init (01110b), 5 44 S_ACCESS_BIN init (01000b), 5 45 M_ACCESS_BIN init (00010b), 5 46 A_ACCESS_BIN init (00001b), 5 47 SA_ACCESS_BIN init (01001b), 5 48 SM_ACCESS_BIN init (01010b), 5 49 SMA_ACCESS_BIN init (01011b) 5 50 ) fixed bin (5) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 104 105 /* format: on */ 106 107 108 chname_file: 109 entry (P_directory, P_name, P_old_name, P_new_name, P_status); 110 111 call forum_$chname_forum (P_directory, P_name, P_old_name, P_new_name, P_status); 112 if P_status ^= 0 113 then if P_status = forum_et_$not_a_forum 114 then P_status = error_table_$not_seg_type; 115 return; 116 117 118 copy: 119 entry (P_copy_options_ptr, P_status); 120 121 call forum_$copy (P_copy_options_ptr, P_status); 122 if P_status ^= 0 123 then if P_status = forum_et_$not_a_forum 124 then P_status = error_table_$not_seg_type; 125 return; 126 127 get_ring_brackets: 128 entry (P_directory, P_name, P_ring_brackets, P_status); 129 130 if lbound (P_ring_brackets, 1) ^= 1 | hbound (P_ring_brackets, 1) < 2 131 then do; 132 P_status = error_table_$argerr; 133 return; 134 end; 135 136 call forum_$get_forum_path (P_directory, P_name, directory, name, P_status); 137 if P_status ^= 0 138 then if P_status = forum_et_$not_a_forum 139 then P_status = error_table_$not_seg_type; 140 else ; 141 else do; 142 call hcs_$get_dir_ring_brackets (P_directory, P_name, dir_rings, P_status); 143 P_ring_brackets (1), P_ring_brackets (2) = dir_rings (1); 144 end; 145 146 return; 147 148 get_user_access_modes: 149 entry (P_directory, P_name, P_user_name, P_ring, P_mode, P_exmode, P_status); 150 151 directory = rtrim (P_directory) || ">" || P_name; 152 153 P_exmode = ""b; 154 call hcs_$get_user_access_modes (directory, "Attendees", P_user_name, P_ring, (""b), P_mode, P_status); 155 /* YCCH! */ 156 157 if P_status = error_table_$noentry 158 then P_status = error_table_$not_seg_type; 159 return; 160 161 get_switch: 162 entry (P_directory, P_name, P_switch_name, P_value, P_status); 163 164 call forum_$get_switch (P_directory, P_name, "", P_switch_name, P_value, P_status); 165 goto CHECK_SWITCH_ERROR; 166 167 168 set_switch: 169 entry (P_directory, P_name, P_switch_name, P_value, P_status); 170 171 call forum_$set_switch (P_directory, P_name, "", P_switch_name, P_value, P_status); 172 173 CHECK_SWITCH_ERROR: 174 if P_status ^= 0 175 then if P_status = forum_et_$not_a_forum 176 then P_status = error_table_$not_seg_type; 177 else if P_status = forum_et_$invalid_switch_name 178 then P_status = error_table_$argerr; 179 180 return; 181 182 add_acl_entries: 183 entry (P_directory, P_name, P_acl_ptr, P_status); 184 185 acl_ptr = P_acl_ptr; 186 if general_acl.version ^= GENERAL_ACL_VERSION_1 187 then do; 188 P_status = error_table_$unimplemented_version; 189 return; 190 end; 191 192 acl_count = general_acl.count; 193 old_acl_ptr = null (); 194 on cleanup 195 begin; 196 if old_acl_ptr ^= null () 197 then do; 198 free old_acl_ptr -> segment_acl_array; 199 old_acl_ptr = null (); 200 end; 201 end; 202 203 allocate segment_acl_array in (system_free_area) set (old_acl_ptr); 204 old_acl_ptr -> segment_acl_array (*).access_name = general_acl.entries (*).access_name; 205 old_acl_ptr -> segment_acl_array (*).mode = RW_ACCESS; 206 old_acl_ptr -> segment_acl_array (*).extended_mode = general_acl.entries (*).mode; 207 208 209 call forum_$set_forum_acl (P_directory, P_name, old_acl_ptr, acl_count, P_status); 210 general_acl.entries (*).status_code = old_acl_ptr -> segment_acl_array (*).status_code; 211 free old_acl_ptr -> segment_acl_array; 212 213 if P_status ^= 0 214 then if P_status = forum_et_$not_a_forum 215 then P_status = error_table_$not_seg_type; 216 return; 217 218 219 delentry_file: 220 entry (P_directory, P_name, P_status); 221 222 call forum_$delete_forum (P_directory, P_name, P_status); 223 if P_status ^= 0 224 then if P_status = forum_et_$not_a_forum 225 then P_status = error_table_$not_seg_type; 226 return; 227 228 229 delete_acl_entries: 230 entry (P_directory, P_name, P_acl_ptr, P_status); 231 232 acl_ptr = P_acl_ptr; 233 if general_delete_acl.version ^= GENERAL_DELETE_ACL_VERSION_1 234 then do; 235 P_status = error_table_$unimplemented_version; 236 return; 237 end; 238 call forum_$delete_forum_acl (P_directory, P_name, addr (general_delete_acl.entries), general_delete_acl.count, 239 P_status); 240 241 if P_status ^= 0 242 then if P_status = forum_et_$not_a_forum 243 then P_status = error_table_$not_seg_type; 244 return; 245 246 247 list_acl: 248 entry (P_directory, P_name, P_desired_version, P_area_ptr, P_acl_ptr, P_status); 249 250 acl_ptr = P_acl_ptr; 251 if acl_ptr = null () 252 then do; 253 if P_desired_version ^= GENERAL_ACL_VERSION_1 254 then do; 255 P_status = error_table_$unimplemented_version; 256 return; 257 end; 258 259 call forum_$list_forum_acl (P_directory, P_name, get_system_free_area_ (), old_acl_ptr, null (), 260 acl_count, P_status); 261 if P_status ^= 0 262 then do; 263 if P_status = forum_et_$not_a_forum 264 then P_status = error_table_$not_seg_type; 265 return; 266 end; 267 268 if acl_count = 0 269 then do; 270 if old_acl_ptr ^= null () 271 then free old_acl_ptr -> segment_acl_array; 272 P_acl_ptr = null (); 273 return; 274 end; 275 area_ptr = P_area_ptr; 276 allocate general_acl in (based_area) set (acl_ptr); 277 general_acl.version = P_desired_version; 278 general_acl.entries (*).access_name = old_acl_ptr -> segment_acl_array (*).access_name; 279 general_acl.entries (*).mode = old_acl_ptr -> segment_acl_array (*).extended_mode; 280 general_acl.entries (*).status_code = 0; 281 free old_acl_ptr -> segment_acl_array; 282 P_acl_ptr = acl_ptr; 283 return; 284 end; 285 else do; /* Specific entries */ 286 if general_acl.version ^= GENERAL_ACL_VERSION_1 287 then do; 288 P_status = error_table_$unimplemented_version; 289 return; 290 end; 291 old_acl_ptr = null (); 292 on cleanup 293 begin; 294 if old_acl_ptr ^= null () 295 then do; 296 free old_acl_ptr -> segment_acl_array; 297 old_acl_ptr = null (); 298 end; 299 end; 300 301 acl_count = general_acl.count; 302 allocate segment_acl_array in (system_free_area) set (old_acl_ptr); 303 old_acl_ptr -> segment_acl_array(*).access_name = general_acl.entries(*).access_name; 304 305 call forum_$list_forum_acl (P_directory, P_name, null (), null (), old_acl_ptr, acl_count, P_status); 306 if P_status = forum_et_$not_a_forum 307 then P_status = error_table_$not_seg_type; 308 else do; 309 general_acl.entries (*).mode = old_acl_ptr -> segment_acl_array (*).extended_mode; 310 general_acl.entries (*).status_code = old_acl_ptr -> segment_acl_array (*).status_code; 311 end; 312 free old_acl_ptr -> segment_acl_array; 313 end; 314 return; 315 316 replace_acl: 317 entry (P_directory, P_name, P_acl_ptr, P_no_sysdaemon, P_status); 318 319 320 old_acl_ptr = null (); 321 on cleanup 322 begin; 323 if old_acl_ptr ^= null () 324 then do; 325 free old_acl_ptr -> segment_acl_array; 326 old_acl_ptr = null (); 327 end; 328 end; 329 330 acl_ptr = P_acl_ptr; 331 if acl_ptr = null () 332 then do; 333 call forum_$replace_forum_acl (P_directory, P_name, null (), 0, P_no_sysdaemon, P_status); 334 return; 335 end; 336 337 if general_acl.version ^= GENERAL_ACL_VERSION_1 338 then do; 339 P_status = error_table_$unimplemented_version; 340 return; 341 end; 342 343 acl_count = general_acl.count; 344 allocate segment_acl_array in (system_free_area) set (old_acl_ptr); 345 346 old_acl_ptr -> segment_acl_array (*).access_name = general_acl.entries (*).access_name; 347 old_acl_ptr -> segment_acl_array (*).mode = RW_ACCESS; 348 old_acl_ptr -> segment_acl_array (*).extended_mode = general_acl.entries (*).mode; 349 old_acl_ptr -> segment_acl_array (*).status_code = 0; 350 351 call forum_$replace_forum_acl (P_directory, P_name, old_acl_ptr, acl_count, P_no_sysdaemon, P_status); 352 if P_status ^= 0 353 then if P_status = forum_et_$not_a_forum 354 then P_status = error_table_$not_seg_type; 355 356 general_acl.entries (*).status_code = old_acl_ptr -> segment_acl_array (*).status_code; 357 free old_acl_ptr -> segment_acl_array; 358 return; 359 360 361 362 validate: 363 entry (P_directory, P_name, P_status); 364 365 call forum_$get_forum_path (P_directory, P_name, directory, name, P_status); 366 if P_status ^= 0 367 then if P_status = forum_et_$not_a_forum 368 then P_status = error_table_$not_seg_type; 369 return; 370 371 372 suffix_info: 373 entry (P_suffix_info_ptr); 374 375 suffix_info_ptr = P_suffix_info_ptr; 376 377 suffix_info.version = SUFFIX_INFO_VERSION_1; 378 suffix_info.type = "forum"; 379 suffix_info.type_name = "Forum meeting"; 380 suffix_info.plural_name = "Forum meetings"; 381 string (suffix_info.flags) = ""b; 382 suffix_info.extended_acl = "0"b; 383 suffix_info.has_switches = "1"b; 384 suffix_info.modes = "rwc"; 385 suffix_info.max_mode_len = 3; 386 suffix_info.num_ring_brackets = 2; 387 388 string (suffix_info.copy_flags) = ""b; 389 suffix_info.copy_flags.names, suffix_info.copy_flags.acl, suffix_info.copy_flags.safety_switch = "1"b; 390 391 suffix_info.info_pathname = ">exl>info>forum.xobj.info"; 392 return; 393 394 395 396 list_switches: 397 entry (P_desired_version, P_area_ptr, P_switch_list_ptr, P_status); 398 399 if P_desired_version ^= SWITCH_LIST_VERSION_1 400 then do; 401 P_status = error_table_$unimplemented_version; 402 return; 403 end; 404 405 alloc_switch_count = 3; 406 alloc_switch_name_count = hbound (switches, 1); 407 408 area_ptr = P_area_ptr; 409 allocate switch_list in (based_area); 410 switch_list.version = SWITCH_LIST_VERSION_1; 411 412 switch_list.name_index (1) = 1; /* safety */ 413 switch_list.name_count (1) = 1; 414 switch_list.default_value (1) = "0"b; 415 416 switch_list.name_index (2) = 2; /* adjourned */ 417 switch_list.name_count (2) = 2; 418 switch_list.default_value (2) = "0"b; 419 420 switch_list.name_index (3) = 4; /* meeting_eligibility_messages */ 421 switch_list.name_count (3) = 2; 422 switch_list.default_value (3) = forum_data_$print_eligibility_messages; 423 424 switch_list.names (*) = switches (*); 425 P_switch_list_ptr = switch_list_ptr; 426 427 return; 428 429 end suffix_forum_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/88 1213.0 suffix_forum_.pl1 >special_ldd>install>MR12.2-1165>suffix_forum_.pl1 100 1 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 101 2 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 102 3 10/14/83 1606.7 copy_options.incl.pl1 >ldd>include>copy_options.incl.pl1 103 4 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 104 5 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.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. GENERAL_ACL_VERSION_1 000006 constant char(8) initial packed unaligned dcl 1-72 ref 186 253 286 337 GENERAL_DELETE_ACL_VERSION_1 000004 constant char(8) initial packed unaligned dcl 1-72 ref 233 P_acl_ptr parameter pointer dcl 30 set ref 182 185 229 232 247 250 272* 282* 316 330 P_area_ptr parameter pointer dcl 31 ref 247 275 396 408 P_copy_options_ptr parameter pointer dcl 33 set ref 118 121* P_desired_version parameter char packed unaligned dcl 34 ref 247 253 277 396 399 P_directory parameter char packed unaligned dcl 35 set ref 108 111* 127 136* 142* 148 151 161 164* 168 171* 182 209* 219 222* 229 238* 247 259* 305* 316 333* 351* 362 365* P_exmode parameter bit(36) dcl 37 set ref 148 153* P_mode parameter bit(36) dcl 37 set ref 148 154* P_name parameter char packed unaligned dcl 38 set ref 108 111* 127 136* 142* 148 151 161 164* 168 171* 182 209* 219 222* 229 238* 247 259* 305* 316 333* 351* 362 365* P_new_name parameter char packed unaligned dcl 39 set ref 108 111* P_no_sysdaemon parameter bit(1) packed unaligned dcl 40 set ref 316 333* 351* P_old_name parameter char packed unaligned dcl 41 set ref 108 111* P_ring parameter fixed bin(17,0) dcl 43 set ref 148 154* P_ring_brackets parameter fixed bin(3,0) array dcl 44 set ref 127 130 130 143* 143* P_status parameter fixed bin(35,0) dcl 45 set ref 108 111* 112 112 112* 118 121* 122 122 122* 127 132* 136* 137 137 137* 142* 148 154* 157 157* 161 164* 168 171* 173 173 173* 177 177* 182 188* 209* 213 213 213* 219 222* 223 223 223* 229 235* 238* 241 241 241* 247 255* 259* 261 263 263* 288* 305* 306 306* 316 333* 339* 351* 352 352 352* 362 365* 366 366 366* 396 401* P_suffix_info_ptr parameter pointer dcl 46 ref 372 375 P_switch_list_ptr parameter pointer dcl 47 set ref 396 425* P_switch_name parameter char packed unaligned dcl 48 set ref 161 164* 168 171* P_user_name parameter char packed unaligned dcl 49 set ref 148 154* P_value parameter bit(1) dcl 50 set ref 161 164* 168 171* RW_ACCESS constant bit(3) initial packed unaligned dcl 5-11 ref 205 347 SUFFIX_INFO_VERSION_1 000002 constant char(8) initial packed unaligned dcl 2-29 ref 377 SWITCH_LIST_VERSION_1 000000 constant char(8) initial packed unaligned dcl 2-48 ref 399 410 access_name based char(32) array level 2 in structure "segment_acl_array" packed packed unaligned dcl 1-46 in procedure "suffix_forum_" set ref 204* 278 303* 346* access_name 3 based char(32) array level 3 in structure "general_acl" packed packed unaligned dcl 1-7 in procedure "suffix_forum_" set ref 204 278* 303 346 acl 46(01) based bit(1) level 3 packed packed unaligned dcl 2-12 set ref 389* acl_count 000200 automatic fixed bin(17,0) dcl 1-5 set ref 192* 198 203 204 205 206 209* 210 211 259* 268 270 276 276 278 278 278 278 279 281 296 301* 302 303 305* 309 310 312 325 343* 344 346 347 348 349 351* 356 357 acl_ptr 000176 automatic pointer dcl 1-4 set ref 185* 186 192 204 206 210 232* 233 238 238 238 250* 251 276* 277 278 279 280 282 286 301 303 309 310 330* 331 337 343 346 348 356 addr builtin function dcl 69 ref 238 238 alloc_switch_count 000206 automatic fixed bin(17,0) dcl 2-33 set ref 405* 409 409 alloc_switch_name_count 000207 automatic fixed bin(17,0) dcl 2-33 set ref 406* 409 409 area_ptr 000100 automatic pointer dcl 52 set ref 275* 276 408* 409 based_area based area(1024) dcl 53 ref 276 409 cleanup 000170 stack reference condition dcl 98 ref 194 292 321 copy_flags based structure level 1 dcl 4-8 in procedure "suffix_forum_" copy_flags 46 based structure level 2 in structure "suffix_info" dcl 2-12 in procedure "suffix_forum_" set ref 388* count 2 based fixed bin(17,0) level 2 in structure "general_delete_acl" dcl 1-30 in procedure "suffix_forum_" set ref 238* count 2 based fixed bin(17,0) level 2 in structure "general_acl" dcl 1-7 in procedure "suffix_forum_" set ref 192 204 204 204 204 206 210 276* 278 279 280 301 303 303 303 303 309 310 343 346 346 346 346 348 356 default_value 6 based bit(1) array level 3 dcl 2-37 set ref 414* 418* 422* delete_acl_entry based structure level 1 dcl 1-63 dir_rings 000154 automatic fixed bin(3,0) array dcl 55 set ref 142* 143 directory 000102 automatic char(168) packed unaligned dcl 54 set ref 136* 151* 154* 365* directory_acl_entry based structure level 1 dcl 1-54 entries 3 based structure array level 2 in structure "general_acl" dcl 1-7 in procedure "suffix_forum_" entries 3 based structure array level 2 in structure "general_delete_acl" dcl 1-30 in procedure "suffix_forum_" set ref 238 238 error_table_$argerr 000012 external static fixed bin(35,0) dcl 59 ref 132 177 error_table_$noentry 000014 external static fixed bin(35,0) dcl 59 ref 157 error_table_$not_seg_type 000016 external static fixed bin(35,0) dcl 59 ref 112 122 137 157 173 213 223 241 263 306 352 366 error_table_$unimplemented_version 000010 external static fixed bin(35,0) dcl 59 ref 188 235 255 288 339 401 extended_acl 32(01) based bit(1) level 3 packed packed unaligned dcl 2-12 set ref 382* extended_mode 11 based bit(36) array level 2 dcl 1-46 set ref 206* 279 309 348* flags 32 based structure level 2 packed packed unaligned dcl 2-12 set ref 381* forum_$chname_forum 000032 constant entry external dcl 81 ref 111 forum_$copy 000034 constant entry external dcl 82 ref 121 forum_$delete_forum 000036 constant entry external dcl 83 ref 222 forum_$delete_forum_acl 000040 constant entry external dcl 84 ref 238 forum_$get_forum_path 000042 constant entry external dcl 85 ref 136 365 forum_$get_switch 000044 constant entry external dcl 86 ref 164 forum_$list_forum_acl 000046 constant entry external dcl 88 ref 259 305 forum_$replace_forum_acl 000050 constant entry external dcl 89 ref 333 351 forum_$set_forum_acl 000052 constant entry external dcl 90 ref 209 forum_$set_switch 000054 constant entry external dcl 91 ref 171 forum_data_$print_eligibility_messages 000056 external static bit(1) dcl 94 ref 422 forum_et_$invalid_switch_name 000020 external static fixed bin(35,0) dcl 59 ref 177 forum_et_$not_a_forum 000022 external static fixed bin(35,0) dcl 59 ref 112 122 137 173 213 223 241 263 306 352 366 general_acl based structure level 1 dcl 1-7 set ref 276 general_acl_entry based structure level 1 unaligned dcl 1-12 general_delete_acl based structure level 1 dcl 1-30 general_delete_acl_entry based structure level 1 dcl 1-35 general_extended_acl_entry based structure level 1 dcl 1-23 get_system_free_area_ 000024 constant entry external dcl 77 ref 203 259 259 302 344 has_switches 32(02) based bit(1) level 3 packed packed unaligned dcl 2-12 set ref 383* hbound builtin function dcl 69 ref 130 406 hcs_$get_dir_ring_brackets 000026 constant entry external dcl 78 ref 142 hcs_$get_user_access_modes 000030 constant entry external dcl 79 ref 154 info_pathname 47 based char(168) level 2 packed packed unaligned dcl 2-12 set ref 391* lbound builtin function dcl 69 ref 130 max_mode_len 44 based fixed bin(17,0) level 2 dcl 2-12 set ref 385* mode 13 based bit(36) array level 3 in structure "general_acl" dcl 1-7 in procedure "suffix_forum_" set ref 206 279* 309* 348 mode 10 based bit(36) array level 2 in structure "segment_acl_array" dcl 1-46 in procedure "suffix_forum_" set ref 205* 347* modes 33 based char(36) level 2 dcl 2-12 set ref 384* name 000156 automatic char(32) packed unaligned dcl 57 set ref 136* 365* name_count 5 based fixed bin(17,0) array level 3 dcl 2-37 set ref 413* 417* 421* name_index 4 based fixed bin(17,0) array level 3 dcl 2-37 set ref 412* 416* 420* names 46 based bit(1) level 3 in structure "suffix_info" packed packed unaligned dcl 2-12 in procedure "suffix_forum_" set ref 389* names based char(32) array level 2 in structure "switch_list" dcl 2-37 in procedure "suffix_forum_" set ref 424* null builtin function dcl 69 ref 193 196 199 251 259 259 270 272 291 294 297 305 305 305 305 320 323 326 331 333 333 num_ring_brackets 45 based fixed bin(17,0) level 2 dcl 2-12 set ref 386* old_acl_ptr 000166 automatic pointer dcl 72 set ref 193* 196 198 199* 203* 204 205 206 209* 210 211 259* 270 270 278 279 281 291* 294 296 297* 302* 303 305* 309 310 312 320* 323 325 326* 344* 346 347 348 349 351* 356 357 plural_name 22 based char(32) level 2 packed packed unaligned dcl 2-12 set ref 380* rtrim builtin function dcl 69 ref 151 safety_switch 46(05) based bit(1) level 3 packed packed unaligned dcl 2-12 set ref 389* segment_acl_array based structure array level 1 dcl 1-46 set ref 198 203 211 270 281 296 302 312 325 344 357 segment_acl_entry based structure level 1 dcl 1-45 status_code 12 based fixed bin(35,0) array level 2 in structure "segment_acl_array" dcl 1-46 in procedure "suffix_forum_" set ref 210 310 349* 356 status_code 14 based fixed bin(35,0) array level 3 in structure "general_acl" dcl 1-7 in procedure "suffix_forum_" set ref 210* 280* 310* 356* string builtin function dcl 69 set ref 381* 388* suffix_info based structure level 1 dcl 2-12 suffix_info_ptr 000202 automatic pointer dcl 2-10 set ref 375* 377 378 379 380 381 382 383 384 385 386 388 389 389 389 391 switch_count 2 based fixed bin(17,0) level 2 dcl 2-37 set ref 409* 424 switch_list based structure level 1 dcl 2-37 set ref 409 switch_list_ptr 000204 automatic pointer dcl 2-33 set ref 409* 410 412 413 414 416 417 418 420 421 422 424 425 switch_name_count 3 based fixed bin(17,0) level 2 dcl 2-37 set ref 409* 424 switches 4 based structure array level 2 in structure "switch_list" dcl 2-37 in procedure "suffix_forum_" switches 000010 constant char(32) initial array packed unaligned dcl 73 in procedure "suffix_forum_" ref 406 424 system_free_area based area(1024) dcl 97 ref 203 302 344 type 2 based char(32) level 2 packed packed unaligned dcl 2-12 set ref 378* type_name 12 based char(32) level 2 packed packed unaligned dcl 2-12 set ref 379* version based char(8) level 2 in structure "general_delete_acl" dcl 1-30 in procedure "suffix_forum_" ref 233 version based char(8) level 2 in structure "suffix_info" dcl 2-12 in procedure "suffix_forum_" set ref 377* version based char(8) level 2 in structure "switch_list" dcl 2-37 in procedure "suffix_forum_" set ref 410* version based char(8) level 2 in structure "general_acl" dcl 1-7 in procedure "suffix_forum_" set ref 186 277* 286 337 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 5-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 COPY_OPTIONS_VERSION_1 internal static char(8) initial packed unaligned dcl 3-28 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 5-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 1-67 E_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 FS_OBJECT_TYPE_DIRECTORY internal static char(32) initial packed unaligned dcl 2-50 FS_OBJECT_TYPE_DM_FILE internal static char(32) initial packed unaligned dcl 2-50 FS_OBJECT_TYPE_LINK internal static char(32) initial packed unaligned dcl 2-50 FS_OBJECT_TYPE_MSF internal static char(32) initial packed unaligned dcl 2-50 FS_OBJECT_TYPE_SEGMENT internal static char(32) initial packed unaligned dcl 2-50 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 1-72 M_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 P_bit_count automatic fixed bin(24,0) dcl 32 P_max_length automatic fixed bin(19,0) dcl 36 P_return_ptr automatic pointer dcl 42 REW_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 5-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 1-67 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 W_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 copy_options based structure level 1 dcl 3-12 copy_options_ptr automatic pointer dcl 3-10 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 forum_et_$no_such_user external static fixed bin(35,0) dcl 59 general_extended_acl based structure level 1 dcl 1-18 idx automatic fixed bin(17,0) dcl 56 segment_acl based structure level 1 dcl 1-40 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_SWITCH_ERROR 001036 constant label dcl 173 ref 165 add_acl_entries 001060 constant entry external dcl 182 chname_file 000150 constant entry external dcl 108 copy 000253 constant entry external dcl 118 delentry_file 001415 constant entry external dcl 219 delete_acl_entries 001475 constant entry external dcl 229 get_ring_brackets 000312 constant entry external dcl 127 get_switch 000655 constant entry external dcl 161 get_user_access_modes 000474 constant entry external dcl 148 list_acl 001610 constant entry external dcl 247 list_switches 003232 constant entry external dcl 396 replace_acl 002437 constant entry external dcl 316 set_switch 000747 constant entry external dcl 168 suffix_forum_ 000135 constant entry external dcl 23 suffix_info 003151 constant entry external dcl 372 validate 003060 constant entry external dcl 362 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4024 4104 3377 4034 Length 4466 3377 60 345 425 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME suffix_forum_ 210 external procedure is an external procedure. on unit on line 194 64 on unit on unit on line 292 64 on unit on unit on line 321 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME suffix_forum_ 000100 area_ptr suffix_forum_ 000102 directory suffix_forum_ 000154 dir_rings suffix_forum_ 000156 name suffix_forum_ 000166 old_acl_ptr suffix_forum_ 000176 acl_ptr suffix_forum_ 000200 acl_count suffix_forum_ 000202 suffix_info_ptr suffix_forum_ 000204 switch_list_ptr suffix_forum_ 000206 alloc_switch_count suffix_forum_ 000207 alloc_switch_name_count suffix_forum_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp alloc_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac bound_ck_signal enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. forum_$chname_forum forum_$copy forum_$delete_forum forum_$delete_forum_acl forum_$get_forum_path forum_$get_switch forum_$list_forum_acl forum_$replace_forum_acl forum_$set_forum_acl forum_$set_switch get_system_free_area_ hcs_$get_dir_ring_brackets hcs_$get_user_access_modes THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$argerr error_table_$noentry error_table_$not_seg_type error_table_$unimplemented_version forum_data_$print_eligibility_messages forum_et_$invalid_switch_name forum_et_$not_a_forum LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000134 108 000142 111 000205 112 000237 115 000246 118 000247 121 000263 122 000275 125 000304 127 000305 130 000335 132 000345 133 000350 136 000351 137 000403 140 000412 142 000413 143 000442 146 000465 148 000466 151 000524 153 000570 154 000572 157 000641 159 000647 161 000650 164 000705 165 000744 168 000745 171 000777 173 001036 177 001046 180 001052 182 001053 185 001105 186 001110 188 001114 189 001117 192 001120 193 001122 194 001124 196 001140 198 001145 199 001151 201 001154 203 001155 204 001172 205 001254 206 001273 209 001313 210 001346 211 001375 213 001401 216 001410 219 001411 222 001440 223 001463 226 001472 229 001473 232 001522 233 001525 235 001531 236 001534 238 001535 241 001572 244 001601 247 001602 250 001643 251 001646 253 001652 255 001663 256 001666 259 001667 261 001741 263 001743 265 001750 268 001751 270 001753 272 001763 273 001765 275 001766 276 001771 277 002002 278 002012 279 002072 280 002113 281 002126 282 002132 283 002134 286 002135 288 002141 289 002144 291 002145 292 002147 294 002163 296 002170 297 002174 299 002177 301 002200 302 002203 303 002220 305 002302 306 002347 309 002356 310 002405 312 002425 314 002431 316 002432 320 002464 321 002466 323 002502 325 002507 326 002513 328 002516 330 002517 331 002522 333 002526 334 002570 337 002571 339 002575 340 002600 343 002601 344 002603 346 002620 347 002702 348 002721 349 002741 351 002754 352 003013 356 003022 357 003051 358 003055 362 003056 365 003103 366 003136 369 003145 372 003146 375 003156 377 003162 378 003165 379 003170 380 003173 381 003176 382 003177 383 003201 384 003203 385 003206 386 003210 388 003212 389 003213 391 003221 392 003224 396 003225 399 003251 401 003262 402 003265 405 003266 406 003270 408 003272 409 003275 410 003314 412 003317 413 003321 414 003322 416 003323 417 003325 418 003326 420 003327 421 003331 422 003333 424 003336 425 003372 427 003374 ----------------------------------------------------------- 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