COMPILATION LISTING OF SEGMENT backup_control_mgr_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0935.6 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 /* Centralized module to convert between various versions of the backup_control structure */ 9 10 /* Created: July 1982 by G. Palter */ 11 12 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 13 14 15 backup_control_mgr_: 16 procedure (); 17 18 return; /* not an entrypoint */ 19 20 21 /* Parameters */ 22 23 dcl P_backup_control_ptr pointer parameter; /* -> caller's possibly older backup_control structure */ 24 25 dcl P_code fixed binary (35) parameter; 26 27 28 /* Remaining declarations */ 29 30 dcl 1 tape_entry_overlay aligned based, /* I wish PL/I had nulle */ 31 2 environmentptr pointer, 32 2 codeptr pointer; 33 34 dcl system_area area based (system_area_ptr); 35 dcl system_area_ptr pointer; 36 37 dcl idx fixed binary; 38 39 /* format: off */ 40 dcl (error_table_$noalloc, error_table_$unimplemented_version) 41 fixed binary (35) external; 42 /* format: on */ 43 44 dcl get_system_free_area_ entry () returns (pointer); 45 46 dcl (addr, null, string) builtin; 47 48 dcl area condition; 49 50 /* Older versions of the backup_control structure */ 51 52 dcl 1 v1_backup_control aligned based (backup_control_ptr), 53 2 header, 54 3 backup_control_version fixed binary, 55 3 tape_entry entry (char (*)) variable, 56 3 options aligned, 57 4 map_sw bit (1) unaligned, 58 4 debug_sw bit (1) unaligned, 59 4 no_reload_sw bit (1) unaligned, 60 4 hold_sw bit (1) unaligned, 61 4 must_be_zero bit (32) unaligned, 62 3 request_count fixed binary, 63 2 requests (0 refer (v1_backup_control.request_count)), 64 3 path character (168) unaligned, 65 3 new_path character (168) unaligned, 66 3 found bit (1) aligned, 67 3 loaded bit (1) aligned, 68 3 status_code fixed binary (35), 69 3 error_name character (65) unaligned; 70 71 dcl 1 v2_backup_control aligned based (backup_control_ptr), 72 2 header, 73 3 backup_control_version fixed binary, 74 3 tape_entry entry (char (*)) variable, 75 3 options aligned, 76 4 map_sw bit (1) unaligned, 77 4 debug_sw bit (1) unaligned, 78 4 no_reload_sw bit (1) unaligned, 79 4 hold_sw bit (1) unaligned, 80 4 must_be_zero bit (32) unaligned, 81 3 request_count fixed binary, 82 2 requests (0 refer (v2_backup_control.request_count)), 83 3 path character (168) unaligned, 84 3 new_path character (168) unaligned, 85 3 switches aligned, 86 4 no_primary_sw bit (1) unaligned, 87 4 trim_sw bit (1) unaligned, 88 4 zero_pad bit (34) unaligned, 89 3 found bit (1) aligned, 90 3 loaded bit (1) aligned, 91 3 status_code fixed binary (35), 92 3 error_name character (65) unaligned; 93 94 dcl 1 v3_backup_control aligned based (backup_control_ptr), 95 2 header, 96 3 backup_control_version fixed binary, 97 3 tape_entry entry (character (*)) variable, 98 3 data_iocb pointer, 99 3 options aligned, 100 4 map_sw bit (1) unaligned, 101 4 debug_sw bit (1) unaligned, 102 4 no_reload_sw bit (1) unaligned, 103 4 hold_sw bit (1) unaligned, 104 4 preattached bit (1) unaligned, 105 4 error_file bit (1) unaligned, 106 4 first bit (1) unaligned, 107 4 caller_handles_conditions bit (1) unaligned, 108 4 allow_dir_overwrite bit (1) unaligned, 109 4 pad bit (27) unaligned, 110 3 request_count fixed binary, 111 2 requests (0 refer (v3_backup_control.request_count)), 112 3 path character (168) unaligned, 113 3 new_path character (168) unaligned, 114 3 switches aligned, 115 4 no_primary_sw bit (1) unaligned, 116 4 trim_sw bit (1) unaligned, 117 4 pad bit (34) unaligned, 118 3 found bit (1) aligned, 119 3 loaded bit (1) aligned, 120 3 status_code fixed binary (35), 121 3 error_name character (65) unaligned; 122 123 dcl 1 v4_backup_control aligned based (backup_control_ptr), 124 2 header, /* allows people to use like (!) */ 125 3 backup_control_version character (8) unaligned, 126 3 tape_entry entry (character (*)) variable, /* returns next tape label */ 127 3 data_iocb pointer, /* -> I/O switch to use for dumping/loading if preattached */ 128 3 maximum_access_class bit (72) aligned, /* maximum access class for anything to be dumped */ 129 3 maximum_dir_access_class bit (72) aligned, /* no directory above this access class is dumped */ 130 3 user_for_access_check, /* data required to validate user's access */ 131 4 id character (32) unaligned, /* Person.Project.tag */ 132 4 authorization bit (72), /* the user's process authorization */ 133 4 ring fixed binary, /* the user's ring o execution */ 134 3 minimum_ring fixed binary, /* no ring bracket is set below this value */ 135 3 aim_translations, /* data required to translate AIM attributes on the tape */ 136 4 source_attributes_ptr pointer, 137 4 target_attributes_ptr pointer, 138 3 options aligned, 139 4 map_sw bit(1) unaligned, /* ON to write map segment */ 140 4 debug_sw bit (1) unaligned, /* ON to check quotas and not trim subtrees */ 141 4 no_reload_sw bit (1) unaligned, /* ON to not load for backup_load_ */ 142 4 hold_sw bit (1) unaligned, /* ON to not demount tape afterwards */ 143 4 preattached bit (1) unaligned, /* ON => perform loading/dumping to supplied I/O switch */ 144 4 error_file bit (1) unaligned, /* ON => generate an error file anyway */ 145 4 first bit (1) unaligned, /* ON => for reload, stop after all requests satisfied */ 146 4 caller_handles_conditions bit (1) unaligned, /* ON => caller of backup_dump_ handles faults */ 147 4 allow_dir_overwrite bit (1) unaligned, /* ON => allow reloaded seg to overwrite a dir */ 148 4 enforce_max_access_class bit (1) unaligned, /* ON => do not dump anything above given access class */ 149 4 dont_dump_upgraded_dirs bit (1) unaligned, /* ON => do not dump directories above given access class */ 150 4 check_effective_access bit (1) unaligned, /* ON => do not dump branches specified user can't touch */ 151 4 restore_access_class bit (1) unaligned, /* ON => restore AIM attributes even in debug mode */ 152 4 enforce_minimum_ring bit (1) unaligned, /* ON => do not give anything ring bracket below minimum */ 153 4 translate_access_class bit (1) unaligned, /* ON => translate access classes read from tape */ 154 4 pad bit (21) unaligned, 155 3 request_count fixed binary, /* # of entries to load or dump */ 156 2 requests (0 refer (v4_backup_control.request_count)), 157 3 path character (168) unaligned, /* pathname of object to be dumped/loaded */ 158 3 new_path character (168) unaligned, /* pathname for object when reloading if not same as above */ 159 3 switches aligned, 160 4 no_primary_sw bit (1) unaligned, /* do not use primary pathname */ 161 4 trim_sw bit (1) unaligned, /* trim target directories */ 162 4 pad bit (34) unaligned, 163 3 found bit(1) aligned, /* ON => found on tape by backup_load_ (output) */ 164 3 loaded bit (1) aligned, /* ON => loaded by backup_load_ (output) */ 165 3 status_code fixed binary (35), /* ON => per-entry status code (output) */ 166 3 error_name character (65) unaligned; /* ON => some information about what happened (output) */ 167 168 dcl BACKUP_CONTROL_VERSION_4 character (8) static options (constant) initial ("hbc_0004"); 169 170 /* Converts the supplied input structure to the current version (if necessary) */ 171 172 initiate: 173 entry (P_backup_control_ptr, P_code); 174 175 backup_control_ptr = P_backup_control_ptr; 176 177 P_code = 0; /* assume success */ 178 179 if backup_control.version = BACKUP_CONTROL_VERSION_5 then do; 180 bk_ss_$control_ptr = backup_control_ptr; /* no problems: it's the current version */ 181 return; 182 end; 183 184 if v1_backup_control.backup_control_version = 1 then 185 backup_control_request_count = v1_backup_control.request_count; 186 187 else if v2_backup_control.backup_control_version = 2 then 188 backup_control_request_count = v2_backup_control.request_count; 189 190 else if v3_backup_control.backup_control_version = 3 then 191 backup_control_request_count = v3_backup_control.request_count; 192 193 else if v4_backup_control.backup_control_version = BACKUP_CONTROL_VERSION_4 then 194 backup_control_request_count = v4_backup_control.request_count; 195 196 else do; /* unrecognized version */ 197 P_code = error_table_$unimplemented_version; 198 return; 199 end; 200 201 system_area_ptr = get_system_free_area_ (); 202 203 on condition (area) 204 begin; /* just in case we can't allocate it */ 205 P_code = error_table_$noalloc; 206 go to RETURN_FROM_INITIATE; 207 end; 208 209 allocate backup_control in (system_area) set (bk_ss_$control_ptr); 210 211 revert condition (area); 212 213 bk_ss_$control_ptr -> backup_control.version = BACKUP_CONTROL_VERSION_5; 214 215 string (bk_ss_$control_ptr -> backup_control.options) = ""b; 216 /* make sure all new options are off */ 217 218 addr (bk_ss_$control_ptr -> backup_control.tape_entry) -> tape_entry_overlay = null (); 219 bk_ss_$control_ptr -> backup_control.data_iocb = null (); 220 bk_ss_$control_ptr -> backup_control.maximum_access_class = ""b; 221 bk_ss_$control_ptr -> backup_control.minimum_access_class = ""b; 222 bk_ss_$control_ptr -> backup_control.maximum_dir_access_class = ""b; 223 bk_ss_$control_ptr -> backup_control.user_for_access_check.id = ""; 224 bk_ss_$control_ptr -> backup_control.user_for_access_check.authorization = ""b; 225 bk_ss_$control_ptr -> backup_control.user_for_access_check.ring = 0; 226 bk_ss_$control_ptr -> backup_control.minimum_ring = 0; 227 bk_ss_$control_ptr -> backup_control.aim_translations.source_attributes_ptr = null (); 228 bk_ss_$control_ptr -> backup_control.aim_translations.target_attributes_ptr = null (); 229 /* and give everything else reasonable default values */ 230 231 if v1_backup_control.backup_control_version = 1 then do; 232 bk_ss_$control_ptr -> backup_control.header = v1_backup_control.header, by name; 233 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 234 string (bk_ss_$control_ptr -> backup_control.requests (idx).switches) = ""b; 235 bk_ss_$control_ptr -> backup_control.requests (idx) = v1_backup_control.requests (idx), by name; 236 end; 237 end; 238 239 if v2_backup_control.backup_control_version = 2 then do; 240 bk_ss_$control_ptr -> backup_control.header = v2_backup_control.header, by name; 241 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 242 string (bk_ss_$control_ptr -> backup_control.requests (idx).switches) = ""b; 243 bk_ss_$control_ptr -> backup_control.requests (idx) = v2_backup_control.requests (idx), by name; 244 end; 245 end; 246 247 if v3_backup_control.backup_control_version = 3 then do; 248 bk_ss_$control_ptr -> backup_control.header = v3_backup_control.header, by name; 249 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 250 string (bk_ss_$control_ptr -> backup_control.requests (idx).switches) = ""b; 251 bk_ss_$control_ptr -> backup_control.requests (idx) = v3_backup_control.requests (idx), by name; 252 end; 253 end; 254 255 if v4_backup_control.backup_control_version = BACKUP_CONTROL_VERSION_4 then do; 256 bk_ss_$control_ptr -> backup_control.header = v4_backup_control.header, by name; 257 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 258 string (bk_ss_$control_ptr -> backup_control.requests (idx).switches) = ""b; 259 bk_ss_$control_ptr -> backup_control.requests (idx) = v4_backup_control.requests (idx), by name; 260 end; 261 end; 262 263 RETURN_FROM_INITIATE: 264 return; 265 266 /* Destroys the internal control structure (if any) but first copies the results into the caller's structure */ 267 268 terminate: 269 entry (P_backup_control_ptr); 270 271 if P_backup_control_ptr = bk_ss_$control_ptr then /* nothing to do: caller supplied proper version */ 272 return; 273 274 backup_control_ptr = P_backup_control_ptr; 275 276 system_area_ptr = get_system_free_area_ (); 277 278 if v1_backup_control.backup_control_version = 1 then do; 279 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 280 v1_backup_control.requests (idx).found = bk_ss_$control_ptr -> backup_control.requests (idx).found; 281 v1_backup_control.requests (idx).loaded = bk_ss_$control_ptr -> backup_control.requests (idx).loaded; 282 v1_backup_control.requests (idx).status_code = 283 bk_ss_$control_ptr -> backup_control.requests (idx).status_code; 284 v1_backup_control.requests (idx).error_name = 285 bk_ss_$control_ptr -> backup_control.requests (idx).error_name; 286 end; 287 end; 288 289 if v2_backup_control.backup_control_version = 2 then do; 290 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 291 v2_backup_control.requests (idx).found = bk_ss_$control_ptr -> backup_control.requests (idx).found; 292 v2_backup_control.requests (idx).loaded = bk_ss_$control_ptr -> backup_control.requests (idx).loaded; 293 v2_backup_control.requests (idx).status_code = 294 bk_ss_$control_ptr -> backup_control.requests (idx).status_code; 295 v2_backup_control.requests (idx).error_name = 296 bk_ss_$control_ptr -> backup_control.requests (idx).error_name; 297 end; 298 end; 299 300 if v3_backup_control.backup_control_version = 3 then do; 301 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 302 v3_backup_control.requests (idx).found = bk_ss_$control_ptr -> backup_control.requests (idx).found; 303 v3_backup_control.requests (idx).loaded = bk_ss_$control_ptr -> backup_control.requests (idx).loaded; 304 v3_backup_control.requests (idx).status_code = 305 bk_ss_$control_ptr -> backup_control.requests (idx).status_code; 306 v3_backup_control.requests (idx).error_name = 307 bk_ss_$control_ptr -> backup_control.requests (idx).error_name; 308 end; 309 end; 310 311 if v4_backup_control.backup_control_version = BACKUP_CONTROL_VERSION_4 then do; 312 do idx = 1 to bk_ss_$control_ptr -> backup_control.request_count; 313 v4_backup_control.requests (idx).found = bk_ss_$control_ptr -> backup_control.requests (idx).found; 314 v4_backup_control.requests (idx).loaded = bk_ss_$control_ptr -> backup_control.requests (idx).loaded; 315 v4_backup_control.requests (idx).status_code = 316 bk_ss_$control_ptr -> backup_control.requests (idx).status_code; 317 v4_backup_control.requests (idx).error_name = 318 bk_ss_$control_ptr -> backup_control.requests (idx).error_name; 319 end; 320 end; 321 322 free bk_ss_$control_ptr -> backup_control in (system_area); 323 bk_ss_$control_ptr = null (); /* all gone */ 324 325 return; 326 1 1 /* BEGIN INCLUDE FILE ... backup_control.incl.pl1 */ 1 2 /* Modified: July 1982 by G. Palter to add features for proper support of AIM in IMFT (version 4) */ 1 3 /* Modified: August 1983 by Robert Coren to add minimum access class enforcement */ 1 4 /* Modified: November 1983 by Robert Coren to add "upgrade_to_user_auth" flag */ 1 5 1 6 /* Hierarchy dumper/reloader subroutine control structure */ 1 7 1 8 dcl 1 backup_control aligned based (backup_control_ptr), 1 9 2 header, /* allows people to use like (!) */ 1 10 3 version character (8) unaligned, 1 11 3 tape_entry entry (character (*)) variable, /* returns next tape label */ 1 12 3 data_iocb pointer, /* -> I/O switch to use for dumping/loading if preattached */ 1 13 3 maximum_access_class bit (72) aligned, /* maximum access class for anything to be dumped */ 1 14 3 minimum_access_class bit (72) aligned, /* minimum access class for anything to be dumped */ 1 15 3 maximum_dir_access_class bit (72) aligned, /* no directory above this access class is dumped */ 1 16 3 user_for_access_check, /* data required to validate user's access */ 1 17 4 id character (32) unaligned, /* Person.Project.tag */ 1 18 4 authorization bit (72), /* the user's process authorization */ 1 19 4 ring fixed binary, /* the user's ring o execution */ 1 20 3 minimum_ring fixed binary, /* no ring bracket is set below this value */ 1 21 3 aim_translations, /* data required to translate AIM attributes on the tape */ 1 22 4 source_attributes_ptr pointer, 1 23 4 target_attributes_ptr pointer, 1 24 3 options aligned, 1 25 4 map_sw bit(1) unaligned, /* ON to write map segment */ 1 26 4 debug_sw bit (1) unaligned, /* ON to check quotas and not trim subtrees */ 1 27 4 no_reload_sw bit (1) unaligned, /* ON to not load for backup_load_ */ 1 28 4 hold_sw bit (1) unaligned, /* ON to not demount tape afterwards */ 1 29 4 preattached bit (1) unaligned, /* ON => perform loading/dumping to supplied I/O switch */ 1 30 4 error_file bit (1) unaligned, /* ON => generate an error file anyway */ 1 31 4 first bit (1) unaligned, /* ON => for reload, stop after all requests satisfied */ 1 32 4 caller_handles_conditions bit (1) unaligned, /* ON => caller of backup_dump_ handles faults */ 1 33 4 allow_dir_overwrite bit (1) unaligned, /* ON => allow reloaded seg to overwrite a dir */ 1 34 4 enforce_max_access_class bit (1) unaligned, /* ON => do not dump anything above given access class */ 1 35 4 dont_dump_upgraded_dirs bit (1) unaligned, /* ON => do not dump directories above given access class */ 1 36 4 check_effective_access bit (1) unaligned, /* ON => do not dump branches specified user can't touch */ 1 37 4 restore_access_class bit (1) unaligned, /* ON => restore AIM attributes even in debug mode */ 1 38 4 enforce_minimum_ring bit (1) unaligned, /* ON => do not give anything ring bracket below minimum */ 1 39 4 translate_access_class bit (1) unaligned, /* ON => translate access classes read from tape */ 1 40 4 enforce_min_access_class bit (1) unaligned, /* ON => do not dump anything below given access class */ 1 41 4 upgrade_to_user_auth bit (1) unaligned, /* ON => set access class of branch being dumped to user's authorization */ 1 42 4 pad bit (19) unaligned, 1 43 3 request_count fixed binary, /* # of entries to load or dump */ 1 44 2 requests (backup_control_request_count refer (backup_control.request_count)), 1 45 3 path character (168) unaligned, /* pathname of object to be dumped/loaded */ 1 46 3 new_path character (168) unaligned, /* pathname for object when reloading if not same as above */ 1 47 3 switches aligned, 1 48 4 no_primary_sw bit (1) unaligned, /* do not use primary pathname */ 1 49 4 trim_sw bit (1) unaligned, /* trim target directories */ 1 50 4 pad bit (34) unaligned, 1 51 3 found bit(1) aligned, /* ON => found on tape by backup_load_ (output) */ 1 52 3 loaded bit (1) aligned, /* ON => loaded by backup_load_ (output) */ 1 53 3 status_code fixed binary (35), /* ON => per-entry status code (output) */ 1 54 3 error_name character (65) unaligned; /* ON => some information about what happened (output) */ 1 55 1 56 dcl backup_control_ptr pointer; 1 57 1 58 dcl backup_control_request_count fixed binary; /* for allocations */ 1 59 1 60 dcl BACKUP_CONTROL_VERSION_5 character (8) static options (constant) initial ("hbc_0005"); 1 61 1 62 /* END INCLUDE FILE ... backup_control.incl.pl1 */ 327 328 2 1 /* BEGIN INCLUDE FILE ... bk_ss_.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(87-03-03,GWMay), approve(87-03-03,MCR7627), audit(87-03-13,Farley), 2 6* install(87-03-30,MR12.1-1018): 2 7* added a writing_map switch to indicate when the dump map is being written. 2 8* END HISTORY COMMENTS */ 2 9 2 10 2 11 /* Modified: July 1982 by G. Palter to add data for true AIM support in IMFT */ 2 12 /* Modified: August 1983 by Robert Coren to add minimum access class */ 2 13 /* Modified: November 1983 by Robert Coren to add "upgrade_to_user_auth" flag */ 2 14 2 15 /* Hierarchy dumper/reloader static data */ 2 16 2 17 dcl (bk_ss_$allow_dir_overwrite bit (1) aligned, /* ON => allow reloaded seg to overwrite dir */ 2 18 bk_ss_$areap pointer, /* pointer to list dir area */ 2 19 bk_ss_$brief_mapsw bit (1) aligned, /* no form-feed for each control file entry */ 2 20 bk_ss_$caller_handles_conditions bit (1) aligned, /* ON => caller has an any_other handler (for IMFT Daemon) */ 2 21 bk_ss_$control_name char(168), /* control file path for dumping */ 2 22 bk_ss_$control_ptr pointer, /* Ptr to control structure for sub entries */ 2 23 bk_ss_$cross_retrievesw bit (1) aligned, /* ON => cross-retrieving this entry */ 2 24 bk_ss_$data_iocb pointer, /* IOCB for dumping/reloading if bk_ss_$preattached */ 2 25 bk_ss_$date fixed binary (52), /* dump all modified since this date */ 2 26 bk_ss_$datesw bit (1) aligned, /* Flags presence of a date input */ 2 27 bk_ss_$debugsw bit (1) aligned, /* Flag to prevent calls to hphcs_ */ 2 28 bk_ss_$dir_trim bit (1) aligned, /* Flag to allow deletion of directories */ 2 29 bk_ss_$dprint_destination char (24), /* for start_dump and reload, -ds for dprinting maps */ 2 30 bk_ss_$dprint_destination_setsw bit (1) aligned, 2 31 bk_ss_$dprint_heading char (64), /* for start_dump and reload, -he for dprinting maps */ 2 32 bk_ss_$dprint_heading_setsw bit (1) aligned, 2 33 bk_ss_$dprint_queue fixed bin, /* Queue number for dprinting maps and error files */ 2 34 bk_ss_$dprint_request_type char (24), /* for start_dump and reload, -rqt for dprinting maps */ 2 35 bk_ss_$dprint_request_type_setsw bit (1) aligned, 2 36 bk_ss_$dprintsw bit (1) aligned, /* Whether to dprint maps for start_dump and reload */ 2 37 bk_ss_$dtdsw bit (1) aligned, /* Flag to check if modified since last dumped */ 2 38 bk_ss_$ename char(32) aligned, /* Branch entry to dump */ 2 39 bk_ss_$err_label label, /* Place to go to attempt error recovery */ 2 40 bk_ss_$err_onlinesw bit(1) aligned, /* Flag error output to be online, default to a file */ 2 41 bk_ss_$error fixed binary, /* Code for location from which signal expected */ 2 42 bk_ss_$holdsw bit(1) aligned, /* controls dismounting of tape for dumper */ 2 43 bk_ss_$hp pointer, /* Pointer to preamble header */ 2 44 bk_ss_$ignore_dates bit (1) aligned, /* Flag to skip check if have older info on tape */ 2 45 bk_ss_$mapsw bit (1) aligned, /* Flag map output */ 2 46 bk_ss_$myname char(16), /* Name by which backup was called */ 2 47 bk_ss_$namesw bit (1) aligned, /* Flag to dump named branch only */ 2 48 bk_ss_$no_contin bit (1) aligned, /* Flag to end dump after catchup dump. */ 2 49 bk_ss_$no_output bit (1) aligned, /* Flag test run or dbugging dumper. No tape output.*/ 2 50 bk_ss_$no_primary bit (1) aligned, /* Flag saying do not use primary pathnames */ 2 51 bk_ss_$no_reload bit (1) aligned, /* Flag debuging reloader. Do not write in hierarchy. */ 2 52 bk_ss_$no_setlvid bit (1) aligned, /* Flag to surpress setting of sons lvid on reload */ 2 53 bk_ss_$ntapes fixed bin, /* number of tape copies for dumper */ 2 54 bk_ss_$onlysw bit (1) aligned, /* ON => disable hiearchy sweep (dumping) or stop when all 2 55* requests satisfied (loading) */ 2 56 bk_ss_$operator char(32), /* operator name */ 2 57 bk_ss_$path_index fixed bin, /* index of entry in backup_control structure */ 2 58 bk_ss_$pathsw bit(1) aligned, /* starting directory path given to dumper */ 2 59 bk_ss_$preattached bit(1) aligned, /* ON => caller has setup I/O switch for dumping/reloading */ 2 60 bk_ss_$pvsw bit(1) aligned, /* Flag to enable physical volume recovery */ 2 61 bk_ss_$pvname char(32) aligned, /* Physical volume name */ 2 62 bk_ss_$qchecksw bit(1) aligned, /* Flag to prevent suspension of quota checking */ 2 63 bk_ss_$quotasw bit(1) aligned, /* Flag to allow quota setting */ 2 64 bk_ss_$restart_dumpsw bit(1) aligned, /* restarting complete or catchup from given point */ 2 65 bk_ss_$restart_path char(168) aligned, /* where to restart complete or catchup dump */ 2 66 bk_ss_$restart_plen fixed bin, /* length of restart pathname */ 2 67 bk_ss_$retrieval_index fixed bin, /* Index of entry in bk_retrieve's structure */ 2 68 bk_ss_$retrievesw bit (1) aligned, /* Flags retrieval */ 2 69 bk_ss_$rlen fixed bin, /* Length if current restart dir for recursion */ 2 70 bk_ss_$rname char(168), /* retrieval file name */ 2 71 bk_ss_$rsize fixed bin, /* length of retrieval file name */ 2 72 bk_ss_$save_path char(168), /* starting directory for dump */ 2 73 bk_ss_$save_plen fixed bin, /* length of starting directory name */ 2 74 bk_ss_$save_time fixed bin(52), /* date, time of start of dump */ 2 75 bk_ss_$segptr pointer, 2 76 bk_ss_$set_dtd bit (1) aligned, /* ON to always set dtd when dumping, OFF never */ 2 77 bk_ss_$set_dtd_explicit bit (1) aligned, /* ON to follow bk_ss_$set_dtd, OFF usual algorithm */ 2 78 bk_ss_$sp pointer, 2 79 bk_ss_$sub_entry bit(1) aligned, /* ON for backup_dump_ and backup_load_ */ 2 80 bk_ss_$sub_entry_errfile bit(1) aligned, /* ON => backup_dump_ and backup_load_ should create error files */ 2 81 bk_ss_$tapesw bit(1) aligned, /* Flag to indicate tape output */ 2 82 bk_ss_$trimsw bit(1) aligned, /* Flag to trim directories on reload */ 2 83 bk_ss_$volume_set_name char (32), /* For future arg -volume_set_name */ 2 84 bk_ss_$wakeup_interval fixed bin(52), /* interval between wakeups of dumper in micro secs. */ 2 85 bk_ss_$wasnt_known bit(1) aligned, /* Flag for segment termination */ 2 86 bk_ss_$enforce_max_access_class bit (1) aligned, /* ON => don't dump anything above give access class */ 2 87 bk_ss_$maximum_access_class bit (72) aligned, /* the access class to enforce on all branches */ 2 88 bk_ss_$enforce_min_access_class bit (1) aligned, /* ON => don't dump anything below give access class */ 2 89 bk_ss_$minimum_access_class bit (72) aligned, /* the minimum access class to enforce on all branches */ 2 90 bk_ss_$dont_dump_upgraded_dirs bit (1) aligned, /* ON => don't dump any directory above given access class */ 2 91 bk_ss_$maximum_dir_access_class bit (72) aligned, /* the access class to enforce on directories */ 2 92 bk_ss_$check_effective_access bit (1) aligned, /* ON => don't dump branches given user can't access */ 2 93 bk_ss_$upgrade_to_user_auth bit (1) aligned, /* ON => set access class of branch being dumped to user's authorization */ 2 94 bk_ss_$user_id character (32) unaligned, /* the user's Person.Project.tag */ 2 95 bk_ss_$user_authorization bit (72) aligned, /* the user's process authorization */ 2 96 bk_ss_$user_ring fixed binary, /* the user's ring of execution */ 2 97 bk_ss_$restore_access_class bit (1) aligned, /* ON => restore access class even when debugging */ 2 98 bk_ss_$enforce_minimum_ring bit (1) aligned, /* ON => don't give anything lower ring bracket */ 2 99 bk_ss_$minimum_ring fixed binary, /* the minimum ring bracket to be used */ 2 100 bk_ss_$translate_access_class bit (1) aligned, /* ON => translate access classes read from tape */ 2 101 bk_ss_$source_attributes_ptr pointer, /* -> source system's AIM attributes */ 2 102 bk_ss_$target_attributes_ptr pointer, /* -> target system's AIM attributes */ 2 103 bk_ss_$writing_map bit (1) aligned) /* ON => in backup_map$try_write */ 2 104 external static; 2 105 2 106 /* END INCLUDE FILE ... bk_ss_.incl.pl1 */ 329 330 331 end backup_control_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0809.5 backup_control_mgr_.pl1 >spec>install>1111>backup_control_mgr_.pl1 327 1 11/21/83 1219.2 backup_control.incl.pl1 >ldd>include>backup_control.incl.pl1 329 2 04/02/87 2006.7 bk_ss_.incl.pl1 >ldd>include>bk_ss_.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. BACKUP_CONTROL_VERSION_4 000002 constant char(8) initial packed unaligned dcl 168 ref 193 255 311 BACKUP_CONTROL_VERSION_5 000000 constant char(8) initial packed unaligned dcl 1-60 ref 179 213 P_backup_control_ptr parameter pointer dcl 23 ref 172 175 268 271 274 P_code parameter fixed bin(35,0) dcl 25 set ref 172 177* 197* 205* addr builtin function dcl 46 ref 218 aim_translations 32 based structure level 3 dcl 1-8 area 000104 stack reference condition dcl 48 ref 203 211 authorization 26 based bit(72) level 4 dcl 1-8 set ref 224* backup_control based structure level 1 dcl 1-8 set ref 209 322 backup_control_ptr 000112 automatic pointer dcl 1-56 set ref 175* 179 180 184 184 187 187 190 190 193 193 231 232 235 239 240 243 247 248 251 255 256 259 274* 278 280 281 282 284 289 291 292 293 295 300 302 303 304 306 311 313 314 315 317 backup_control_request_count 000114 automatic fixed bin(17,0) dcl 1-58 set ref 184* 187* 190* 193* 209 209 backup_control_version based fixed bin(17,0) level 3 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" ref 190 247 300 backup_control_version based char(8) level 3 in structure "v4_backup_control" packed packed unaligned dcl 123 in procedure "backup_control_mgr_" ref 193 255 311 backup_control_version based fixed bin(17,0) level 3 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" ref 184 231 278 backup_control_version based fixed bin(17,0) level 3 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" ref 187 239 289 bk_ss_$control_ptr 000016 external static pointer dcl 2-17 set ref 180* 209* 213 215 218 219 220 221 222 223 224 225 226 227 228 232 233 234 235 240 241 242 243 248 249 250 251 256 257 258 259 271 279 280 281 282 284 290 291 292 293 295 301 302 303 304 306 312 313 314 315 317 322 323* data_iocb 6 based pointer level 3 dcl 1-8 set ref 219* error_name 170 based char(65) array level 3 in structure "backup_control" packed packed unaligned dcl 1-8 in procedure "backup_control_mgr_" set ref 284 295 306 317 error_name 142 based char(65) array level 3 in structure "v3_backup_control" packed packed unaligned dcl 94 in procedure "backup_control_mgr_" set ref 306* error_name 137 based char(65) array level 3 in structure "v1_backup_control" packed packed unaligned dcl 52 in procedure "backup_control_mgr_" set ref 284* error_name 166 based char(65) array level 3 in structure "v4_backup_control" packed packed unaligned dcl 123 in procedure "backup_control_mgr_" set ref 317* error_name 140 based char(65) array level 3 in structure "v2_backup_control" packed packed unaligned dcl 71 in procedure "backup_control_mgr_" set ref 295* error_table_$noalloc 000010 external static fixed bin(35,0) dcl 40 ref 205 error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 40 ref 197 found 137 based bit(1) array level 3 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" set ref 302* found 163 based bit(1) array level 3 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" set ref 313* found 134 based bit(1) array level 3 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" set ref 280* found 165 based bit(1) array level 3 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 280 291 302 313 found 135 based bit(1) array level 3 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" set ref 291* get_system_free_area_ 000014 constant entry external dcl 44 ref 201 276 header based structure level 2 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" ref 256 header based structure level 2 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" ref 248 header based structure level 2 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" ref 232 header based structure level 2 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 232* 240* 248* 256* header based structure level 2 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" ref 240 id 16 based char(32) level 4 packed packed unaligned dcl 1-8 set ref 223* idx 000102 automatic fixed bin(17,0) dcl 37 set ref 233* 234 235 235 235 235 235 235 235 235 235 235 235 235* 241* 242 243 243 243 243 243 243 243 243 243 243 243 243 243 243 243 243 243 243* 249* 250 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251* 257* 258 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259 259* 279* 280 280 281 281 282 282 284 284* 290* 291 291 292 292 293 293 295 295* 301* 302 302 303 303 304 304 306 306* 312* 313 313 314 314 315 315 317 317* loaded 135 based bit(1) array level 3 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" set ref 281* loaded 140 based bit(1) array level 3 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" set ref 303* loaded 136 based bit(1) array level 3 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" set ref 292* loaded 166 based bit(1) array level 3 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 281 292 303 314 loaded 164 based bit(1) array level 3 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" set ref 314* maximum_access_class 10 based bit(72) level 3 dcl 1-8 set ref 220* maximum_dir_access_class 14 based bit(72) level 3 dcl 1-8 set ref 222* minimum_access_class 12 based bit(72) level 3 dcl 1-8 set ref 221* minimum_ring 31 based fixed bin(17,0) level 3 dcl 1-8 set ref 226* null builtin function dcl 46 ref 218 219 227 228 323 options 36 based structure level 3 dcl 1-8 set ref 215* request_count 35 based fixed bin(17,0) level 3 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" ref 193 request_count 11 based fixed bin(17,0) level 3 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" ref 190 request_count 37 based fixed bin(17,0) level 3 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 209* 233 241 249 257 279 290 301 312 322 request_count 7 based fixed bin(17,0) level 3 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" ref 184 request_count 7 based fixed bin(17,0) level 3 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" ref 187 requests 36 based structure array level 2 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" set ref 259 requests 12 based structure array level 2 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" set ref 251 requests 40 based structure array level 2 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 235* 243* 251* 259* requests 10 based structure array level 2 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" set ref 235 requests 10 based structure array level 2 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" set ref 243 ring 30 based fixed bin(17,0) level 4 dcl 1-8 set ref 225* source_attributes_ptr 32 based pointer level 4 dcl 1-8 set ref 227* status_code 141 based fixed bin(35,0) array level 3 in structure "v3_backup_control" dcl 94 in procedure "backup_control_mgr_" set ref 304* status_code 167 based fixed bin(35,0) array level 3 in structure "backup_control" dcl 1-8 in procedure "backup_control_mgr_" set ref 282 293 304 315 status_code 137 based fixed bin(35,0) array level 3 in structure "v2_backup_control" dcl 71 in procedure "backup_control_mgr_" set ref 293* status_code 136 based fixed bin(35,0) array level 3 in structure "v1_backup_control" dcl 52 in procedure "backup_control_mgr_" set ref 282* status_code 165 based fixed bin(35,0) array level 3 in structure "v4_backup_control" dcl 123 in procedure "backup_control_mgr_" set ref 315* string builtin function dcl 46 set ref 215* 234* 242* 250* 258* switches 164 based structure array level 3 dcl 1-8 set ref 234* 242* 250* 258* system_area based area(1024) dcl 34 ref 209 322 system_area_ptr 000100 automatic pointer dcl 35 set ref 201* 209 276* 322 tape_entry 2 based entry variable level 3 dcl 1-8 set ref 218 tape_entry_overlay based structure level 1 dcl 30 set ref 218* target_attributes_ptr 34 based pointer level 4 dcl 1-8 set ref 228* user_for_access_check 16 based structure level 3 dcl 1-8 v1_backup_control based structure level 1 dcl 52 v2_backup_control based structure level 1 dcl 71 v3_backup_control based structure level 1 dcl 94 v4_backup_control based structure level 1 dcl 123 version based char(8) level 3 packed packed unaligned dcl 1-8 set ref 179 213* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. bk_ss_$allow_dir_overwrite external static bit(1) dcl 2-17 bk_ss_$areap external static pointer dcl 2-17 bk_ss_$brief_mapsw external static bit(1) dcl 2-17 bk_ss_$caller_handles_conditions external static bit(1) dcl 2-17 bk_ss_$check_effective_access external static bit(1) dcl 2-17 bk_ss_$control_name external static char(168) packed unaligned dcl 2-17 bk_ss_$cross_retrievesw external static bit(1) dcl 2-17 bk_ss_$data_iocb external static pointer dcl 2-17 bk_ss_$date external static fixed bin(52,0) dcl 2-17 bk_ss_$datesw external static bit(1) dcl 2-17 bk_ss_$debugsw external static bit(1) dcl 2-17 bk_ss_$dir_trim external static bit(1) dcl 2-17 bk_ss_$dont_dump_upgraded_dirs external static bit(1) dcl 2-17 bk_ss_$dprint_destination external static char(24) packed unaligned dcl 2-17 bk_ss_$dprint_destination_setsw external static bit(1) dcl 2-17 bk_ss_$dprint_heading external static char(64) packed unaligned dcl 2-17 bk_ss_$dprint_heading_setsw external static bit(1) dcl 2-17 bk_ss_$dprint_queue external static fixed bin(17,0) dcl 2-17 bk_ss_$dprint_request_type external static char(24) packed unaligned dcl 2-17 bk_ss_$dprint_request_type_setsw external static bit(1) dcl 2-17 bk_ss_$dprintsw external static bit(1) dcl 2-17 bk_ss_$dtdsw external static bit(1) dcl 2-17 bk_ss_$ename external static char(32) dcl 2-17 bk_ss_$enforce_max_access_class external static bit(1) dcl 2-17 bk_ss_$enforce_min_access_class external static bit(1) dcl 2-17 bk_ss_$enforce_minimum_ring external static bit(1) dcl 2-17 bk_ss_$err_label external static label variable dcl 2-17 bk_ss_$err_onlinesw external static bit(1) dcl 2-17 bk_ss_$error external static fixed bin(17,0) dcl 2-17 bk_ss_$holdsw external static bit(1) dcl 2-17 bk_ss_$hp external static pointer dcl 2-17 bk_ss_$ignore_dates external static bit(1) dcl 2-17 bk_ss_$mapsw external static bit(1) dcl 2-17 bk_ss_$maximum_access_class external static bit(72) dcl 2-17 bk_ss_$maximum_dir_access_class external static bit(72) dcl 2-17 bk_ss_$minimum_access_class external static bit(72) dcl 2-17 bk_ss_$minimum_ring external static fixed bin(17,0) dcl 2-17 bk_ss_$myname external static char(16) packed unaligned dcl 2-17 bk_ss_$namesw external static bit(1) dcl 2-17 bk_ss_$no_contin external static bit(1) dcl 2-17 bk_ss_$no_output external static bit(1) dcl 2-17 bk_ss_$no_primary external static bit(1) dcl 2-17 bk_ss_$no_reload external static bit(1) dcl 2-17 bk_ss_$no_setlvid external static bit(1) dcl 2-17 bk_ss_$ntapes external static fixed bin(17,0) dcl 2-17 bk_ss_$onlysw external static bit(1) dcl 2-17 bk_ss_$operator external static char(32) packed unaligned dcl 2-17 bk_ss_$path_index external static fixed bin(17,0) dcl 2-17 bk_ss_$pathsw external static bit(1) dcl 2-17 bk_ss_$preattached external static bit(1) dcl 2-17 bk_ss_$pvname external static char(32) dcl 2-17 bk_ss_$pvsw external static bit(1) dcl 2-17 bk_ss_$qchecksw external static bit(1) dcl 2-17 bk_ss_$quotasw external static bit(1) dcl 2-17 bk_ss_$restart_dumpsw external static bit(1) dcl 2-17 bk_ss_$restart_path external static char(168) dcl 2-17 bk_ss_$restart_plen external static fixed bin(17,0) dcl 2-17 bk_ss_$restore_access_class external static bit(1) dcl 2-17 bk_ss_$retrieval_index external static fixed bin(17,0) dcl 2-17 bk_ss_$retrievesw external static bit(1) dcl 2-17 bk_ss_$rlen external static fixed bin(17,0) dcl 2-17 bk_ss_$rname external static char(168) packed unaligned dcl 2-17 bk_ss_$rsize external static fixed bin(17,0) dcl 2-17 bk_ss_$save_path external static char(168) packed unaligned dcl 2-17 bk_ss_$save_plen external static fixed bin(17,0) dcl 2-17 bk_ss_$save_time external static fixed bin(52,0) dcl 2-17 bk_ss_$segptr external static pointer dcl 2-17 bk_ss_$set_dtd external static bit(1) dcl 2-17 bk_ss_$set_dtd_explicit external static bit(1) dcl 2-17 bk_ss_$source_attributes_ptr external static pointer dcl 2-17 bk_ss_$sp external static pointer dcl 2-17 bk_ss_$sub_entry external static bit(1) dcl 2-17 bk_ss_$sub_entry_errfile external static bit(1) dcl 2-17 bk_ss_$tapesw external static bit(1) dcl 2-17 bk_ss_$target_attributes_ptr external static pointer dcl 2-17 bk_ss_$translate_access_class external static bit(1) dcl 2-17 bk_ss_$trimsw external static bit(1) dcl 2-17 bk_ss_$upgrade_to_user_auth external static bit(1) dcl 2-17 bk_ss_$user_authorization external static bit(72) dcl 2-17 bk_ss_$user_id external static char(32) packed unaligned dcl 2-17 bk_ss_$user_ring external static fixed bin(17,0) dcl 2-17 bk_ss_$volume_set_name external static char(32) packed unaligned dcl 2-17 bk_ss_$wakeup_interval external static fixed bin(52,0) dcl 2-17 bk_ss_$wasnt_known external static bit(1) dcl 2-17 bk_ss_$writing_map external static bit(1) dcl 2-17 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN_FROM_INITIATE 001046 constant label dcl 263 ref 206 backup_control_mgr_ 000015 constant entry external dcl 15 initiate 000027 constant entry external dcl 172 terminate 001052 constant entry external dcl 268 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1434 1454 1322 1444 Length 1702 1322 20 211 112 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME backup_control_mgr_ 90 external procedure is an external procedure. on unit on line 203 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME backup_control_mgr_ 000100 system_area_ptr backup_control_mgr_ 000102 idx backup_control_mgr_ 000112 backup_control_ptr backup_control_mgr_ 000114 backup_control_request_count backup_control_mgr_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac tra_ext_1 enable_op ext_entry int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bk_ss_$control_ptr error_table_$noalloc error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000014 18 000022 172 000023 175 000034 177 000040 179 000041 180 000045 181 000047 184 000050 187 000056 190 000064 193 000072 197 000101 198 000104 201 000105 203 000114 205 000130 206 000134 209 000137 211 000151 213 000152 215 000155 218 000156 219 000163 220 000166 221 000173 222 000175 223 000177 224 000202 225 000204 226 000205 227 000206 228 000210 231 000213 232 000216 233 000247 234 000255 235 000262 236 000315 239 000317 240 000322 241 000354 242 000363 243 000370 244 000430 247 000432 248 000435 249 000524 250 000533 251 000540 252 000604 255 000606 256 000613 257 000764 258 000773 259 001000 260 001044 263 001046 268 001047 271 001057 274 001065 276 001070 278 001076 279 001101 280 001113 281 001125 282 001127 284 001132 286 001137 289 001141 290 001144 291 001157 292 001166 293 001170 295 001173 297 001200 300 001202 301 001205 302 001217 303 001226 304 001230 306 001233 308 001240 311 001242 312 001247 313 001261 314 001270 315 001272 317 001275 319 001302 322 001304 323 001314 325 001317 ----------------------------------------------------------- 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