COMPILATION LISTING OF SEGMENT append 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 1048.8 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(89-02-27,TLNguyen), approve(89-02-27,MCR8049), 18* audit(89-02-28,Parisek), install(89-03-15,MR12.3-1025): 19* a. removed create_branch_version_1. 20* b. fixed size error. 21* c. fixed stringsize error. 22* 2) change(89-03-31,TLNguyen), approve(89-03-31,PBF8049), 23* audit(89-03-31,Farley), install(89-04-24,MR12.3-1031): 24* Reinstated the check for create_branch_version_1 in order to retain 25* binary compatibility. 26* END HISTORY COMMENTS */ 27 28 29 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 30 31 append: procedure; 32 33 /* Modified 85-04-01 by Keith Loepere for new access_audit_check_ep_. */ 34 /* Modified 85-01-30 by Keith Loepere to get dtem right. */ 35 /* Modified 84-02-11 by Greg Texada to reference the arguments correctly in retv entry */ 36 /* Modified 84-12-14 by Keith Loepere to allow setting dir quota for dirs */ 37 /* Modified 84-11-27 by EJ Sharpe to change access_audit_ arg list */ 38 /* Modified 10/15/84 by Keith Loepere to explicitly activate dir being created. 39* Also to prevent creation of upgraded MSFs. Also for audit info. Also for 40* admin_gate_$create_branch_ */ 41 /* Modified 1984-10-01 BIM to fix retv max_auth for ^ac_sw case. */ 42 /* Modified 07/10/84 by Keith Loepere to use the new dc_find. */ 43 /* Modified 04/02/84 by K. Loepere to restrict link pathnames to valid 7-bit ASCII characters. */ 44 /* Modified 84-03-16 BIM to make retv work with AIM. 45* this includes TEMPORARY change to set soos on multi-class 46* objects retrieved. */ 47 /* Modified 05/07/82 by J. Bongiovanni to fix bug in cross-retrieval */ 48 /* Modified 02/15/82 by J. Bongiovanni to fix bug in duplicate uid check */ 49 /* Modified 11/01/79 by Mike Grady to set sons lvid for retv case (used by adopt seg) */ 50 /* Modified 02/19/79 by C. D. Tavares to set dir ex ring brackets and to correct several bad_ring_brackets err codes */ 51 /* modified 6/77 by D. Vinograd to check for duplicate uids in volume retriever case */ 52 /* modified 4/77 by M. Weaver to replace makeknown with makeknown_ */ 53 /* modified by D. Vinograd 9/76 to add entry retv. This entry used by the volume 54* retriever to append an entry structure passed in by the caller. */ 55 /* modified by S.E. Barr 8/76 to use variable sized hash tables */ 56 /* modified by R. Bratt May 31, 1976 to call find_$finished */ 57 /* modified by L. Scheffler March 1976 to use info-only entry in dir_control_error */ 58 /* modified by Larry Johnson March 1976 for appending master dirs */ 59 /* modified by Bernard S. Greenberg, 4-24-75 for NSS */ 60 /* modified by Kobziar 4-11-75 to filter unused bits from access class */ 61 /* modified by Kobziar 10-20-74 to add new entry: create_branch */ 62 /* modified by Kobziar on 6-20-74 to copy access_class from parent to branch */ 63 /* modified by Kobziar on 11-15-73 to take out "a" mode on segs */ 64 65 /* 66* append$branch: Creates a non directory branch in the hierarchy and places 67* the current user on the acl with the specified mode. 68* 69* USAGE: call append$branch(directory_name, entry_name, access_mode, error_code) 70* 71* 1. directory_name char(*) - - - directory path name of new branch 72* 2. entry_name char(*) - - - created branch's name 73* 3. access_mode fixed bin(5) - - - mode desired on the created branch 74* 4. error_code fixed bin(35) - - - file system error code (Output) 75* 76* Default values are: 77* 1. Ringbrackets set from users validation level. 78* 2. User id set to creator User id with tag = "*". 79* 3. Copy switch set to off. 80* 4. Bit count set to 0. 81* 82* append$link: Creates a link in a specified directory with a given name 83* to an other specified segment. 84* 85* USAGE: call append$link(directory_name, entry_name, link_to_name, error_code) 86* 87* 1. directory_name char(*) - - - directory path name of new link 88* 2. entry_name char(*) - - - created link name 89* 3. link_to_name char(*) - - - path name of segment to be linked to 90* 4. error_code fixed bin(17) - - - file system error code (Output) 91* 92* append$branchx: Creates either a directory or non directory entry as specified with 93* all the attributes described below as specified. 94* 95* USAGE: call append$branhcx(directory_name, entry_name, access_mode, ringbrackets, 96* user_id, directory_switch, copy_switch, bit_count, 97* error_code) 98* 99* 1. directory_name char(*) - - - directory path name of new branch 100* 2. entry_name char(*) - - - created branch's entry name 101* 3. acces_mode fixed bin(5) - - - mode desired on the created branch 102* 4. ringbrackets arry(3) - - - fixed bin(6) - - - ring brackets desired on the created branch 103* 5. user_id char(*) - - - user_id desired on the acl 104* 6. directory_switch fixed bin(1) - - - directory branch switch 105* 7. copy_switch fixed bin(1) - - - segment copy switch 106* 8. bit_count fixed bin(24) - - - segment length in bits 107* 9. error_code fixed bin(17) - - - file system error code (Output) 108* 109* append$master_dir: create a master directory for a logical volume. 110* Called from ring 1 after setting things up with the vol registration stuff. 111* 112* USAGE: call append$master_dir(directory_name, entry_name, access_mode, ringbrackets, 113* user_id, sons_lvid, error_code); 114* 115* 1-5. Same as branchx 116* 6. sons_lvid bit (36) - - - logical vol ID for sons 117* 7. error_code fixed bin - - - error code (output) 118* 119* append$create_branch_: Allows the setting of the access class field in a branch and and the setting of 120* quota in new directories. admin_create_branch_ is the same but allows creation in lower class dirs. 121* 122* USAGE: call append$create_branch_(directory_name, entry_name, arg_ptr, code) 123* 124* 1. - 2. as in branchx 125* 3. arg_ptr ptr - - - pointer to a create_branch_info as given in 126* create_branch_info.incl.pl1 127* 4. error_code as above. 128**/ 129 130 131 /* Parameters */ 132 133 dcl a_arg_ptr ptr parameter; 134 dcl a_bitcnt fixed bin (24) parameter; 135 dcl a_code fixed bin (35) parameter; 136 dcl a_copysw fixed bin (2) parameter; 137 dcl a_dirname char (*) parameter; 138 dcl a_dirsw fixed bin (1) parameter; 139 dcl a_ename char (*) parameter; 140 dcl a_linkname char (*) parameter; 141 dcl a_mode fixed bin (5) parameter; 142 dcl a_retv_append_argp ptr parameter; 143 dcl a_ringbrack (3) fixed bin (6) parameter; 144 dcl a_sons bit (36) parameter; 145 dcl a_uid_path (0:15) bit (36) aligned parameter; 146 dcl a_userid char (*) parameter; 147 148 /* static variable */ 149 dcl create_branch_version_1 fixed bin int static options (constant) init (1); 150 151 /* Variables */ 152 153 dcl ac_sw bit (1) aligned; 154 dcl acbr_version fixed bin; 155 dcl access_class bit (72) aligned; 156 dcl acl_count fixed bin; 157 dcl acl_start_ptr ptr; 158 dcl add_sw bit (1); 159 dcl admin_append bit (1) aligned; 160 dcl areap ptr; 161 dcl arg_ptr ptr; 162 dcl asize fixed bin; 163 dcl audit_eventflags bit (36) aligned; 164 dcl authp ptr; 165 dcl bcount fixed bin; 166 dcl bitcnt fixed bin (24); 167 dcl bmode bit (3) aligned; 168 dcl branch_sw bit (1); 169 dcl chase_sw bit (1) aligned; 170 dcl code fixed bin (35); 171 dcl copysw fixed bin (1); 172 dcl default_sw bit (1); 173 dcl dep ptr; 174 dcl dir_quota fixed bin (18); 175 dcl dirl bit (1) aligned; 176 dcl dirname char (168); 177 dcl dirp ptr; 178 dcl dirsw fixed bin (1); 179 dcl dtem bit (36) aligned; 180 dcl dumcode fixed bin (35); 181 dcl dummy char (32) aligned; 182 dcl ename char (32); 183 dcl ename_aligned char (32) aligned; 184 dcl i fixed bin; 185 dcl iacl_start_ptr ptr; 186 dcl iaclp ptr; 187 dcl 1 initial_acl aligned like input_acl; 188 dcl level fixed bin; 189 dcl linkname char (168) aligned; 190 dcl llngth fixed bin (18); 191 dcl 1 local_entry like entry aligned; 192 dcl max_access_authorization bit (72) aligned; 193 dcl 1 mk_info aligned like makeknown_info; 194 dcl 1 my_audit_user_info aligned like audit_user_info; 195 dcl n_iacls fixed bin; 196 dcl newuid bit (36) aligned; 197 dcl nwords fixed bin; 198 dcl parent_access_class bit (72) aligned; 199 dcl prevep ptr; 200 dcl prior_dir_acl_count fixed bin; 201 dcl priv_mqsw bit (1) aligned; 202 dcl project char (32) aligned; 203 dcl quota fixed bin (18); 204 dcl read_lock bit (36) aligned; 205 dcl retv bit (1) aligned; 206 dcl retv_cross_segment bit (1) aligned; 207 dcl ringbrack (3) fixed bin (6); 208 dcl segno fixed bin; 209 dcl 1 service_acl aligned, 210 2 person char (32) init ("*"), 211 2 project char (32) init ("SysDaemon"), 212 2 tag char (1) init ("*"), 213 2 mode bit (36) init ("101"b), 214 2 exmode bit (36) init ("0"b); 215 dcl sons bit (36) aligned; 216 dcl sonsw bit (1) aligned; 217 dcl sp_sw bit (1) aligned; 218 dcl sysl bit (1) aligned; 219 dcl temp_b4 bit (4) aligned; 220 dcl uid_path (0:15) bit (36) aligned; 221 dcl 1 user_acl aligned, 222 2 person char (32), 223 2 project char (32), 224 2 tag char (1), 225 2 mode bit (36) init ("111"b), 226 2 exmode bit (36) init ("0"b); 227 dcl userid char (32) aligned; 228 dcl vtocx_temp fixed bin; 229 dcl xsize fixed bin; 230 231 /* Based */ 232 233 dcl 1 acbr like create_branch_info based (arg_ptr) aligned; 234 dcl 1 input_acl based aligned, 235 2 person char (32), 236 2 project char (32), 237 2 tag char (1), 238 2 mode bit (36), 239 2 exmode bit (36); 240 241 /* External */ 242 243 dcl active_all_rings_data$max_tree_depth external fixed bin; 244 dcl active_hardcore_data$alloc_sizes (6) external fixed bin; 245 dcl active_hardcore_data$dir_arearp ext fixed bin (35); 246 dcl active_hardcore_data$dir_hdrsize external fixed bin; 247 dcl active_hardcore_data$elcsize external fixed bin; 248 dcl active_hardcore_data$ensize external fixed bin; 249 dcl active_hardcore_data$esize external fixed bin; 250 dcl active_hardcore_data$nalloc_sizes external fixed bin; 251 dcl error_table_$ai_restricted external fixed bin (35); 252 dcl error_table_$argerr external fixed bin (35); 253 dcl error_table_$invalid_mode external fixed bin (35); 254 dcl error_table_$invalid_project_for_gate external fixed bin (35); 255 dcl error_table_$invalid_ring_brackets external fixed bin (35); 256 dcl error_table_$lower_ring external fixed bin (35); 257 dcl error_table_$max_depth_exceeded external fixed bin (35); 258 dcl error_table_$namedup external fixed bin (35); 259 dcl error_table_$noalloc external fixed bin (35); 260 dcl error_table_$noentry external fixed bin (35); 261 dcl error_table_$unimplemented_version external fixed bin (35); 262 dcl 1 pds$access_authorization aligned like aim_template external; 263 dcl 1 pds$access_name aligned external, 264 2 person char (32), 265 2 project char (32), 266 2 tag char (1); 267 dcl pds$max_access_authorization bit (72) aligned external; 268 dcl pds$processid bit (36) aligned external; 269 dcl sys_info$access_class_ceiling external bit (72) aligned; 270 dcl sys_info$default_dir_max_length fixed bin (19) external; 271 272 /* Entries */ 273 274 dcl acc_name_$elements entry (ptr, ptr, fixed bin (35)); 275 dcl acc_name_$encode entry (ptr, ptr, fixed bin (35)); 276 dcl access_audit_check_ep_$self entry (bit (36) aligned, bit (36) aligned, ptr) returns (bit (1)); 277 dcl access_audit_check_ep_$user entry (bit (36) aligned, bit (36) aligned, ptr, bit (72) aligned, bit (36) aligned) returns (bit (1)); 278 dcl access_audit_$log_entry_ptr entry (char (*), fixed bin, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, fixed bin (18), char (*)); 279 dcl access_audit_$log_entry_ptr_user entry (char (*), fixed bin, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, fixed bin (18), ptr, char (*)); 280 dcl acl_$add_entry entry (fixed bin, bit (36) aligned, ptr, ptr, bit (1), fixed bin (35)); 281 dcl acl_$del_acl entry (fixed bin, bit (36) aligned, ptr); 282 dcl acl_$list_entry entry (fixed bin, bit (36) aligned, ptr, ptr, fixed bin, fixed bin (35)); 283 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 284 dcl aim_check_$greater entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 285 dcl aim_check_$greater_or_equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 286 dcl allocate_dir_ht_ entry (ptr, fixed bin, fixed bin (35)); 287 dcl check_gate_acl_ entry (ptr, bit (1) aligned, fixed bin, char (32) aligned, fixed bin (35)); 288 dcl create_vtoce entry (ptr, bit (36), fixed bin (17), fixed bin (35)); 289 dcl delete_vtoce entry (ptr, fixed bin (35)); 290 dcl fs_alloc$alloc entry (ptr, fixed bin, ptr); 291 dcl fs_alloc$free entry (ptr, fixed bin, ptr); 292 dcl fs_alloc$init entry (ptr, fixed bin, ptr, fixed bin); 293 dcl getuid entry () returns (bit (36) aligned); 294 dcl hash$in entry (ptr, ptr, fixed bin (35)); 295 dcl hash$out entry (ptr, ptr, ptr, fixed bin (35)); 296 dcl hash$search entry (ptr, ptr, ptr, fixed bin (35)); 297 dcl level$get entry returns (fixed bin); 298 dcl lock$dir_unlock entry (ptr); 299 dcl makeknown_ entry (ptr, fixed bin, fixed bin, fixed bin (35)); 300 dcl makeunknown_ entry (fixed bin, bit (36) aligned, bit (1) aligned, fixed bin (35)); 301 dcl mountedp entry (bit (36) aligned) returns (fixed bin (35)); 302 dcl quota$append_mdir_set entry (ptr, fixed bin (18), fixed bin (35)); 303 dcl quota$check entry (ptr, fixed bin (18), fixed bin (35)); 304 dcl quota$qmove_mylock entry (ptr, ptr, fixed bin (18), bit (1) aligned, fixed bin (35)); 305 dcl sum$dirmod entry (ptr); 306 dcl syserr$error_code entry options (variable); 307 dcl truncate$trentry entry (ptr); 308 dcl uid_path_util$get entry (ptr, dim (0:15) bit (36) aligned, fixed bin (35)); 309 310 /* Misc */ 311 312 dcl (addr, baseptr, bin, bit, clock, collate, divide, fixed, length, null, ptr, rel, rtrim, substr, unspec, verify) builtin; 313 314 dcl bad_dir_ condition; 315 316 master_dir: entry (a_dirname, a_ename, a_arg_ptr, a_sons, a_uid_path, a_code); 317 318 call setup; 319 320 sons = a_sons; 321 sonsw = "1"b; 322 323 max_access_authorization = pds$max_access_authorization; 324 go to cbcomm; 325 326 retv: entry (a_dirname, a_ename, a_arg_ptr, a_retv_append_argp, a_code); 327 328 call setup; 329 330 retv = "1"b; 331 332 retv_append_argp = a_retv_append_argp; 333 if retv_append_args.version ^= RETV_APPEND_ARGS_VERSION_1 then do; 334 a_code = error_table_$unimplemented_version; 335 return; 336 end; 337 338 level = retv_append_args.level; 339 max_access_authorization = retv_append_args.max_access_authorization; 340 341 arg_ptr = addr (a_arg_ptr -> acbr); /* prevent indirections and tallys */ 342 acbr_version = acbr.version; 343 if acbr_version < create_branch_version_1 | 344 acbr_version > create_branch_version_2 then go to arg_err; 345 346 audit_user_info_ptr = addr (my_audit_user_info); 347 unspec (audit_user_info) = "0"b; 348 349 audit_user_info.version = audit_user_info_version_1; 350 audit_user_info.user_id = acbr.userid; /* we'll have to trust our caller for this, 351* the retriever is good about this */ 352 audit_user_info.process_id = "0"b; /* unknown whether logged in */ 353 audit_user_info.authorization = retv_append_args.access_authorization; /* in non-retv case, access_mode gets from the pds */ 354 audit_user_info.authorization_range(2) = retv_append_args.max_access_authorization; 355 audit_user_info.audit_flags = (36)"1"b; /* audit anything until we get real audit_flags */ 356 audit_user_info.ring = retv_append_args.level; 357 358 if retv_append_args.link then linkname = retv_append_args.ep -> link.pathname; 359 else local_entry = retv_append_args.ep -> entry; 360 361 if retv_append_args.link then goto join_link; 362 363 retv_cross_segment = retv_append_args.cross_segment; 364 goto cbcomm2; 365 366 admin_create_branch_: entry (a_dirname, a_ename, a_arg_ptr, a_code); 367 368 call setup; 369 370 admin_append = "1"b; 371 372 max_access_authorization = sys_info$access_class_ceiling; 373 go to cbcomm; 374 375 create_branch_: entry (a_dirname, a_ename, a_arg_ptr, a_code); 376 377 call setup; 378 379 max_access_authorization = pds$max_access_authorization; 380 381 cbcomm: arg_ptr = addr (a_arg_ptr -> acbr); /* prevent indirections and tallys */ 382 acbr_version = acbr.version; 383 if acbr_version < create_branch_version_1 | 384 acbr_version > create_branch_version_2 then go to arg_err; 385 386 cbcomm2: ac_sw = ^acbr.parent_ac_sw; /* if no ac specified, have to get parent's entry point */ 387 if ac_sw then do; 388 access_class = acbr.access_class; /* If ac was specified, copy it */ 389 if ^aim_check_$greater_or_equal (max_access_authorization, access_class) then do; 390 code = error_table_$ai_restricted; 391 go to fin; 392 end; 393 end; 394 copysw = fixed (acbr.switches.copy_sw, 1); 395 bmode = acbr.mode; 396 dirsw = fixed (acbr.switches.dir_sw, 1); 397 ringbrack (1) = acbr.rings (1); 398 ringbrack (2) = acbr.rings (2); 399 if dirsw = 1 then ringbrack (3) = ringbrack (2); /* ignore third bracket */ 400 else ringbrack (3) = acbr.rings (3); 401 userid = acbr.userid; 402 bitcnt = acbr.bitcnt; 403 chase_sw = acbr.switches.chase_sw; 404 priv_mqsw = acbr.switches.priv_upgrade_sw; 405 quota = acbr.quota; 406 if acbr_version > create_branch_version_1 then dir_quota = acbr.dir_quota; 407 go to comm2; 408 409 branchx: entry (a_dirname, a_ename, a_mode, a_ringbrack, a_userid, a_dirsw, a_copysw, a_bitcnt, a_code); 410 411 call setup; 412 413 if a_copysw = 0 then copysw = 0; 414 else copysw = 1; 415 if a_dirsw = 0 then dirsw = 0; else dirsw = 1; 416 if dirsw = 0 then bmode = substr (bit (fixed (a_mode, 4), 4), 1, 3); 417 else do; /* map rewa to sma */ 418 temp_b4 = bit (fixed (a_mode, 4), 4); 419 bmode = substr (temp_b4, 1, 1) || substr (temp_b4, 3, 2); 420 end; 421 422 userid = a_userid; /* copy process group id */ 423 ringbrack = a_ringbrack; /* pick up all three */ 424 if dirsw = 1 then ringbrack (3) = ringbrack (2); /* except for dirs */ 425 bitcnt = a_bitcnt; /* and bitcount */ 426 comm2: 427 branch_sw = "1"b; /* indicate that we are appending a branch */ 428 default_sw = "0"b; /* turn off default attribute switch */ 429 do i = 1 to 3; /* check input brackets */ 430 if ringbrack (i) >= 8 then go to inv_rb_err; 431 if ringbrack (i) < 0 then go to inv_rb_err; 432 end; 433 if ^retv then 434 level = level$get (); /* Get current validation level */ 435 if ^retv | (retv & ^local_entry.dirsw) then 436 if ringbrack (1) < level then goto lower_ring_err; 437 else if ringbrack (1) > ringbrack (2) 438 | ringbrack (2) > ringbrack (3) then 439 go to inv_rb_err; 440 441 call acc_name_$elements (addr (userid), addr (user_acl), code); /* convert userid to 3 part access name */ 442 if code ^= 0 then go to arg_err; 443 go to join; 444 445 branch: entry (a_dirname, a_ename, a_mode, a_code); 446 447 call setup; 448 449 branch_sw, /* indicate that we are appending a branch */ 450 default_sw = "1"b; /* indicate that we will select the default attributes */ 451 452 dirsw, /* Set dirsw off -- can't be a directory */ 453 copysw, /* And no copying */ 454 bitcnt = 0; /* Bit count starts at zero */ 455 456 user_acl.person = pds$access_name.person; /* set up final acl to be caller with a tag of "*" */ 457 user_acl.project = pds$access_name.project; 458 user_acl.tag = "*"; 459 level, /* save validation level */ 460 ringbrack (*) = level$get (); /* set brackets to V, V, V */ 461 462 bmode = substr (bit (fixed (a_mode, 4), 4), 1, 3);/* strip off trap bit */ 463 go to join; 464 465 link: entry (a_dirname, a_ename, a_linkname, a_code); 466 467 call setup; 468 469 linkname = a_linkname; /* copy and check linkname */ 470 join_link: 471 branch_sw = "0"b; /* indicate that we are appending a link */ 472 if substr (linkname, 1, 1) ^= ">" then go to arg_err; 473 474 /* find length of linkname - allow embedded blanks */ 475 llngth = length (rtrim (linkname)); 476 if verify (substr (linkname, 1, llngth), collate ()) > 0 then go to arg_err; /* link must be all ascii */ 477 join: 478 dirl = "0"b; 479 code = 0; /* clear error code */ 480 if retv then authp = addr (user_acl); 481 else authp = addr (pds$access_name); /* get pointer to 3 part access name */ 482 483 dirname = a_dirname; /* copy directory and entry name arguments */ 484 ename = a_ename; 485 486 if branch_sw then do; /* if appending a branch */ 487 488 /* set up ACLS with proper mode */ 489 /* convert fixed bin(5) mode into new modes */ 490 if dirsw = 0 then user_acl.mode = bmode; 491 492 else do; 493 user_acl.exmode = bmode; 494 if (user_acl.exmode & "11"b) = "01"b then /* don't allow M without S access */ 495 go to invalid_mode; 496 service_acl.mode = "111"b; /* set access field for directories */ 497 service_acl.exmode = "111"b; /* set extended mode for .SysDaemon access */ 498 499 end; 500 end; 501 502 if ^branch_sw then chase_sw = "0"b; /* don't chase when adding links */ 503 504 if retv then do; 505 call dc_find$dir_for_retrieve_append 506 (dirname, ename, bin (chase_sw, 1), audit_user_info_ptr, dep, dp, code); 507 if code ^= 0 then go to fin; 508 dirl = "1"b; 509 end; 510 else do; 511 if admin_append then 512 call dc_find$dir_for_append_raw (dirname, ename, bin (chase_sw, 1), dep, dp, code); 513 else call dc_find$dir_for_append (dirname, ename, bin (chase_sw, 1), dep, dp, code); 514 if code ^= 0 then go to fin; 515 dirl = "1"b; 516 end; 517 518 if dep = null then parent_access_class = "0"b; /* assume root at 0 access class */ 519 else do; 520 if branch_sw then parent_access_class = dep -> entry.access_class; 521 call lock$dir_unlock (ptr (dep, 0)); 522 dep = null; 523 end; 524 525 code = 0; 526 ename_aligned = ename; 527 528 if branch_sw then do; /* make sure not lower than parent */ 529 if ac_sw then call check_aim_access; 530 else access_class = parent_access_class; /* make it same as parent */ 531 end; 532 533 if retv then do; /* check for duplicate uids */ 534 if ^retv_append_args.link then do; 535 i = 0; 536 bcount = dir.dir_count + dir.seg_count + dir.lcount; 537 do ep = ptr (dp, dir.entryfrp) repeat (ptr (dp, entry.efrp)) while (rel (ep) ^= "0"b); 538 i = i + 1; 539 if i > bcount then signal bad_dir_; 540 if entry.uid = local_entry.uid then goto name_dup; 541 end; 542 end; 543 end; 544 545 if dirsw = 1 & dir.tree_depth >= active_all_rings_data$max_tree_depth then do; 546 code = error_table_$max_depth_exceeded; 547 go to unlock; 548 end; 549 550 call hash$search (dp, addr (ename_aligned), ep, code); /* See if the entry is already there */ 551 if code = 0 then go to name_dup; /* indicates that name already on another entry */ 552 if code ^= error_table_$noentry then signal bad_dir_; /* another code says that hash table is messed up */ 553 554 if ^branch_sw | (dirsw = 1) then code = 0; /* Always ok to create links or dirs */ 555 else code = mountedp (dir.sons_lvid); /* Can we create a VTOCE? */ 556 if code ^= 0 then go to unlock; 557 558 areap = ptr (dp, dir.arearp); /* start to allocate */ 559 dir.modify = pds$processid; 560 561 if retv then newuid = local_entry.uid; 562 else newuid = getuid (); /* Get the unique ID */ 563 if branch_sw then do; /* if appending a branch */ 564 if dirsw = 1 then do; 565 iacl_start_ptr = addr (dir.iacl (level).dir_frp); /* get ptr to dir Initial ACL for V */ 566 n_iacls = dir.iacl_count (level).dir; 567 end; 568 else do; 569 iacl_start_ptr = addr (dir.iacl (level).seg_frp); /* get ptr to seg IACl at validation level */ 570 n_iacls = dir.iacl_count (level).seg; 571 if ringbrack (2) ^= ringbrack (3) then /* check for valid project if creating gate seg */ 572 if level > 1 then do; /* in rings greater than administrative ring */ 573 if retv then project = user_acl.project; 574 else project = pds$access_name.project; 575 if user_acl.project ^= project then 576 if user_acl.project ^= "SysDaemon" then do; 577 code = error_table_$invalid_project_for_gate; 578 go to unlock; 579 end; 580 call check_gate_acl_ (iacl_start_ptr, "1"b, 0, dummy, code); /* check Initial ACL for project */ 581 if code ^= 0 then go to unlock; 582 end; 583 end; 584 xsize = active_hardcore_data$esize; /* store size of an entry */ 585 call fs_alloc$alloc (areap, xsize, ep); /* allocate the entry */ 586 if ep = null then go to alloc_err; 587 if retv then do; 588 entry = local_entry; 589 entry.acl_frp, entry.acl_brp = "0"b; 590 entry.acle_count = 0; 591 dtem = entry.dtem; /* save for later */ 592 end; 593 if dirsw = 1 then entry.type = DIR_TYPE; 594 else entry.type = SEG_TYPE; 595 entry.size = xsize; 596 entry.owner = dir.uid; 597 598 acl_count = 0; 599 acl_start_ptr = addr (entry.acl_frp); /* fill in items before call to acl_ */ 600 prior_dir_acl_count = dir.acle_total; /* save total number of acl entries in directory */ 601 /* put SysDaemon on ACL */ 602 if ^retv | retv_cross_segment then do; 603 call acl_$add_entry (0, newuid, acl_start_ptr, addr (service_acl), add_sw, code); 604 if code ^= 0 then go to cleanup_acl; 605 606 /* This loop adds acls to the branch. (code = error_table_$argerr is set when the end of the acl thread is passed) */ 607 608 acl_count = 1; /* add on Initial ACL */ 609 dir.acle_total = dir.acle_total + 1; 610 iaclp = addr (initial_acl); 611 do i = 1 by 1 while (code = 0); 612 call acl_$list_entry (n_iacls, dir.uid, iacl_start_ptr, iaclp, i, code); 613 if code = 0 then do; 614 call acl_$add_entry (acl_count, newuid, acl_start_ptr, iaclp, add_sw, code); 615 if code ^= 0 then goto cleanup_acl; 616 if add_sw then do; /* If actually added */ 617 acl_count = acl_count + 1; 618 dir.acle_total = dir.acle_total + 1; 619 end; 620 end; 621 else if code ^= error_table_$argerr then go to cleanup_acl; 622 end; 623 /* now put on ACL for user */ 624 if ^retv_cross_segment then do; 625 call acl_$add_entry (acl_count, newuid, acl_start_ptr, addr (user_acl), add_sw, code); 626 if code ^= 0 then goto cleanup_acl; 627 end; 628 if add_sw then do; 629 acl_count = acl_count + 1; 630 dir.acle_total = dir.acle_total + 1; 631 end; 632 entry.acle_count = acl_count; /* set acl count for entry */ 633 end; 634 635 end; 636 637 else do; /* if appending a link, allocate the link */ 638 nwords = active_hardcore_data$elcsize + 3 + divide (llngth + 3, 4, 17, 0); /* first get number of words for link */ 639 640 /* find appropriate allocation size */ 641 do i = active_hardcore_data$nalloc_sizes - 1 to 1 by -1 642 while (nwords <= active_hardcore_data$alloc_sizes (i)); 643 end; 644 xsize = active_hardcore_data$alloc_sizes (i + 1); 645 646 call fs_alloc$alloc (areap, xsize, ep); 647 if ep = null then go to alloc_err; 648 link.type = LINK_TYPE; 649 link.size = xsize; 650 link.pathname_size = llngth; 651 link.pathname = linkname; 652 link.owner = dir.uid; /* Pathname size MUST be set for 'refer' to be correct */ 653 654 end; 655 656 call acc_name_$encode (addr (entry.author), authp, code); /* set author */ 657 if code ^= 0 then go to cleanup_acl; 658 659 np = addr (entry.primary_name); /* first name is in the branch */ 660 entry.name_frp, /* fill in name info before hashing */ 661 entry.name_brp = rel (np); 662 entry.nnames = 1; 663 np -> names.entry_rp = rel (ep); 664 np -> names.name = ename; 665 np -> names.type = NAME_TYPE; 666 np -> names.size = active_hardcore_data$ensize; 667 np -> names.owner = newuid; 668 669 call hash$in (dp, np, code); /* have already checked for name dup */ 670 if code ^= 0 then goto cleanup_acl; 671 672 /* Fill in general entry info */ 673 674 entry.uid = newuid; /* Fill in the unique ID */ 675 entry.dtem = substr (bit (fixed (clock, 52), 52), 1, 36); 676 if ^branch_sw then dir.lcount = dir.lcount + 1; /* link */ 677 else do; 678 entry.bs = "1"b; /* Entry is a branch */ 679 entry.per_process_sw = dir.per_process_sw; 680 entry.bc = bitcnt; /* set bit count */ 681 entry.dirsw = bit (dirsw, 1); /* Can't append segs to segs, you know! */ 682 entry.access_class = access_class & sys_info$access_class_ceiling; 683 entry.multiple_class = sp_sw; /* indicates class higher than parent */ 684 685 /**** Set the security oos for backup-retrieved multi-class segments. 686* This is a temporary fix to circumvent the lack of information 687* on authorization/max authorization in the volume dumper. */ 688 689 if retv then if entry.multiple_class then do; 690 if ^pds$access_authorization.soos then entry.security_oosw = "1"b; 691 end; 692 entry.master_dir = sonsw; 693 694 call acc_name_$encode (addr (entry.bc_author), authp, code); /* set bc author */ 695 if code ^= 0 then go to make_err; 696 697 call uid_path_util$get (dp, uid_path, code); /* get uid pathname of parent */ 698 if code ^= 0 then go to make_err; 699 uid_path (dir.tree_depth + 1) = entry.uid; /* last component */ 700 701 if ^retv then do; 702 call create_vtoce (ep, entry.pvid, vtocx_temp, code); 703 if code ^= 0 then go to make_err; /* problems. */ 704 entry.vtocx = vtocx_temp; /* Store in unal fld in branch */ 705 if dirsw = 1 then call setup_directory; 706 else do; /* link */ 707 entry.ring_brackets (1) = bit (fixed (ringbrack (1), 3), 3); 708 entry.ring_brackets (2) = bit (fixed (ringbrack (2), 3), 3); 709 entry.ring_brackets (3) = bit (fixed (ringbrack (3), 3), 3); 710 entry.copysw = bit (copysw, 1); /* copy sw */ 711 dir.seg_count = dir.seg_count + 1; /* and update segment count in directory */ 712 end; 713 end; 714 else do; /* retv case. */ 715 if retv_cross_segment then do; 716 call create_vtoce (ep, entry.pvid, vtocx_temp, code); 717 if code ^= 0 then goto make_err; 718 entry.vtocx = vtocx_temp; 719 end; 720 if dirsw = 1 then do; 721 dir.dir_count = dir.dir_count + 1; 722 if ^entry.master_dir then 723 entry.sons_lvid = dir.sons_lvid; /* propagate the correct sons lvid */ 724 end; 725 else dir.seg_count = dir.seg_count + 1; 726 end; 727 end; 728 729 if dir.entryfrp = ""b then 730 do; /* first entry in directory */ 731 dir.entryfrp, dir.entrybrp = rel (ep); 732 entry.efrp, entry.ebrp = ""b; 733 end; 734 else do; 735 prevep = ptr (ep, dir.entrybrp); /* get pointer to previous entry */ 736 entry.ebrp = rel (prevep); /* set back pointer of entry */ 737 prevep -> entry.efrp = rel (ep); /* set forward pointer of prev. entry */ 738 entry.efrp = ""b; /* set forward pointer of entry */ 739 dir.entrybrp = rel (ep); /* reset dir rel back pointer */ 740 end; 741 742 743 if retv then entry.dtem = dtem; 744 dir.modify = "0"b; 745 call sum$dirmod (dp); /* We've modified this directory */ 746 747 audit_eventflags = "0"b; 748 addr (audit_eventflags) -> audit_event_flags.grant = "1"b; 749 if retv then /* audit the new object */ 750 if access_audit_check_ep_$user 751 (audit_eventflags, access_operations_$fs_obj_create, ep, audit_user_info.authorization, audit_user_info.audit_flags) then 752 call access_audit_$log_entry_ptr_user 753 ("append", level, audit_eventflags, access_operations_$fs_obj_create, ep, 0, null, 0, audit_user_info_ptr, ""); 754 else ; 755 else if access_audit_check_ep_$self 756 (audit_eventflags, access_operations_$fs_obj_create, ep) then 757 call access_audit_$log_entry_ptr 758 ("append", level, audit_eventflags, access_operations_$fs_obj_create, ep, 0, null, 0, ""); 759 760 call dc_find$finished (dp, dirl); 761 762 fin: 763 a_code = code; 764 765 return; 766 767 arg_err: 768 code = error_table_$argerr; go to fin; 769 lower_ring_err: 770 code = error_table_$lower_ring; goto fin; 771 inv_rb_err: 772 code = error_table_$invalid_ring_brackets; go to fin; 773 invalid_mode: 774 code = error_table_$invalid_mode; go to fin; 775 name_dup: 776 code = error_table_$namedup; go to unlock; 777 alloc_err: 778 code = error_table_$noalloc; go to unlock; 779 free_vtoce: 780 call delete_vtoce (ep, dumcode); 781 if dumcode ^= 0 then call syserr$error_code (4, dumcode, "append: err from delete_vtoce for ^a>^a:", dirname, ename); 782 make_err: 783 call hash$out (dp, addr (ename_aligned), np, dumcode); 784 if dumcode ^= 0 then call syserr$error_code (4, dumcode, "append: error from hash$out for ^a>^a:", dirname, ename); 785 cleanup_acl: 786 if branch_sw then do; 787 call acl_$del_acl (acl_count, newuid, acl_start_ptr); 788 dir.acle_total = prior_dir_acl_count; /* restore the acl count in the directory */ 789 end; 790 call fs_alloc$free (areap, xsize, ep); 791 unlock: 792 if dep ^= null then call lock$dir_unlock (ptr (dep, 0)); 793 dir.modify = "0"b; 794 call dc_find$finished (dp, dirl); 795 go to fin; 796 797 check_aim_access: proc; 798 799 if aim_check_$greater (access_class, parent_access_class) then do; 800 if dirsw = 1 then do; /* see if privileged oos creation */ 801 if quota <= 0 then if level > 1 then goto ai_err; 802 else if ^priv_mqsw then goto ai_err; 803 804 if bitcnt ^= 0 then if level > 1 then goto ai_err; /* no upgraded non-multiclass MSFs */ 805 sp_sw = "1"b; /* this sets entry.multiple_class */ 806 end; 807 else do; /* will be a multiclass segment */ 808 if ringbrack (3) > 1 then go to ai_err; /* can only create multi class seg from ring 1 */ 809 if priv_mqsw then sp_sw = "1"b; 810 else go to ai_err; /* wasn't reall wanted, wrong access class passed */ 811 end; 812 end; 813 else if ^aim_check_$equal (access_class, parent_access_class) then do; 814 ai_err: code = error_table_$ai_restricted; /* ok to return as have at least append mode */ 815 goto unlock; 816 end; 817 818 end check_aim_access; 819 820 setup: proc; 821 822 ac_sw = "0"b; 823 admin_append = "0"b; 824 chase_sw = "1"b; 825 dir_quota = 0; 826 priv_mqsw = "0"b; 827 quota = 0; 828 read_lock = "0"b; 829 retv = "0"b; 830 retv_cross_segment = "0"b; 831 sonsw = "0"b; 832 sp_sw = "0"b; 833 sysl = "0"b; 834 return; 835 end setup; 836 837 838 /* This procedure fills in the directory header and moves quota down. */ 839 840 setup_directory: proc; 841 842 if sonsw then entry.sons_lvid = sons; /* Master dir? */ 843 else entry.sons_lvid = dir.sons_lvid; /* if not, inherit */ 844 /* set extended rb, normal rb are 0,0,0 */ 845 entry.ex_ring_brackets (1) = bit (bin (ringbrack (1), 3), 3); 846 entry.ex_ring_brackets (2) = bit (bin (ringbrack (2), 3), 3); 847 848 if ^sonsw then do; 849 call quota$check (ep, quota, code); /* check if quota can take quota more pages */ 850 if code ^= 0 then go to free_vtoce; 851 end; 852 853 /* make the new directory segment known */ 854 /* Turn the modify switch OFF in the parent while initializing the inferior directory. Note that there is a window 855* until it is turned on again during which the modify switch is OFF although the operation is not finished */ 856 857 dir.modify = "0"b; 858 859 unspec (mk_info) = "0"b; 860 mk_info.uid = entry.uid; 861 mk_info.entryp = ep; 862 mk_info.dirsw = "1"b; 863 mk_info.allow_write = "1"b; 864 mk_info.activate = "1"b; 865 dirp = null; 866 call makeknown_ (addr (mk_info), segno, (0), code); 867 if code ^= 0 then go to free_vtoce; 868 dirp = baseptr (segno); 869 870 unspec (dirp -> dir) = "0"b; /* Zero the header */ 871 dirp -> dir.type = DIR_HEADER_TYPE; /* Fill in constants */ 872 dirp -> dir.size = active_hardcore_data$dir_hdrsize; 873 dirp -> dir.version_number = version_number_2; 874 dirp -> dir.owner = dir.uid; 875 dirp -> dir.uid = entry.uid; /* Fill in the unique id */ 876 dirp -> dir.arearp = bit (fixed (active_hardcore_data$dir_arearp, 18), 18); 877 dirp -> dir.pvid = entry.pvid; 878 dirp -> dir.per_process_sw = entry.per_process_sw; 879 dirp -> dir.sons_lvid = entry.sons_lvid; 880 dirp -> dir.master_dir = entry.master_dir; 881 if entry.master_dir then dirp -> dir.master_dir_uid = entry.uid; 882 else dirp -> dir.master_dir_uid = dir.master_dir_uid; /* Inherit */ 883 dirp -> dir.access_class = entry.access_class; 884 dirp -> dir.vtocx = entry.vtocx; 885 asize = sys_info$default_dir_max_length - fixed (dirp -> dir.arearp, 18); 886 call fs_alloc$init (ptr (dirp, dirp -> dir.arearp), asize, 887 addr (active_hardcore_data$alloc_sizes), active_hardcore_data$nalloc_sizes); 888 889 call allocate_dir_ht_ (dirp, 0, (0)); 890 dirp -> dir.tree_depth = dir.tree_depth + 1; /* set tree depth */ 891 892 if quota > 0 then /* Set quota */ 893 if ^sonsw then do; /* non-master dir, move */ 894 call quota$qmove_mylock (ep, dirp, quota, "0"b, code); 895 if code ^= 0 then do; /* drop this hot potato */ 896 /* used to unlock new dir here */ 897 qerr: call truncate$trentry (ep); /* and header page */ 898 call makeunknown_ (segno, "0"b, ("0"b), dumcode); 899 if dumcode ^= 0 then call syserr$error_code (4, dumcode, 900 "append: makeunknown_ err after quota err for ^a>^a:", dirname, ename); 901 go to free_vtoce; /* leave in kst if makeunknown_ fails */ 902 end; 903 end; 904 else do; /* master dir. */ 905 call quota$append_mdir_set (ep, quota, code); /* set the quuota */ 906 if code ^= 0 then go to qerr; 907 end; 908 else if priv_mqsw & ac_sw then do; /* path for reloader to create upgraded dirs with no quota */ 909 if aim_check_$greater (access_class, parent_access_class) then 910 ep -> entry.security_oosw = "1"b; /* by leaving entry oosw */ 911 end; 912 913 if dir_quota > 0 then do; /* Set quota */ 914 call quota$qmove_mylock (ep, dirp, dir_quota, "1"b, code); 915 if code ^= 0 then go to qerr; /* drop this hot potato */ 916 end; 917 918 call sum$dirmod (dirp); /* indicate that it has been modified */ 919 call makeunknown_ (segno, "0"b, ("0"b), code); 920 if code ^= 0 then call syserr$error_code (4, code, "append: error from makeunknown_ for ^a>^a:", dirname, ename); 921 922 dir.modify = pds$processid; /* Turn modify sw back on again to complete the creation 923* of the branch. This call will terminate the window 924* referred to above and created at the beginning of the 925* initialization of the inferior directory. */ 926 927 dir.dir_count = dir.dir_count + 1; /* up directory count in parent */ 928 if sonsw then a_uid_path = uid_path; /* return uid pathname to ring 1 */ 929 930 return; 931 932 end setup_directory; 933 /* begin include file - access_audit_eventflags.incl.pl1 */ 1 2 /* NOTE: This include file has an ALM counterpart made with cif. 1 3*Keep it up to date. */ 1 4 1 5 dcl 1 audit_event_flags based aligned, 1 6 2 special_op bit (1) unal, /* special sys operation */ 1 7 2 grant bit (1) unal, /* operation was successful */ 1 8 2 admin_op bit (1) unal, /* administrative operation */ 1 9 2 priv_op bit (1) unal, /* privileged operation */ 1 10 2 cc_1_10 bit (1) unal, /* small covert channel */ 1 11 2 cc_10_100 bit (1) unal, /* moderate covert channel */ 1 12 2 receiver bit (1) unal, /* on receiving end of channel */ 1 13 2 pad bit (29) unal; 1 14 1 15 /* end include file - access_audit_eventflags.incl.pl1 */ 933 934 /* begin include file - access_audit_user_info.incl.pl1 */ 2 2 2 3 /* 85-01-21 EJ Sharpe - changed (min max)_auth to auth range */ 2 4 /* 85-01-07 EJ Sharpe - added min_authorization */ 2 5 /* 84-10-09 EJ Sharpe - created */ 2 6 2 7 /* The structure defined here is passed to the access_audit_ 2 8*entrypoints which deal with proxy users: 2 9**/ 2 10 2 11 dcl audit_user_info_ptr pointer; 2 12 2 13 dcl 1 audit_user_info based (audit_user_info_ptr) aligned, 2 14 2 version char (8), 2 15 2 user_id char (32), 2 16 2 ring fixed bin (3) uns unal, 2 17 2 pad bit (33) unal, 2 18 2 process_id bit (36) aligned, 2 19 2 authorization bit (72) aligned, 2 20 2 authorization_range (2) bit (72) aligned, 2 21 2 audit_flags bit (36) aligned; 2 22 2 23 dcl audit_user_info_version_1 char (8) init ("adtusrv1") 2 24 internal static options (constant); 2 25 2 26 /* end include file - access_audit_user_info.incl.pl1 */ 934 935 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 3 2 3 3 /* Created 740723 by PG */ 3 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 3 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 3 6 3 7 /* This structure defines the components of both an access 3 8* class and an access authorization as interpreted by the 3 9* Access Isolation Mechanism. */ 3 10 3 11 3 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 3 13 2 categories bit (36), /* access categories */ 3 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 3 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 3 16 (3 ipc, /* interprocess communication privilege */ 3 17 3 dir, /* directory privilege */ 3 18 3 seg, /* segment privilege */ 3 19 3 soos, /* security out-of-service privilege */ 3 20 3 ring1, /* ring 1 access privilege */ 3 21 3 rcp, /* RCP resource access privilege */ 3 22 3 comm) bit (1), /* communications cross-AIM privilege */ 3 23 3 pad bit (11); 3 24 3 25 3 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 935 936 /* BEGIN INCLUDE FILE - - - create_branch_info.incl.pl1 - - - created January 1975 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(89-01-16,TLNguyen), approve(89-01-16,MCR8049), 4 6* audit(89-02-03,Parisek), install(89-03-15,MR12.3-1025): 4 7* 1. Declare version constant properly. 4 8* 2. Remove version 1 since it was never referenced and to force 4 9* callers to upgrade their programs. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* Modified December 1984 for dir_quota, Keith Loepere. */ 4 14 4 15 /* this include files gives the argument structure for create_branch_ */ 4 16 4 17 dcl 1 create_branch_info aligned based, 4 18 2 version fixed bin, /* set this to the largest value given below */ 4 19 2 switches unaligned, 4 20 3 dir_sw bit (1) unaligned, /* if on, a directory branch is wanted */ 4 21 3 copy_sw bit (1) unaligned, /* if on, initiating segment will be done by copying */ 4 22 3 chase_sw bit (1) unaligned, /* if on, if pathname is a link, it will be chased */ 4 23 3 priv_upgrade_sw bit (1) unaligned, /* privileged creation (ring 1) of upgraded object */ 4 24 3 parent_ac_sw bit (1) unaligned, /* if on, use parent's access class for seg or dir created */ 4 25 3 mbz1 bit (31) unaligned, /* pad to full word */ 4 26 2 mode bit (3) unaligned, /* segment or directory for acl for userid */ 4 27 2 mbz2 bit (33) unaligned, /* pad to full word */ 4 28 2 rings (3) fixed bin (3), /* branch's ring brackets */ 4 29 2 userid char (32), /* user's access control name */ 4 30 2 bitcnt fixed bin (24), /* bit count of the segment */ 4 31 2 quota fixed bin (18), /* for directories, this am't of quota will be moved to it */ 4 32 2 access_class bit (72), /* is the access class of the body of the branch */ 4 33 2 dir_quota fixed bin (18); /* for directories, this am't of dir quota will be moved to it */ 4 34 4 35 dcl create_branch_version_2 fixed bin int static options (constant) init (2); 4 36 4 37 /* END INCLUDE FILE - - - create_branch_info.incl.pl1 - - - */ 4 38 936 937 /* BEGIN include file dc_find_dcls.incl.pl1 */ 5 2 5 3 /* Calling sequences for dc_find. Keith Loepere, June 1984. */ 5 4 /* Added a few more, October 1984. */ 5 5 /* 85-05-08, EJ Sharpe: added obj_delete_uid, obj_status_read_uid, and obj_status_read_raw_uid */ 5 6 /* 85-05-15, EJ Sharpe: changed dir_write_raw_uid to mdir_set_quota_uid */ 5 7 5 8 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 5 9 5 10 dcl DC_FIND_CHASE fixed bin (1) static options (constant) init (1); 5 11 dcl DC_FIND_NO_CHASE fixed bin (1) static options (constant) init (0); 5 12 dcl DC_FIND_NO_UNLOCK_DIR bit (1) aligned static options (constant) init ("0"b); 5 13 dcl DC_FIND_UNLOCK_DIR bit (1) aligned static options (constant) init ("1"b); 5 14 5 15 dcl dc_find$dir_for_append entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 5 16 dcl dc_find$dir_for_append_raw entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 5 17 dcl dc_find$dir_for_retrieve_append entry (char (168), char (32), fixed bin (1), ptr, ptr, ptr, fixed bin (35)); 5 18 5 19 dcl dc_find$dir_initiate entry (char (168), ptr, fixed bin (35)); 5 20 5 21 dcl dc_find$dir_move_quota entry (char (168), ptr, ptr, fixed bin (35)); 5 22 5 23 dcl dc_find$dir_read entry (char (168), ptr, fixed bin (35)); 5 24 dcl dc_find$dir_read_priv entry (char (168), ptr, fixed bin (35)); 5 25 5 26 dcl dc_find$dir_reclassify entry (char (168), ptr, ptr, ptr, fixed bin (35)); 5 27 5 28 dcl dc_find$dir_salvage entry (char (168), bit (36) aligned, ptr, fixed bin (35)); 5 29 5 30 dcl dc_find$dir_write entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 5 31 dcl dc_find$dir_write_priv entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 5 32 5 33 dcl dc_find$finished entry (ptr, bit (1) aligned); 5 34 5 35 dcl dc_find$link_target entry (char (168), char (32), fixed bin (35)); 5 36 5 37 dcl dc_find$mdir_set_quota_uid entry ((0:15) bit (36) aligned, char (168), fixed bin (18) uns, ptr, ptr, fixed bin (35)); 5 38 5 39 dcl dc_find$obj_access_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 5 40 dcl dc_find$obj_access_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 5 41 5 42 dcl dc_find$obj_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 43 dcl dc_find$obj_attributes_read_ptr entry (ptr, ptr, fixed bin (35)); 5 44 5 45 dcl dc_find$obj_attributes_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 5 46 dcl dc_find$obj_attributes_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 5 47 5 48 dcl dc_find$obj_bc_delta_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 5 49 dcl dc_find$obj_bc_delta_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 5 50 dcl dc_find$obj_bc_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 5 51 dcl dc_find$obj_bc_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 5 52 5 53 dcl dc_find$obj_delete entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 54 dcl dc_find$obj_delete_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 55 dcl dc_find$obj_delete_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 5 56 dcl dc_find$obj_delete_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 5 57 dcl dc_find$obj_delete_ptr entry (ptr, ptr, fixed bin (35)); 5 58 5 59 dcl dc_find$obj_existence_ptr entry (ptr, ptr, fixed bin (35)); 5 60 5 61 dcl dc_find$obj_for_audit entry (char (168), char (32), ptr, fixed bin (35)); 5 62 5 63 dcl dc_find$obj_initiate entry (char (168), char (32), ptr, fixed bin (35)); 5 64 dcl dc_find$obj_initiate_for_linker_dp entry (ptr, char (32), ptr, fixed bin (35)); 5 65 dcl dc_find$obj_initiate_raw entry (char (168), char (32), ptr, fixed bin (35)); 5 66 5 67 dcl dc_find$obj_linkage_ring_ptr entry (ptr, fixed bin (35)); 5 68 5 69 dcl dc_find$obj_modes_ptr entry (ptr, bit (36) aligned, bit (36) aligned, (3) fixed bin (3), fixed bin (35)); 5 70 5 71 dcl dc_find$obj_reclassify entry (char (168), char (32), ptr, ptr, fixed bin (35)); 5 72 5 73 dcl dc_find$obj_status_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 74 5 75 dcl dc_find$obj_status_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 76 dcl dc_find$obj_status_read_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 5 77 dcl dc_find$obj_status_read_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 78 dcl dc_find$obj_status_read_priv_ptr entry (ptr, ptr, fixed bin (35)); 5 79 dcl dc_find$obj_status_read_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 5 80 dcl dc_find$obj_status_read_raw_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 5 81 dcl dc_find$obj_status_read_ptr entry (ptr, ptr, fixed bin (35)); 5 82 5 83 dcl dc_find$obj_status_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 5 84 dcl dc_find$obj_status_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 5 85 dcl dc_find$obj_status_write_priv_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 5 86 dcl dc_find$obj_status_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 5 87 5 88 dcl dc_find$obj_terminate entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 5 89 dcl dc_find$obj_terminate_ptr entry (ptr, ptr, fixed bin (35)); 5 90 5 91 dcl dc_find$obj_truncate entry (char (168), char (32), ptr, fixed bin (35)); 5 92 dcl dc_find$obj_truncate_ptr entry (ptr, ptr, fixed bin (35)); 5 93 dcl dc_find$obj_truncate_raw_ptr entry (ptr, ptr, fixed bin (35)); 5 94 5 95 dcl dc_find$obj_volume_retrieve entry (char (168), char (32), ptr, ptr, fixed bin (35)); 5 96 5 97 dcl dc_find$seg_fault entry (ptr, ptr, fixed bin (35)); 5 98 5 99 /* END include file dc_find_dcls.incl.pl1 */ 937 938 /* BEGIN INCLUDE FILE ... dir_entry.incl.pl1 ...last modified August 1974 for nss */ 6 2 6 3 6 4 /* Template for an entry. Length = 38 words */ 6 5 6 6 dcl ep ptr; 6 7 6 8 dcl 1 entry based (ep) aligned, 6 9 6 10 (2 efrp bit (18), /* forward rel ptr to next entry */ 6 11 2 ebrp bit (18)) unaligned, /* backward rel ptr to previous entry */ 6 12 6 13 2 type bit (18) unaligned, /* type of object = dir entry */ 6 14 2 size fixed bin (17) unaligned, /* size of dir entry */ 6 15 6 16 2 uid bit (36), /* unique id of entry */ 6 17 6 18 2 dtem bit (36), /* date-time entry modified */ 6 19 6 20 (2 bs bit (1), /* branch switch = 1 if branch */ 6 21 2 pad0 bit (17), 6 22 2 nnames fixed bin (17), /* number of names for this entry */ 6 23 6 24 2 name_frp bit (18), /* rel pointer to start of name list */ 6 25 2 name_brp bit (18), /* rel pointer to end of name list */ 6 26 6 27 2 author, /* user who created branch */ 6 28 3 pers_rp bit (18), /* name of user who created branch */ 6 29 3 proj_rp bit (18), /* project of user who created branch */ 6 30 6 31 3 tag char (1), /* tag of user who created branch */ 6 32 3 pad1 char (3), 6 33 6 34 2 primary_name bit (504), /* first name on name list */ 6 35 6 36 2 dtd bit (36), /* date time dumped */ 6 37 6 38 2 pad2 bit (36), 6 39 6 40 6 41 /* the declarations below are for branch only */ 6 42 6 43 6 44 2 pvid bit (36), /* physical volume id */ 6 45 6 46 2 vtocx fixed bin (17), /* vtoc entry index */ 6 47 2 pad3 bit (18), 6 48 6 49 2 dirsw bit (1), /* = 1 if this is a directory branch */ 6 50 2 oosw bit (1), /* out of service switch on = 1 */ 6 51 2 per_process_sw bit (1), /* indicates segment is per process */ 6 52 2 copysw bit (1), /* = 1 make copy of segment whenever initiated */ 6 53 2 safety_sw bit (1), /* if 1 then entry cannot be deleted */ 6 54 2 multiple_class bit (1), /* segment has multiple security classes */ 6 55 2 audit_flag bit (1), /* segment must be audited for security */ 6 56 2 security_oosw bit (1), /* security out of service switch */ 6 57 2 entrypt_sw bit (1), /* 1 if call limiter is to be enabled */ 6 58 2 master_dir bit (1), /* TRUE for master directory */ 6 59 2 tpd bit (1), /* TRUE if this segment is never to go on the PD */ 6 60 2 pad4 bit (11), 6 61 2 entrypt_bound bit (14)) unaligned, /* call limiter */ 6 62 6 63 2 access_class bit (72) aligned, /* security attributes : level and category */ 6 64 6 65 (2 ring_brackets (3) bit (3), /* ring brackets on segment */ 6 66 2 ex_ring_brackets (3) bit (3), /* extended ring brackets */ 6 67 2 acle_count fixed bin (17), /* number of entries on ACL */ 6 68 6 69 2 acl_frp bit (18), /* rel ptr to start of ACL */ 6 70 2 acl_brp bit (18), /* rel ptr to end of ACL */ 6 71 6 72 2 bc_author, /* user who last set the bit count */ 6 73 3 pers_rp bit (18), /* name of user who set the bit count */ 6 74 3 proj_rp bit (18), /* project of user who set the bit count */ 6 75 6 76 3 tag char (1), /* tag of user who set the bit count */ 6 77 3 pad5 bit (2), 6 78 2 bc fixed bin (24)) unaligned, /* bit count for segs, msf indicator for dirs */ 6 79 6 80 2 sons_lvid bit (36), /* logical volume id for immediat inf non dir seg */ 6 81 6 82 2 pad6 bit (36), 6 83 6 84 2 checksum bit (36), /* checksum from dtd */ 6 85 6 86 2 owner bit (36); /* uid of containing directory */ 6 87 6 88 /* END INCLUDE FILE ... dir_entry.incl.pl1 ... */ 938 939 /* BEGIN INCLUDE FILE ... dir_header.incl.pl1 */ 7 2 /* Modified 8/74 for NSS */ 7 3 /* Modified 8/76 to add version number and hash table rel pointer for variable hash table sizes */ 7 4 /* Modified 3/82 BIM for change pclock */ 7 5 /* format: style3 */ 7 6 7 7 /* Template for the directory header. Length = 64 words. */ 7 8 7 9 dcl dp ptr; 7 10 7 11 dcl 1 dir based (dp) aligned, 7 12 7 13 2 modify bit (36), /* Process ID of last modifier */ 7 14 2 type bit (18) unaligned, /* type of object = dir header */ 7 15 2 size fixed bin (17) unaligned, /* size of header in words */ 7 16 2 dtc (3), /* date-time checked by salvager array */ 7 17 3 date bit (36), /* the date */ 7 18 3 error bit (36), /* what errors were discovered */ 7 19 7 20 2 uid bit (36), /* uid of the directory - copied from branch */ 7 21 7 22 2 pvid bit (36), /* phys vol id of the dir - copied from branch */ 7 23 7 24 2 sons_lvid bit (36), /* log vol id for inf non dir seg - copied from branch */ 7 25 7 26 2 access_class bit (72), /* security attributes of dir - copied from branch */ 7 27 7 28 (2 vtocx fixed bin (17), /* vtoc entry index of the dir - copied from branch */ 7 29 2 version_number fixed bin (17), /* version number of header */ 7 30 7 31 2 entryfrp bit (18), /* rel ptr to beginning of entry list */ 7 32 2 pad2 bit (18), 7 33 7 34 2 entrybrp bit (18), /* rel ptr to end of entry list */ 7 35 2 pad3 bit (18), 7 36 7 37 2 pers_frp bit (18), /* rel ptr to start of person name list */ 7 38 2 proj_frp bit (18), /* rel ptr to start of project name list */ 7 39 7 40 2 pers_brp bit (18), /* rel ptr to end of person name list */ 7 41 2 proj_brp bit (18), /* rel ptr to end of project name list */ 7 42 7 43 2 seg_count fixed bin (17), /* number of non-directory branches */ 7 44 2 dir_count fixed bin (17), /* number of directory branches */ 7 45 7 46 2 lcount fixed bin (17), /* number of links */ 7 47 2 acle_total fixed bin (17), /* total number of ACL entries in directory */ 7 48 7 49 2 arearp bit (18), /* relative pointer to beginning of allocation area */ 7 50 2 per_process_sw bit (1), /* indicates dir contains per process segments */ 7 51 2 master_dir bit (1), /* TRUE if this is a master dir */ 7 52 2 force_rpv bit (1), /* TRUE if segs must be on RPV */ 7 53 2 rehashing bit (1), /* TRUE if hash table is being constructed */ 7 54 2 pad4 bit (14), 7 55 7 56 2 iacl_count (0:7), 7 57 3 seg fixed bin (17), /* number of initial acl entries for segs */ 7 58 3 dir fixed bin (17), /* number of initial acl entries for dir */ 7 59 7 60 2 iacl (0:7), /* pointer to initial ACLs for each ring */ 7 61 3 seg_frp bit (18), /* rel ptr to start of initial ACL for segs */ 7 62 3 seg_brp bit (18), /* rel ptr to end of initial ACL for segs */ 7 63 7 64 3 dir_frp bit (18), /* rel ptr to start of initial for dirs */ 7 65 3 dir_brp bit (18), /* rel ptr to end of initial ACL for dirs */ 7 66 7 67 2 htsize fixed bin (17), /* size of hash table */ 7 68 2 hash_table_rp bit (18), /* rel ptr to start of hash table */ 7 69 7 70 2 htused fixed bin (17), /* no. of used places in hash table */ 7 71 2 pad6 fixed bin (17), 7 72 7 73 2 tree_depth fixed bin (17), /* number of levels from root of this dir */ 7 74 2 pad7 bit (18)) unaligned, 7 75 7 76 2 dts bit (36), /* date-time directory last salvaged */ 7 77 7 78 2 master_dir_uid bit (36), /* uid of superior master dir */ 7 79 2 change_pclock fixed bin (35), /* up one each call to sum$dirmod */ 7 80 2 pad8 (11) bit (36), /* pad to make it a 64 word header */ 7 81 2 checksum bit (36), /* checksummed from uid on */ 7 82 2 owner bit (36); /* uid of parent dir */ 7 83 7 84 dcl version_number_2 fixed bin int static options (constant) init (2); 7 85 7 86 /* END INCLUDE FILE ... dir_header.incl.pl1 */ 939 940 /* BEGIN INCLUDE FILE ... dir_ht.incl.pl1 */ 8 2 8 3 8 4 dcl htp ptr; 8 5 8 6 dcl 1 hash_table based (htp) aligned, /* htp = ptr(dp,active_hardcore_data$htrp) */ 8 7 2 modify bit (36) unal, 8 8 2 type bit (18) unal, /* type = dir hash table */ 8 9 2 size fixed bin (17) unal, /* size of current dir hash table entry */ 8 10 2 name_rp (0:1) bit(18) unal, /* rel ptr of name entry */ 8 11 2 checksum bit (36) unal, 8 12 2 owner bit (36) unal; 8 13 /* otherwise rel ptr to name */ 8 14 8 15 /* END INCLUDE FILE ... dir_ht.incl.pl1 */ 940 941 /* BEGIN INCLUDE FILE ... dir_link.incl.pl1 ... last modified August 1974 for nss */ 9 2 9 3 /* Template for link. Note that it is identical to entry for first 24 words. */ 9 4 9 5 9 6 dcl 1 link based (ep) aligned, 9 7 9 8 (2 efrp bit (18), /* forward rel ptr to next entry */ 9 9 2 ebrp bit (18), /* backward rel ptr to previous entry */ 9 10 9 11 2 type bit (18), /* type = dir link */ 9 12 2 size fixed bin (17), /* size of link in words */ 9 13 9 14 2 uid bit (36), /* unique id of entry */ 9 15 9 16 2 dtem bit (36), /* date-time entry modified */ 9 17 9 18 2 bs bit (1), /* entry switch = 1 if entry */ 9 19 2 pad0 bit (17), 9 20 2 nnames fixed bin (17), /* number of names for this entry */ 9 21 9 22 2 name_frp bit (18), /* rel pointer to start of name list */ 9 23 2 name_brp bit (18), /* rel pointer to end of name list */ 9 24 9 25 2 author, /* user who created entry */ 9 26 3 pers_rp bit (18), /* name of user who created entry */ 9 27 3 proj_rp bit (18), /* project of user who created entry */ 9 28 9 29 3 tag char (1), /* tag of user who created entry */ 9 30 3 pad1 char (3), 9 31 9 32 2 primary_name bit (504), /* first name on name list */ 9 33 9 34 2 dtd bit (36), /* date time dumped */ 9 35 9 36 2 pad2 bit (36), 9 37 9 38 9 39 /* the declarations below are only applicable to links */ 9 40 9 41 2 pad3 bit (18), 9 42 2 pathname_size fixed bin (17), /* number of characters in pathname */ 9 43 9 44 2 pathname char (168 refer (pathname_size))) unaligned, /* pathname of link */ 9 45 9 46 2 checksum bit (36), /* checksum from uid */ 9 47 9 48 2 owner bit (36); /* uid of containing directory */ 9 49 9 50 /* END INCLUDE FILE ... dir_link.incl.pl1 */ 941 942 /* BEGIN INCLUDE FILE ... dir_name.incl.pl1 ... last modified Nov 1975 for nss */ 10 2 10 3 /* Template for names of branches or links. Length = 14 words. */ 10 4 10 5 dcl np ptr; 10 6 10 7 dcl 1 names based aligned, /* based on ptr(dp,ep->entry.name_frp) */ 10 8 2 fp bit(18) unaligned, /* rel ptr to next name */ 10 9 2 bp bit(18) unaligned, /* rel ptr to prev name */ 10 10 10 11 2 type bit (18) unaligned, /* type = dir name */ 10 12 2 size fixed bin (17) unaligned, /* size of dir name */ 10 13 10 14 2 entry_rp bit(18) unaligned, /* rel ptr to entry */ 10 15 2 ht_index fixed bin(17) unaligned, /* index of hash table entry */ 10 16 10 17 2 hash_thread bit (18) unal, /* relative ptr to next hash entry */ 10 18 2 pad3 bit (18) unal, 10 19 10 20 2 name char(32) aligned, 10 21 10 22 2 checksum bit (36), /* checksum from entry_rp */ 10 23 10 24 2 owner bit (36); /* uid of entry */ 10 25 10 26 10 27 /* END INCLUDE FILE ... dir_name.incl.pl1 */ 942 943 /* BEGIN include file fs_obj_access_codes.incl.pl1 */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(88-05-12,Lippard), approve(88-05-02,MCR7881), 11 6* audit(88-06-16,Fawcett), install(88-08-02,MR12.2-1074): 11 7* Changed to add the FS_OBJ_AUDIT_FLAG_MOD constant. 11 8* END HISTORY COMMENTS */ 11 9 11 10 11 11 /* The possible events within the file system; access codes and 11 12* detailed operation codes. October 1984, Keith Loepere. */ 11 13 11 14 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 11 15 11 16 /* Major file system operations. */ 11 17 11 18 dcl access_operations_$fs_obj_create bit (36) aligned ext; 11 19 dcl access_operations_$fs_obj_delete bit (36) aligned ext; 11 20 dcl access_operations_$fs_obj_initiate bit (36) aligned ext; 11 21 dcl access_operations_$fs_obj_terminate bit (36) aligned ext; 11 22 dcl access_operations_$fs_obj_contents_read bit (36) aligned ext; 11 23 dcl access_operations_$fs_obj_contents_mod bit (36) aligned ext; 11 24 dcl access_operations_$fs_obj_prop_read bit (36) aligned ext; 11 25 dcl access_operations_$fs_obj_attr_mod bit (36) aligned ext; 11 26 dcl access_operations_$fs_obj_status_mod bit (36) aligned ext; 11 27 dcl access_operations_$fs_obj_access_mod bit (36) aligned ext; 11 28 11 29 /* Detailed operations. */ 11 30 11 31 dcl FS_OBJ_CONNECT fixed bin (18) uns init (1) static options (constant); 11 32 dcl FS_OBJ_BC_MOD fixed bin (18) uns init (2) static options (constant); 11 33 dcl FS_OBJ_TRUNCATE fixed bin (18) uns init (3) static options (constant); 11 34 dcl FS_OBJ_ACL_MOD fixed bin (18) uns init (4) static options (constant); 11 35 dcl FS_OBJ_RING_MOD fixed bin (18) uns init (5) static options (constant); 11 36 dcl FS_OBJ_ACL_RING_MOD fixed bin (18) uns init (6) static options (constant); 11 37 dcl FS_OBJ_RENAME fixed bin (18) uns init (7) static options (constant); 11 38 dcl FS_OBJ_COPY_SW_MOD fixed bin (18) uns init (8) static options (constant); 11 39 dcl FS_OBJ_DAMAGED_SW_MOD fixed bin (18) uns init (9) static options (constant); 11 40 dcl FS_OBJ_DNZP_MOD fixed bin (18) uns init (10) static options (constant); 11 41 dcl FS_OBJ_ENTRY_BOUND_MOD fixed bin (18) uns init (11) static options (constant); 11 42 dcl FS_OBJ_MAX_LEN_MOD fixed bin (18) uns init (12) static options (constant); 11 43 dcl FS_OBJ_SAFETY_SW_MOD fixed bin (18) uns init (13) static options (constant); 11 44 dcl FS_OBJ_SYNC_SW_MOD fixed bin (18) uns init (14) static options (constant); 11 45 dcl FS_OBJ_VOL_DUMP_SW_MOD fixed bin (18) uns init (15) static options (constant); 11 46 dcl FS_OBJ_AUTHOR_MOD fixed bin (18) uns init (16) static options (constant); 11 47 dcl FS_OBJ_BC_AUTHOR_MOD fixed bin (18) uns init (17) static options (constant); 11 48 dcl FS_OBJ_BACKUP_TIMES_MOD fixed bin (18) uns init (18) static options (constant); 11 49 dcl FS_OBJ_DATES_MOD fixed bin (18) uns init (19) static options (constant); 11 50 dcl FS_OBJ_DT_DUMPED_MOD fixed bin (18) uns init (20) static options (constant); 11 51 dcl FS_OBJ_FOR_RELOADER_MOD fixed bin (18) uns init (21) static options (constant); 11 52 dcl FS_OBJ_SONS_LVID_MOD fixed bin (18) uns init (22) static options (constant); 11 53 dcl FS_OBJ_SOOS_MOD fixed bin (18) uns init (23) static options (constant); 11 54 dcl FS_OBJ_MOVE_QUOTA fixed bin (18) uns init (24) static options (constant); 11 55 dcl FS_OBJ_CORRECT_QUSED fixed bin (18) uns init (25) static options (constant); 11 56 dcl FS_OBJ_DIR_SALVAGE fixed bin (18) uns init (26) static options (constant); 11 57 dcl FS_OBJ_MDIR_QUOTA_MOD fixed bin (18) uns init (27) static options (constant); 11 58 dcl FS_OBJ_QUOTA_MOD fixed bin (18) uns init (28) static options (constant); 11 59 dcl FS_OBJ_QUOTA_RELOAD fixed bin (18) uns init (29) static options (constant); 11 60 dcl FS_OBJ_RECLASSIFY fixed bin (18) uns init (30) static options (constant); 11 61 dcl FS_OBJ_RECLASSIFY_NODE fixed bin (18) uns init (31) static options (constant); 11 62 dcl FS_OBJ_SEG_MOVE fixed bin (18) uns init (32) static options (constant); 11 63 dcl FS_OBJ_TRP_MOD fixed bin (18) uns init (33) static options (constant); 11 64 dcl FS_OBJ_VOLUME_RETRIEVE fixed bin (18) uns init (34) static options (constant); 11 65 dcl FS_OBJ_IACL_MOD fixed bin (18) uns init (35) static options (constant); 11 66 dcl FS_OBJ_CREATE_BRANCH fixed bin (18) uns init (36) static options (constant); 11 67 dcl FS_OBJ_AUDIT_FLAG_MOD fixed bin (18) uns init (37) static options (constant); 11 68 11 69 /* END include file fs_obj_access_codes.incl.pl1 */ 943 944 /* BEGIN INCLUDE FILE ... fs_types.incl.pl1 */ 12 2 12 3 dcl ACCESS_NAME_TYPE bit (18) static options (constant) init ("000001"b3); 12 4 dcl ACLE_TYPE bit (18) static options (constant) init ("000002"b3); 12 5 dcl DIR_HEADER_TYPE bit (18) static options (constant) init ("000003"b3); 12 6 dcl DIR_TYPE bit (18) static options (constant) init ("000004"b3); 12 7 dcl LINK_TYPE bit (18) static options (constant) init ("000005"b3); 12 8 dcl NAME_TYPE bit (18) static options (constant) init ("000006"b3); 12 9 dcl SEG_TYPE bit (18) static options (constant) init ("000007"b3); 12 10 dcl HASH_TABLE_TYPE bit (18) static options (constant) init ("000013"b3); 12 11 12 12 dcl access_name_type fixed bin static options (constant) init (1); 12 13 dcl acle_type fixed bin static options (constant) init (2); 12 14 dcl dir_header_type fixed bin static options (constant) init (3); 12 15 dcl dir_type fixed bin static options (constant) init (4); 12 16 dcl link_type fixed bin static options (constant) init (5); 12 17 dcl name_type fixed bin static options (constant) init (6); 12 18 dcl seg_type fixed bin static options (constant) init (7); 12 19 dcl hash_table_type fixed bin static options (constant) init (11); 12 20 12 21 /* END INCLUDE FILE ... fs_types.incl.pl1 */ 944 945 /* BEGIN INCLUDE FILE - - - makeknown_info.incl.pl1 - - - last modified March 1975 by R. Bratt - - - */ 13 2 /* Modified October 1984 for explicit activate flag and to remove 13 3* detectable flag, Keith Loepere. */ 13 4 13 5 dcl makeknown_infop ptr; 13 6 13 7 dcl 1 makeknown_info aligned based (makeknown_infop), 13 8 2 uid bit (36) aligned, 13 9 2 entryp ptr unaligned, 13 10 2 flags unaligned, 13 11 3 dirsw bit (1), 13 12 3 rsw bit (1), 13 13 3 allow_write bit (1), 13 14 3 priv_init bit (1), 13 15 3 audit bit (1), 13 16 3 activate bit (1); /* Use only for directory initiation within directory control */ 13 17 13 18 /* END INCLUDE FILE makeknown_info.incl.pl1 - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 945 946 /* BEGIN INCLUDE FILE null_addresses.incl.pl1 */ 14 2 /* Added segmove values, Benson Margulies, 84-01 */ 14 3 14 4 dcl (pc_move_page_table_1_null_addr init ("3770070"b3), 14 5 pc_move_page_table_2_null_addr init ("3770100"b3), 14 6 get_aste_null_addr init ("3770110"b3), 14 7 make_sdw_null_addr init ("3770120"b3), 14 8 put_aste_null_addr init ("3770130"b3), 14 9 page_bad_pd_null_addr init ("3770150"b3), 14 10 list_deposit_null_addr init ("3770160"b3), 14 11 get_file_map_null_addr init ("3770170"b3), 14 12 fill_page_table_null_addr init ("3770200"b3), 14 13 init_sst_null_addr init ("3770210"b3), 14 14 get_file_map_vt_null_addr init ("3770220"b3), 14 15 unprotected_null_addr init ("3770230"b3), 14 16 page_bad_null_addr init ("3770240"b3), 14 17 page_problem_null_addr init ("3770250"b3), 14 18 page_parity_null_addr init ("3770260"b3), 14 19 page_devparity_null_addr init ("3770270"b3), 14 20 segmove_old_addr_null_addr init ("3770300"b3), 14 21 segmove_new_addr_null_addr init ("3770310"b3), 14 22 get_file_map_dumper_non_null_addr init ("3777720"b3), 14 23 append_null_addr init ("3777770"b3)) bit (22) aligned static options (constant); 14 24 dcl create_vtoce_four_null_addrs fixed bin (71) int static init (-1);/* 777777 777777 777777 777777 */ 14 25 14 26 dcl (create_vtoce_null_addr init ("777777"b3), 14 27 update_vtoce_null_addr init ("777776"b3), 14 28 truncate_vtoce_fill_null_addr init ("777775"b3), 14 29 truncate_vtoce_null_addr init ("777002"b3), 14 30 pv_salv_null_addr init ("777004"b3), 14 31 pv_scav_null_addr init ("777006"b3), 14 32 volume_reloader_null_addr init ("777774"b3), 14 33 volume_retriever_null_addr init ("777773"b3), 14 34 salv_truncate_null_addr init ("777005"b3)) bit (18) aligned static options (constant); 14 35 14 36 /* END INCLUDE FILE null_addresses.incl.pl1 */ 946 947 /* BEGIN INCLUDE FILE ... retv_append_args.incl.pl1 ... Modified BIM 84-03-16 */ 15 2 15 3 dcl retv_append_argp ptr; 15 4 15 5 dcl 1 retv_append_args based (retv_append_argp) aligned, 15 6 2 version char (8) aligned, 15 7 2 level fixed bin, 15 8 2 access_authorization bit (72), /* of user making request */ 15 9 2 max_access_authorization bit (72), /* ditto */ 15 10 2 ep ptr, 15 11 2 flags, 15 12 (3 link bit (1), 15 13 3 cross_segment bit (1))unal; 15 14 15 15 declare RETV_APPEND_ARGS_VERSION_1 char (8) aligned init ("rtvag001") int static options (constant); 15 16 15 17 /* END INCLUDE FILE ... retv_append_args.incl.pl1 */ 947 948 949 950 /* BEGIN MESSAGE DOCUMENTATION 951* 952* 953* Message: 954* append: error from delete_vtoce for PATH: ERROR_MESSAGE 955* 956* S: $log 957* 958* T: $run 959* 960* M: While deleting a VTOC entry 961* to clean up an unsuccessful attempt to create an branch, 962* append got an error. 963* $err 964* 965* A: $note 966* 967* 968* Message: 969* append: error from hash$out for PATH: ERROR_CODE 970* 971* S: $log 972* 973* T: $run 974* 975* M: While removing a name 976* to clean up an unsuccessful attempt to create a branch, 977* append got an error. 978* $err 979* 980* A: $note 981* 982* 983* Message: 984* append: makeunknown_ err after quota err for PATH: ERROR_CODE 985* 986* S: $log 987* 988* T: $run 989* 990* M: During the creation of a new directory, append encountered an error moving quota. 991* While cleaning up from this error a further error was encountered. 992* The system continues to operate. 993* $err 994* 995* A: $note 996* 997* 998* Message: 999* append: error from makeunknown_ for PATH: ERROR_CODE 1000* 1001* S: $log 1002* 1003* T: $run 1004* 1005* M: Append made the new directory PATH unknown after initializing its header. 1006* While doing so it encountered an error. 1007* $err 1008* 1009* A: $note 1010* 1011* END MESSAGE DOCUMENTATION */ 1012 1013 end append; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0800.0 append.pl1 >spec>install>1110>append.pl1 933 1 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.incl.pl1 934 2 02/12/85 1429.5 access_audit_user_info.incl.pl1 >ldd>include>access_audit_user_info.incl.pl1 935 3 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 936 4 03/16/89 2012.8 create_branch_info.incl.pl1 >ldd>include>create_branch_info.incl.pl1 937 5 05/20/85 0848.1 dc_find_dcls.incl.pl1 >ldd>include>dc_find_dcls.incl.pl1 938 6 04/29/76 1100.6 dir_entry.incl.pl1 >ldd>include>dir_entry.incl.pl1 939 7 05/24/82 1005.0 dir_header.incl.pl1 >ldd>include>dir_header.incl.pl1 940 8 11/02/76 1414.6 dir_ht.incl.pl1 >ldd>include>dir_ht.incl.pl1 941 9 04/29/76 1049.2 dir_link.incl.pl1 >ldd>include>dir_link.incl.pl1 942 10 11/02/76 1414.7 dir_name.incl.pl1 >ldd>include>dir_name.incl.pl1 943 11 08/04/88 2054.1 fs_obj_access_codes.incl.pl1 >ldd>include>fs_obj_access_codes.incl.pl1 944 12 05/26/77 0922.2 fs_types.incl.pl1 >ldd>include>fs_types.incl.pl1 945 13 01/30/85 1523.9 makeknown_info.incl.pl1 >ldd>include>makeknown_info.incl.pl1 946 14 07/11/84 0937.3 null_addresses.incl.pl1 >ldd>include>null_addresses.incl.pl1 947 15 03/23/84 1928.6 retv_append_args.incl.pl1 >ldd>include>retv_append_args.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. DIR_HEADER_TYPE constant bit(18) initial packed unaligned dcl 12-5 ref 871 DIR_TYPE constant bit(18) initial packed unaligned dcl 12-6 ref 593 LINK_TYPE constant bit(18) initial packed unaligned dcl 12-7 ref 648 NAME_TYPE constant bit(18) initial packed unaligned dcl 12-8 ref 665 RETV_APPEND_ARGS_VERSION_1 000000 constant char(8) initial dcl 15-15 ref 333 SEG_TYPE constant bit(18) initial packed unaligned dcl 12-9 ref 594 a_arg_ptr parameter pointer dcl 133 ref 316 326 341 366 375 381 a_bitcnt parameter fixed bin(24,0) dcl 134 ref 409 425 a_code parameter fixed bin(35,0) dcl 135 set ref 316 326 334* 366 375 409 445 465 762* a_copysw parameter fixed bin(2,0) dcl 136 ref 409 413 a_dirname parameter char packed unaligned dcl 137 ref 316 326 366 375 409 445 465 483 a_dirsw parameter fixed bin(1,0) dcl 138 ref 409 415 a_ename parameter char packed unaligned dcl 139 ref 316 326 366 375 409 445 465 484 a_linkname parameter char packed unaligned dcl 140 ref 465 469 a_mode parameter fixed bin(5,0) dcl 141 ref 409 416 418 445 462 a_retv_append_argp parameter pointer dcl 142 ref 326 332 a_ringbrack parameter fixed bin(6,0) array dcl 143 ref 409 423 a_sons parameter bit(36) packed unaligned dcl 144 ref 316 320 a_uid_path parameter bit(36) array dcl 145 set ref 316 928* a_userid parameter char packed unaligned dcl 146 ref 409 422 ac_sw 000100 automatic bit(1) dcl 153 set ref 386* 387 529 822* 908 acbr based structure level 1 dcl 233 set ref 341 381 acbr_version 000101 automatic fixed bin(17,0) dcl 154 set ref 342* 343 343 382* 383 383 406 acc_name_$elements 000072 constant entry external dcl 274 ref 441 acc_name_$encode 000074 constant entry external dcl 275 ref 656 694 access_audit_$log_entry_ptr 000102 constant entry external dcl 278 ref 755 access_audit_$log_entry_ptr_user 000104 constant entry external dcl 279 ref 749 access_audit_check_ep_$self 000076 constant entry external dcl 276 ref 755 access_audit_check_ep_$user 000100 constant entry external dcl 277 ref 749 access_authorization 3 based bit(72) level 2 dcl 15-5 ref 353 access_class 13 based bit(72) level 2 in structure "dir" dcl 7-11 in procedure "append" set ref 883* access_class 000102 automatic bit(72) dcl 155 in procedure "append" set ref 388* 389* 530* 682 799* 813* 909* access_class 33 based bit(72) level 2 in structure "entry" dcl 6-8 in procedure "append" set ref 520 682* 883 access_class 20 based bit(72) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 388 access_operations_$fs_obj_create 000210 external static bit(36) dcl 11-18 set ref 749* 749* 755* 755* acl_$add_entry 000106 constant entry external dcl 280 ref 603 614 625 acl_$del_acl 000110 constant entry external dcl 281 ref 787 acl_$list_entry 000112 constant entry external dcl 282 ref 612 acl_brp 36(18) based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 589* acl_count 000104 automatic fixed bin(17,0) dcl 156 set ref 598* 608* 614* 617* 617 625* 629* 629 632 787* acl_frp 36 based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 589* 599 acl_start_ptr 000106 automatic pointer dcl 157 set ref 599* 603* 614* 625* 787* acle_count 35(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-8 set ref 590* 632* acle_total 23(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 600 609* 609 618* 618 630* 630 788* activate 2(05) 000420 automatic bit(1) level 3 packed packed unaligned dcl 193 set ref 864* active_all_rings_data$max_tree_depth 000010 external static fixed bin(17,0) dcl 243 ref 545 active_hardcore_data$alloc_sizes 000012 external static fixed bin(17,0) array dcl 244 set ref 641 644 886 886 active_hardcore_data$dir_arearp 000014 external static fixed bin(35,0) dcl 245 ref 876 active_hardcore_data$dir_hdrsize 000016 external static fixed bin(17,0) dcl 246 ref 872 active_hardcore_data$elcsize 000020 external static fixed bin(17,0) dcl 247 ref 638 active_hardcore_data$ensize 000022 external static fixed bin(17,0) dcl 248 ref 666 active_hardcore_data$esize 000024 external static fixed bin(17,0) dcl 249 ref 584 active_hardcore_data$nalloc_sizes 000026 external static fixed bin(17,0) dcl 250 set ref 641 886* add_sw 000110 automatic bit(1) packed unaligned dcl 158 set ref 603* 614* 616 625* 628 addr builtin function dcl 312 ref 341 346 381 441 441 441 441 480 481 550 550 565 569 599 603 603 610 625 625 656 656 659 694 694 748 782 782 866 866 886 886 admin_append 000111 automatic bit(1) dcl 159 set ref 370* 511 823* aim_check_$equal 000114 constant entry external dcl 283 ref 813 aim_check_$greater 000116 constant entry external dcl 284 ref 799 909 aim_check_$greater_or_equal 000120 constant entry external dcl 285 ref 389 aim_template based structure level 1 dcl 3-12 allocate_dir_ht_ 000122 constant entry external dcl 286 ref 889 allow_write 2(02) 000420 automatic bit(1) level 3 packed packed unaligned dcl 193 set ref 863* areap 000112 automatic pointer dcl 160 set ref 558* 585* 646* 790* arearp 24 based bit(18) level 2 packed packed unaligned dcl 7-11 set ref 558 876* 885 886 886 arg_ptr 000114 automatic pointer dcl 161 set ref 341* 342 350 381* 382 386 388 394 395 396 397 398 400 401 402 403 404 405 406 asize 000116 automatic fixed bin(17,0) dcl 162 set ref 885* 886* audit_event_flags based structure level 1 dcl 1-5 audit_eventflags 000117 automatic bit(36) dcl 163 set ref 747* 748 749* 749* 755* 755* audit_flags 22 based bit(36) level 2 dcl 2-13 set ref 355* 749* audit_user_info based structure level 1 dcl 2-13 set ref 347* audit_user_info_ptr 000614 automatic pointer dcl 2-11 set ref 346* 347 349 350 352 353 354 355 356 505* 749 749 749* audit_user_info_version_1 000002 constant char(8) initial packed unaligned dcl 2-23 ref 349 author 6 based structure level 2 packed packed unaligned dcl 6-8 set ref 656 656 authorization 14 based bit(72) level 2 dcl 2-13 set ref 353* 749* authorization_range 16 based bit(72) array level 2 dcl 2-13 set ref 354* authp 000120 automatic pointer dcl 164 set ref 480* 481* 656* 694* bad_dir_ 000606 stack reference condition dcl 314 ref 539 552 baseptr builtin function dcl 312 ref 868 bc 40(11) based fixed bin(24,0) level 2 packed packed unaligned dcl 6-8 set ref 680* bc_author 37 based structure level 2 packed packed unaligned dcl 6-8 set ref 694 694 bcount 000122 automatic fixed bin(17,0) dcl 165 set ref 536* 539 bin builtin function dcl 312 ref 505 505 511 511 513 513 845 846 bit builtin function dcl 312 ref 416 418 462 675 681 707 708 709 710 845 846 876 bitcnt 16 based fixed bin(24,0) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 402 bitcnt 000123 automatic fixed bin(24,0) dcl 166 in procedure "append" set ref 402* 425* 452* 680 804 bmode 000124 automatic bit(3) dcl 167 set ref 395* 416* 419* 462* 490 493 branch_sw 000125 automatic bit(1) packed unaligned dcl 168 set ref 426* 449* 470* 486 502 520 528 554 563 676 785 bs 4 based bit(1) level 2 packed packed unaligned dcl 6-8 set ref 678* chase_sw 000126 automatic bit(1) dcl 169 in procedure "append" set ref 403* 502* 505 505 511 511 513 513 824* chase_sw 1(02) based bit(1) level 3 in structure "acbr" packed packed unaligned dcl 233 in procedure "append" set ref 403 check_gate_acl_ 000124 constant entry external dcl 287 ref 580 clock builtin function dcl 312 ref 675 code 000127 automatic fixed bin(35,0) dcl 170 set ref 390* 441* 442 479* 505* 507 511* 513* 514 525* 546* 550* 551 552 554* 555* 556 577* 580* 581 603* 604 611 612* 613 614* 615 621 625* 626 656* 657 669* 670 694* 695 697* 698 702* 703 716* 717 762 767* 769* 771* 773* 775* 777* 814* 849* 850 866* 867 894* 895 905* 906 914* 915 919* 920 920* collate builtin function dcl 312 ref 476 copy_sw 1(01) based bit(1) level 3 packed packed unaligned dcl 233 set ref 394 copysw 000130 automatic fixed bin(1,0) dcl 171 in procedure "append" set ref 394* 413* 414* 452* 710 copysw 32(03) based bit(1) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 710* create_branch_info based structure level 1 dcl 4-17 create_branch_version_1 constant fixed bin(17,0) initial dcl 149 ref 343 383 406 create_branch_version_2 constant fixed bin(17,0) initial dcl 4-35 ref 343 383 create_vtoce 000126 constant entry external dcl 288 ref 702 716 cross_segment 12(01) based bit(1) level 3 packed packed unaligned dcl 15-5 ref 363 dc_find$dir_for_append 000200 constant entry external dcl 5-15 ref 513 dc_find$dir_for_append_raw 000202 constant entry external dcl 5-16 ref 511 dc_find$dir_for_retrieve_append 000204 constant entry external dcl 5-17 ref 505 dc_find$finished 000206 constant entry external dcl 5-33 ref 760 794 default_sw 000131 automatic bit(1) packed unaligned dcl 172 set ref 428* 449* delete_vtoce 000130 constant entry external dcl 289 ref 779 dep 000132 automatic pointer dcl 173 set ref 505* 511* 513* 518 520 521 521 522* 791 791 791 dir based structure level 1 dcl 7-11 in procedure "append" set ref 870* dir 25(18) based fixed bin(17,0) array level 3 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 566 dir_count 22(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 536 721* 721 927* 927 dir_frp 36 based bit(18) array level 3 packed packed unaligned dcl 7-11 set ref 565 dir_quota 22 based fixed bin(18,0) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 406 dir_quota 000134 automatic fixed bin(18,0) dcl 174 in procedure "append" set ref 406* 825* 913 914* dir_sw 1 based bit(1) level 3 packed packed unaligned dcl 233 set ref 396 dirl 000135 automatic bit(1) dcl 175 set ref 477* 508* 515* 760* 794* dirname 000136 automatic char(168) packed unaligned dcl 176 set ref 483* 505* 511* 513* 781* 784* 899* 920* dirp 000210 automatic pointer dcl 177 set ref 865* 868* 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 886 886 886 889* 890 894* 914* 918* dirsw 32 based bit(1) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 681* dirsw 32 000351 automatic bit(1) level 2 in structure "local_entry" packed packed unaligned dcl 191 in procedure "append" set ref 435 dirsw 000212 automatic fixed bin(1,0) dcl 178 in procedure "append" set ref 396* 399 415* 415* 416 424 452* 490 545 554 564 593 681 705 720 800 dirsw 2 000420 automatic bit(1) level 3 in structure "mk_info" packed packed unaligned dcl 193 in procedure "append" set ref 862* divide builtin function dcl 312 ref 638 dp 000620 automatic pointer dcl 7-9 set ref 505* 511* 513* 536 536 536 537 537 541 545 550* 555 558 558 559 565 566 569 570 596 600 609 609 612 618 618 630 630 652 669* 676 676 679 697* 699 711 711 721 721 722 725 725 729 731 731 735 739 744 745* 760* 782* 788 793 794* 843 857 874 882 890 922 927 927 dtem 3 based bit(36) level 2 in structure "entry" dcl 6-8 in procedure "append" set ref 591 675* 743* dtem 000213 automatic bit(36) dcl 179 in procedure "append" set ref 591* 743 dumcode 000214 automatic fixed bin(35,0) dcl 180 set ref 779* 781 781* 782* 784 784* 898* 899 899* dummy 000215 automatic char(32) dcl 181 set ref 580* ebrp 0(18) based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 732* 736* efrp based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 541 732* 737* 738* ename 000225 automatic char(32) packed unaligned dcl 182 set ref 484* 505* 511* 513* 526 664 781* 784* 899* 920* ename_aligned 000235 automatic char(32) dcl 183 set ref 526* 550 550 782 782 entry based structure level 1 dcl 6-8 set ref 359 588* entry_rp 2 based bit(18) level 2 packed packed unaligned dcl 10-7 set ref 663* entrybrp 17 based bit(18) level 2 packed packed unaligned dcl 7-11 set ref 731* 735 739* entryfrp 16 based bit(18) level 2 packed packed unaligned dcl 7-11 set ref 537 729 731* entryp 1 000420 automatic pointer level 2 packed packed unaligned dcl 193 set ref 861* ep 10 based pointer level 2 in structure "retv_append_args" dcl 15-5 in procedure "append" ref 358 359 ep 000616 automatic pointer dcl 6-6 in procedure "append" set ref 537* 537* 540* 541 550* 585* 586 588 589 589 590 591 593 594 595 596 599 632 646* 647 648 649 650 651 652 656 656 659 660 660 662 663 674 675 678 679 680 681 682 683 689 690 692 694 694 699 702* 702 704 707 708 709 710 716* 716 718 722 722 731 732 732 735 736 737 738 739 743 749* 749* 755* 755* 779* 790* 842 843 845 846 849* 860 861 875 877 878 879 880 881 881 883 884 894* 897* 905* 909 914* error_table_$ai_restricted 000030 external static fixed bin(35,0) dcl 251 ref 390 814 error_table_$argerr 000032 external static fixed bin(35,0) dcl 252 ref 621 767 error_table_$invalid_mode 000034 external static fixed bin(35,0) dcl 253 ref 773 error_table_$invalid_project_for_gate 000036 external static fixed bin(35,0) dcl 254 ref 577 error_table_$invalid_ring_brackets 000040 external static fixed bin(35,0) dcl 255 ref 771 error_table_$lower_ring 000042 external static fixed bin(35,0) dcl 256 ref 769 error_table_$max_depth_exceeded 000044 external static fixed bin(35,0) dcl 257 ref 546 error_table_$namedup 000046 external static fixed bin(35,0) dcl 258 ref 775 error_table_$noalloc 000050 external static fixed bin(35,0) dcl 259 ref 777 error_table_$noentry 000052 external static fixed bin(35,0) dcl 260 ref 552 error_table_$unimplemented_version 000054 external static fixed bin(35,0) dcl 261 ref 334 ex_ring_brackets 35(09) based bit(3) array level 2 packed packed unaligned dcl 6-8 set ref 845* 846* exmode 22 000500 automatic bit(36) initial level 2 in structure "service_acl" dcl 209 in procedure "append" set ref 209* 497* exmode 22 000550 automatic bit(36) initial level 2 in structure "user_acl" dcl 221 in procedure "append" set ref 221* 493* 494 fixed builtin function dcl 312 ref 394 396 416 418 462 675 707 708 709 876 885 flags 12 based structure level 2 in structure "retv_append_args" dcl 15-5 in procedure "append" flags 2 000420 automatic structure level 2 in structure "mk_info" packed packed unaligned dcl 193 in procedure "append" fs_alloc$alloc 000132 constant entry external dcl 290 ref 585 646 fs_alloc$free 000134 constant entry external dcl 291 ref 790 fs_alloc$init 000136 constant entry external dcl 292 ref 886 getuid 000140 constant entry external dcl 293 ref 562 grant 0(01) based bit(1) level 2 packed packed unaligned dcl 1-5 set ref 748* hash$in 000142 constant entry external dcl 294 ref 669 hash$out 000144 constant entry external dcl 295 ref 782 hash$search 000146 constant entry external dcl 296 ref 550 i 000245 automatic fixed bin(17,0) dcl 184 set ref 429* 430 431* 535* 538* 538 539 611* 612* 641* 641* 644 iacl 35 based structure array level 2 packed packed unaligned dcl 7-11 iacl_count 25 based structure array level 2 packed packed unaligned dcl 7-11 iacl_start_ptr 000246 automatic pointer dcl 185 set ref 565* 569* 580* 612* iaclp 000250 automatic pointer dcl 186 set ref 610* 612* 614* initial_acl 000252 automatic structure level 1 dcl 187 set ref 610 input_acl based structure level 1 dcl 234 lcount 23 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 536 676* 676 length builtin function dcl 312 ref 475 level 2 based fixed bin(17,0) level 2 in structure "retv_append_args" dcl 15-5 in procedure "append" ref 338 356 level 000275 automatic fixed bin(17,0) dcl 188 in procedure "append" set ref 338* 433* 435 459* 565 566 569 570 571 749* 755* 801 804 level$get 000150 constant entry external dcl 297 ref 433 459 link based structure level 1 dcl 9-6 in procedure "append" link 12 based bit(1) level 3 in structure "retv_append_args" packed packed unaligned dcl 15-5 in procedure "append" ref 358 361 534 linkname 000276 automatic char(168) dcl 189 set ref 358* 469* 472 475 476 651 llngth 000350 automatic fixed bin(18,0) dcl 190 set ref 475* 476 638 650 local_entry 000351 automatic structure level 1 dcl 191 set ref 359* 588 lock$dir_unlock 000152 constant entry external dcl 298 ref 521 791 makeknown_ 000154 constant entry external dcl 299 ref 866 makeknown_info based structure level 1 dcl 13-7 makeunknown_ 000156 constant entry external dcl 300 ref 898 919 master_dir 32(09) based bit(1) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 692* 722 880 881 master_dir 24(19) based bit(1) level 2 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 880* master_dir_uid 61 based bit(36) level 2 dcl 7-11 set ref 881* 882* 882 max_access_authorization 5 based bit(72) level 2 in structure "retv_append_args" dcl 15-5 in procedure "append" ref 339 354 max_access_authorization 000416 automatic bit(72) dcl 192 in procedure "append" set ref 323* 339* 372* 379* 389* mk_info 000420 automatic structure level 1 dcl 193 set ref 859* 866 866 mode 2 based bit(3) level 2 in structure "acbr" packed packed unaligned dcl 233 in procedure "append" set ref 395 mode 21 000550 automatic bit(36) initial level 2 in structure "user_acl" dcl 221 in procedure "append" set ref 221* 490* mode 21 000500 automatic bit(36) initial level 2 in structure "service_acl" dcl 209 in procedure "append" set ref 209* 496* modify based bit(36) level 2 dcl 7-11 set ref 559* 744* 793* 857* 922* mountedp 000160 constant entry external dcl 301 ref 555 multiple_class 32(05) based bit(1) level 2 packed packed unaligned dcl 6-8 set ref 683* 689 my_audit_user_info 000423 automatic structure level 1 dcl 194 set ref 346 n_iacls 000446 automatic fixed bin(17,0) dcl 195 set ref 566* 570* 612* name 4 based char(32) level 2 dcl 10-7 set ref 664* name_brp 5(18) based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 660* name_frp 5 based bit(18) level 2 packed packed unaligned dcl 6-8 set ref 660* names based structure level 1 dcl 10-7 newuid 000447 automatic bit(36) dcl 196 set ref 561* 562* 603* 614* 625* 667 674 787* nnames 4(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 6-8 set ref 662* np 000622 automatic pointer dcl 10-5 set ref 659* 660 663 664 665 666 667 669* 782* null builtin function dcl 312 ref 518 522 586 647 749 749 755 755 791 865 nwords 000450 automatic fixed bin(17,0) dcl 197 set ref 638* 641 owner 77 based bit(36) level 2 in structure "dir" dcl 7-11 in procedure "append" set ref 874* owner 15 based bit(36) level 2 in structure "names" dcl 10-7 in procedure "append" set ref 667* owner 44 based bit(36) level 2 in structure "entry" dcl 6-8 in procedure "append" set ref 596* owner based bit(36) level 2 in structure "link" dcl 9-6 in procedure "append" set ref 652* parent_ac_sw 1(04) based bit(1) level 3 packed packed unaligned dcl 233 set ref 386 parent_access_class 000452 automatic bit(72) dcl 198 set ref 518* 520* 530 799* 813* 909* pathname 31 based char level 2 packed packed unaligned dcl 9-6 set ref 358 651* pathname_size 30(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 9-6 set ref 358 650* 651 652 pds$access_authorization 000056 external static structure level 1 dcl 262 pds$access_name 000060 external static structure level 1 dcl 263 set ref 481 pds$max_access_authorization 000062 external static bit(72) dcl 267 ref 323 379 pds$processid 000064 external static bit(36) dcl 268 ref 559 922 per_process_sw 24(18) based bit(1) level 2 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 679 878* per_process_sw 32(02) based bit(1) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 679* 878 person 000550 automatic char(32) level 2 in structure "user_acl" dcl 221 in procedure "append" set ref 456* person 000060 external static char(32) level 2 in structure "pds$access_name" dcl 263 in procedure "append" set ref 456 person 000500 automatic char(32) initial level 2 in structure "service_acl" dcl 209 in procedure "append" set ref 209* prevep 000454 automatic pointer dcl 199 set ref 735* 736 737 primary_name 10 based bit(504) level 2 packed packed unaligned dcl 6-8 set ref 659 prior_dir_acl_count 000456 automatic fixed bin(17,0) dcl 200 set ref 600* 788 priv_mqsw 000457 automatic bit(1) dcl 201 set ref 404* 802 809 826* 908 priv_upgrade_sw 1(03) based bit(1) level 3 packed packed unaligned dcl 233 set ref 404 privileges 1(18) 000056 external static structure level 2 packed packed unaligned dcl 262 process_id 13 based bit(36) level 2 dcl 2-13 set ref 352* project 10 000500 automatic char(32) initial level 2 in structure "service_acl" dcl 209 in procedure "append" set ref 209* project 10 000550 automatic char(32) level 2 in structure "user_acl" dcl 221 in procedure "append" set ref 457* 573 575 575 project 10 000060 external static char(32) level 2 in structure "pds$access_name" dcl 263 in procedure "append" set ref 457 574 project 000460 automatic char(32) dcl 202 in procedure "append" set ref 573* 574* 575 ptr builtin function dcl 312 ref 521 521 537 541 558 735 791 791 886 886 pvid 30 based bit(36) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 702* 716* 877 pvid 11 based bit(36) level 2 in structure "dir" dcl 7-11 in procedure "append" set ref 877* quota 000470 automatic fixed bin(18,0) dcl 203 in procedure "append" set ref 405* 801 827* 849* 892 894* 905* quota 17 based fixed bin(18,0) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 405 quota$append_mdir_set 000162 constant entry external dcl 302 ref 905 quota$check 000164 constant entry external dcl 303 ref 849 quota$qmove_mylock 000166 constant entry external dcl 304 ref 894 914 read_lock 000471 automatic bit(36) dcl 204 set ref 828* rel builtin function dcl 312 ref 537 660 663 731 736 737 739 retv 000472 automatic bit(1) dcl 205 set ref 330* 433 435 435 480 504 533 561 573 587 602 689 701 743 749 829* retv_append_argp 000624 automatic pointer dcl 15-3 set ref 332* 333 338 339 353 354 356 358 358 359 361 363 534 retv_append_args based structure level 1 dcl 15-5 retv_cross_segment 000473 automatic bit(1) dcl 206 set ref 363* 602 624 715 830* ring 12 based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 2-13 set ref 356* ring_brackets 35 based bit(3) array level 2 packed packed unaligned dcl 6-8 set ref 707* 708* 709* ringbrack 000474 automatic fixed bin(6,0) array dcl 207 set ref 397* 398* 399* 399 400* 423* 424* 424 430 431 435 437 437 437 437 459* 571 571 707 708 709 808 845 846 rings 3 based fixed bin(3,0) array level 2 dcl 233 set ref 397 398 400 rtrim builtin function dcl 312 ref 475 security_oosw 32(07) based bit(1) level 2 packed packed unaligned dcl 6-8 set ref 690* 909* seg 25 based fixed bin(17,0) array level 3 packed packed unaligned dcl 7-11 set ref 570 seg_count 22 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 536 711* 711 725* 725 seg_frp 35 based bit(18) array level 3 packed packed unaligned dcl 7-11 set ref 569 segno 000477 automatic fixed bin(17,0) dcl 208 set ref 866* 868 898* 919* service_acl 000500 automatic structure level 1 dcl 209 set ref 603 603 size 1(18) based fixed bin(17,0) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 595* size 1(18) based fixed bin(17,0) level 2 in structure "names" packed packed unaligned dcl 10-7 in procedure "append" set ref 666* size 1(18) based fixed bin(17,0) level 2 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 872* size 1(18) based fixed bin(17,0) level 2 in structure "link" packed packed unaligned dcl 9-6 in procedure "append" set ref 649* sons 000523 automatic bit(36) dcl 215 set ref 320* 842 sons_lvid 12 based bit(36) level 2 in structure "dir" dcl 7-11 in procedure "append" set ref 555* 722 843 879* sons_lvid 41 based bit(36) level 2 in structure "entry" dcl 6-8 in procedure "append" set ref 722* 842* 843* 879 sonsw 000524 automatic bit(1) dcl 216 set ref 321* 692 831* 842 848 892 928 soos 1(21) 000056 external static bit(1) level 3 packed packed unaligned dcl 262 ref 690 sp_sw 000525 automatic bit(1) dcl 217 set ref 683 805* 809* 832* substr builtin function dcl 312 ref 416 419 419 462 472 476 675 sum$dirmod 000170 constant entry external dcl 305 ref 745 918 switches 1 based structure level 2 packed packed unaligned dcl 233 sys_info$access_class_ceiling 000066 external static bit(72) dcl 269 ref 372 682 sys_info$default_dir_max_length 000070 external static fixed bin(19,0) dcl 270 ref 885 syserr$error_code 000172 constant entry external dcl 306 ref 781 784 899 920 sysl 000526 automatic bit(1) dcl 218 set ref 833* tag 20 000550 automatic char(1) level 2 in structure "user_acl" dcl 221 in procedure "append" set ref 458* tag 20 000500 automatic char(1) initial level 2 in structure "service_acl" dcl 209 in procedure "append" set ref 209* temp_b4 000527 automatic bit(4) dcl 219 set ref 418* 419 419 tree_depth 57 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 545 699 890* 890 truncate$trentry 000174 constant entry external dcl 307 ref 897 type 1 based bit(18) level 2 in structure "link" packed packed unaligned dcl 9-6 in procedure "append" set ref 648* type 1 based bit(18) level 2 in structure "names" packed packed unaligned dcl 10-7 in procedure "append" set ref 665* type 1 based bit(18) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 593* 594* type 1 based bit(18) level 2 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 871* uid 10 based bit(36) level 2 in structure "dir" dcl 7-11 in procedure "append" set ref 596 612* 652 874 875* uid 000420 automatic bit(36) level 2 in structure "mk_info" dcl 193 in procedure "append" set ref 860* uid 2 000351 automatic bit(36) level 2 in structure "local_entry" dcl 191 in procedure "append" set ref 540 561 uid 2 based bit(36) level 2 in structure "entry" dcl 6-8 in procedure "append" set ref 540 674* 699 860 875 881 uid_path 000530 automatic bit(36) array dcl 220 set ref 697* 699* 928 uid_path_util$get 000176 constant entry external dcl 308 ref 697 unspec builtin function dcl 312 set ref 347* 859* 870* user_acl 000550 automatic structure level 1 dcl 221 set ref 441 441 480 625 625 user_id 2 based char(32) level 2 dcl 2-13 set ref 350* userid 000573 automatic char(32) dcl 227 in procedure "append" set ref 401* 422* 441 441 userid 6 based char(32) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 350 401 verify builtin function dcl 312 ref 476 version based fixed bin(17,0) level 2 in structure "acbr" dcl 233 in procedure "append" set ref 342 382 version based char(8) level 2 in structure "retv_append_args" dcl 15-5 in procedure "append" ref 333 version based char(8) level 2 in structure "audit_user_info" dcl 2-13 in procedure "append" set ref 349* version_number 15(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-11 set ref 873* version_number_2 constant fixed bin(17,0) initial dcl 7-84 ref 873 vtocx 31 based fixed bin(17,0) level 2 in structure "entry" packed packed unaligned dcl 6-8 in procedure "append" set ref 704* 718* 884 vtocx 15 based fixed bin(17,0) level 2 in structure "dir" packed packed unaligned dcl 7-11 in procedure "append" set ref 884* vtocx_temp 000603 automatic fixed bin(17,0) dcl 228 set ref 702* 704 716* 718 xsize 000604 automatic fixed bin(17,0) dcl 229 set ref 584* 585* 595 644* 646* 649 790* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCESS_NAME_TYPE internal static bit(18) initial packed unaligned dcl 12-3 ACLE_TYPE internal static bit(18) initial packed unaligned dcl 12-4 DC_FIND_CHASE internal static fixed bin(1,0) initial dcl 5-10 DC_FIND_NO_CHASE internal static fixed bin(1,0) initial dcl 5-11 DC_FIND_NO_UNLOCK_DIR internal static bit(1) initial dcl 5-12 DC_FIND_UNLOCK_DIR internal static bit(1) initial dcl 5-13 FS_OBJ_ACL_MOD internal static fixed bin(18,0) initial unsigned dcl 11-34 FS_OBJ_ACL_RING_MOD internal static fixed bin(18,0) initial unsigned dcl 11-36 FS_OBJ_AUDIT_FLAG_MOD internal static fixed bin(18,0) initial unsigned dcl 11-67 FS_OBJ_AUTHOR_MOD internal static fixed bin(18,0) initial unsigned dcl 11-46 FS_OBJ_BACKUP_TIMES_MOD internal static fixed bin(18,0) initial unsigned dcl 11-48 FS_OBJ_BC_AUTHOR_MOD internal static fixed bin(18,0) initial unsigned dcl 11-47 FS_OBJ_BC_MOD internal static fixed bin(18,0) initial unsigned dcl 11-32 FS_OBJ_CONNECT internal static fixed bin(18,0) initial unsigned dcl 11-31 FS_OBJ_COPY_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 11-38 FS_OBJ_CORRECT_QUSED internal static fixed bin(18,0) initial unsigned dcl 11-55 FS_OBJ_CREATE_BRANCH internal static fixed bin(18,0) initial unsigned dcl 11-66 FS_OBJ_DAMAGED_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 11-39 FS_OBJ_DATES_MOD internal static fixed bin(18,0) initial unsigned dcl 11-49 FS_OBJ_DIR_SALVAGE internal static fixed bin(18,0) initial unsigned dcl 11-56 FS_OBJ_DNZP_MOD internal static fixed bin(18,0) initial unsigned dcl 11-40 FS_OBJ_DT_DUMPED_MOD internal static fixed bin(18,0) initial unsigned dcl 11-50 FS_OBJ_ENTRY_BOUND_MOD internal static fixed bin(18,0) initial unsigned dcl 11-41 FS_OBJ_FOR_RELOADER_MOD internal static fixed bin(18,0) initial unsigned dcl 11-51 FS_OBJ_IACL_MOD internal static fixed bin(18,0) initial unsigned dcl 11-65 FS_OBJ_MAX_LEN_MOD internal static fixed bin(18,0) initial unsigned dcl 11-42 FS_OBJ_MDIR_QUOTA_MOD internal static fixed bin(18,0) initial unsigned dcl 11-57 FS_OBJ_MOVE_QUOTA internal static fixed bin(18,0) initial unsigned dcl 11-54 FS_OBJ_QUOTA_MOD internal static fixed bin(18,0) initial unsigned dcl 11-58 FS_OBJ_QUOTA_RELOAD internal static fixed bin(18,0) initial unsigned dcl 11-59 FS_OBJ_RECLASSIFY internal static fixed bin(18,0) initial unsigned dcl 11-60 FS_OBJ_RECLASSIFY_NODE internal static fixed bin(18,0) initial unsigned dcl 11-61 FS_OBJ_RENAME internal static fixed bin(18,0) initial unsigned dcl 11-37 FS_OBJ_RING_MOD internal static fixed bin(18,0) initial unsigned dcl 11-35 FS_OBJ_SAFETY_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 11-43 FS_OBJ_SEG_MOVE internal static fixed bin(18,0) initial unsigned dcl 11-62 FS_OBJ_SONS_LVID_MOD internal static fixed bin(18,0) initial unsigned dcl 11-52 FS_OBJ_SOOS_MOD internal static fixed bin(18,0) initial unsigned dcl 11-53 FS_OBJ_SYNC_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 11-44 FS_OBJ_TRP_MOD internal static fixed bin(18,0) initial unsigned dcl 11-63 FS_OBJ_TRUNCATE internal static fixed bin(18,0) initial unsigned dcl 11-33 FS_OBJ_VOLUME_RETRIEVE internal static fixed bin(18,0) initial unsigned dcl 11-64 FS_OBJ_VOL_DUMP_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 11-45 HASH_TABLE_TYPE internal static bit(18) initial packed unaligned dcl 12-10 access_name_type internal static fixed bin(17,0) initial dcl 12-12 access_operations_$fs_obj_access_mod external static bit(36) dcl 11-27 access_operations_$fs_obj_attr_mod external static bit(36) dcl 11-25 access_operations_$fs_obj_contents_mod external static bit(36) dcl 11-23 access_operations_$fs_obj_contents_read external static bit(36) dcl 11-22 access_operations_$fs_obj_delete external static bit(36) dcl 11-19 access_operations_$fs_obj_initiate external static bit(36) dcl 11-20 access_operations_$fs_obj_prop_read external static bit(36) dcl 11-24 access_operations_$fs_obj_status_mod external static bit(36) dcl 11-26 access_operations_$fs_obj_terminate external static bit(36) dcl 11-21 acle_type internal static fixed bin(17,0) initial dcl 12-13 append_null_addr internal static bit(22) initial dcl 14-4 create_vtoce_four_null_addrs internal static fixed bin(71,0) initial dcl 14-24 create_vtoce_null_addr internal static bit(18) initial dcl 14-26 dc_find$dir_initiate 000000 constant entry external dcl 5-19 dc_find$dir_move_quota 000000 constant entry external dcl 5-21 dc_find$dir_read 000000 constant entry external dcl 5-23 dc_find$dir_read_priv 000000 constant entry external dcl 5-24 dc_find$dir_reclassify 000000 constant entry external dcl 5-26 dc_find$dir_salvage 000000 constant entry external dcl 5-28 dc_find$dir_write 000000 constant entry external dcl 5-30 dc_find$dir_write_priv 000000 constant entry external dcl 5-31 dc_find$link_target 000000 constant entry external dcl 5-35 dc_find$mdir_set_quota_uid 000000 constant entry external dcl 5-37 dc_find$obj_access_write 000000 constant entry external dcl 5-39 dc_find$obj_access_write_priv 000000 constant entry external dcl 5-40 dc_find$obj_attributes_read 000000 constant entry external dcl 5-42 dc_find$obj_attributes_read_ptr 000000 constant entry external dcl 5-43 dc_find$obj_attributes_write 000000 constant entry external dcl 5-45 dc_find$obj_attributes_write_ptr 000000 constant entry external dcl 5-46 dc_find$obj_bc_delta_write 000000 constant entry external dcl 5-48 dc_find$obj_bc_delta_write_ptr 000000 constant entry external dcl 5-49 dc_find$obj_bc_write 000000 constant entry external dcl 5-50 dc_find$obj_bc_write_ptr 000000 constant entry external dcl 5-51 dc_find$obj_delete 000000 constant entry external dcl 5-53 dc_find$obj_delete_priv 000000 constant entry external dcl 5-54 dc_find$obj_delete_priv_uid 000000 constant entry external dcl 5-56 dc_find$obj_delete_ptr 000000 constant entry external dcl 5-57 dc_find$obj_delete_uid 000000 constant entry external dcl 5-55 dc_find$obj_existence_ptr 000000 constant entry external dcl 5-59 dc_find$obj_for_audit 000000 constant entry external dcl 5-61 dc_find$obj_initiate 000000 constant entry external dcl 5-63 dc_find$obj_initiate_for_linker_dp 000000 constant entry external dcl 5-64 dc_find$obj_initiate_raw 000000 constant entry external dcl 5-65 dc_find$obj_linkage_ring_ptr 000000 constant entry external dcl 5-67 dc_find$obj_modes_ptr 000000 constant entry external dcl 5-69 dc_find$obj_reclassify 000000 constant entry external dcl 5-71 dc_find$obj_status_attributes_read 000000 constant entry external dcl 5-73 dc_find$obj_status_read 000000 constant entry external dcl 5-75 dc_find$obj_status_read_priv 000000 constant entry external dcl 5-77 dc_find$obj_status_read_priv_ptr 000000 constant entry external dcl 5-78 dc_find$obj_status_read_priv_uid 000000 constant entry external dcl 5-79 dc_find$obj_status_read_ptr 000000 constant entry external dcl 5-81 dc_find$obj_status_read_raw_uid 000000 constant entry external dcl 5-80 dc_find$obj_status_read_uid 000000 constant entry external dcl 5-76 dc_find$obj_status_write 000000 constant entry external dcl 5-83 dc_find$obj_status_write_priv 000000 constant entry external dcl 5-84 dc_find$obj_status_write_priv_ptr 000000 constant entry external dcl 5-85 dc_find$obj_status_write_ptr 000000 constant entry external dcl 5-86 dc_find$obj_terminate 000000 constant entry external dcl 5-88 dc_find$obj_terminate_ptr 000000 constant entry external dcl 5-89 dc_find$obj_truncate 000000 constant entry external dcl 5-91 dc_find$obj_truncate_ptr 000000 constant entry external dcl 5-92 dc_find$obj_truncate_raw_ptr 000000 constant entry external dcl 5-93 dc_find$obj_volume_retrieve 000000 constant entry external dcl 5-95 dc_find$seg_fault 000000 constant entry external dcl 5-97 dir_header_type internal static fixed bin(17,0) initial dcl 12-14 dir_type internal static fixed bin(17,0) initial dcl 12-15 fill_page_table_null_addr internal static bit(22) initial dcl 14-4 get_aste_null_addr internal static bit(22) initial dcl 14-4 get_file_map_dumper_non_null_addr internal static bit(22) initial dcl 14-4 get_file_map_null_addr internal static bit(22) initial dcl 14-4 get_file_map_vt_null_addr internal static bit(22) initial dcl 14-4 hash_table based structure level 1 dcl 8-6 hash_table_type internal static fixed bin(17,0) initial dcl 12-19 htp automatic pointer dcl 8-4 init_sst_null_addr internal static bit(22) initial dcl 14-4 link_type internal static fixed bin(17,0) initial dcl 12-16 list_deposit_null_addr internal static bit(22) initial dcl 14-4 make_sdw_null_addr internal static bit(22) initial dcl 14-4 makeknown_infop automatic pointer dcl 13-5 name_type internal static fixed bin(17,0) initial dcl 12-17 page_bad_null_addr internal static bit(22) initial dcl 14-4 page_bad_pd_null_addr internal static bit(22) initial dcl 14-4 page_devparity_null_addr internal static bit(22) initial dcl 14-4 page_parity_null_addr internal static bit(22) initial dcl 14-4 page_problem_null_addr internal static bit(22) initial dcl 14-4 pc_move_page_table_1_null_addr internal static bit(22) initial dcl 14-4 pc_move_page_table_2_null_addr internal static bit(22) initial dcl 14-4 put_aste_null_addr internal static bit(22) initial dcl 14-4 pv_salv_null_addr internal static bit(18) initial dcl 14-26 pv_scav_null_addr internal static bit(18) initial dcl 14-26 salv_truncate_null_addr internal static bit(18) initial dcl 14-26 seg_type internal static fixed bin(17,0) initial dcl 12-18 segmove_new_addr_null_addr internal static bit(22) initial dcl 14-4 segmove_old_addr_null_addr internal static bit(22) initial dcl 14-4 truncate_vtoce_fill_null_addr internal static bit(18) initial dcl 14-26 truncate_vtoce_null_addr internal static bit(18) initial dcl 14-26 unprotected_null_addr internal static bit(22) initial dcl 14-4 update_vtoce_null_addr internal static bit(18) initial dcl 14-26 volume_reloader_null_addr internal static bit(18) initial dcl 14-26 volume_retriever_null_addr internal static bit(18) initial dcl 14-26 NAMES DECLARED BY EXPLICIT CONTEXT. admin_create_branch_ 000445 constant entry external dcl 366 ai_err 003654 constant label dcl 814 ref 801 802 804 808 809 alloc_err 003346 constant label dcl 777 ref 586 647 append 000213 constant entry external dcl 31 arg_err 003322 constant label dcl 767 ref 343 383 442 472 476 branch 001112 constant entry external dcl 445 branchx 000667 constant entry external dcl 409 cbcomm 000536 constant label dcl 381 ref 324 373 cbcomm2 000550 constant label dcl 386 ref 364 check_aim_access 003565 constant entry internal dcl 797 ref 529 cleanup_acl 003502 constant label dcl 785 ref 604 615 621 626 657 670 comm2 001010 constant label dcl 426 ref 407 create_branch_ 000504 constant entry external dcl 375 fin 003317 constant label dcl 762 ref 391 507 514 768 770 772 774 795 free_vtoce 003352 constant label dcl 779 ref 850 867 901 inv_rb_err 003332 constant label dcl 771 ref 430 431 437 invalid_mode 003336 constant label dcl 773 ref 494 join 001310 constant label dcl 477 ref 443 463 join_link 001257 constant label dcl 470 ref 361 link 001217 constant entry external dcl 465 lower_ring_err 003326 constant label dcl 769 ref 435 make_err 003423 constant label dcl 782 ref 695 698 703 717 master_dir 000230 constant entry external dcl 316 name_dup 003342 constant label dcl 775 ref 540 551 qerr 004211 constant label dcl 897 ref 906 915 retv 000277 constant entry external dcl 326 setup 003661 constant entry internal dcl 820 ref 318 328 368 377 411 447 467 setup_directory 003700 constant entry internal dcl 840 ref 705 unlock 003535 constant label dcl 791 ref 547 556 578 581 776 778 815 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5740 6152 4707 5750 Length 7022 4707 212 633 1030 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME append 590 external procedure is an external procedure. check_aim_access internal procedure shares stack frame of external procedure append. setup internal procedure shares stack frame of external procedure append. setup_directory internal procedure shares stack frame of external procedure append. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME append 000100 ac_sw append 000101 acbr_version append 000102 access_class append 000104 acl_count append 000106 acl_start_ptr append 000110 add_sw append 000111 admin_append append 000112 areap append 000114 arg_ptr append 000116 asize append 000117 audit_eventflags append 000120 authp append 000122 bcount append 000123 bitcnt append 000124 bmode append 000125 branch_sw append 000126 chase_sw append 000127 code append 000130 copysw append 000131 default_sw append 000132 dep append 000134 dir_quota append 000135 dirl append 000136 dirname append 000210 dirp append 000212 dirsw append 000213 dtem append 000214 dumcode append 000215 dummy append 000225 ename append 000235 ename_aligned append 000245 i append 000246 iacl_start_ptr append 000250 iaclp append 000252 initial_acl append 000275 level append 000276 linkname append 000350 llngth append 000351 local_entry append 000416 max_access_authorization append 000420 mk_info append 000423 my_audit_user_info append 000446 n_iacls append 000447 newuid append 000450 nwords append 000452 parent_access_class append 000454 prevep append 000456 prior_dir_acl_count append 000457 priv_mqsw append 000460 project append 000470 quota append 000471 read_lock append 000472 retv append 000473 retv_cross_segment append 000474 ringbrack append 000477 segno append 000500 service_acl append 000523 sons append 000524 sonsw append 000525 sp_sw append 000526 sysl append 000527 temp_b4 append 000530 uid_path append 000550 user_acl append 000573 userid append 000603 vtocx_temp append 000604 xsize append 000614 audit_user_info_ptr append 000616 ep append 000620 dp append 000622 np append 000624 retv_append_argp append THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return_mac signal_op ext_entry ext_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. acc_name_$elements acc_name_$encode access_audit_$log_entry_ptr access_audit_$log_entry_ptr_user access_audit_check_ep_$self access_audit_check_ep_$user acl_$add_entry acl_$del_acl acl_$list_entry aim_check_$equal aim_check_$greater aim_check_$greater_or_equal allocate_dir_ht_ check_gate_acl_ create_vtoce dc_find$dir_for_append dc_find$dir_for_append_raw dc_find$dir_for_retrieve_append dc_find$finished delete_vtoce fs_alloc$alloc fs_alloc$free fs_alloc$init getuid hash$in hash$out hash$search level$get lock$dir_unlock makeknown_ makeunknown_ mountedp quota$append_mdir_set quota$check quota$qmove_mylock sum$dirmod syserr$error_code truncate$trentry uid_path_util$get THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$fs_obj_create active_all_rings_data$max_tree_depth active_hardcore_data$alloc_sizes active_hardcore_data$dir_arearp active_hardcore_data$dir_hdrsize active_hardcore_data$elcsize active_hardcore_data$ensize active_hardcore_data$esize active_hardcore_data$nalloc_sizes error_table_$ai_restricted error_table_$argerr error_table_$invalid_mode error_table_$invalid_project_for_gate error_table_$invalid_ring_brackets error_table_$lower_ring error_table_$max_depth_exceeded error_table_$namedup error_table_$noalloc error_table_$noentry error_table_$unimplemented_version pds$access_authorization pds$access_name pds$max_access_authorization pds$processid sys_info$access_class_ceiling sys_info$default_dir_max_length LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 209 000172 221 000205 31 000212 316 000221 318 000254 320 000255 321 000262 323 000264 324 000271 326 000272 328 000323 330 000324 332 000326 333 000332 334 000336 335 000341 338 000342 339 000344 341 000347 342 000352 343 000354 346 000360 347 000362 349 000365 350 000370 352 000373 353 000374 354 000400 355 000404 356 000406 358 000413 359 000425 361 000431 363 000433 364 000437 366 000440 368 000471 370 000472 372 000474 373 000501 375 000502 377 000530 379 000531 381 000536 382 000542 383 000544 386 000550 387 000556 388 000557 389 000562 390 000600 391 000603 394 000604 395 000611 396 000614 397 000617 398 000621 399 000623 400 000631 401 000633 402 000636 403 000640 404 000644 405 000650 406 000652 407 000657 409 000660 411 000720 413 000721 414 000726 415 000730 415 000734 416 000736 418 000750 419 000755 422 000766 423 000773 424 001001 425 001006 426 001010 428 001012 429 001013 430 001021 431 001024 432 001027 433 001031 435 001044 437 001056 441 001063 442 001102 443 001104 445 001105 447 001136 449 001137 452 001142 456 001145 457 001152 458 001156 459 001160 462 001201 463 001211 465 001212 467 001250 469 001251 470 001257 472 001260 475 001264 476 001276 477 001310 479 001311 480 001312 481 001317 483 001322 484 001330 486 001335 490 001337 493 001344 494 001346 496 001352 497 001354 502 001355 504 001360 505 001362 507 001410 508 001412 509 001414 511 001415 513 001444 514 001470 515 001472 518 001474 520 001503 521 001511 522 001522 525 001524 526 001525 528 001530 529 001532 530 001536 533 001540 534 001542 535 001546 536 001547 537 001564 538 001574 539 001575 540 001603 541 001607 545 001615 546 001630 547 001632 550 001633 551 001652 552 001654 554 001662 555 001670 556 001702 558 001704 559 001712 561 001715 562 001722 563 001730 564 001732 565 001735 566 001742 567 001750 569 001751 570 001756 571 001763 573 001771 574 001777 575 002004 577 002014 578 002017 580 002020 581 002042 584 002044 585 002047 586 002061 587 002065 588 002067 589 002073 590 002077 591 002101 593 002103 594 002112 595 002115 596 002117 598 002122 599 002123 600 002125 602 002131 603 002135 604 002161 608 002163 609 002165 610 002173 611 002175 612 002202 613 002224 614 002226 615 002247 616 002251 617 002254 618 002255 620 002263 621 002264 622 002267 624 002271 625 002273 626 002316 628 002320 629 002323 630 002324 632 002332 635 002335 638 002336 641 002347 643 002363 644 002366 646 002372 647 002404 648 002410 649 002413 650 002415 651 002417 652 002422 656 002430 657 002445 659 002447 660 002452 662 002457 663 002461 664 002463 665 002466 666 002470 667 002473 669 002475 670 002507 674 002511 675 002514 676 002523 678 002534 679 002536 680 002544 681 002550 682 002557 683 002566 689 002573 690 002600 692 002606 694 002613 695 002627 697 002631 698 002644 699 002646 701 002653 702 002655 703 002672 704 002674 705 002700 707 002705 708 002714 709 002724 710 002734 711 002744 713 002752 715 002753 716 002755 717 002772 718 002774 720 003000 721 003003 722 003011 724 003017 725 003020 729 003026 731 003032 732 003035 733 003041 735 003042 736 003047 737 003053 738 003055 739 003057 743 003061 744 003066 745 003067 747 003076 748 003077 749 003101 754 003210 755 003211 760 003306 762 003317 765 003321 767 003322 768 003325 769 003326 770 003331 771 003332 772 003335 773 003336 774 003341 775 003342 776 003345 777 003346 778 003351 779 003352 781 003363 782 003423 784 003442 785 003502 787 003504 788 003517 790 003522 791 003535 793 003552 794 003553 795 003564 797 003565 799 003566 800 003604 801 003607 802 003614 804 003616 805 003623 806 003625 808 003626 809 003631 812 003635 813 003636 814 003654 815 003657 818 003660 820 003661 822 003662 823 003663 824 003664 825 003666 826 003667 827 003670 828 003671 829 003672 830 003673 831 003674 832 003675 833 003676 834 003677 840 003700 842 003701 843 003707 845 003713 846 003724 848 003734 849 003740 850 003753 857 003755 859 003756 860 003761 861 003764 862 003765 863 003767 864 003771 865 003773 866 003775 867 004015 868 004017 870 004023 871 004026 872 004030 873 004033 874 004035 875 004040 876 004043 877 004050 878 004052 879 004057 880 004061 881 004066 882 004074 883 004076 884 004102 885 004104 886 004114 889 004136 890 004153 892 004162 894 004166 895 004207 897 004211 898 004220 899 004241 901 004301 903 004302 905 004303 906 004316 907 004320 908 004321 909 004325 913 004346 914 004350 915 004371 918 004373 919 004402 920 004423 922 004463 927 004466 928 004474 930 004503 ----------------------------------------------------------- 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