COMPILATION LISTING OF SEGMENT pnotice_paths_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 02/16/88 1412.2 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(81-05-01,Stansbury), approve(), audit(), 10* install(86-11-12,MR12.0-1213): 11* Created. 12* 2) change(81-12-01,Stansbury), approve(), audit(), 13* install(86-11-12,MR12.0-1213): 14* Modified - Changed calling sequence to include option flags. 15* 3) change(82-10-01,Stansbury), approve(), audit(), 16* install(86-11-12,MR12.0-1213): 17* Modified - Added functionality to deal with public domain notices. 18* These notices must have "public.domain" as the first and second 19* components in their name. 20* 4) change(85-09-27,LJAdams), approve(85-09-27,MCR7150), 21* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 22* Accept public_domain as a template name. Search for indicator 23* in template rather than date. Allow multiple component prefixes 24* for template name. 25* 5) change(86-09-08,LJAdams), approve(86-09-08,MCR7526), 26* audit(86-11-05,GDixon), install(86-11-12,MR12.0-1213): 27* Corrected code that allowed stringrange error to occur. 28* END HISTORY COMMENTS */ 29 30 31 pnotice_paths_: 32 proc (caller, flags, Ppnotice_info, ncode); 33 34 35 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 36 /* */ 37 /* NAME: pnotice_paths_ */ 38 /* */ 39 /* FUNCTION: */ 40 /* This is the subroutine interface to the software protection tools that provides */ 41 /* pathnames of the directories which contain the protection notice templates. It sets */ 42 /* up proper search paths for the user of the tools, and initiates each of the known */ 43 /* templates providing pointers and lengths, primary names, and whether or not a */ 44 /* particular template is a default template. The include file pnotice_paths.incl.pl1 */ 45 /* contains the structure which is filled in by this subroutine. */ 46 /* */ 47 /* USAGE: */ 48 /* dcl pnotice_paths_ entry (char(*), bit(*), ptr, fixed bin (35)); */ 49 /* */ 50 /* call pnotice_paths_ (name, option_flags, Ppaths, Acode); */ 51 /* where: */ 52 /* 1. name (In) */ 53 /* is the name of the procedure that called this subroutine. */ 54 /* 2. option_flags (In) */ 55 /* are passed as a bit string and are used by the list_pnotice_names command to */ 56 /* control the checking of templates and filling in of the pnotice_paths structure. */ 57 /* Callers of this procedure other than list_pnotice_names should set this parameter to */ 58 /* "00"b ! */ 59 /* Meaning of these flags: */ 60 /* The check flag, which is first, is set when list_pnotice_names is the caller AND */ 61 /* the -check control arg has been used. When this is the case, any errors found while */ 62 /* checking the text of a template will be reported, and the template will not be removed */ 63 /* from the list returned to the caller. The all flag, which is second, is set */ 64 /* when list_pnotice_names is the caller AND the -all control arg has been used. When */ 65 /* this is the case, all properly formatted templates in every directory will be listed. */ 66 /* Any with duplicate names will be flagged with an asterisk (*) and an explanation will */ 67 /* be printed. */ 68 /* */ 69 /* */ 70 /* */ 71 /* 3. Ppaths (In) */ 72 /* is a pointer to a temporary segment used to allocate the contents of the */ 73 /* pnotice_paths structure. If the caller has not provided a temp seg, i.e., Ppaths is */ 74 /* null, this subroutine will obtain one. */ 75 /* 4. Acode (Out) */ 76 /* is a standard system error code. */ 77 /* */ 78 /* */ 79 /* */ 80 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 81 82 83 84 dcl caller char (*), /* IN */ 85 flags bit (*), /* IN */ 86 Ppnotice_info ptr, /* IN / OUT */ 87 ncode fixed bin (35); /* OUT */ 88 89 90 /* A U T O M A T I C */ 91 dcl component char (32) varying, 92 Icurrent_entry fixed bin, 93 Idir fixed bin, 94 Idx fixed bin, 95 Idx1 fixed bin, 96 Iname fixed bin, 97 Itemplate fixed bin, 98 Itextdate fixed bin, 99 Lline fixed bin (21), 100 Ltemp fixed bin (21), 101 Ltext fixed bin (21), 102 Nentries fixed bin, 103 Pline ptr, 104 Ptemp ptr, 105 Ptext ptr, /* ptr to temp seg of template text */ 106 bit_count fixed bin (24), 107 errors_found bit (1), /* bit to check for any internal template errors */ 108 tcode fixed bin (35), /* temp error code */ 109 type fixed bin, 110 work_area area (8192); /* area for search_paths_$get and hcs_$star */ 111 dcl 1 option_flags, 112 2 check bit (1) unal, 113 2 all bit (1) unal; 114 115 dcl 1 template like pnotice_paths.templates; 116 117 118 /* B A S E D */ 119 dcl line char (Lline) based (Pline), 120 temp char (Ltemp) based (Ptemp), 121 temp_chr (Ltemp) char (1) based (Ptemp), 122 text char (Ltext) based (Ptext); 123 124 /* B U I L T I N */ 125 dcl (addcharno, 126 addr, 127 after, 128 before, 129 divide, 130 empty, 131 index, 132 null, 133 reverse, 134 rtrim, 135 search, 136 string, 137 substr, 138 sum, 139 verify) builtin; 140 141 /* C O N D I T I O N S */ 142 dcl cleanup condition; 143 144 145 /* E X T E R N A L E N T R I E S */ 146 dcl com_err_ entry () options (variable), 147 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 148 hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)), 149 hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)), 150 hcs_$terminate_noname entry (ptr, fixed bin (35)), 151 search_paths_$get entry (char (*), bit (36), char (*), ptr, ptr, fixed bin, ptr, fixed bin (35)); 152 153 154 /* E X T E R N A L S T A T I C */ 155 dcl error_table_$empty_search_list fixed bin (35) ext static, 156 error_table_$improper_data_format fixed bin (35) ext static, 157 error_table_$nomatch fixed bin (35) ext static; 158 159 160 /* I N T E R N A L S T A T I C */ 161 dcl True bit (1) int static options (constant) init ("1"b), 162 False bit (1) int static options (constant) init ("0"b), 163 NL char (1) int static options (constant) init (" 164 "), 165 HT char (1) int static options (constant) init (" "), 166 HT_SP_VT_NP char (4) int static options (constant) init (" "); 167 168 169 170 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 171 172 ncode = 0; 173 174 string (option_flags) = flags; 175 on cleanup begin; 176 if Ptext ^= null then 177 call hcs_$terminate_noname (Ptext, tcode); 178 end; 179 180 181 if Ppnotice_info = null then do; /* if we were not given a temp seg ptr, */ 182 call get_temp_segment_ (caller, Ppnotice_info, ncode); 183 /* get one on the caller's behalf */ 184 if ncode ^= 0 then do; 185 call com_err_ (ncode, caller, " 186 Obtaining a temporary segment for pnotice template info."); 187 return; 188 end; /* things are probably so fouled up now, */ 189 end; 190 Ppaths = Ppnotice_info; 191 pnotice_paths.Ndirs = 0; 192 pnotice_paths.Ntemplates = 0; 193 type = UNDEFINED; 194 195 call search_paths_$get ("pnotice", sl_control_default, "", null (), 196 addr (work_area), sl_info_version_1, sl_info_p, ncode); 197 if ncode ^= 0 then do; /* anything unexpected, clean up and get out */ 198 call com_err_ (ncode, caller, " 199 Searching the pnotice search list."); 200 return; 201 end; 202 pnotice_paths.Ndirs = sl_info.num_paths; /* no. of search paths */ 203 if pnotice_paths.Ndirs = 0 then do; /* truly a bad situation */ 204 ncode = error_table_$empty_search_list; 205 call com_err_ (ncode, caller, " 206 No directories were found in the pnotice search list."); 207 return; 208 end; 209 else do Idir = 1 to pnotice_paths.Ndirs; 210 pnotice_paths.dirs (Idir).dir_path = sl_info.paths (Idir).pathname; 211 /* obtain pathname */ 212 pnotice_paths.dirs (Idir).Ifirst_template = pnotice_paths.Ntemplates + 1; 213 /* set up index */ 214 pnotice_paths.dirs (Idir).Ilast_template = 0; 215 216 call hcs_$star_ (pnotice_paths.dirs (Idir).dir_path, "**.pnotice", 217 star_ALL_ENTRIES, addr (work_area), star_entry_count, 218 star_entry_ptr, star_names_ptr, ncode); 219 if ncode ^= 0 then do; 220 if ncode = error_table_$nomatch then do; /* none in this dir */ 221 ncode = 0; 222 goto NEXT_DIR; 223 end; 224 else do; 225 call com_err_ (ncode, caller, " 226 Obtaining star names matching **.pnotice in ^a", pnotice_paths.dirs (Idir).dir_path); 227 /* complain */ 228 ncode = 0; /* prevent other abnormalities */ 229 goto NEXT_DIR; /* go onto next. */ 230 end; 231 end; 232 pnotice_paths.dirs (Idir).Ifirst_template = pnotice_paths.Ntemplates + 1; 233 /* set index for first template in this dir */ 234 do Nentries = 1 to star_entry_count; /* for all entries in this dir, */ 235 Icurrent_entry = pnotice_paths.Ntemplates + 1; 236 /* set index of current template */ 237 template.defaultC = False; 238 /* initialize variables to False */ 239 template.defaultTS = False; 240 templates.duplicate = False; 241 242 do Itemplate = 1 to pnotice_paths.Ntemplates; 243 /* check for duplicates */ 244 if star_names (star_entries (Nentries).nindex) = 245 pnotice_paths.templates (Itemplate).primary_name then do; 246 if ^option_flags.all then 247 goto NEXT_TEMPLATE; /* skip it */ 248 else 249 template.duplicate = True; 250 /* turn on bit */ 251 end; 252 end; 253 call hcs_$initiate_count (pnotice_paths.dirs (Idir).dir_path, 254 star_names (star_entries (Nentries).nindex), 255 "", bit_count, 0, 256 Ptext, tcode); /* get pointer to each one */ 257 if Ptext = null then do; 258 call com_err_ (tcode, caller, " 259 Initiating ^a^[>^]^a", 260 pnotice_paths.dirs (Idir).dir_path, pnotice_paths.dirs (Idir).dir_path ^= ">", 261 star_names (star_entries (Nentries).nindex)); 262 goto NEXT_TEMPLATE; /* some problem here, don't let it stop now */ 263 end; 264 Ltext = divide (bit_count, 9, 17, 0); 265 266 errors_found = False; /* prepare to... */ 267 /* do checks on this one */ 268 /* the errors_found flag lets us report ALL errors*/ 269 call find_line$init (Ptext, Ltext);/* set up for finding multiple lines */ 270 271 272 component = rtrim (star_names (star_entries (Nentries).nindex)); 273 /* strip trailing blanks */ 274 component = after (reverse (component), "ecitonp."); 275 /*drop off pnotice suffix */ 276 component = reverse (before (component, ".")); 277 /*find the component prior to .pnotice */ 278 if component = "trade_secret" then do; 279 /* FOR TRADE SECRET ONLY */ 280 type = TRADE_SECRET; 281 if search (text, "0123456789") ^= 0 then 282 call format_error ("Text of Trade Secret notices should not contain dates."); 283 if index (text, "") ^= 0 then 284 call format_error 285 ("Text of Trade Secret notices should not contain a generic year indicator, ."); 286 if index (text, "PROPRIETARY") = 0 then 287 call format_error ("Text of Trade Secret notices must contain ""PROPRIETARY""."); 288 end; 289 else if component = "public_domain" | 290 component = "domain" then do; /* name of this notice should be */ 291 /* public_domain.pnotice */ 292 /* FOR PUBLIC DOMAIN ONLY */ 293 if component = "domain" | 294 verify (before (star_names (star_entries (Nentries).nindex), "."), "public_domain") ^= 0 then 295 call format_error ("A public domain pnotice can only be named public_domain."); 296 type = PUBLIC_DOMAIN; 297 if search (text, "0123456789") ^= 0 then 298 call format_error ("Text of the public domain notice must not contain a date."); 299 if index (text, "") ^= 0 then 300 call format_error 301 ("Text of the public domain notice must not contain a generic year indicator, ."); 302 if index (text, "PUBLIC DOMAIN") = 0 then 303 call format_error ("Text of public domain notice must contain ""PUBLIC DOMAIN""."); 304 end; 305 else do; /* FOR COPYRIGHT */ 306 type = COPYRIGHT; 307 Itextdate = search (text, ""); 308 if Itextdate = 0 then 309 call format_error 310 ("Copyright notice text must contain a """" place holder."); 311 if index (text, "Copyright") = 0 then 312 call format_error ("Text of Copyright notices must include ""Copyright""."); 313 end; 314 do while (find_line ()); 315 if search (line, HT) ^= 0 then 316 call format_error ("Text contains a horizontal tab character."); 317 if search (line, "*") ^= 0 then 318 call format_error ("Text contains an asterisk (*)."); 319 if Lline > 71 then 320 call format_error ("Length of a template line exceeds 71 characters. 321 This may result in poor formatting."); 322 Idx = verify (line, HT_SP_VT_NP); 323 Idx1 = verify (reverse (line), HT_SP_VT_NP); 324 if Idx = 0 & Idx1 = 0 then 325 call format_error ("A template line is blank."); 326 else 327 if Idx ^= 1 then 328 call format_error ("Template line has leading white space."); 329 else 330 if Idx1 ^= 1 then 331 call format_error ("A template line has trailing white space other than NL."); 332 end; 333 if errors_found then 334 goto NEXT_TEMPLATE; /* don't include this one */ 335 else do; /* THIS ONE PASSED, ADD IT TO THE LIST */ 336 template.primary_name = star_names (star_entries (Nentries).nindex); 337 /* obtain primary name first */ 338 template.Ptemplate = Ptext; 339 template.Ltemplate = Ltext; 340 template.type = type; 341 template.Isearch_dir = Idir; 342 /* remember dir index that this one came from. */ 343 do Iname = 1 to star_entries (Nentries).nnames - 1; 344 /* check the names on this entry. */ 345 /* check to see if it is a default pnotice */ 346 if before (star_names (star_entries (Nentries).nindex + Iname), ".") = 347 "default_trade_secret" then 348 template.defaultTS = "1"b; 349 else if before (star_names (star_entries (Nentries).nindex + Iname), ".") = 350 "default_copyright" then 351 template.defaultC = "1"b; 352 else do; 353 call format_error ( 354 "Only ""default_trade_secret.pnotice"" and ""default_copyright.pnotice"" are allowed as add names."); 355 goto NEXT_TEMPLATE; 356 end; 357 end; 358 pnotice_paths.Ntemplates = Icurrent_entry; 359 pnotice_paths.templates (Ntemplates) = template; 360 end; 361 goto KEEP_TEMPLATE; 362 NEXT_TEMPLATE: call hcs_$terminate_noname (Ptext, tcode); 363 /* prevent abnormal happenings if user QUITs */ 364 KEEP_TEMPLATE: Ptext = null; 365 end; 366 pnotice_paths.dirs (Idir).Ilast_template = pnotice_paths.Ntemplates; 367 /* index of last template in this dir */ 368 NEXT_DIR: end; 369 370 RETURN: return; 371 372 373 374 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 375 find_line: 376 proc returns (bit (1)); 377 378 if Ltemp <= 0 then 379 return (False); 380 else do; 381 Pline = Ptemp; 382 Lline = search (temp, NL); 383 if Lline = 0 then /* there was no NL in the first place.. */ 384 Lline = Ltemp; 385 if length(temp) > length(line) then 386 Ptemp = addr(temp_chr(length(line)+1)); 387 Ltemp = Ltemp - length(line); 388 if substr (line, Lline, 1) ^= NL & option_flags.check then 389 call format_error ("A line of this template does not end with a NL."); 390 else 391 Lline = Lline - 1; /* remove the NL */ 392 end; 393 return (True); 394 395 find_line$init: 396 entry (Pstr, Lstr); 397 dcl Pstr ptr, 398 Lstr fixed bin (21); 399 400 Ptemp = Pstr; 401 Ltemp = Lstr; 402 return; 403 404 end find_line; 405 406 407 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 408 409 format_error: 410 proc (Amsg); 411 412 dcl Amsg char (*) var; 413 dcl Acode fixed bin (35); 414 415 if option_flags.check then do; /* complaints allowed only if asked for. */ 416 Acode = error_table_$improper_data_format; 417 call com_err_ (Acode, caller, "^/^a^/(^a^[>^]^a)^/", Amsg, 418 pnotice_paths.dirs (Idir).dir_path, pnotice_paths.dirs (Idir).dir_path ^= ">", 419 star_names (star_entries (Nentries).nindex)); 420 end; 421 errors_found = True; 422 return; 423 end format_error; 424 425 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 1 /* BEGIN INCLUDE FILE . . . sl_info.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(87-11-16,Lippard), approve(87-12-21,MCR7822), 1 7* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 1 8* Modified to add INITIATED_SEGS type. 1 9* 2) change(87-11-19,Lippard), approve(87-12-21,MCR7822), 1 10* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 1 11* Added uid to sl_info structure. 1 12* END HISTORY COMMENTS */ 1 13 1 14 1 15 declare 1 sl_info aligned based (sl_info_p), 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 num_paths fixed binary, /* Number of search paths */ 1 18 2 change_index_p pointer, /* Pointer to search list's update count */ 1 19 2 change_index fixed binary (71), /* This search list's update count */ 1 20 2 pad1 (6) bit (36), /* Must be zero */ 1 21 2 paths (sl_info_num_paths refer (sl_info.num_paths)), 1 22 3 type fixed binary, /* Type of search path */ 1 23 3 code fixed binary (35), /* Standard status code of search path */ 1 24 3 uid bit (36), /* Unique ID */ 1 25 3 pathname char (168) unaligned; /* Search pathname */ 1 26 1 27 declare sl_info_num_paths fixed binary; 1 28 declare sl_info_p pointer; 1 29 declare sl_info_version_1 fixed binary internal static options (constant) initial (1); 1 30 1 31 /* Keyword Types */ 1 32 1 33 declare ABSOLUTE_PATH fixed binary internal static options (constant) initial (0); 1 34 declare UNEXPANDED_PATH fixed binary internal static options (constant) initial (1); 1 35 declare REFERENCING_DIR fixed binary internal static options (constant) initial (3); 1 36 declare WORKING_DIR fixed binary internal static options (constant) initial (4); 1 37 declare PROCESS_DIR fixed binary internal static options (constant) initial (5); 1 38 declare HOME_DIR fixed binary internal static options (constant) initial (6); 1 39 declare INITIATED_SEGS fixed binary internal static options (constant) initial (7); 1 40 1 41 /* END INCLUDE FILE . . . sl_info.incl.pl1 */ 426 427 2 1 /* BEGIN INCLUDE FILE . . . sl_control_s.incl.pl1 */ 2 2 2 3 declare 1 sl_control_s unaligned based (addr (sl_control)), 2 4 2 af_pathname bit (1), /* "1"b => expand active functions */ 2 5 2 pad1 bit (1), /* Must be zero */ 2 6 2 key_ref_dir bit (1), /* "1"b => expand -referencing_dir keyword */ 2 7 2 key_work_dir bit (1), /* "1"b => expand -working_dir keyword */ 2 8 2 key_proc_dir bit (1), /* "1"b => expand -process_dir keyword */ 2 9 2 key_home_dir bit (1), /* "1"b => expand -home_dir keyword */ 2 10 2 pad2 bit (30); /* Must be zero */ 2 11 2 12 declare sl_control bit (36); 2 13 declare sl_control_default bit (36) internal static options (constant) initial ("101111"b); 2 14 2 15 /* END INCLUDE FILE . . . sl_control_s.incl.pl1 */ 428 429 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 430 431 4 1 /* START OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(86-01-28,LJAdams), approve(86-01-28,MCR7150), 4 7* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 4 8* Changed attributes of constants from automatic to internal static options 4 9* constant. Removed all initialization of automatic variables. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 14 /* */ 4 15 /* This include file defines the structure that the software protection tools fill in */ 4 16 /* with information on the proper search paths for notice templates, primary names of */ 4 17 /* these templates, their lengths, pointers to each, and whether or not they are the */ 4 18 /* default notice. There are only two defined default notices, one for copyright (named */ 4 19 /* "default.pnotice" as an add_name), and Trade Secret (named */ 4 20 /* "default_trade_secret.pnotice" as an add_name). */ 4 21 /* */ 4 22 /* Created: April 1981 by JM Stansbury */ 4 23 /* Modified: November 1981 by JM Stansbury */ 4 24 /* added Isearch_dir index to allow for >1 search path in search segment. */ 4 25 /* added Ifirst_template and Ilast_template to aid in sort for multiple directories */ 4 26 /* in the search list. */ 4 27 /* Modified: December 10, 1981 by JM Stansbury */ 4 28 /* added duplicate bit to provide list_pnotice_names with capability of flagging */ 4 29 /* and explaining same in its output. */ 4 30 /* Modified: December 7, 1982 by JM Stansbury */ 4 31 /* added type field to indicate whether a notice is copyright, trade secret or */ 4 32 /* public domain. */ 4 33 /* */ 4 34 /* */ 4 35 /* */ 4 36 /* */ 4 37 /* */ 4 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 39 4 40 4 41 dcl 1 pnotice_paths aligned based (Ppaths), 4 42 2 Ndirs fixed bin, /* no. of search dirs */ 4 43 2 Ntemplates fixed bin, /* no. of pnotice templates */ 4 44 2 dirs (0 refer (pnotice_paths.Ndirs)), 4 45 3 dir_path char (168) unal, 4 46 3 Ifirst_template fixed bin, /* index of first template in this dir */ 4 47 3 Ilast_template fixed bin, /* index of last template in this dir */ 4 48 2 templates (0 refer (pnotice_paths.Ntemplates)), 4 49 3 primary_name char (32), 4 50 3 Ptemplate ptr, /* ptr to each template */ 4 51 3 Ltemplate fixed bin, /* lgth of each template */ 4 52 3 type fixed bin, /* copyright, trade secret, and */ 4 53 /* public domain */ 4 54 3 Isearch_dir fixed bin, /* index of dir that this template is in */ 4 55 3 defaultC bit (1) unal, /* this bit is ON if the template is a default */ 4 56 /* copyright, i.e. "default.pnotice" */ 4 57 3 defaultTS bit (1) unal, /* this bit is ON if the template is a default */ 4 58 /* trade secret notice, */ 4 59 3 duplicate bit (1) unal, /* this bit is ON if an earlier template in the */ 4 60 /* search list had the same name, and thus */ 4 61 /* would be used instead of this one. */ 4 62 3 pad bit (33) unal; 4 63 4 64 4 65 dcl Ppaths ptr; 4 66 /* types */ 4 67 dcl UNDEFINED fixed bin int static options (constant) init (0); 4 68 dcl COPYRIGHT fixed bin int static options (constant) init (1); 4 69 dcl TRADE_SECRET fixed bin int static options (constant) init (2); 4 70 dcl PUBLIC_DOMAIN fixed bin int static options (constant) init (3); 4 71 4 72 /* END OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 432 433 434 end pnotice_paths_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/88 1411.9 pnotice_paths_.pl1 >spec>install>MR12.2-1023>pnotice_paths_.pl1 426 1 02/16/88 1407.4 sl_info.incl.pl1 >spec>install>MR12.2-1023>sl_info.incl.pl1 428 2 01/09/79 1617.9 sl_control_s.incl.pl1 >ldd>include>sl_control_s.incl.pl1 430 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 432 4 02/13/86 1340.2 pnotice_paths.incl.pl1 >ldd>include>pnotice_paths.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. Acode 020222 automatic fixed bin(35,0) dcl 413 set ref 416* 417* Amsg parameter varying char dcl 412 set ref 409 417* COPYRIGHT constant fixed bin(17,0) initial dcl 4-68 ref 306 False constant bit(1) initial unaligned dcl 161 ref 237 239 240 266 378 HT constant char(1) initial unaligned dcl 161 ref 315 HT_SP_VT_NP 000001 constant char(4) initial unaligned dcl 161 ref 322 323 Icurrent_entry 000111 automatic fixed bin(17,0) dcl 91 set ref 235* 358 Idir 000112 automatic fixed bin(17,0) dcl 91 set ref 209* 210 210 212 214 216 225 232 253 258 258 341 366* 417 417 Idx 000113 automatic fixed bin(17,0) dcl 91 set ref 322* 324 326 Idx1 000114 automatic fixed bin(17,0) dcl 91 set ref 323* 324 329 Ifirst_template 54 based fixed bin(17,0) array level 3 dcl 4-41 set ref 212* 232* Ilast_template 55 based fixed bin(17,0) array level 3 dcl 4-41 set ref 214* 366* Iname 000115 automatic fixed bin(17,0) dcl 91 set ref 343* 346 349* Isearch_dir 14 020140 automatic fixed bin(17,0) level 2 dcl 115 set ref 341* Itemplate 000116 automatic fixed bin(17,0) dcl 91 set ref 242* 244* Itextdate 000117 automatic fixed bin(17,0) dcl 91 set ref 307* 308 Lline 000120 automatic fixed bin(21,0) dcl 91 set ref 315 317 319 322 323 382* 383 383* 385 385 387 388 388 390* 390 Lstr parameter fixed bin(21,0) dcl 397 ref 395 401 Ltemp 000121 automatic fixed bin(21,0) dcl 91 set ref 378 382 383 385 387* 387 401* Ltemplate 12 020140 automatic fixed bin(17,0) level 2 dcl 115 set ref 339* Ltext 000122 automatic fixed bin(21,0) dcl 91 set ref 264* 269* 281 283 286 297 299 302 307 311 339 NL 005126 constant char(1) initial unaligned dcl 161 ref 382 388 Ndirs based fixed bin(17,0) level 2 dcl 4-41 set ref 191* 202* 203 209 240 240 244 359 359 359 359 359 359 359 359 359 359 Nentries 000123 automatic fixed bin(17,0) dcl 91 set ref 234* 244 253 258 272 293 336 343 346 349* 417 Ntemplates 1 based fixed bin(17,0) level 2 dcl 4-41 set ref 192* 212 232 235 240 242 358* 359 359 359 359 359 359 359 359 359 366 PUBLIC_DOMAIN constant fixed bin(17,0) initial dcl 4-70 ref 296 Pline 000124 automatic pointer dcl 91 set ref 315 317 322 323 381* 385 385 387 388 Ppaths 020174 automatic pointer dcl 4-65 set ref 190* 191 192 202 203 209 210 212 212 214 216 225 232 232 235 240 242 244 253 258 258 358 359 359 359 359 359 359 359 359 359 359 366 366 417 417 Ppnotice_info parameter pointer dcl 84 set ref 31 181 182* 190 Pstr parameter pointer dcl 397 ref 395 400 Ptemp 000126 automatic pointer dcl 91 set ref 381 382 385 385* 385 400* Ptemplate 10 020140 automatic pointer level 2 dcl 115 set ref 338* Ptext 000130 automatic pointer dcl 91 set ref 176 176* 253* 257 269* 281 283 286 297 299 302 307 311 338 362* 364* TRADE_SECRET constant fixed bin(17,0) initial dcl 4-69 ref 280 True constant bit(1) initial unaligned dcl 161 ref 248 393 421 UNDEFINED constant fixed bin(17,0) initial dcl 4-67 ref 193 addr builtin function dcl 125 ref 195 195 216 216 385 after builtin function dcl 125 ref 274 all 0(01) 020136 automatic bit(1) level 2 packed unaligned dcl 111 set ref 246 before builtin function dcl 125 ref 276 293 346 349 bit_count 000132 automatic fixed bin(24,0) dcl 91 set ref 253* 264 caller parameter char unaligned dcl 84 set ref 31 182* 185* 198* 205* 225* 258* 417* check 020136 automatic bit(1) level 2 packed unaligned dcl 111 set ref 388 415 cleanup 020156 stack reference condition dcl 142 ref 175 com_err_ 000010 constant entry external dcl 146 ref 185 198 205 225 258 417 component 000100 automatic varying char(32) dcl 91 set ref 272* 274* 274 276* 276 278 289 289 293 defaultC 15 020140 automatic bit(1) level 2 packed unaligned dcl 115 set ref 237* 349* defaultTS 15(01) 020140 automatic bit(1) level 2 packed unaligned dcl 115 set ref 239* 346* dir_path 2 based char(168) array level 3 packed unaligned dcl 4-41 set ref 210* 216* 225* 253* 258* 258 417* 417 dirs 2 based structure array level 2 dcl 4-41 divide builtin function dcl 125 ref 264 duplicate based bit(1) array level 3 in structure "pnotice_paths" packed unaligned dcl 4-41 in procedure "pnotice_paths_" set ref 240* duplicate 15(02) 020140 automatic bit(1) level 2 in structure "template" packed unaligned dcl 115 in procedure "pnotice_paths_" set ref 248* empty builtin function dcl 125 ref 91 error_table_$empty_search_list 000024 external static fixed bin(35,0) dcl 155 ref 204 error_table_$improper_data_format 000026 external static fixed bin(35,0) dcl 155 ref 416 error_table_$nomatch 000030 external static fixed bin(35,0) dcl 155 ref 220 errors_found 000133 automatic bit(1) unaligned dcl 91 set ref 266* 333 421* flags parameter bit unaligned dcl 84 ref 31 174 get_temp_segment_ 000012 constant entry external dcl 146 ref 182 hcs_$initiate_count 000014 constant entry external dcl 146 ref 253 hcs_$star_ 000016 constant entry external dcl 146 ref 216 hcs_$terminate_noname 000020 constant entry external dcl 146 ref 176 362 index builtin function dcl 125 ref 283 286 299 302 311 line based char unaligned dcl 119 ref 315 317 322 323 385 385 387 388 ncode parameter fixed bin(35,0) dcl 84 set ref 31 172* 182* 184 185* 195* 197 198* 204* 205* 216* 219 220 221* 225* 228* nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 3-27 ref 244 253 258 272 293 336 346 349 417 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 3-27 ref 343 null builtin function dcl 125 ref 176 181 195 195 257 364 num_paths 1 based fixed bin(17,0) level 2 dcl 1-15 ref 202 option_flags 020136 automatic structure level 1 packed unaligned dcl 111 set ref 174* pathname 17 based char(168) array level 3 packed unaligned dcl 1-15 ref 210 paths 14 based structure array level 2 dcl 1-15 pnotice_paths based structure level 1 dcl 4-41 primary_name based char(32) array level 3 in structure "pnotice_paths" dcl 4-41 in procedure "pnotice_paths_" set ref 244 primary_name 020140 automatic char(32) level 2 in structure "template" packed unaligned dcl 115 in procedure "pnotice_paths_" set ref 336* reverse builtin function dcl 125 ref 274 276 323 rtrim builtin function dcl 125 ref 272 search builtin function dcl 125 ref 281 297 307 315 317 382 search_paths_$get 000022 constant entry external dcl 146 ref 195 sl_control_default 000000 constant bit(36) initial unaligned dcl 2-13 set ref 195* sl_info based structure level 1 dcl 1-15 sl_info_p 020164 automatic pointer dcl 1-28 set ref 195* 202 210 sl_info_version_1 000052 constant fixed bin(17,0) initial dcl 1-29 set ref 195* star_ALL_ENTRIES 000046 constant fixed bin(2,0) initial dcl 3-111 set ref 216* star_entries based structure array level 1 dcl 3-27 star_entry_count 020166 automatic fixed bin(17,0) dcl 3-14 set ref 216* 234 star_entry_ptr 020170 automatic pointer dcl 3-15 set ref 216* 244 253 258 272 293 336 343 346 349 417 star_names based char(32) array unaligned dcl 3-37 set ref 244 253* 258* 272 293 336 346 349 417* star_names_ptr 020172 automatic pointer dcl 3-19 set ref 216* 244 253 258 272 293 336 346 349 417 string builtin function dcl 125 set ref 174* substr builtin function dcl 125 ref 388 tcode 000134 automatic fixed bin(35,0) dcl 91 set ref 176* 253* 258* 362* temp based char unaligned dcl 119 ref 382 385 temp_chr based char(1) array unaligned dcl 119 set ref 385 template 020140 automatic structure level 1 unaligned dcl 115 set ref 359 templates based structure array level 2 dcl 4-41 set ref 359* text based char unaligned dcl 119 ref 281 283 286 297 299 302 307 311 type 000135 automatic fixed bin(17,0) dcl 91 in procedure "pnotice_paths_" set ref 193* 280* 296* 306* 340 type 13 020140 automatic fixed bin(17,0) level 2 in structure "template" dcl 115 in procedure "pnotice_paths_" set ref 340* verify builtin function dcl 125 ref 293 322 323 work_area 000136 automatic area(8192) dcl 91 set ref 91* 195 195 216 216 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_PATH internal static fixed bin(17,0) initial dcl 1-33 HOME_DIR internal static fixed bin(17,0) initial dcl 1-38 INITIATED_SEGS internal static fixed bin(17,0) initial dcl 1-39 PROCESS_DIR internal static fixed bin(17,0) initial dcl 1-37 REFERENCING_DIR internal static fixed bin(17,0) initial dcl 1-35 UNEXPANDED_PATH internal static fixed bin(17,0) initial dcl 1-34 WORKING_DIR internal static fixed bin(17,0) initial dcl 1-36 addcharno builtin function dcl 125 sl_control automatic bit(36) unaligned dcl 2-12 sl_control_s based structure level 1 packed unaligned dcl 2-3 sl_info_num_paths automatic fixed bin(17,0) dcl 1-27 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 3-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 3-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 sum builtin function dcl 125 NAMES DECLARED BY EXPLICIT CONTEXT. KEEP_TEMPLATE 002674 constant label dcl 364 ref 361 NEXT_DIR 002706 constant label dcl 368 ref 222 229 NEXT_TEMPLATE 002663 constant label dcl 362 ref 246 262 333 355 RETURN 002710 constant label dcl 370 find_line 002711 constant entry internal dcl 375 ref 314 find_line$init 003020 constant entry internal dcl 395 ref 269 format_error 003040 constant entry internal dcl 409 ref 281 283 286 293 297 299 302 308 311 315 317 319 324 326 329 353 388 pnotice_paths_ 000627 constant entry external dcl 31 NAME DECLARED BY CONTEXT OR IMPLICATION. length builtin function ref 385 385 385 387 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5272 5324 5130 5302 Length 5612 5130 32 251 141 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pnotice_paths_ 8470 external procedure is an external procedure. on unit on line 175 70 on unit find_line internal procedure shares stack frame of external procedure pnotice_paths_. format_error internal procedure shares stack frame of external procedure pnotice_paths_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pnotice_paths_ 000100 component pnotice_paths_ 000111 Icurrent_entry pnotice_paths_ 000112 Idir pnotice_paths_ 000113 Idx pnotice_paths_ 000114 Idx1 pnotice_paths_ 000115 Iname pnotice_paths_ 000116 Itemplate pnotice_paths_ 000117 Itextdate pnotice_paths_ 000120 Lline pnotice_paths_ 000121 Ltemp pnotice_paths_ 000122 Ltext pnotice_paths_ 000123 Nentries pnotice_paths_ 000124 Pline pnotice_paths_ 000126 Ptemp pnotice_paths_ 000130 Ptext pnotice_paths_ 000132 bit_count pnotice_paths_ 000133 errors_found pnotice_paths_ 000134 tcode pnotice_paths_ 000135 type pnotice_paths_ 000136 work_area pnotice_paths_ 020136 option_flags pnotice_paths_ 020140 template pnotice_paths_ 020164 sl_info_p pnotice_paths_ 020166 star_entry_count pnotice_paths_ 020170 star_entry_ptr pnotice_paths_ 020172 star_names_ptr pnotice_paths_ 020174 Ppaths pnotice_paths_ 020222 Acode format_error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out return_mac signal_op enable_op shorten_stack ext_entry_desc int_entry reverse_cs set_chars_eis index_chars_eis op_empty_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ get_temp_segment_ hcs_$initiate_count hcs_$star_ hcs_$terminate_noname search_paths_$get THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$empty_search_list error_table_$improper_data_format error_table_$nomatch LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 31 000622 91 000647 172 000652 174 000654 175 000661 176 000675 178 000712 181 000713 182 000720 184 000742 185 000745 187 000772 190 000773 191 000776 192 000777 193 001000 195 001002 197 001053 198 001056 200 001103 202 001104 203 001107 204 001110 205 001113 207 001137 209 001140 210 001147 212 001162 214 001166 216 001167 219 001243 220 001246 221 001251 222 001252 225 001253 228 001310 229 001312 232 001313 234 001322 235 001331 237 001335 239 001337 240 001341 242 001372 244 001401 246 001430 248 001433 252 001435 253 001437 257 001520 258 001524 262 001617 264 001620 266 001623 269 001624 272 001626 274 001665 276 001711 278 001734 280 001742 281 001744 283 001770 286 002007 288 002026 289 002027 293 002043 296 002075 297 002077 299 002123 302 002142 304 002161 306 002162 307 002164 308 002200 311 002211 314 002230 315 002235 317 002261 319 002305 322 002320 323 002334 324 002346 326 002363 329 002377 332 002412 333 002413 336 002415 338 002427 339 002431 340 002433 341 002435 343 002437 346 002451 349 002504 353 002513 355 002523 357 002524 358 002526 359 002531 361 002662 362 002663 364 002674 365 002676 366 002700 368 002706 370 002710 375 002711 378 002715 381 002732 382 002734 383 002746 385 002751 387 002756 388 002760 390 003002 393 003004 395 003020 400 003023 401 003027 402 003031 409 003040 415 003051 416 003054 417 003057 421 003154 422 003156 ----------------------------------------------------------- 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