COMPILATION LISTING OF SEGMENT save_dir_info Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/22/86 1536.6 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-10-20,TLNguyen), approve(86-10-22,MCR7559), 15* audit(86-10-22,Gilcrease), install(86-10-22,MR12.0-1196): 16* Fix bug which occurs for directories off the root. 17* END HISTORY COMMENTS */ 18 19 20 save_dir_info: 21 proc; 22 23 24 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 25 /* */ 26 /* Name: save_dir_info */ 27 /* */ 28 /* Copy directory info into a segment for later comparison/checking */ 29 /* */ 30 /* Status: */ 31 /* 0) Created: May, 1973 by THVV */ 32 /* 1) Modified: Sept, 1982 by Jim Lippard - fix bugs */ 33 /* a) properly store only 2 dir ring brackets, instead of 3 */ 34 /* b) delete .dir_info seg if error occurs listing the directory */ 35 /* c) print full pathname of directory on which error occurs */ 36 /* 2) Modified: August 1983 by Jim Lippard to chase links */ 37 /* */ 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 39 40 dcl aclp ptr, 41 al fixed bin(21), /* length of arg */ 42 ap ptr, /* ptr to argument */ 43 areap ptr, /* ptr to listener area, for star */ 44 bitc fixed bin (24), 45 branch_type fixed bin (2), 46 d35 fixed bin (35), d1 fixed bin (1), /* dummies */ 47 db36 bit(36) aligned, 48 dirname char (168), 49 ec fixed bin (35), /* error code */ 50 en char (32), 51 ep ptr, 52 fdir char (168), 53 fent char (32), 54 (i, j, k) fixed bin, 55 LINK fixed bin (2) internal static options (constant) init (0), 56 ll fixed bin, /* number of links */ 57 nacl fixed bin, 58 nargs fixed bin, 59 np ptr, 60 nptr ptr, 61 p ptr, /* ptr to entry returned by star */ 62 ring fixed bin (3) init (4), 63 t fixed bin, /* number of branches */ 64 target_dn char (168), 65 target_en char (32), 66 tdir char (168), 67 (xp, xxp, oldxp, next_xp) ptr, 68 why char (168) aligned init (""); 69 70 dcl (addr, bit, clock, fixed, null, ptr, rel) builtin; 71 72 dcl cleanup condition; 73 74 dcl (error_table_$incorrect_access, 75 error_table_$root) fixed bin(35) ext static; 76 77 dcl arg char(al) based(ap); 78 79 dcl 1 brsbuf aligned, /* auto storage for main dir branch */ 80 2 type bit (2) unal, 81 2 nnames bit (16) unal, 82 2 nrp bit (18) unal, 83 2 dtm bit (36) unal, 84 2 dtu bit (36) unal, 85 2 mode bit (5) unal, 86 2 padding bit (13) unal, 87 2 records bit (18) unal, 88 2 dtd bit (36) unal, 89 2 dtem bit (36) unal, 90 2 acct bit (36) unal, 91 2 curlen bit (12) unal, 92 2 bitcnt bit (24) unal, 93 2 did bit (4) unal, 94 2 mdid bit (4) unal, 95 2 copysw bit (1) unal, 96 2 pad2 bit (9) unal, 97 2 rbs (0:2) bit (6) unal, 98 2 uid bit (36) unal; 99 100 dcl 1 branches based aligned, /* structure returned by star for branch */ 101 2 type bit (2) unal, /* type of branch */ 102 2 nname bit (16) unal, /* number of names */ 103 2 nindex bit (18) unal, /* index in name area */ 104 2 dtm bit (36) unal, /* date & time modified */ 105 2 dtu bit (36) unal, /* ... used */ 106 2 mode bit (5) unal, /* mode w.r.t. me */ 107 2 pad bit (13) unal, 108 2 records bit (18) unal; /* lth */ 109 110 dcl names (100) char (32) aligned based; /* names from star */ 111 112 dcl entries (100) bit (144) aligned based; /* entry structure from star */ 113 114 dcl linkpath char (j) based (np); 115 116 dcl 1 segment_acl (nacl) based (aclp) aligned, 117 2 access_name char (32), 118 2 modes bit (36), 119 2 mbz bit (36), 120 2 statuscode fixed bin (35); 121 122 dcl 1 dir_acl (nacl) based (aclp) aligned, 123 2 access_name char (32), 124 2 modes bit (36), 125 2 statuscode fixed bin (35); 126 127 dcl dummy_area area ((1024)) based (areap); 128 129 dcl absolute_pathname_ entry (char(*), char(*), fixed bin(35)), 130 com_err_ entry options (variable), 131 cu_$arg_count entry (fixed bin, fixed bin(35)), 132 cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)), 133 delete_$ptr entry (ptr, bit(6), char(*), fixed bin(35)), 134 expand_pathname_ entry (char(*), char(*), char(*), fixed bin(35)), 135 expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)), 136 get_system_free_area_ entry (ptr), 137 get_wdir_ entry () returns (char (168)); 138 139 dcl hcs_$get_author entry (char(*), char(*), fixed bin(1), char(*), fixed bin(35)); 140 dcl hcs_$get_bc_author entry (char(*), char(*), char(*), fixed bin(35)); 141 dcl hcs_$get_link_target entry (char(*), char(*), char(*), char(*), fixed bin(35)); 142 dcl hcs_$get_max_length entry (char(*), char(*), fixed bin (19), fixed bin (35)); 143 dcl hcs_$get_safety_sw entry (char(*), char(*), bit(1), fixed bin(35)); 144 dcl hcs_$list_acl entry (char(*), char(*), ptr, ptr, ptr, fixed bin, fixed bin(35)); 145 dcl hcs_$list_dir_acl entry (char(*), char(*), ptr, ptr, ptr, fixed bin, fixed bin(35)); 146 dcl hcs_$list_dir_inacl entry (char(*), char(*), ptr, ptr, ptr, fixed bin, fixed bin(3), fixed bin(35)); 147 dcl hcs_$list_inacl entry (char(*), char(*), ptr, ptr, ptr, fixed bin, fixed bin(3), fixed bin(35)); 148 dcl hcs_$make_seg entry (char(*), char(*), char(*), fixed bin(5), ptr, fixed bin(35)); 149 dcl hcs_$quota_get entry (char(*), fixed bin (18), fixed bin(35), bit(36) aligned, fixed bin, fixed bin(1), 150 fixed bin, fixed bin(35)); 151 dcl hcs_$set_bc_seg entry (ptr, fixed bin(24), fixed bin(35)); 152 dcl hcs_$star_list_ entry (char(*), char(*), fixed bin(3), ptr, fixed bin, fixed bin, ptr, ptr, fixed bin(35)); 153 dcl hcs_$status_long entry (char(*), char(*), fixed bin(1), ptr, ptr, fixed bin(35)); 154 dcl hcs_$status_minf entry (char(*), char(*), fixed bin(1), fixed bin(2), fixed bin(24), fixed bin(35)); 155 dcl hcs_$terminate_noname entry (ptr, fixed bin(35)); 156 dcl hcs_$truncate_seg entry (ptr, fixed bin(19), fixed bin(35)); 157 158 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 159 1 1 /* BEGIN INCLUDE FILE ... saved_dir_info.incl.pl1 */ 1 2 /* Modified 07/10/82 by Jim Lippard to only have 2 dir ring brackets */ 1 3 1 4 dcl 1 fseg based (fptr) aligned, 1 5 2 fpath char (168) unal, 1 6 2 timeof fixed bin (71), 1 7 2 nents fixed bin, 1 8 2 freep fixed bin, 1 9 2 fpad (4) fixed bin, 1 10 2 ffirst fixed bin; 1 11 1 12 dcl fptr ptr; 1 13 1 14 dcl 1 seg_rec based (xp) aligned, 1 15 2 fnext bit (18), 1 16 2 n_names fixed bin, 1 17 2 brstat, 1 18 3 type bit (2) unal, 1 19 3 nnames bit (16) unal, 1 20 3 nrp bit (18) unal, 1 21 3 dtm bit (36) unal, 1 22 3 dtu bit (36) unal, 1 23 3 mode bit (5) unal, 1 24 3 padding bit (13) unal, 1 25 3 records bit (18) unal, 1 26 3 dtd bit (36) unal, 1 27 3 dtem bit (36) unal, 1 28 3 lvid bit (36) unal, 1 29 3 curlen bit (12) unal, 1 30 3 bitcnt bit (24) unal, 1 31 3 pad1 bit (8) unal, 1 32 3 copysw bit (1) unal, 1 33 3 tpd bit (1) unal, 1 34 3 mdir bit (1) unal, 1 35 3 damaged bit (1) unal, 1 36 3 pad2 bit (6) unal, 1 37 3 rbs (0:2) bit (6) unal, 1 38 3 uid bit (36) unal, 1 39 2 bc_author char (32) unal, 1 40 2 author char (32) unal, 1 41 2 max_lth fixed bin (19), 1 42 2 ssw bit (1) unal, 1 43 2 pad0 bit(35) unal, 1 44 2 nacls fixed bin, 1 45 2 acls (dummy refer (seg_rec.nacls)), 1 46 3 access_name char (32), 1 47 3 modes bit (36), 1 48 2 names (dummy refer (seg_rec.n_names)), 1 49 3 name char (32), 1 50 2 end_seg_rec fixed bin; 1 51 1 52 dcl 1 dir_rec based (xp) aligned, 1 53 2 fnext bit (18), 1 54 2 n_names fixed bin, 1 55 2 brstat, 1 56 3 type bit (2) unal, 1 57 3 nnames bit (16) unal, 1 58 3 nrp bit (18) unal, 1 59 3 dtm bit (36) unal, 1 60 3 dtu bit (36) unal, 1 61 3 mode bit (5) unal, 1 62 3 padding bit (13) unal, 1 63 3 records bit (18) unal, 1 64 3 dtd bit (36) unal, 1 65 3 dtem bit (36) unal, 1 66 3 slvid bit (36) unal, 1 67 3 curlen bit (12) unal, 1 68 3 bitcnt bit (24) unal, 1 69 3 pad1 bit (8) unal, 1 70 3 copysw bit (1) unal, 1 71 3 tpd bit (1) unal, 1 72 3 mdir bit (1) unal, /* TRUE if mater dir */ 1 73 3 damaged bit (1) unal, 1 74 3 pad2 bit (6) unal, 1 75 3 rbs (0:1) bit (6) unal, 1 76 3 pad3 bit (6) unal, 1 77 3 uid bit (36) unal, 1 78 2 bc_author char (32) unal, 1 79 2 author char (32) unal, 1 80 2 max_lth fixed bin (19), 1 81 2 ssw bit (1) unal, 1 82 2 pad0 bit(35) unal, 1 83 2 quota fixed bin (18), 1 84 2 nacls fixed bin, 1 85 2 acls (dummy refer (dir_rec.nacls)), 1 86 3 access_name char (32), 1 87 3 modes bit (36), 1 88 2 nisacls fixed bin, 1 89 2 isacls (dummy refer (dir_rec.nisacls)), 1 90 3 access_name char (32), 1 91 3 modes bit (36), 1 92 2 nidacls fixed bin, 1 93 2 idacls (dummy refer (dir_rec.nidacls)), 1 94 3 access_name char (32), 1 95 3 modes bit (36), 1 96 2 ncacls fixed bin, 1 97 2 cacls (dummy refer (dir_rec.ncacls)), 1 98 3 access_name char (32), 1 99 3 modes bit (36), 1 100 2 names (dummy refer (dir_rec.n_names)), 1 101 3 name char (32), 1 102 2 end_dir_rec fixed bin; 1 103 1 104 dcl 1 link_rec based (xp) aligned, 1 105 2 fnext bit (18), 1 106 2 n_names fixed bin, 1 107 2 brstat, 1 108 3 type bit (2) unal, 1 109 3 nnames bit (16) unal, 1 110 3 nrp bit (18) unal, 1 111 3 dtem bit (36) unal, 1 112 3 dtd bit (36) unal, 1 113 3 pnl bit (18) unal, 1 114 3 pnrp bit (18) unal, 1 115 2 target char (168), 1 116 2 names (dummy refer (link_rec.n_names)), 1 117 3 name char (32), 1 118 2 end_link_rec fixed bin; 1 119 1 120 dcl 1 aclval (nacl) based (tp) aligned, 1 121 2 access_name char (32), 1 122 2 modes bit (36); 1 123 1 124 dcl tp ptr; 1 125 1 126 /* END INCLUDE FILE ... saved_dir_info.incl.pl1 */ 160 161 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 162 163 164 /* ======================================================= */ 165 166 call cu_$arg_count (nargs, ec); 167 if ec ^= 0 then do; 168 call com_err_ (ec, "save_dir_info"); 169 return; 170 end; 171 172 call cu_$arg_ptr (1, ap, al, ec); 173 if ec ^= 0 then do; 174 er: call com_err_ (ec, "save_dir_info", "^a", why); 175 return; 176 end; 177 call absolute_pathname_ (arg, tdir, ec); 178 call expand_pathname_ (arg, dirname, en, ec); 179 if ec ^= 0 then go to er; 180 call hcs_$status_minf (dirname, en, 0, branch_type, 0, ec); 181 if ec ^= 0 & ec ^= error_table_$root then do; 182 why = pathname_ (dirname, en); 183 go to er; 184 end; 185 if branch_type = LINK then do; /* a link to chase */ 186 call hcs_$get_link_target (dirname, en, target_dn, target_en, ec); 187 if ec ^= 0 then do; 188 why = pathname_ (dirname, en); 189 go to er; 190 end; 191 dirname = target_dn; 192 en = target_en; 193 end; 194 195 call cu_$arg_ptr (2, ap, al, ec); 196 if ec ^= 0 then do; 197 if en = "" then 198 fdir = pathname_ (get_wdir_(), "root"); 199 else fdir = pathname_ (get_wdir_(), en); 200 end; 201 else fdir = arg; 202 call expand_pathname_$add_suffix (fdir, "dir_info", fdir, fent, ec); 203 if ec ^= 0 then do; 204 why = fdir; 205 go to er; 206 end; 207 208 fptr = null; 209 ep = null; 210 nptr = null; 211 on cleanup call janitor(); 212 213 why = fent; 214 call hcs_$make_seg (fdir, fent, "", 1011b, fptr, ec); 215 if fptr = null then go to error_exit; 216 call hcs_$truncate_seg (fptr, 0, ec); 217 if ec ^= 0 then go to error_exit; 218 fseg.fpath = tdir; 219 fseg.timeof = clock(); 220 xp = addr (fseg.ffirst); 221 oldxp = null; 222 223 call get_system_free_area_ (areap); /* obtain area */ 224 225 p = addr (brsbuf); 226 why = tdir; 227 if en = "" then do; /* Need special code for the root. */ 228 dir_rec.type = "10"b; 229 dir_rec.bc_author, dir_rec.author = "Initializer.SysDaemon.z"; 230 dir_rec.max_lth = 0; 231 dir_rec.ssw = "0"b; 232 call hcs_$quota_get (tdir, dir_rec.quota, d35, db36, j, d1, j, ec); 233 dir_rec.nacls = 0; 234 dir_rec.nisacls = 0; 235 dir_rec.nidacls = 0; 236 dir_rec.n_names = 1; 237 tp = addr (dir_rec.names); 238 tp -> names (1) = ">"; 239 next_xp = addr (dir_rec.end_dir_rec); 240 dir_rec.fnext = rel (next_xp); 241 oldxp = xp; 242 xp = next_xp; 243 end; 244 else do; 245 call hcs_$status_long (dirname, en, 0, p, areap, ec); 246 if ec ^= 0 then go to error_exit; 247 if brsbuf.mode & bit(S_ACCESS_BIN) then; /* complain now if user has no s access to dir */ 248 else do; /* being saved. */ 249 ec = error_table_$incorrect_access; 250 go to error_exit; 251 end; 252 k = 1; 253 nptr = ptr (areap, brsbuf.nrp); 254 call sdir; 255 if ec ^= 0 then go to error_exit; 256 free nptr -> names in (dummy_area); 257 end; 258 259 dirname = tdir; 260 call hcs_$star_list_ (dirname, "**", 3, areap, t, ll, ep, nptr, ec); 261 if ec = 0 then do; 262 do i = 1 to t + ll; 263 p = addr (ep -> entries (i)); 264 k = fixed (p -> branches.nindex, 18); 265 en = nptr -> names (k); 266 j = fixed (p -> branches.type); 267 if j = 1 then call sseg; 268 else if j = 0 then call slink; 269 else if j = 2 then call sdir; 270 if ec ^= 0 then 271 call com_err_ (ec, "save_dir_info", "^a^[>^]^a", dirname, (dirname ^= ">"), en); 272 fseg.nents = fseg.nents + 1; 273 end; 274 free ep -> entries in (dummy_area); /* free up area */ 275 free nptr -> names in (dummy_area); /* ... */ 276 end; 277 if oldxp ^= null then oldxp -> seg_rec.fnext = "0"b; 278 fseg.freep = fixed (rel (next_xp), 18); 279 bitc = 36 * fseg.freep; 280 call hcs_$set_bc_seg (fptr, bitc, ec); 281 call hcs_$terminate_noname (fptr, ec); 282 283 return; 284 285 error_exit: 286 call com_err_ (ec, "save_dir_info", why); 287 call janitor(); 288 return; 289 290 /* ------------------------------------------------------ */ 291 292 janitor: proc; 293 294 if ep ^= null then free ep -> entries in (dummy_area); 295 if nptr ^= null then free nptr -> names in (dummy_area); 296 if fptr ^= null then 297 call delete_$ptr (fptr, "000100"b, "save_dir_info", ec); 298 299 end janitor; 300 301 302 303 sseg: proc; 304 305 ec = 0; 306 xxp = addr (seg_rec.brstat); 307 call hcs_$status_long (dirname, en, 0, xxp, null, ec); 308 if ec ^= 0 then return; 309 call hcs_$get_bc_author (dirname, en, seg_rec.bc_author, ec); 310 call hcs_$get_author (dirname, en, 0, seg_rec.author, ec); 311 call hcs_$get_max_length (dirname, en, seg_rec.max_lth, ec); 312 call hcs_$get_safety_sw (dirname, en, seg_rec.ssw, ec); 313 call hcs_$list_acl (dirname, en, areap, aclp, null, nacl, ec); 314 seg_rec.nacls = nacl; 315 tp = addr (seg_rec.acls); 316 do j = 1 to nacl; 317 aclval.access_name (j) = segment_acl.access_name (j); 318 aclval.modes (j) = segment_acl.modes (j); 319 end; 320 if nacl > 0 then free aclp -> segment_acl in (dummy_area); 321 seg_rec.n_names = fixed (p -> branches.nname, 16); 322 tp = addr (seg_rec.names); 323 do j = 1 to seg_rec.n_names; 324 tp -> names (j) = nptr -> names (j+k-1); 325 end; 326 next_xp = addr (seg_rec.end_seg_rec); 327 seg_rec.fnext = rel (next_xp); 328 oldxp = xp; 329 xp = next_xp; 330 331 end sseg; 332 333 sdir: proc; 334 335 dcl tdir char (168); 336 337 ec = 0; 338 xxp = addr (dir_rec.brstat); 339 call hcs_$status_long (dirname, en, 0, xxp, null, ec); 340 if ec ^= 0 then return; 341 dir_rec.pad3 = "07"b3; 342 call hcs_$get_safety_sw (dirname, en, dir_rec.ssw, ec); 343 /* fixed bug for TR#20502 */ 344 tdir = pathname_ (dirname, en); 345 /* ending of bug fixes */ 346 call hcs_$quota_get (tdir, dir_rec.quota, d35, db36, j, d1, j, ec); 347 if ec ^= 0 then call com_err_ (ec, "save_dir_info", "Cannot get quota of ^a", en); 348 call hcs_$get_bc_author (dirname, en, dir_rec.bc_author, ec); 349 call hcs_$get_author (dirname, en, 0, dir_rec.author, ec); 350 call hcs_$list_dir_acl (dirname, en, areap, aclp, null, nacl, ec); 351 dir_rec.nacls = nacl; 352 tp = addr (dir_rec.acls); 353 do j = 1 to nacl; 354 aclval (j).access_name = dir_acl (j).access_name; 355 aclval (j).modes = dir_acl (j).modes; 356 end; 357 if nacl > 0 then free aclp -> dir_acl in (dummy_area); 358 call hcs_$list_inacl (dirname, en, areap, aclp, null, nacl, ring, ec); 359 if ec ^= 0 then do; 360 call com_err_ (ec, "save_dir_info", "Cannot list inacl of ^a", en); 361 go to gnam; 362 end; 363 dir_rec.nisacls = nacl; 364 tp = addr (dir_rec.isacls); 365 do j = 1 to nacl; 366 aclval (j).access_name = segment_acl.access_name (j); 367 aclval (j).modes = segment_acl.modes (j); 368 end; 369 if nacl > 0 then free aclp -> dir_acl in (dummy_area); 370 call hcs_$list_dir_inacl (dirname, en, areap, aclp, null, nacl, ring, ec); 371 dir_rec.nidacls = nacl; 372 tp = addr (dir_rec.idacls); 373 do j = 1 to nacl; 374 aclval (j).access_name = dir_acl.access_name (j); 375 aclval (j).modes = dir_acl.modes (j); 376 end; 377 if nacl > 0 then free aclp -> dir_acl in (dummy_area); 378 379 gnam: dir_rec.n_names = fixed (p -> branches.nname, 16); 380 tp = addr (dir_rec.names); 381 do j = 1 to dir_rec.n_names; 382 tp -> names (j) = nptr -> names (j+k-1); 383 end; 384 next_xp = addr (dir_rec.end_dir_rec); 385 dir_rec.fnext = rel (next_xp); 386 oldxp = xp; 387 xp = next_xp; 388 389 end sdir; 390 391 slink: proc; 392 393 link_rec.n_names = fixed (p -> branches.nname, 16); 394 tp = addr (link_rec.names); 395 do j = 1 to link_rec.n_names; 396 tp -> names (j) = nptr -> names (j+k-1); 397 end; 398 ec = 0; 399 xxp = addr (link_rec.brstat); 400 call hcs_$status_long (dirname, en, 0, xxp, areap, ec); 401 if ec ^= 0 then return; 402 j = fixed (link_rec.brstat.pnl, 18); 403 np = ptr (areap, link_rec.brstat.pnrp); 404 link_rec.target = linkpath; 405 np = ptr (areap, link_rec.nrp); 406 free np -> names in (dummy_area); 407 next_xp = addr (link_rec.end_link_rec); 408 link_rec.fnext = rel (next_xp); 409 oldxp = xp; 410 xp = next_xp; 411 412 end slink; 413 414 end save_dir_info; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/22/86 1536.6 save_dir_info.pl1 >spec>install>1196>save_dir_info.pl1 160 1 11/19/82 1625.1 saved_dir_info.incl.pl1 >ldd>include>saved_dir_info.incl.pl1 162 2 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. LINK constant fixed bin(2,0) initial dcl 40 ref 185 S_ACCESS_BIN constant fixed bin(5,0) initial dcl 2-36 ref 247 absolute_pathname_ 000014 constant entry external dcl 129 ref 177 access_name based char(32) array level 2 in structure "dir_acl" dcl 122 in procedure "save_dir_info" ref 354 374 access_name based char(32) array level 2 in structure "aclval" dcl 1-120 in procedure "save_dir_info" set ref 317* 354* 366* 374* access_name based char(32) array level 2 in structure "segment_acl" dcl 116 in procedure "save_dir_info" ref 317 366 aclp 000100 automatic pointer dcl 40 set ref 313* 317 318 320 350* 354 355 357 358* 366 367 369 370* 374 375 377 acls 37 based structure array level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 315 acls 40 based structure array level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 352 aclval based structure array level 1 dcl 1-120 addr builtin function dcl 70 ref 220 225 237 239 263 306 315 322 326 338 352 364 372 380 384 394 399 407 al 000102 automatic fixed bin(21,0) dcl 40 set ref 172* 177 177 178 178 195* 201 ap 000104 automatic pointer dcl 40 set ref 172* 177 178 195* 201 areap 000106 automatic pointer dcl 40 set ref 223* 245* 253 256 260* 274 275 294 295 313* 320 350* 357 358* 369 370* 377 400* 403 405 406 arg based char unaligned dcl 77 set ref 177* 178* 201 author 24 based char(32) level 2 in structure "dir_rec" packed unaligned dcl 1-52 in procedure "save_dir_info" set ref 229* 349* author 24 based char(32) level 2 in structure "seg_rec" packed unaligned dcl 1-14 in procedure "save_dir_info" set ref 310* bc_author 14 based char(32) level 2 in structure "dir_rec" packed unaligned dcl 1-52 in procedure "save_dir_info" set ref 229* 348* bc_author 14 based char(32) level 2 in structure "seg_rec" packed unaligned dcl 1-14 in procedure "save_dir_info" set ref 309* bit builtin function dcl 70 ref 247 bitc 000110 automatic fixed bin(24,0) dcl 40 set ref 279* 280* branch_type 000111 automatic fixed bin(2,0) dcl 40 set ref 180* 185 branches based structure level 1 dcl 100 brsbuf 000526 automatic structure level 1 dcl 79 set ref 225 brstat 2 based structure level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 338 brstat 2 based structure level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 306 brstat 2 based structure level 2 in structure "link_rec" dcl 1-104 in procedure "save_dir_info" set ref 399 cleanup 000520 stack reference condition dcl 72 ref 211 clock builtin function dcl 70 ref 219 com_err_ 000016 constant entry external dcl 129 ref 168 174 270 285 347 360 cu_$arg_count 000020 constant entry external dcl 129 ref 166 cu_$arg_ptr 000022 constant entry external dcl 129 ref 172 195 d1 000113 automatic fixed bin(1,0) dcl 40 set ref 232* 346* d35 000112 automatic fixed bin(35,0) dcl 40 set ref 232* 346* db36 000114 automatic bit(36) dcl 40 set ref 232* 346* delete_$ptr 000024 constant entry external dcl 129 ref 296 dir_acl based structure array level 1 dcl 122 ref 357 369 377 dir_rec based structure level 1 dcl 1-52 dirname 000115 automatic char(168) unaligned dcl 40 set ref 178* 180* 182* 186* 188* 191* 245* 259* 260* 270* 270 307* 309* 310* 311* 312* 313* 339* 342* 344* 348* 349* 350* 358* 370* 400* dummy_area based area(1024) dcl 127 ref 256 274 275 294 295 320 357 369 377 406 ec 000167 automatic fixed bin(35,0) dcl 40 set ref 166* 167 168* 172* 173 174* 177* 178* 179 180* 181 181 186* 187 195* 196 202* 203 214* 216* 217 232* 245* 246 249* 255 260* 261 270 270* 280* 281* 285* 296* 305* 307* 308 309* 310* 311* 312* 313* 337* 339* 340 342* 346* 347 347* 348* 349* 350* 358* 359 360* 370* 398* 400* 401 en 000170 automatic char(32) unaligned dcl 40 set ref 178* 180* 182* 186* 188* 192* 197 199* 227 245* 265* 270* 307* 309* 310* 311* 312* 313* 339* 342* 344* 347* 348* 349* 350* 358* 360* 370* 400* end_dir_rec based fixed bin(17,0) level 2 dcl 1-52 set ref 239 384 end_link_rec based fixed bin(17,0) level 2 dcl 1-104 set ref 407 end_seg_rec based fixed bin(17,0) level 2 dcl 1-14 set ref 326 entries based bit(144) array dcl 112 set ref 263 274 294 ep 000200 automatic pointer dcl 40 set ref 209* 260* 263 274 294 294 error_table_$incorrect_access 000010 external static fixed bin(35,0) dcl 74 ref 249 error_table_$root 000012 external static fixed bin(35,0) dcl 74 ref 181 expand_pathname_ 000026 constant entry external dcl 129 ref 178 expand_pathname_$add_suffix 000030 constant entry external dcl 129 ref 202 fdir 000202 automatic char(168) unaligned dcl 40 set ref 197* 199* 201* 202* 202* 204 214* fent 000254 automatic char(32) unaligned dcl 40 set ref 202* 213 214* ffirst 62 based fixed bin(17,0) level 2 dcl 1-4 set ref 220 fixed builtin function dcl 70 ref 264 266 278 321 379 393 402 fnext based bit(18) level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 240* 385* fnext based bit(18) level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 277* 327* fnext based bit(18) level 2 in structure "link_rec" dcl 1-104 in procedure "save_dir_info" set ref 408* fpath based char(168) level 2 packed unaligned dcl 1-4 set ref 218* fptr 000540 automatic pointer dcl 1-12 set ref 208* 214* 215 216* 218 219 220 272 272 278 279 280* 281* 296 296* freep 55 based fixed bin(17,0) level 2 dcl 1-4 set ref 278* 279 fseg based structure level 1 dcl 1-4 get_system_free_area_ 000032 constant entry external dcl 129 ref 223 get_wdir_ 000034 constant entry external dcl 129 ref 197 197 199 199 hcs_$get_author 000036 constant entry external dcl 139 ref 310 349 hcs_$get_bc_author 000040 constant entry external dcl 140 ref 309 348 hcs_$get_link_target 000042 constant entry external dcl 141 ref 186 hcs_$get_max_length 000044 constant entry external dcl 142 ref 311 hcs_$get_safety_sw 000046 constant entry external dcl 143 ref 312 342 hcs_$list_acl 000050 constant entry external dcl 144 ref 313 hcs_$list_dir_acl 000052 constant entry external dcl 145 ref 350 hcs_$list_dir_inacl 000054 constant entry external dcl 146 ref 370 hcs_$list_inacl 000056 constant entry external dcl 147 ref 358 hcs_$make_seg 000060 constant entry external dcl 148 ref 214 hcs_$quota_get 000062 constant entry external dcl 149 ref 232 346 hcs_$set_bc_seg 000064 constant entry external dcl 151 ref 280 hcs_$star_list_ 000066 constant entry external dcl 152 ref 260 hcs_$status_long 000070 constant entry external dcl 153 ref 245 307 339 400 hcs_$status_minf 000072 constant entry external dcl 154 ref 180 hcs_$terminate_noname 000074 constant entry external dcl 155 ref 281 hcs_$truncate_seg 000076 constant entry external dcl 156 ref 216 i 000264 automatic fixed bin(17,0) dcl 40 set ref 262* 263* idacls based structure array level 2 dcl 1-52 set ref 372 isacls based structure array level 2 dcl 1-52 set ref 364 j 000265 automatic fixed bin(17,0) dcl 40 set ref 232* 232* 266* 267 268 269 316* 317 317 318 318* 323* 324 324* 346* 346* 353* 354 354 355 355* 365* 366 366 367 367* 373* 374 374 375 375* 381* 382 382* 395* 396 396* 402* 404 k 000266 automatic fixed bin(17,0) dcl 40 set ref 252* 264* 265 324 382 396 link_rec based structure level 1 dcl 1-104 linkpath based char unaligned dcl 114 ref 404 ll 000267 automatic fixed bin(17,0) dcl 40 set ref 260* 262 max_lth 34 based fixed bin(19,0) level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 230* max_lth 34 based fixed bin(19,0) level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 311* mode 3 000526 automatic bit(5) level 2 packed unaligned dcl 79 set ref 247 modes 10 based bit(36) array level 2 in structure "aclval" dcl 1-120 in procedure "save_dir_info" set ref 318* 355* 367* 375* modes 10 based bit(36) array level 2 in structure "dir_acl" dcl 122 in procedure "save_dir_info" ref 355 375 modes 10 based bit(36) array level 2 in structure "segment_acl" dcl 116 in procedure "save_dir_info" ref 318 367 n_names 1 based fixed bin(17,0) level 2 in structure "link_rec" dcl 1-104 in procedure "save_dir_info" set ref 393* 395 407 n_names 1 based fixed bin(17,0) level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 236* 239 379* 381 384 n_names 1 based fixed bin(17,0) level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 321* 323 326 nacl 000270 automatic fixed bin(17,0) dcl 40 set ref 313* 314 316 320 320 350* 351 353 357 357 358* 363 365 369 369 370* 371 373 377 377 nacls 37 based fixed bin(17,0) level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 233* 234 235 235 237 237 237 237 237 237 237 237 239 239 239 239 239 239 239 239 351* 363 364 371 371 372 372 380 380 380 380 380 380 380 380 384 384 384 384 384 384 384 384 nacls 36 based fixed bin(17,0) level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 314* 322 326 names 60 based structure array level 2 in structure "link_rec" dcl 1-104 in procedure "save_dir_info" set ref 394 names based structure array level 2 in structure "seg_rec" dcl 1-14 in procedure "save_dir_info" set ref 322 names based structure array level 2 in structure "dir_rec" dcl 1-52 in procedure "save_dir_info" set ref 237 380 names based char(32) array dcl 110 in procedure "save_dir_info" set ref 238* 256 265 275 295 324* 324 382* 382 396* 396 406 nargs 000271 automatic fixed bin(17,0) dcl 40 set ref 166* ncacls based fixed bin(17,0) level 2 dcl 1-52 ref 237 239 380 384 nents 54 based fixed bin(17,0) level 2 dcl 1-4 set ref 272* 272 next_xp 000444 automatic pointer dcl 40 set ref 239* 240 242 278 326* 327 329 384* 385 387 407* 408 410 nidacls based fixed bin(17,0) level 2 dcl 1-52 set ref 235* 237 237 239 239 371* 380 380 384 384 nindex 0(18) based bit(18) level 2 packed unaligned dcl 100 ref 264 nisacls based fixed bin(17,0) level 2 dcl 1-52 set ref 234* 235 237 237 237 237 239 239 239 239 363* 371 372 380 380 380 380 384 384 384 384 nname 0(02) based bit(16) level 2 packed unaligned dcl 100 ref 321 379 393 np 000272 automatic pointer dcl 40 set ref 403* 404 405* 406 nptr 000274 automatic pointer dcl 40 set ref 210* 253* 256 260* 265 275 295 295 324 382 396 nrp 2(18) based bit(18) level 3 in structure "link_rec" packed unaligned dcl 1-104 in procedure "save_dir_info" set ref 405 nrp 0(18) 000526 automatic bit(18) level 2 in structure "brsbuf" packed unaligned dcl 79 in procedure "save_dir_info" set ref 253 null builtin function dcl 70 ref 208 209 210 215 221 277 294 295 296 307 307 313 313 339 339 350 350 358 358 370 370 oldxp 000442 automatic pointer dcl 40 set ref 221* 241* 277 277 328* 386* 409* p 000276 automatic pointer dcl 40 set ref 225* 245* 263* 264 266 321 379 393 pad3 12(30) based bit(6) level 3 packed unaligned dcl 1-52 set ref 341* pathname_ 000100 constant entry external dcl 158 ref 182 188 197 199 344 pnl 5 based bit(18) level 3 packed unaligned dcl 1-104 set ref 402 pnrp 5(18) based bit(18) level 3 packed unaligned dcl 1-104 set ref 403 ptr builtin function dcl 70 ref 253 403 405 quota 36 based fixed bin(18,0) level 2 dcl 1-52 set ref 232* 346* rel builtin function dcl 70 ref 240 278 327 385 408 ring 000300 automatic fixed bin(3,0) initial dcl 40 set ref 40* 358* 370* seg_rec based structure level 1 dcl 1-14 segment_acl based structure array level 1 dcl 116 ref 320 ssw 35 based bit(1) level 2 in structure "dir_rec" packed unaligned dcl 1-52 in procedure "save_dir_info" set ref 231* 342* ssw 35 based bit(1) level 2 in structure "seg_rec" packed unaligned dcl 1-14 in procedure "save_dir_info" set ref 312* t 000301 automatic fixed bin(17,0) dcl 40 set ref 260* 262 target 6 based char(168) level 2 dcl 1-104 set ref 404* target_dn 000302 automatic char(168) unaligned dcl 40 set ref 186* 191 target_en 000354 automatic char(32) unaligned dcl 40 set ref 186* 192 tdir 000564 automatic char(168) unaligned dcl 335 in procedure "sdir" set ref 344* 346* tdir 000364 automatic char(168) unaligned dcl 40 in procedure "save_dir_info" set ref 177* 218 226 232* 259 timeof 52 based fixed bin(71,0) level 2 dcl 1-4 set ref 219* tp 000542 automatic pointer dcl 1-124 set ref 237* 238 315* 317 318 322* 324 352* 354 355 364* 366 367 372* 374 375 380* 382 394* 396 type 2 based bit(2) level 3 in structure "dir_rec" packed unaligned dcl 1-52 in procedure "save_dir_info" set ref 228* type based bit(2) level 2 in structure "branches" packed unaligned dcl 100 in procedure "save_dir_info" ref 266 why 000446 automatic char(168) initial dcl 40 set ref 40* 174* 182* 188* 204* 213* 226* 285* xp 000436 automatic pointer dcl 40 set ref 220* 228 229 229 230 231 232 233 234 235 236 237 239 240 241 242* 306 309 310 311 312 314 315 321 322 323 326 327 328 329* 338 341 342 346 348 349 351 352 363 364 371 372 379 380 381 384 385 386 387* 393 394 395 399 402 403 404 405 407 408 409 410* xxp 000440 automatic pointer dcl 40 set ref 306* 307* 338* 339* 399* 400* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-33 E_ACCESS internal static bit(3) initial unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 M_ACCESS internal static bit(3) initial unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 REW_ACCESS internal static bit(3) initial unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS internal static bit(3) initial unaligned dcl 2-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 S_ACCESS internal static bit(3) initial unaligned dcl 2-11 W_ACCESS internal static bit(3) initial unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 NAMES DECLARED BY EXPLICIT CONTEXT. er 000165 constant label dcl 174 ref 179 183 189 205 error_exit 001512 constant label dcl 285 ref 215 217 246 250 255 gnam 003135 constant label dcl 379 set ref 361 janitor 001547 constant entry internal dcl 292 ref 211 287 save_dir_info 000074 constant entry external dcl 20 sdir 002220 constant entry internal dcl 333 ref 254 269 slink 003264 constant entry internal dcl 391 ref 268 sseg 001635 constant entry internal dcl 303 ref 267 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3772 4074 3424 4002 Length 4360 3424 102 250 345 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME save_dir_info 702 external procedure is an external procedure. on unit on line 211 64 on unit janitor 88 internal procedure is called by several nonquick procedures. sseg internal procedure shares stack frame of external procedure save_dir_info. sdir internal procedure shares stack frame of external procedure save_dir_info. slink internal procedure shares stack frame of external procedure save_dir_info. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME save_dir_info 000100 aclp save_dir_info 000102 al save_dir_info 000104 ap save_dir_info 000106 areap save_dir_info 000110 bitc save_dir_info 000111 branch_type save_dir_info 000112 d35 save_dir_info 000113 d1 save_dir_info 000114 db36 save_dir_info 000115 dirname save_dir_info 000167 ec save_dir_info 000170 en save_dir_info 000200 ep save_dir_info 000202 fdir save_dir_info 000254 fent save_dir_info 000264 i save_dir_info 000265 j save_dir_info 000266 k save_dir_info 000267 ll save_dir_info 000270 nacl save_dir_info 000271 nargs save_dir_info 000272 np save_dir_info 000274 nptr save_dir_info 000276 p save_dir_info 000300 ring save_dir_info 000301 t save_dir_info 000302 target_dn save_dir_info 000354 target_en save_dir_info 000364 tdir save_dir_info 000436 xp save_dir_info 000440 xxp save_dir_info 000442 oldxp save_dir_info 000444 next_xp save_dir_info 000446 why save_dir_info 000526 brsbuf save_dir_info 000540 fptr save_dir_info 000542 tp save_dir_info 000564 tdir sdir THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry int_entry op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ com_err_ cu_$arg_count cu_$arg_ptr delete_$ptr expand_pathname_ expand_pathname_$add_suffix get_system_free_area_ get_wdir_ hcs_$get_author hcs_$get_bc_author hcs_$get_link_target hcs_$get_max_length hcs_$get_safety_sw hcs_$list_acl hcs_$list_dir_acl hcs_$list_dir_inacl hcs_$list_inacl hcs_$make_seg hcs_$quota_get hcs_$set_bc_seg hcs_$star_list_ hcs_$status_long hcs_$status_minf hcs_$terminate_noname hcs_$truncate_seg pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$incorrect_access error_table_$root LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000073 40 000101 166 000106 167 000116 168 000120 169 000143 172 000144 173 000163 174 000165 175 000222 177 000223 178 000247 179 000277 180 000301 181 000340 182 000345 183 000367 185 000370 186 000372 187 000421 188 000423 189 000446 191 000447 192 000452 195 000455 196 000474 197 000476 199 000535 200 000565 201 000566 202 000573 203 000625 204 000627 205 000632 208 000633 209 000635 210 000636 211 000637 213 000661 214 000664 215 000723 216 000727 217 000743 218 000745 219 000751 220 000754 221 000756 223 000760 225 000767 226 000771 227 000774 228 001000 229 001005 230 001013 231 001014 232 001016 233 001061 234 001063 235 001066 236 001100 237 001102 238 001133 239 001136 240 001144 241 001146 242 001147 243 001150 245 001151 246 001206 247 001210 249 001222 250 001225 252 001226 253 001230 254 001235 255 001236 256 001240 259 001242 260 001245 261 001317 262 001321 263 001331 264 001335 265 001340 266 001346 267 001351 268 001355 269 001361 270 001364 272 001442 273 001444 274 001446 275 001450 277 001452 278 001457 279 001463 280 001465 281 001500 283 001511 285 001512 287 001541 288 001545 292 001546 294 001554 295 001563 296 001572 299 001634 303 001635 305 001636 306 001637 307 001642 308 001701 309 001704 310 001731 311 001763 312 002011 313 002037 314 002100 315 002103 316 002105 317 002115 318 002130 319 002134 320 002136 321 002143 322 002150 323 002154 324 002163 325 002177 326 002201 327 002213 328 002215 329 002216 331 002217 333 002220 337 002221 338 002222 339 002225 340 002264 341 002267 342 002272 344 002317 346 002337 347 002403 348 002443 349 002470 350 002522 351 002563 352 002566 353 002570 354 002577 355 002612 356 002616 357 002620 358 002625 359 002672 360 002674 361 002732 363 002733 364 002741 365 002745 366 002755 367 002770 368 002774 369 002776 370 003003 371 003050 372 003065 373 003100 374 003107 375 003122 376 003126 377 003130 379 003135 380 003142 381 003173 382 003203 383 003217 384 003221 385 003257 386 003261 387 003262 389 003263 391 003264 393 003265 394 003272 395 003274 396 003303 397 003317 398 003321 399 003322 400 003325 401 003362 402 003365 403 003371 404 003376 405 003401 406 003406 407 003410 408 003415 409 003417 410 003420 412 003421 ----------------------------------------------------------- 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