COMPILATION LISTING OF SEGMENT mrds_dm_authorization Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 03/08/88 1534.4 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(88-01-19,Blair), approve(88-02-26,MCR7840), audit(88-03-03,Dupuis), 16* install(88-03-08,MR12.2-1034): 17* Add code to search a "mrds" search list for the db pathname. SCP 6366. 18* 2) change(88-02-25,Blair), approve(88-02-25,MCR7840), audit(88-03-03,Dupuis), 19* install(88-03-08,MR12.2-1034): 20* Establish a local area for the search_path list in case we aren't 21* passed an area_ptr. 22* END HISTORY COMMENTS */ 23 24 25 mrds_dm_authorization: procedure (); return; /* not a legal entry */ 26 27 /* DESCRIPTION: 28* 29* This routine has two entries, get_user_class, and 30* set_needed_access. The first determines whether the caller is a 31* database administrator (has sma on the db dir) or a normal user. 32* The second entry is used to give DBA's all access they will ever 33* need for any operation against the database. An error is returned 34* if the database is an unsupported version. 35* 36**/ 37 38 /* PARAMETERS: 39* 40* database_path - - (input) char(*), the relative pathname of the 41* database, this can not be a submodel pathname, the suffix is not 42* necessary. 43* 44* area_ptr - - (input) pointer, get entry only, a freeing area in 45* which to allocate the structure containing the desired 46* information. 47* 48* structure_version - - (input) fixed bin, get entry only, the 49* desired version of the structure, normaly the version given in 50* the include file with the structure. 51* 52* mrds_authorization_ptr - - (output) pointer, get entry only, the 53* pointer to the structure to be allocated in the callers area, as 54* defined by the include file in mrds_authorization.incl.pl1 55* 56* error_code - - (output) fixed bin(35), the error status encoding, 57* 0 unless an error occurred. 58* 59**/ 60 61 /* HISTORY: 62* 63* 81-01-15 Jim Gray : Originally error_coded. 64* 65* 81-04-17 Jim Gray : made modifications to implement the 66* mmi_$get_authorization entry point. Improved path handling for 67* this and the mmi_$get_secured_state routine by writing the 68* mrds_dm_check_path routine. Added use of hcs_$status_ instead of 69* hcs_$get_user_effmode. 70* 71* 81-10-06 Davids: added a line to set the value of star_entry_ptr 72* to local_star_entry_ptr. This is so that references to star_names 73* do not reference through a null pointer (star_names has an extent 74* based on a value from star_entries). The value of 75* star_entry_count was already being set correctly. 76* 77* 83-01-21 Roger Lackey: Added check for mrds_error_$no_model_access 78* which is now returned from mrds_dm_check_path. 79* 80* 83-05-31 Davids: Replaced reference to hcs_$add_acl_entries with a reference 81* to object_type_$add_acl_entries. This was needed so that acls could be set 82* on ring 2 dms files. 83* 84* 83-06-07 Davids: Added a call to object_type_$validate before the call to 85* the msf manager for setting acls on msfs. If validate returns a 0 code 86* then object_type_$add_acl_entries will be called since it recognizes the 87* msf and can set the acls correctly. Currently object_type_ wrorks for ring 2 88* msf (dm files) but not regular ring 4 msfs. 89* 90* 83-09-30 Mike Kubicar : Several significant changes. Added an error routine 91* to provide one convenient way of exiting this module. This gets rid of the 92* HORRIBLE nested if structure that used to be here. This routine is now 93* called when appropriate. Also rewrote the force_dir_contents_acl procedure 94* to use the fs_util_ subroutine instead of munging acls with hcs_. 95* 96**/ 97 98 /* entry to determine if user is a DBA or peon */ 99 100 get_user_class: get_authorization: entry (rel_db_path, area_ptr, structure_version, structure_ptr, error_code); 101 102 error_code = 0; 103 mrds_authorization_ptr = null (); 104 105 call check_path (); 106 if error_code = 0 then do; /* check arguments other than database path */ 107 if area_ptr = null () then 108 error_code = error_table_$badcall; 109 else do; 110 unspec (my_area_info) = "0"b; 111 my_area_info.version = 1; 112 my_area_info.areap = area_ptr; 113 114 call area_info_ (addr (my_area_info), error_code); 115 if error_code ^= 0 then ; /* couldn't get area info */ 116 else if my_area_info.no_freeing then 117 error_code = mrds_error_$not_freeing_area; 118 else do; 119 120 if structure_version ^= mrds_authorization_structure_version then 121 error_code = error_table_$unimplemented_version; 122 else do; 123 124 on area begin; /* in case allocate fails */ 125 error_code = error_table_$area_too_small; 126 goto skip_allocate; 127 end; 128 129 on cleanup begin; 130 if mrds_authorization_ptr ^= null then do; 131 free mrds_authorization_ptr -> mrds_authorization in (work_area); 132 mrds_authorization_ptr = null (); 133 end; 134 end; 135 136 allocate mrds_authorization set (mrds_authorization_ptr) in (work_area); 137 revert area; 138 139 call get_user_info (); /* fill in structure info */ 140 141 skip_allocate: 142 end; 143 144 end; 145 end; 146 147 end; 148 149 structure_ptr = mrds_authorization_ptr; 150 151 return; 152 153 /* entry to set any access a DBA might need */ 154 155 set_needed_access: entry (rel_db_path, error_code); 156 157 error_code = 0; 158 call check_path (); 159 if error_code = 0 then do; 160 161 mrds_authorization_ptr = addr (local_mrds_authorization); 162 call get_user_info (); 163 if error_code ^= 0 then ; 164 else if mrds_authorization.administrator then 165 call set_db_acls (); 166 else error_code = error_table_$insufficient_access; 167 168 end; 169 170 return; 171 172 check_path: procedure (); 173 174 /* routine to verify good database path 175* by checking for a path with a .db suffix, 176* being a directory containing a segment db_model, 177* which should be for a version 4 database. */ 178 179 dcl local_area area (2048); 180 181 use_search_paths = "0"b; 182 if search (rel_db_path, "<>") = 0 then do; 183 call search_paths_$get (MRDS_SEARCHLIST, sl_control_default, "", null (), addr(local_area), 184 sl_info_version_1, mrds_search_list_ptr, error_code); 185 if error_code ^= 0 then return; 186 loop_idx = mrds_search_list_ptr -> sl_info.num_paths; 187 use_search_paths = "1"b; 188 end; 189 else do; 190 call absolute_pathname_ (rel_db_path, abs_db_path, error_code); 191 if error_code ^= 0 then return; 192 loop_idx = 1; 193 end; 194 195 error_code = 1; 196 do idx = 1 to loop_idx while (error_code ^= 0); 197 if use_search_paths then abs_db_path = pathname_ (mrds_search_list_ptr -> sl_info.paths(idx).pathname, rel_db_path); 198 call mrds_dm_check_path (rtrim(abs_db_path), containing_dir, db_dir, new_found, error_code); 199 200 if error_code = error_table_$incorrect_access | 201 error_code = mrds_error_$no_model_access then 202 error_code = 0; /* ignore access error */ 203 end; /* no more search paths or we got a good one */ 204 205 if error_code = 0 & ^new_found then 206 error_code = mrds_error_$version_not_supported; 207 208 end; 209 210 get_user_info: procedure (); 211 212 /* routine to determine class of user, DBA or peon */ 213 214 unspec (my_status_branch) = "0"b; /* in case incorrect access => non-dba */ 215 216 /* get access mode on db dir for caller */ 217 218 call hcs_$status_ (rtrim (containing_dir), rtrim (db_dir), chase_links, 219 addr (my_status_branch), addr (local_area), error_code); 220 if error_code ^= 0 & error_code ^= error_table_$incorrect_access 221 & error_code ^= error_table_$no_s_permission then do; /* couldn't get access */ 222 free mrds_authorization_ptr -> mrds_authorization in (work_area); 223 mrds_authorization_ptr = null (); 224 end; 225 else do; 226 227 error_code = 0; 228 229 access_mode_overlay_ptr = addr (my_status_branch.mode); 230 231 unspec (mrds_authorization) = "0"b; 232 mrds_authorization.version = mrds_authorization_structure_version; 233 234 /* check for sma on db dir */ 235 236 if access_mode_overlay.status & access_mode_overlay.modify & access_mode_overlay.append then do; 237 238 /* user is a DBA */ 239 mrds_authorization.administrator = "1"b; 240 mrds_authorization.normal_user = "1"b; 241 242 end; 243 else do; 244 245 /* user is a peon */ 246 247 mrds_authorization.administrator = "0"b; 248 mrds_authorization.normal_user = "1"b; 249 250 end; 251 252 end; 253 254 end; 255 256 set_db_acls: procedure (); 257 258 /* routine to set all access a DBA will ever need */ 259 260 acl_count = 1; 261 allocate file_acl in (local_area); 262 file_acl.version = GENERAL_ACL_VERSION_1; 263 file_acl.count = acl_count; 264 file_acl.entries (1).access_name = get_group_id_$tag_star (); 265 file_acl.entries (1).mode = RW_ACCESS; 266 file_acl.entries (1).status_code = 0; 267 allocate dir_acl in (local_area); 268 dir_acl.version = GENERAL_ACL_VERSION_1; 269 dir_acl.count = acl_count; 270 dir_acl.entries (1).access_name = get_group_id_$tag_star (); 271 dir_acl.entries (1).mode = SMA_ACCESS; 272 dir_acl.entries (1).status_code = 0; 273 274 /* call the recursive routine, that works on one directories contents at a time */ 275 276 abs_db_path = rtrim (containing_dir) || ">" || db_dir; 277 278 call force_dir_contents_acls (rtrim (abs_db_path), file_acl_ptr, 279 dir_acl_ptr); 280 281 end; 282 283 force_dir_contents_acls: procedure (abs_dir_path, facl_ptr, dacl_ptr); 284 285 /* get a list of all segs and dirs in this directory */ 286 287 call hcs_$star_ (abs_dir_path, "**", star_BRANCHES_ONLY, 288 addr (local_area), star_entry_count, star_entry_ptr, 289 star_names_ptr, code); 290 if code = error_table_$nomatch 291 then return; /* Nothing to do */ 292 else if code ^= 0 293 then call error (code); 294 295 296 /* set acls of rw and sma for each entry found */ 297 298 do local_index = 1 to star_entry_count; 299 current_name = star_names (star_entries.nindex (local_index)); 300 call fs_util_$get_type (abs_dir_path, current_name, file_type, 301 code); 302 if code ^= 0 303 then call error (code); 304 if file_type = FS_OBJECT_TYPE_DIRECTORY then do; 305 call fs_util_$add_acl_entries (abs_dir_path, current_name, 306 dacl_ptr, code); 307 if code = error_table_$argerr 308 then call error ( 309 dacl_ptr -> dir_acl.entries (1).status_code); 310 else if code ^= 0 311 then call error (code); 312 313 /* Now do everything in this directory too */ 314 315 call force_dir_contents_acls ((rtrim (abs_dir_path) 316 || ">" || rtrim (current_name)), facl_ptr, dacl_ptr); 317 end; 318 else do; 319 call fs_util_$add_acl_entries (abs_dir_path, 320 current_name, facl_ptr, code); 321 if code = error_table_$argerr 322 then call error (facl_ptr 323 -> file_acl.entries (1).status_code); 324 else if code ^= 0 325 then call error (code); 326 end; 327 end; 328 329 declare abs_dir_path char (*); /* local copy of the directory name we are currently working on */ 330 declare code fixed bin (35); /* Error code */ 331 declare current_name char (35); /* Current name from starname call */ 332 declare dacl_ptr ptr; /* Pointer to a general acl structure containing dir acls */ 333 declare facl_ptr ptr; /* Same as above but for file acls */ 334 declare file_type char (32); /* What kind of file system entity are we dealing with */ 335 declare fs_util_$add_acl_entries entry (char (*), char (*), ptr, fixed bin (35)); 336 declare fs_util_$get_type entry (char (*), char (*), char (*), fixed bin (35)); 337 declare local_index fixed bin; /* local copy of index into list of entries */ 338 1 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 1 2 1 3 /* This include file contains structures for the hcs_$star_, 1 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 1 5* 1 6* Written 23 October 1978 by Monte Davidoff. 1 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 1 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 1 9**/ 1 10 1 11 /* automatic */ 1 12 1 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 1 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 1 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 1 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 1 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 1 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 1 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 1 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 1 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 1 22 1 23 /* based */ 1 24 1 25 /* hcs_$star_ entry structure */ 1 26 1 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 1 28 2 type fixed binary (2) unsigned unaligned, 1 29 /* storage system type */ 1 30 2 nnames fixed binary (16) unsigned unaligned, 1 31 /* number of names of entry that match star_name */ 1 32 2 nindex fixed binary (18) unsigned unaligned; 1 33 /* index of first name in star_names */ 1 34 1 35 /* hcs_$star_ name structure */ 1 36 1 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 1 38 1 39 /* hcs_$star_list_ branch structure */ 1 40 1 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 42 2 type fixed binary (2) unsigned unaligned, 1 43 /* storage system type */ 1 44 2 nnames fixed binary (16) unsigned unaligned, 1 45 /* number of names of entry that match star_name */ 1 46 2 nindex fixed binary (18) unsigned unaligned, 1 47 /* index of first name in star_list_names */ 1 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 1 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 1 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 53 2 pad bit (7) unaligned, 1 54 2 records fixed binary (18) unsigned unaligned; 1 55 /* records used by branch */ 1 56 1 57 /* hcs_$star_dir_list_ branch structure */ 1 58 1 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 60 2 type fixed binary (2) unsigned unaligned, 1 61 /* storage system type */ 1 62 2 nnames fixed binary (16) unsigned unaligned, 1 63 /* number of names of entry that match star_name */ 1 64 2 nindex fixed binary (18) unsigned unaligned, 1 65 /* index of first name in star_list_names */ 1 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 1 67 2 pad bit (36) unaligned, 1 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 71 2 bit_count fixed binary (24) unaligned; 1 72 /* bit count of the branch */ 1 73 1 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 1 75 1 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 77 2 type fixed binary (2) unsigned unaligned, 1 78 /* storage system type */ 1 79 2 nnames fixed binary (16) unsigned unaligned, 1 80 /* number of names of entry that match star_name */ 1 81 2 nindex fixed binary (18) unsigned unaligned, 1 82 /* index of first name in star_list_names */ 1 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 1 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 1 85 2 pathname_len fixed binary (18) unsigned unaligned, 1 86 /* length of the pathname of the link */ 1 87 2 pathname_index fixed binary (18) unsigned unaligned; 1 88 /* index of start of pathname in star_list_names */ 1 89 1 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 1 91 1 92 declare star_list_names char (32) based (star_list_names_ptr) 1 93 dimension (star_links (star_branch_count + star_link_count).nindex 1 94 + star_links (star_branch_count + star_link_count).nnames 1 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 1 96 * binary ( 1 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 1 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 1 99 1 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 1 101 1 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 1 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 1 104 1 105 /* internal static */ 1 106 1 107 /* star_select_sw values */ 1 108 1 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 1 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 1 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 1 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 1 113 fixed binary (3) internal static options (constant) initial (5); 1 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 1 115 fixed binary (3) internal static options (constant) initial (7); 1 116 1 117 /* storage system types */ 1 118 1 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 1 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 1 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 1 122 1 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 339 340 341 end; 342 343 error: proc (cd); 344 345 dcl cd fixed bin (35); 346 347 error_code = cd; 348 goto PROGRAM_EXIT; 349 end error; 350 351 352 PROGRAM_EXIT: 353 354 355 declare MRDS_SEARCHLIST char (4) int static options (constant) init ("mrds"); 356 declare abs_db_path char (168); /* absolute path to db */ 357 declare absolute_pathname_ entry (char(*), char(*), fixed bin(35)); 358 declare access_mode_overlay_ptr ptr; /* points to access_mode */ 359 declare area condition; /* if area to small for allocate */ 360 declare area_info_ entry (ptr, fixed bin (35)); /* gets area details */ 361 declare area_ptr ptr; /* pointer to users area */ 362 declare chase_links fixed bin (1) init (1); /* find link target info */ 363 declare cleanup condition; /* signaled upon quit/release */ 364 declare containing_dir char (168); /* name of dir containing db */ 365 declare db_dir char (32); /* entry name of db dir */ 366 declare 1 dir_acl like general_acl based (dir_acl_ptr); /* For setting dir acls */ 367 declare dir_acl_ptr ptr; /* pointer to directory acl structure */ 368 declare dont_chase_links fixed bin (1) init (0); /* get info about link, not target */ 369 declare error_code fixed bin (35); /* error status encoding */ 370 declare error_table_$area_too_small fixed bin (35) ext; /* for area condition */ 371 declare error_table_$argerr fixed bin (35) ext;/* returned if acl structure status code ^= 0 */ 372 declare error_table_$badcall fixed bin (35) ext;/* null pointer given */ 373 declare error_table_$incorrect_access fixed bin (35) ext; /* no access on dir, or entry */ 374 declare error_table_$insufficient_access fixed bin (35) ext; /* process doesn't have sufficient access */ 375 declare error_table_$no_s_permission fixed bin (35) ext; /* no "s" on containing dir */ 376 declare error_table_$nomatch fixed bin (35) ext;/* nothing found in directory */ 377 declare error_table_$unimplemented_version fixed bin (35) ext; /* bad structure version */ 378 declare 1 file_acl like general_acl based (file_acl_ptr); /* For setting file acls */ 379 declare file_acl_ptr ptr; /* Default pointer for above */ 380 declare get_group_id_$tag_star entry returns (char (32)); /* gets person.project.* */ 381 declare hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); /* gets list of star names */ 382 declare hcs_$status_ entry (char (*), char (*), fixed bin (1), 383 ptr, ptr, fixed bin (35)); /* gets access mode */ 384 declare idx fixed bin; 385 declare local_area area (5000); /* space for star entries/names structures */ 386 declare loop_idx fixed bin; 387 declare mrds_dm_check_path entry (char (*), char (168), char (32), bit (1), fixed bin (35)); /* verifies db path */ 388 declare mrds_error_$not_freeing_area fixed bin (35) ext; /* no freeing attribute */ 389 declare mrds_error_$no_model_access fixed bin (35) ext static; 390 declare mrds_error_$version_not_supported fixed bin (35) ext; /* db doesn't have secured bit */ 391 declare mrds_search_list_ptr ptr; 392 declare new_found bit (1); /* on => new version db arch */ 393 declare pathname_ entry (char(*), char(*)) returns(char(168)); 394 declare rel_db_path char (*); /* input database path */ 395 declare search_paths_$get entry (char(*), bit(36), char(*), ptr, ptr, fixed bin, ptr, fixed bin(35)); 396 declare structure_ptr ptr; /* parameter version of mrds_authorization_ptr */ 397 declare structure_version fixed bin; /* desired version of structure */ 398 declare sys_info$max_seg_size fixed bin (35) ext;/* alrgest segmetn size */ 399 declare use_search_paths bit (1); 400 declare work_area area (sys_info$max_seg_size) based (area_ptr); /* overlay for users area */ 401 declare (addr, empty, null, rtrim, search, sum, unspec) builtin; 402 declare 1 access_mode_overlay based (access_mode_overlay_ptr), 403 2 unused bit (1) unal, 404 2 status bit (1) unal, /* status permission */ 405 2 unimplemented bit (1) unal, 406 2 modify bit (1) unal, /* modify permission */ 407 2 append bit (1) unal; /* append permission */ 408 declare 1 local_mrds_authorization like mrds_authorization; /* for set_needed_access entryies use */ 409 declare 1 my_area_info like area_info; /* local copy */ 410 declare 1 my_status_branch like status_branch.short; /* local copy */ 411 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 412 413 3 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 3 2 /* format: style3,indcomtxt,idind30 */ 3 3 3 4 declare acl_ptr pointer; 3 5 declare acl_count fixed bin; 3 6 3 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 3 8 2 version char (8) aligned, 3 9 2 count fixed bin, 3 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 3 11 3 12 declare 1 general_acl_entry based, 3 13 2 access_name character (32) unaligned, 3 14 2 mode bit (36) aligned, 3 15 2 status_code fixed bin (35); 3 16 3 17 3 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 3 19 2 version char (8) aligned, 3 20 2 count fixed bin, 3 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 3 22 3 23 declare 1 general_extended_acl_entry aligned based, 3 24 2 access_name character (32) unaligned, 3 25 2 mode bit (36) aligned, 3 26 2 extended_mode bit (36) aligned, 3 27 2 status_code fixed bin (35); 3 28 3 29 3 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 3 31 2 version char (8) aligned, 3 32 2 count fixed bin, 3 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 3 34 3 35 declare 1 general_delete_acl_entry aligned based, 3 36 2 access_name character (32) unaligned, 3 37 2 status_code fixed bin (35); 3 38 3 39 3 40 declare 1 segment_acl aligned based (acl_ptr), 3 41 2 version fixed bin, 3 42 2 count fixed bin, 3 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 3 44 3 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 3 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 3 47 3 48 3 49 declare 1 directory_acl aligned based (acl_ptr), 3 50 2 version fixed bin, 3 51 2 count fixed bin, 3 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 3 53 3 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 3 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 3 56 3 57 3 58 declare 1 delete_acl based (acl_ptr) aligned, 3 59 2 version fixed bin, 3 60 2 count fixed bin, 3 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 3 62 3 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 3 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 3 65 3 66 3 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 3 68 DIR_ACL_VERSION_1 init ("dra1"), 3 69 DELETE_ACL_VERSION_1 init ("dla1")) 3 70 char (4) int static options (constant); 3 71 3 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 3 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 3 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 3 75 char (8) internal static options (constant); 3 76 3 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 3 78 3 79 /* End include file acl_structures.incl.pl1 */ 414 415 4 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 4 2 4 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 4 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 4 5* 4 6* Jay Pattin 6/23/83 */ 4 7 4 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 4 9 2 names bit (1) unaligned, 4 10 2 acl bit (1) unaligned, 4 11 2 ring_brackets bit (1) unaligned, 4 12 2 max_length bit (1) unaligned, 4 13 2 copy_switch bit (1) unaligned, 4 14 2 safety_switch bit (1) unaligned, 4 15 2 dumper_switches bit (1) unaligned, 4 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 4 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 4 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 4 19 2 mbz bit (26) unaligned; 4 20 4 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 416 417 5 1 /* BEGIN INCLUDE FILE mrds_authorization.incl.pl1 - - 81-01-20 Jim Gray */ 5 2 5 3 /* HISTORY: 5 4* 5 5* 81-01-20 Jim Gray : original created for the mmi_$get_authorization interface 5 6* 5 7**/ 5 8 5 9 /* DESCRIPTION: 5 10* 5 11* this structure returns the callers user_class 5 12* either database administrator or normal user. 5 13* Note that these separate classes were used to allow 5 14* future expansion to the user classes, rather than 5 15* make them logical "not"'s of one another. 5 16* NOTE: a DBA is always also a normal user, thus if the caller 5 17* is a DBA, his normal_user bit will be on also. 5 18* 5 19**/ 5 20 5 21 5 22 declare 1 mrds_authorization aligned based (mrds_authorization_ptr), 5 23 2 version fixed bin, /* version number of this structure */ 5 24 2 administrator bit (1) unal, /* caller is a DBA */ 5 25 2 normal_user bit (1) unal, /* caller has no special priviledges */ 5 26 2 mbz bit (34) unal ; 5 27 5 28 5 29 declare mrds_authorization_ptr ptr ; /* pointer for referring to the structure */ 5 30 5 31 declare mrds_authorization_structure_version fixed bin init (1) int static options (constant) ; 5 32 5 33 /* END INCLUDE FILE mrds_authorization.incl.pl1 */ 418 419 6 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 6 6* modified to save space occupied by model 6 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 6 8* to add mdbm_secured bit in db_model 6 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 6 10* collapsed the following into an unused_offset array: 6 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 6 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 6 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 6 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 6 15* unused_1 6 16* Also changed the name of unused_2 to restructuring_history_offset 6 17* and changed the comment on the changer structure to indicate 6 18* that it will contain on database creation information. 6 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 6 20* used one of the unused_offsets to point to a message which indicates 6 21* why the db is inconsistent. The offset will be null when the db is created 6 22* and set the first time the message is used. this is so it will be 6 23* consistent with existing data bases. Also added the message structure. 6 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 6 25* added the undo_request element to the message structure 6 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 6 27* changed unused_offset (12) to last_restructruring_history_offset and 6 28* changed restructuring_history_offset to first_restructuring_history_offset 6 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 6 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 6 31* 1 => vfile database and 2 => page_file database. Up to this point all 6 32* database types were equal to 1. 6 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 6 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 6 35* flags. This will allow information about transactions and dm_file 6 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 6 37* change is compatable with all datamodels created by the released version 6 38* of mrds. 6 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 6 40* added the rollback_on flag to the db_type_flags since it appears that you 6 41* can have a dmfile database that requires transactions but does not have any 6 42* journalizing. Also switched the order of the transactions_needed and 6 43* concurrency_on flags - this makes the change compatable with existing 6 44* dmfile databases except when displaying the model since concurrency_on and 6 45* rollback_on will be off in the model even though the dmfile relations had 6 46* them on during creation. 6 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 6 48* Removed ctl_file_path_ptr. 6 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 6 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 6 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 6 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 6 53* in the flag word for rmdb copying. 6 54* END HISTORY COMMENTS */ 6 55 6 56 6 57 /* this include file contains the structures that go into the make up 6 58* of the "db_model" segment in the model for the database. 6 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 6 60* 6 61* the db_model structure goes at the base of the segment, and contains items unique to 6 62* the whole databse. in addition, it has an area of size to fill the 6 63* rest of a segment, that holds the lists of files and domains in the database. 6 64* these lists are singly forward linked lists. all "pointers" in the database model 6 65* are maintained as offsets(bit (18)) from the base of the particular model segment 6 66* since actual pointers are process dependent on segment number. 6 67* the remaining structures are first a path_entry one to save pathnames in, 6 68* and the stack_item and constent structures, used to save a boolean 6 69* expression in polish form, with the stack represented by a linked list. 6 70* the final structure is one for identifying the status of version information */ 6 71 6 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 6 73 2 version unal fixed bin, /* data base version, currently 4 */ 6 74 2 db_type_flags unal, 6 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 6 76 3 unused (13) bit (1) unal, 6 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 6 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 6 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 6 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 6 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 6 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 6 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 6 84 2 reserved bit (34) unal, /* reserved for flags */ 6 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 6 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 6 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 6 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 6 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 6 90 2 num_domains unal fixed bin, /* number of domains defined */ 6 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 6 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 6 93 2 pad_1 unal fixed bin (35), /* for future use */ 6 94 2 pad_2 unal fixed bin (35), /* for future use */ 6 95 2 version_ptr bit (18), /* offset to version structure */ 6 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 6 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 6 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 6 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 6 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 6 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 6 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 6 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 6 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 6 105 6 106 dcl dbm_ptr ptr; 6 107 6 108 /* the files in the database each have a file_info containing 6 109* their name, the file_model for each file is found by initiating the 6 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 6 111* the file_info list is a singly linked list in definition order */ 6 112 6 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 6 114 2 file_name char (30), /* name of file */ 6 115 2 file_id bit (36), /* id number of file */ 6 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 6 117 2 unused unal bit (18); /* for future expansion */ 6 118 6 119 dcl fi_ptr ptr; 6 120 6 121 /* each domain used in the database will have a domain info saved in the db_model 6 122* segment. it describes the domain of the given name, and it's options. 6 123* the domain_info's form a singly linked list in definition order */ 6 124 6 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 6 126 2 name char (32), /* name of domain */ 6 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 6 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 6 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 6 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 6 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 6 132 2 reserved bit (31) unal, 6 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 6 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 6 135 2 ave_len fixed bin (35), /* average length of varying string */ 6 136 2 nck_items unal fixed bin, /* no. items in check stack */ 6 137 2 fwd_thread unal bit (18), /* offset to next in list */ 6 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 6 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 6 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 6 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 6 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 6 143 2 str_err_path_ptr unal bit (18), 6 144 2 str_after_path_ptr unal bit (18), 6 145 2 get_before_path_ptr unal bit (18), 6 146 2 get_err_path_ptr unal bit (18), 6 147 2 get_after_path_ptr unal bit (18), 6 148 2 mod_before_path_ptr unal bit (18), 6 149 2 mod_err_path_ptr unal bit (18), 6 150 2 mod_after_path_ptr unal bit (18), 6 151 2 unused_1 unal bit (18), /* for future expansion */ 6 152 2 unused_2 unal bit (18), 6 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 6 154 6 155 dcl di_ptr ptr; 6 156 6 157 /* information necessary for attributes that are not used in any relation */ 6 158 6 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 6 160 2 name char (32), /* name of attribute */ 6 161 2 domain_ptr bit (18) unal, /* to domain_info */ 6 162 2 fwd_thread bit (18) unal, /* to next in list */ 6 163 2 unused (2) bit (18) unal; 6 164 6 165 dcl ua_ptr ptr; 6 166 6 167 6 168 /* space saving pathname$entryname structure, to be allocated 6 169* only when a path$entry has to be saved, else only a bit(18) 6 170* offset takes up space in the main model structure */ 6 171 6 172 declare 1 path_entry based (path_entry_ptr), 6 173 2 path char (168), /* pathname portion of desired path$entry */ 6 174 2 entry char (32), /* entryname portion of desired path$entry */ 6 175 2 reserved unal bit (36); /* for future use */ 6 176 6 177 declare path_entry_ptr ptr; 6 178 6 179 6 180 6 181 6 182 6 183 /* declarations for model of postfix stack holding the check option boolean expression 6 184* the following encoding values indicate the corresponding type of stack element 6 185* 6 186* 1 = 6 187* 2 ^= 6 188* 3 > 6 189* 4 < 6 190* 5 >= 6 191* 6 <= 6 192* 6 193* 10 and 6 194* 20 or 6 195* 30 not 6 196* 6 197* 40 - (minus) 6 198* 6 199* 50 domain variable(same name as domain) 6 200* 6 201* 60 constant(number, bit string, or character string) 6 202* 6 203**/ 6 204 6 205 6 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 6 207 2 next bit (18), /* link to next in list */ 6 208 2 type fixed binary, /* code for this element type */ 6 209 2 value_ptr bit (18); /* pointer to variable holding value, 6 210* if this is a constant element type */ 6 211 6 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 6 213 6 214 6 215 6 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 6 217 2 length fixed bin (35), /* length allocated to hold value */ 6 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 6 219 6 220 declare constant_ptr ptr; /* pointer to constant's value space */ 6 221 6 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 6 223 6 224 /* version structure, giving status of source for CMDB/RMDB, 6 225* status of model, and status of resultant */ 6 226 6 227 /* version number is in form MM.N.Y 6 228* where MM is the major version number, N is the minor version alteration, 6 229* and Y is the lastest modification to that alteration, 6 230* where M and N represent numbers 0-9, and Y is a letter */ 6 231 6 232 declare 1 version_status unal based (version_status_ptr), 6 233 2 cmdb_rmdb, 6 234 3 major fixed bin, 6 235 3 minor fixed bin, 6 236 3 modification char (4), 6 237 2 model, 6 238 3 major fixed bin, 6 239 3 minor fixed bin, 6 240 3 modification char (4), 6 241 2 resultant, 6 242 3 major fixed bin, 6 243 3 minor fixed bin, 6 244 3 modification char (4); 6 245 6 246 declare version_status_ptr ptr; 6 247 6 248 6 249 /* maintains information only about the db creation */ 6 250 6 251 declare 1 changer unal based (changer_ptr), 6 252 2 id char (32), 6 253 2 time fixed bin (71), 6 254 2 next bit (18); /* to next in the singly linked list */ 6 255 6 256 declare changer_ptr ptr; 6 257 6 258 6 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 6 260 02 len fixed bin, /* length of the message */ 6 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 6 262 02 name char (32), /* name of thing that set the message */ 6 263 02 undo_request char (100), /* rmdb request that will undo the operation 6 264* that caused the database to become inconsistent */ 6 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 6 266 6 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 6 268 6 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 6 270 6 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 6 272 6 273 420 421 7 1 /* BEGIN INCLUDE FILE . . . sl_info.incl.pl1 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(87-11-16,Lippard), approve(87-12-21,MCR7822), 7 7* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 7 8* Modified to add INITIATED_SEGS type. 7 9* 2) change(87-11-19,Lippard), approve(87-12-21,MCR7822), 7 10* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 7 11* Added uid to sl_info structure. 7 12* END HISTORY COMMENTS */ 7 13 7 14 7 15 declare 1 sl_info aligned based (sl_info_p), 7 16 2 version fixed binary, /* Must be 1 */ 7 17 2 num_paths fixed binary, /* Number of search paths */ 7 18 2 change_index_p pointer, /* Pointer to search list's update count */ 7 19 2 change_index fixed binary (71), /* This search list's update count */ 7 20 2 pad1 (6) bit (36), /* Must be zero */ 7 21 2 paths (sl_info_num_paths refer (sl_info.num_paths)), 7 22 3 type fixed binary, /* Type of search path */ 7 23 3 code fixed binary (35), /* Standard status code of search path */ 7 24 3 uid bit (36), /* Unique ID */ 7 25 3 pathname char (168) unaligned; /* Search pathname */ 7 26 7 27 declare sl_info_num_paths fixed binary; 7 28 declare sl_info_p pointer; 7 29 declare sl_info_version_1 fixed binary internal static options (constant) initial (1); 7 30 7 31 /* Keyword Types */ 7 32 7 33 declare ABSOLUTE_PATH fixed binary internal static options (constant) initial (0); 7 34 declare UNEXPANDED_PATH fixed binary internal static options (constant) initial (1); 7 35 declare REFERENCING_DIR fixed binary internal static options (constant) initial (3); 7 36 declare WORKING_DIR fixed binary internal static options (constant) initial (4); 7 37 declare PROCESS_DIR fixed binary internal static options (constant) initial (5); 7 38 declare HOME_DIR fixed binary internal static options (constant) initial (6); 7 39 declare INITIATED_SEGS fixed binary internal static options (constant) initial (7); 7 40 7 41 /* END INCLUDE FILE . . . sl_info.incl.pl1 */ 422 423 8 1 /* BEGIN INCLUDE FILE . . . sl_control_s.incl.pl1 */ 8 2 8 3 declare 1 sl_control_s unaligned based (addr (sl_control)), 8 4 2 af_pathname bit (1), /* "1"b => expand active functions */ 8 5 2 pad1 bit (1), /* Must be zero */ 8 6 2 key_ref_dir bit (1), /* "1"b => expand -referencing_dir keyword */ 8 7 2 key_work_dir bit (1), /* "1"b => expand -working_dir keyword */ 8 8 2 key_proc_dir bit (1), /* "1"b => expand -process_dir keyword */ 8 9 2 key_home_dir bit (1), /* "1"b => expand -home_dir keyword */ 8 10 2 pad2 bit (30); /* Must be zero */ 8 11 8 12 declare sl_control bit (36); 8 13 declare sl_control_default bit (36) internal static options (constant) initial ("101111"b); 8 14 8 15 /* END INCLUDE FILE . . . sl_control_s.incl.pl1 */ 424 9 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 9 2 9 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 9 4 9 5 /* This include file contains branch and link structures returned by 9 6* hcs_$status_ and hcs_$status_long. */ 9 7 9 8 dcl 1 status_branch aligned based (status_ptr), 9 9 2 short aligned, 9 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 9 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 9 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 9 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 9 14 3 dtu bit (36) unaligned, /* date/time last used */ 9 15 3 mode bit (5) unaligned, /* caller's effective access */ 9 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 9 17 3 pad1 bit (8) unaligned, 9 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 9 19 9 20 /* Limit of information returned by hcs_$status_ */ 9 21 9 22 2 long aligned, 9 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 9 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 9 25 3 lvid bit (36) unaligned, /* logical volume ID */ 9 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 9 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 9 28 3 pad2 bit (8) unaligned, 9 29 3 copy_switch bit (1) unaligned, /* copy switch */ 9 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 9 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 9 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 9 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 9 34 3 pad3 bit (5) unaligned, 9 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 9 36 3 uid bit (36) unaligned; /* unique ID */ 9 37 9 38 dcl 1 status_link aligned based (status_ptr), 9 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 9 40 2 nnames fixed bin (16) unaligned unsigned, 9 41 2 names_relp bit (18) unaligned, 9 42 2 dtem bit (36) unaligned, 9 43 2 dtd bit (36) unaligned, 9 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 9 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 9 46 9 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 9 48 based (pointer (status_area_ptr, status_branch.names_relp)), 9 49 /* array of names returned */ 9 50 status_pathname character (status_link.pathname_length) aligned 9 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 9 52 /* link target path */ 9 53 status_area_ptr pointer, 9 54 status_ptr pointer; 9 55 9 56 dcl (Link initial (0), 9 57 Segment initial (1), 9 58 Directory initial (2)) fixed bin internal static options (constant); 9 59 /* values for type fields declared above */ 9 60 9 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 425 426 10 1 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 10 2 /* format: style3,indcomtxt,idind30 */ 10 3 /**** Jay Pattin 2/13/83 10 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 10 5* 10 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 10 7* 10 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 10 9 10 10 declare suffix_info_ptr ptr; 10 11 10 12 declare 1 suffix_info aligned based (suffix_info_ptr), 10 13 2 version char (8), 10 14 2 type char (32) unaligned, 10 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 10 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 10 17 2 flags unaligned, 10 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 10 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 10 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 10 21 3 mbz1 bit (33) unaligned, 10 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 10 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 10 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 10 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 10 26 2 info_pathname char (168) unaligned; 10 27 /* pathname of info segment containing more info */ 10 28 10 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 10 30 10 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 10 32 10 33 declare switch_list_ptr ptr, 10 34 alloc_switch_count fixed bin, 10 35 alloc_switch_name_count fixed bin; 10 36 10 37 declare 1 switch_list aligned based (switch_list_ptr), 10 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 10 39 2 switch_count fixed bin, /* total number of switches */ 10 40 2 switch_name_count fixed bin, /* total number of names */ 10 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 10 42 3 name_index fixed bin, /* index of first name for this switch */ 10 43 3 name_count fixed bin, /* number of names for this switch */ 10 44 3 default_value bit (1) aligned, /* default setting for this switch */ 10 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 10 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 10 47 10 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 10 49 10 50 declare ( 10 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 10 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 10 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 10 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 10 55 FS_OBJECT_TYPE_LINK init ("-link") 10 56 ) char (32) unaligned int static options (constant); 10 57 10 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 427 428 11 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 11 2 11 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 11 4 11 5 dcl area_infop ptr; 11 6 11 7 dcl 1 area_info aligned based (area_infop), 11 8 2 version fixed bin, /* version number for this structure is 1 */ 11 9 2 control aligned like area_control, /* control bits for the area */ 11 10 2 owner char (32) unal, /* creator of the area */ 11 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 11 12 2 size fixed bin (18), /* size of the area in words */ 11 13 2 version_of_area fixed bin, /* version of area (returned only) */ 11 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 11 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 11 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 11 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 11 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 11 19 11 20 dcl 1 area_control aligned based, 11 21 2 extend bit (1) unal, /* says area is extensible */ 11 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 11 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 11 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 11 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 11 26 2 system bit (1) unal, /* says area is managed by system */ 11 27 2 pad bit (30) unal; 11 28 11 29 /* END INCLUDE FILE area_info.incl.pl1 */ 429 430 431 end mrds_dm_authorization; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/08/88 1530.1 mrds_dm_authorization.pl1 >spec>install>1034>mrds_dm_authorization.pl1 339 1 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 412 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 414 3 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 416 4 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 418 5 10/14/83 1608.8 mrds_authorization.incl.pl1 >ldd>include>mrds_authorization.incl.pl1 420 6 10/17/86 1404.3 mdbm_db_model.incl.pl1 >ldd>include>mdbm_db_model.incl.pl1 422 7 02/18/88 2023.8 sl_info.incl.pl1 >ldd>include>sl_info.incl.pl1 424 8 01/09/79 1617.9 sl_control_s.incl.pl1 >ldd>include>sl_control_s.incl.pl1 425 9 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 427 10 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 429 11 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.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. FS_OBJECT_TYPE_DIRECTORY 000000 constant char(32) initial packed unaligned dcl 10-50 ref 304 GENERAL_ACL_VERSION_1 000012 constant char(8) initial packed unaligned dcl 3-72 ref 262 268 MRDS_SEARCHLIST 000014 constant char(4) initial packed unaligned dcl 352 set ref 183* RW_ACCESS constant bit(3) initial packed unaligned dcl 2-11 ref 265 SMA_ACCESS constant bit(3) initial packed unaligned dcl 2-11 ref 271 abs_db_path 000100 automatic char(168) packed unaligned dcl 356 set ref 190* 197* 198 198 276* 278 278 abs_dir_path parameter char packed unaligned dcl 329 set ref 283 287* 300* 305* 315 319* absolute_pathname_ 000010 constant entry external dcl 357 ref 190 access_mode_overlay based structure level 1 packed packed unaligned dcl 402 access_mode_overlay_ptr 000152 automatic pointer dcl 358 set ref 229* 236 236 236 access_name 3 based char(32) array level 3 in structure "dir_acl" packed packed unaligned dcl 366 in procedure "mrds_dm_authorization" set ref 270* access_name 3 based char(32) array level 3 in structure "file_acl" packed packed unaligned dcl 378 in procedure "mrds_dm_authorization" set ref 264* acl_count 012134 automatic fixed bin(17,0) dcl 3-5 set ref 260* 261 261 263 267 267 269 addr builtin function dcl 401 ref 114 114 161 183 183 218 218 218 218 229 287 287 administrator 1 based bit(1) level 2 packed packed unaligned dcl 5-22 set ref 164 239* 247* append 0(04) based bit(1) level 2 packed packed unaligned dcl 402 ref 236 area 000154 stack reference condition dcl 359 ref 124 137 area_control based structure level 1 dcl 11-20 area_info based structure level 1 dcl 11-7 area_info_ 000012 constant entry external dcl 360 ref 114 area_ptr parameter pointer dcl 361 ref 100 100 107 112 131 136 222 areap 16 012104 automatic pointer level 2 dcl 409 set ref 112* cd parameter fixed bin(35,0) dcl 345 ref 343 347 chase_links 000162 automatic fixed bin(1,0) initial dcl 362 set ref 218* 362* cleanup 000164 stack reference condition dcl 363 ref 129 code 000100 automatic fixed bin(35,0) dcl 330 set ref 287* 290 292 292* 300* 302 302* 305* 307 310 310* 319* 321 324 324* containing_dir 000172 automatic char(168) packed unaligned dcl 364 set ref 198* 218 218 276 control 1 012104 automatic structure level 2 dcl 409 copy_flags based structure level 1 dcl 4-8 count 2 based fixed bin(17,0) level 2 in structure "general_acl" dcl 3-7 in procedure "mrds_dm_authorization" set ref 261* 267* count 2 based fixed bin(17,0) level 2 in structure "dir_acl" dcl 366 in procedure "mrds_dm_authorization" set ref 269* count 2 based fixed bin(17,0) level 2 in structure "file_acl" dcl 378 in procedure "mrds_dm_authorization" set ref 263* current_name 000101 automatic char(35) packed unaligned dcl 331 set ref 299* 300* 305* 315 319* dacl_ptr parameter pointer dcl 332 set ref 283 305* 307 315* db_dir 000244 automatic char(32) packed unaligned dcl 365 set ref 198* 218 218 276 delete_acl_entry based structure level 1 dcl 3-63 dir_acl based structure level 1 unaligned dcl 366 set ref 267 dir_acl_ptr 000254 automatic pointer dcl 367 set ref 267* 268 269 270 271 272 278* directory_acl_entry based structure level 1 dcl 3-54 dont_chase_links 000256 automatic fixed bin(1,0) initial dcl 368 set ref 368* empty builtin function dcl 401 ref 179 385 entries 3 based structure array level 2 in structure "file_acl" dcl 378 in procedure "mrds_dm_authorization" entries 3 based structure array level 2 in structure "dir_acl" dcl 366 in procedure "mrds_dm_authorization" error_code parameter fixed bin(35,0) dcl 369 set ref 100 100 102* 106 107* 114* 115 116* 120* 125* 155 157* 159 163 166* 183* 185 190* 191 195* 196 198* 200 200 200* 205 205* 218* 220 220 220 227* 347* error_table_$area_too_small 000014 external static fixed bin(35,0) dcl 370 ref 125 error_table_$argerr 000016 external static fixed bin(35,0) dcl 371 ref 307 321 error_table_$badcall 000020 external static fixed bin(35,0) dcl 372 ref 107 error_table_$incorrect_access 000022 external static fixed bin(35,0) dcl 373 ref 200 220 error_table_$insufficient_access 000024 external static fixed bin(35,0) dcl 374 ref 166 error_table_$no_s_permission 000026 external static fixed bin(35,0) dcl 375 ref 220 error_table_$nomatch 000030 external static fixed bin(35,0) dcl 376 ref 290 error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 377 ref 120 facl_ptr parameter pointer dcl 333 set ref 283 315* 319* 321 file_acl based structure level 1 unaligned dcl 378 set ref 261 file_acl_ptr 000260 automatic pointer dcl 379 set ref 261* 262 263 264 265 266 278* file_type 000112 automatic char(32) packed unaligned dcl 334 set ref 300* 304 fs_util_$add_acl_entries 000056 constant entry external dcl 335 ref 305 319 fs_util_$get_type 000060 constant entry external dcl 336 ref 300 general_acl based structure level 1 dcl 3-7 general_acl_entry based structure level 1 unaligned dcl 3-12 general_delete_acl_entry based structure level 1 dcl 3-35 general_extended_acl_entry based structure level 1 dcl 3-23 get_group_id_$tag_star 000034 constant entry external dcl 380 ref 264 270 hcs_$star_ 000036 constant entry external dcl 381 ref 287 hcs_$status_ 000040 constant entry external dcl 382 ref 218 idx 000262 automatic fixed bin(17,0) dcl 384 set ref 196* 197* local_area 012150 automatic area(2048) dcl 179 in procedure "check_path" set ref 179* 183 183 local_area 000264 automatic area(5000) dcl 385 in procedure "mrds_dm_authorization" set ref 218 218 261 267 287 287 385* local_index 000122 automatic fixed bin(17,0) dcl 337 set ref 298* 299* local_mrds_authorization 012102 automatic structure level 1 unaligned dcl 408 set ref 161 loop_idx 012074 automatic fixed bin(17,0) dcl 386 set ref 186* 192* 196 mode 13 based bit(36) array level 3 in structure "file_acl" dcl 378 in procedure "mrds_dm_authorization" set ref 265* mode 13 based bit(36) array level 3 in structure "dir_acl" dcl 366 in procedure "mrds_dm_authorization" set ref 271* mode 3 012130 automatic bit(5) level 2 in structure "my_status_branch" packed packed unaligned dcl 410 in procedure "mrds_dm_authorization" set ref 229 modify 0(03) based bit(1) level 2 packed packed unaligned dcl 402 ref 236 mrds_authorization based structure level 1 dcl 5-22 set ref 131 136 222 231* mrds_authorization_ptr 012136 automatic pointer dcl 5-29 set ref 103* 130 131 132* 136* 149 161* 164 222 223* 231 232 239 240 247 248 mrds_authorization_structure_version constant fixed bin(17,0) initial dcl 5-31 ref 120 232 mrds_dm_check_path 000042 constant entry external dcl 387 ref 198 mrds_error_$no_model_access 000046 external static fixed bin(35,0) dcl 389 ref 200 mrds_error_$not_freeing_area 000044 external static fixed bin(35,0) dcl 388 ref 116 mrds_error_$version_not_supported 000050 external static fixed bin(35,0) dcl 390 ref 205 mrds_search_list_ptr 012076 automatic pointer dcl 391 set ref 183* 186 197 my_area_info 012104 automatic structure level 1 unaligned dcl 409 set ref 110* 114 114 my_status_branch 012130 automatic structure level 1 packed packed unaligned dcl 410 set ref 214* 218 218 new_found 012100 automatic bit(1) packed unaligned dcl 392 set ref 198* 205 nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 1-27 ref 299 no_freeing 1(04) 012104 automatic bit(1) level 3 packed packed unaligned dcl 409 set ref 116 normal_user 1(01) based bit(1) level 2 packed packed unaligned dcl 5-22 set ref 240* 248* null builtin function dcl 401 ref 103 107 130 132 183 183 223 num_paths 1 based fixed bin(17,0) level 2 dcl 7-15 ref 186 pathname 17 based char(168) array level 3 packed packed unaligned dcl 7-15 set ref 197* pathname_ 000052 constant entry external dcl 393 ref 197 paths 14 based structure array level 2 dcl 7-15 rel_db_path parameter char packed unaligned dcl 394 set ref 100 100 155 182 190* 197* rtrim builtin function dcl 401 ref 198 198 218 218 218 218 276 278 278 315 315 search builtin function dcl 401 ref 182 search_paths_$get 000054 constant entry external dcl 395 ref 183 segment_acl_entry based structure level 1 dcl 3-45 short based structure level 2 dcl 9-8 sl_control_default 000010 constant bit(36) initial packed unaligned dcl 8-13 set ref 183* sl_info based structure level 1 dcl 7-15 sl_info_version_1 000032 constant fixed bin(17,0) initial dcl 7-29 set ref 183* star_BRANCHES_ONLY 000033 constant fixed bin(2,0) initial dcl 1-110 set ref 287* star_entries based structure array level 1 dcl 1-27 star_entry_count 000123 automatic fixed bin(17,0) dcl 1-14 set ref 287* 298 star_entry_ptr 000124 automatic pointer dcl 1-15 set ref 287* 299 star_names based char(32) array packed unaligned dcl 1-37 ref 299 star_names_ptr 000126 automatic pointer dcl 1-19 set ref 287* 299 status 0(01) based bit(1) level 2 packed packed unaligned dcl 402 ref 236 status_branch based structure level 1 dcl 9-8 status_code 14 based fixed bin(35,0) array level 3 in structure "dir_acl" dcl 366 in procedure "mrds_dm_authorization" set ref 272* 307* status_code 14 based fixed bin(35,0) array level 3 in structure "file_acl" dcl 378 in procedure "mrds_dm_authorization" set ref 266* 321* structure_ptr parameter pointer dcl 396 set ref 100 100 149* structure_version parameter fixed bin(17,0) dcl 397 ref 100 100 120 unspec builtin function dcl 401 set ref 110* 214* 231* use_search_paths 012101 automatic bit(1) packed unaligned dcl 399 set ref 181* 187* 197 version based fixed bin(17,0) level 2 in structure "mrds_authorization" dcl 5-22 in procedure "mrds_dm_authorization" set ref 232* version 012104 automatic fixed bin(17,0) level 2 in structure "my_area_info" dcl 409 in procedure "mrds_dm_authorization" set ref 111* version based char(8) level 2 in structure "dir_acl" dcl 366 in procedure "mrds_dm_authorization" set ref 268* version based char(8) level 2 in structure "file_acl" dcl 378 in procedure "mrds_dm_authorization" set ref 262* work_area based area dcl 400 ref 131 136 222 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_PATH internal static fixed bin(17,0) initial dcl 7-33 ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 3-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 3-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 3-67 Directory internal static fixed bin(17,0) initial dcl 9-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 FS_OBJECT_TYPE_DM_FILE internal static char(32) initial packed unaligned dcl 10-50 FS_OBJECT_TYPE_LINK internal static char(32) initial packed unaligned dcl 10-50 FS_OBJECT_TYPE_MSF internal static char(32) initial packed unaligned dcl 10-50 FS_OBJECT_TYPE_SEGMENT internal static char(32) initial packed unaligned dcl 10-50 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 3-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 3-72 HOME_DIR internal static fixed bin(17,0) initial dcl 7-38 INITIATED_SEGS internal static fixed bin(17,0) initial dcl 7-39 Link internal static fixed bin(17,0) initial dcl 9-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 PROCESS_DIR internal static fixed bin(17,0) initial dcl 7-37 REFERENCING_DIR internal static fixed bin(17,0) initial dcl 7-35 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 3-67 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SUFFIX_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 10-29 SWITCH_LIST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-48 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Segment internal static fixed bin(17,0) initial dcl 9-56 UNEXPANDED_PATH internal static fixed bin(17,0) initial dcl 7-34 WORKING_DIR internal static fixed bin(17,0) initial dcl 7-36 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 acl_ptr automatic pointer dcl 3-4 alloc_length internal static fixed bin(35,0) dcl 6-222 alloc_switch_count automatic fixed bin(17,0) dcl 10-33 alloc_switch_name_count automatic fixed bin(17,0) dcl 10-33 area_info_version_1 internal static fixed bin(17,0) initial dcl 11-3 area_infop automatic pointer dcl 11-5 changer based structure level 1 packed packed unaligned dcl 6-251 changer_ptr automatic pointer dcl 6-256 constant based structure level 1 unaligned dcl 6-216 constant_ptr automatic pointer dcl 6-220 db_model based structure level 1 dcl 6-72 dbm_ptr automatic pointer dcl 6-106 delete_acl based structure level 1 dcl 3-58 delete_acl_array based structure array level 1 dcl 3-64 di_ptr automatic pointer dcl 6-155 directory_acl based structure level 1 dcl 3-49 directory_acl_array based structure array level 1 dcl 3-55 domain_info based structure level 1 dcl 6-125 fi_ptr automatic pointer dcl 6-119 file_info based structure level 1 dcl 6-113 general_delete_acl based structure level 1 dcl 3-30 general_extended_acl based structure level 1 dcl 3-18 message_str based structure level 1 packed packed unaligned dcl 6-259 message_str_len automatic fixed bin(17,0) dcl 6-269 message_str_ptr automatic pointer dcl 6-267 path_entry based structure level 1 packed packed unaligned dcl 6-172 path_entry_ptr automatic pointer dcl 6-177 segment_acl based structure level 1 dcl 3-40 segment_acl_array based structure array level 1 dcl 3-46 sl_control automatic bit(36) packed unaligned dcl 8-12 sl_control_s based structure level 1 packed packed unaligned dcl 8-3 sl_info_num_paths automatic fixed bin(17,0) dcl 7-27 sl_info_p automatic pointer dcl 7-28 stack_item based structure level 1 unaligned dcl 6-206 stack_item_ptr automatic pointer dcl 6-212 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 1-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-114 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 1-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 1-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 1-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 1-120 star_branch_count automatic fixed bin(17,0) dcl 1-13 star_dir_list_branch based structure array level 1 dcl 1-59 star_link_count automatic fixed bin(17,0) dcl 1-17 star_link_pathname based char packed unaligned dcl 1-102 star_links based structure array level 1 dcl 1-76 star_linkx automatic fixed bin(17,0) dcl 1-18 star_list_branch based structure array level 1 dcl 1-41 star_list_branch_ptr automatic pointer dcl 1-16 star_list_names based char(32) array packed unaligned dcl 1-92 star_list_names_ptr automatic pointer dcl 1-20 star_select_sw automatic fixed bin(3,0) dcl 1-21 status_area_ptr automatic pointer dcl 9-47 status_entry_names based char(32) array dcl 9-47 status_link based structure level 1 dcl 9-38 status_pathname based char dcl 9-47 status_ptr automatic pointer dcl 9-47 suffix_info based structure level 1 dcl 10-12 suffix_info_ptr automatic pointer dcl 10-10 sum builtin function dcl 401 switch_list based structure level 1 dcl 10-37 switch_list_ptr automatic pointer dcl 10-33 sys_info$max_seg_size external static fixed bin(35,0) dcl 398 ua_ptr automatic pointer dcl 6-165 unreferenced_attribute based structure level 1 dcl 6-159 version_status based structure level 1 packed packed unaligned dcl 6-232 version_status_ptr automatic pointer dcl 6-246 NAMES DECLARED BY EXPLICIT CONTEXT. PROGRAM_EXIT 000354 constant label dcl 352 ref 348 check_path 000355 constant entry internal dcl 172 ref 105 158 error 001614 constant entry internal dcl 343 ref 292 302 307 310 321 324 force_dir_contents_acls 001216 constant entry internal dcl 283 ref 278 315 get_authorization 000072 constant entry external dcl 100 get_user_class 000114 constant entry external dcl 100 get_user_info 000647 constant entry internal dcl 210 ref 139 162 mrds_dm_authorization 000056 constant entry external dcl 25 set_db_acls 001027 constant entry internal dcl 256 ref 164 set_needed_access 000311 constant entry external dcl 155 skip_allocate 000301 constant label dcl 141 ref 126 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2374 2456 2032 2404 Length 3120 2032 62 425 341 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_dm_authorization 7398 external procedure is an external procedure. on unit on line 124 64 on unit on unit on line 129 64 on unit check_path internal procedure shares stack frame of external procedure mrds_dm_authorization. get_user_info internal procedure shares stack frame of external procedure mrds_dm_authorization. set_db_acls internal procedure shares stack frame of external procedure mrds_dm_authorization. force_dir_contents_acls 138 internal procedure is called during a stack extension. error internal procedure shares stack frame of internal procedure force_dir_contents_acls. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME force_dir_contents_acls 000100 code force_dir_contents_acls 000101 current_name force_dir_contents_acls 000112 file_type force_dir_contents_acls 000122 local_index force_dir_contents_acls 000123 star_entry_count force_dir_contents_acls 000124 star_entry_ptr force_dir_contents_acls 000126 star_names_ptr force_dir_contents_acls mrds_dm_authorization 000100 abs_db_path mrds_dm_authorization 000152 access_mode_overlay_ptr mrds_dm_authorization 000162 chase_links mrds_dm_authorization 000172 containing_dir mrds_dm_authorization 000244 db_dir mrds_dm_authorization 000254 dir_acl_ptr mrds_dm_authorization 000256 dont_chase_links mrds_dm_authorization 000260 file_acl_ptr mrds_dm_authorization 000262 idx mrds_dm_authorization 000264 local_area mrds_dm_authorization 012074 loop_idx mrds_dm_authorization 012076 mrds_search_list_ptr mrds_dm_authorization 012100 new_found mrds_dm_authorization 012101 use_search_paths mrds_dm_authorization 012102 local_mrds_authorization mrds_dm_authorization 012104 my_area_info mrds_dm_authorization 012130 my_status_branch mrds_dm_authorization 012134 acl_count mrds_dm_authorization 012136 mrds_authorization_ptr mrds_dm_authorization 012150 local_area check_path THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return_mac tra_ext_1 enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc op_alloc_ op_freen_ op_empty_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ area_info_ fs_util_$add_acl_entries fs_util_$get_type get_group_id_$tag_star hcs_$star_ hcs_$status_ mrds_dm_check_path pathname_ search_paths_$get THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$area_too_small error_table_$argerr error_table_$badcall error_table_$incorrect_access error_table_$insufficient_access error_table_$no_s_permission error_table_$nomatch error_table_$unimplemented_version mrds_error_$no_model_access mrds_error_$not_freeing_area mrds_error_$version_not_supported LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 362 000045 368 000047 385 000050 25 000055 25 000064 100 000065 102 000133 103 000134 105 000136 106 000137 107 000141 110 000152 111 000155 112 000157 114 000162 115 000175 116 000200 120 000207 124 000217 125 000233 126 000236 129 000241 130 000255 131 000262 132 000264 134 000267 136 000270 137 000277 139 000300 149 000301 151 000304 155 000305 157 000330 158 000331 159 000332 161 000334 162 000336 163 000337 164 000342 166 000350 170 000353 431 000354 172 000355 179 000356 181 000361 182 000362 183 000377 185 000446 186 000451 187 000454 188 000456 190 000457 191 000501 192 000504 195 000506 196 000510 197 000521 198 000553 200 000624 203 000634 205 000636 208 000646 210 000647 214 000650 218 000653 220 000753 222 000763 223 000765 224 000767 227 000770 229 000771 231 000773 232 000777 236 001001 239 001015 240 001017 242 001021 247 001022 248 001024 254 001026 256 001027 260 001030 261 001032 262 001043 263 001046 264 001050 265 001057 266 001062 267 001063 268 001074 269 001077 270 001101 271 001110 272 001113 276 001114 278 001153 281 001213 283 001215 287 001231 290 001301 292 001305 298 001311 299 001321 300 001332 302 001361 304 001365 305 001371 307 001420 310 001436 315 001442 317 001536 319 001540 321 001567 324 001605 327 001611 341 001613 343 001614 347 001616 348 001621 ----------------------------------------------------------- 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