COMPILATION LISTING OF SEGMENT get_effective_access Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/22/86 1445.0 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: on,style2,^inddcls,linecom,ifthendo,ifthen,^indnoniterdo,dclind5,idind35 */ 8 9 /* DESCRIPTION 10* This is a command/AF to return a user's effective access 11*to a branch without respect to AIM. 12**/ 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(83-09-13,Lippard), approve(86-03-10,MCR6565), audit(), install(): 17* Initial coding. 18* 2) change(84-04-26,Lippard), approve(86-03-10,MCR6899), audit(), install(): 19* Removed the extra linefeed from error messages and to not abort 20* because of error_table_$nomatch. 21* 3) change(85-02-06,MSharpe), approve(86-03-10,MCR7122), audit(), install(): 22* replaced -fcnt with -inase/inaee; to report unsupop. 23* 4) change(86-03-03,Newcomb), approve(86-03-26,MCR7366), audit(86-04-15,Cox), 24* install(86-04-22,MR12.0-1042): 25* corrected to allow the "<" path by expanding the path before checking for a 26* starname. 27* END HISTORY COMMENTS */ 28 29 30 get_effective_access: 31 gea: 32 procedure options (variable); 33 34 dcl ( /* Automatics */ 35 all_modes char (36), 36 argl fixed bin (21), 37 argn fixed bin, 38 argp ptr, 39 bit_count fixed bin (24), 40 bits_ptr ptr, 41 code fixed bin (35), 42 dname char (168), 43 ename char (32), 44 (idx, jdx) fixed bin, 45 (mode, ex_mode) bit (36) aligned, 46 return_len fixed bin (21), 47 return_ptr ptr, 48 return_string char (36) varying, 49 1 si aligned like suffix_info, 50 type fixed bin (2), 51 userid char (32), 52 user_ring fixed bin, 53 ( /* Flags */ 54 active_function, 55 userid_arg, 56 path_arg, 57 multiple_paths, 58 star_path, 59 ring_arg, 60 no_type, 61 printed_path 62 ) bit (1) aligned 63 ) automatic; 64 65 dcl /* Based */ 66 arg char (argl) based (argp), 67 bits (36) bit (1) unaligned based (bits_ptr), 68 return_arg char (return_len) varying based (return_ptr); 69 70 dcl ( /* External Entries */ 71 (active_fnc_err_, com_err_) entry options (variable), 72 check_star_name_$entry entry (char (*), fixed bin (35)), 73 cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 74 cu_$af_arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 75 cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)), 76 cv_userid_ entry (char (*)) returns (char (32)), 77 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 78 fs_util_$get_user_access_modes entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, 79 bit (36) aligned, fixed bin (35)), 80 fs_util_$suffix_info entry (char (*), char (*), ptr, fixed bin (35)), 81 get_system_free_area_ €–ÆBdp üè GWMay Multics 0KÃWÉfMèœXþ?M=c7@'X.25ASCII_CRT_E €9„Gamble r~®ÂVbTþ Gamble Guest Qt{å­Rîw Qta|§,tiple_paths = TRUE; 181 path_arg = TRUE; 182 end; 183 end; /* arg loop */ 184 185 if ^path_arg then do; 186 call complain (0, ME, "Usage: ^[[^]gea paths {-control_args}^[]^]", active_function, active_function); 187 return; 188 end; 189 190 return_string = ""; 191 192 do idx = 1 to argn; /* process pathnames */ 193 call get_arg_ptr (idx, argp, argl, (0)); 194 if arg = "-interpret_as_standard_entry" | arg = "-inase" then 195 ; 196 else if arg = "-interpret_as_extended_entry" | arg = "-inaee" then 197 ; 198 else if arg = "-ring" | arg = "-user" then 199 idx = idx + 1; 200 else do; /* pathname argument, let's do our job */ 201 call expand_pathname_ (arg, dname, ename, code); 202 if code ^= 0 then do; 203 call complain (code, ME, "^a", arg); 204 return; 205 end; 206 star_path = FALSE; 207 call check_star_name_$entry (ename, code); 208 if code = error_table_$badstar then do; 209 call complain (code, ME, "^a", arg); 210 return; 211 end; 212 else if code ^= 0 then 213 star_path = TRUE; 214 215 if star_path then do; 216 star_names_ptr, star_entry_ptr = null (); 217 on cleanup call free_star_structures (); 218 call hcs_$star_ (dname, ename, star_ALL_ENTRIES, get_system_free_area_ (), star_entry_count, 219 star_entry_ptr, star_names_ptr, code); 220 221 if code ^= 0 then do; 222 call complain (code, ME, "^a", pathname_ (dname, ename)); 223 if code ^= error_table_$nomatch then 224 return; /* nothing to free */ 225 end; 226 227 do jdx = 1 to star_entry_count; 228 call return_info (dname, star_names (star_entries.nindex (jdx)), return_string, code); 229 if code = 0 & ^active_function then do; 230 call ioa_ ("^[^/^]^3x^a^/^a", printed_path, 231 pathname_ (dname, star_names (star_entries.nindex (jdx))), return_string); 232 printed_path = TRUE; 233 end; 234 else if code = 0 then 235 return_arg = return_arg || return_string || " "; 236 237 else if code = error_table_$unsupported_operation & ^active_function then 238 call complain (code, ME, "^a", 239 pathname_ (dname, star_names (star_entries.nindex (jdx)))); 240 end; 241 call free_star_structures (); 242 revert cleanup; 243 end; 244 245 else do; 246 call return_info (dname, ename, return_string, code); 247 248 if ^active_function & multiple_paths & code = 0 then do; 249 call ioa_ ("^[^/^]^3x^a^/^a", printed_path, pathname_ (dname, ename), return_string); 250 printed_path = TRUE; 251 end; 252 else if active_function & code ^= 0 then 253 return; 254 else if active_function then 255 return_arg = return_arg || return_string || " "; 256 else if code = error_table_$unsupported_operation then 257 call complain (code, ME); 258 end; 259 end; 260 end; /* pathname processing loop */ 261 262 if active_function then 263 return_arg = rtrim (return_arg); 264 else if ^star_path & ^multiple_paths & code = 0 then 265 call ioa_ ("^a", return_string); 266 return; 267 268 CONVERSION: 269 call complain (error_table_$bad_conversion, ME, "^a", arg); 270 return; 271 272 free_star_structures: 273 procedure; 274 if star_names_ptr ^= null () then do; 275 free star_names; /* in system free area */ 276 star_names_ptr = null (); 277 end; 278 if star_entry_ptr ^= null () then do; 279 free star_entries; /* in system free area */ 280 star_entry_ptr = null (); 281 end; 282 end free_star_structures; 283 284 285 286 287 /* get the effective access on a specific branch entry */ 288 return_info: 289 procedure (P_dname, P_ename, P_return_string, P_code); 290 dcl (P_dname, P_ename) char (*) parm; 291 dcl P_return_string char (*) varying parm; 292 dcl P_code fixed bin (35) parm; 293 dcl idx fixed bin; 294 295 P_code = 0; 296 297 si.version = SUFFIX_INFO_VERSION_1; 298 299 call fs_util_$suffix_info (P_dname, P_ename, addr (si), code); 300 301 if code ^= 0 then do; 302 call complain (code, ME, "^a", pathname_ (P_dname, P_ename)); 303 P_code = code; 304 return; 305 end; 306 307 if si.type = FS_OBJECT_TYPE_SEGMENT then 308 type = SEGMENT; 309 else if si.type = FS_OBJECT_TYPE_DIRECTORY then 310 type = DIRECTORY; 311 else if si.type = FS_OBJECT_TYPE_MSF then 312 type = SEGMENT; 313 314 if ^userid_arg then 315 userid = ""; 316 if ^ring_arg then 317 user_ring = -1; 318 319 P_return_string = ""; 320 321 if no_type then do; 322 call hcs_$status_minf (P_dname, P_ename, CHASE, type, bit_count, code); 323 324 if code ^= 0 then do; 325 call complain (code, ME, "^a", pathname_ (dname, ename)); 326 return; 327 end; 328 329 if type = SEGMENT then 330 all_modes = "rew"; 331 else if type = DIRECTORY then 332 all_modes = "sma"; 333 end; 334 else all_modes = si.modes; 335 336 if no_type then 337 call hcs_$get_user_access_modes (P_dname, P_ename, userid, user_ring, mode, ex_mode, code); 338 else call fs_util_$get_user_access_modes (P_dname, P_ename, userid, user_ring, mode, ex_mode, code); 339 if ^si.extended_acl | si.standard_object | no_type then 340 bits_ptr = addr (mode); 341 else bits_ptr = addr (ex_mode); 342 343 do idx = 1 to length (rtrim (all_modes)); 344 if bits (idx) then 345 P_return_string = P_return_string || substr (all_modes, idx, 1); 346 end; 347 348 if length (P_return_string) = 0 then 349 P_return_string = "null"; 350 351 end return_info; 352 1 1 /* BEGIN INCLUDE FILE: suffix_info.incl.pl1 */ 1 2 /* format: style3,indcomtxt,idind30 */ 1 3 /**** Jay Pattin 2/13/83 1 4* M. Pandolf 1984.11.30 to set FS_OBJECT_TYPE_MSF to -multisegment_file 1 5* 1 6* The include file copy_flags.incl.pl1 must be included in any program using this include file. 1 7* 1 8* This structure is returned by the suffix_XXX_$suffix_info subroutines */ 1 9 1 10 declare suffix_info_ptr ptr; 1 11 1 12 declare 1 suffix_info aligned based (suffix_info_ptr), 1 13 2 version char (8), 1 14 2 type char (32) unaligned, 1 15 2 type_name char (32) unaligned, /* Singular name of the object type, e.g. "mailbox" */ 1 16 2 plural_name char (32) unaligned, /* Plural of above, e.g. "mailboxes" */ 1 17 2 flags unaligned, 1 18 3 standard_object bit (1) unaligned, /* ON if not an extended object (no suffix_XXX_) */ 1 19 3 extended_acl bit (1) unaligned, /* ON if uses extended ACLs, off if regular ACLs */ 1 20 3 has_switches bit (1) unaligned, /* ON if supports switches for objects */ 1 21 3 mbz1 bit (33) unaligned, 1 22 2 modes char (36), /* correspondence between bits and chars for extended modes */ 1 23 2 max_mode_len fixed bin, /* maximum number of modes on an object */ 1 24 2 num_ring_brackets fixed bin, /* number of ring brackets on object */ 1 25 2 copy_flags like copy_flags, /* See copy_flags.incl.pl1 */ 1 26 2 info_pathname char (168) unaligned; 1 27 /* pathname of info segment containing more info */ 1 28 1 29 declare SUFFIX_INFO_VERSION_1 char (8) static options (constant) init ("SUFFIX01"); 1 30 1 31 /* This information is returned by the suffix_XXX_$list_switches subroutines */ 1 32 1 33 declare switch_list_ptr ptr, 1 34 alloc_switch_count fixed bin, 1 35 alloc_switch_name_count fixed bin; 1 36 1 37 declare 1 switch_list aligned based (switch_list_ptr), 1 38 2 version char (8), /* SWITCH_LIST_VERSION_1 */ 1 39 2 switch_count fixed bin, /* total number of switches */ 1 40 2 switch_name_count fixed bin, /* total number of names */ 1 41 2 switches (alloc_switch_count refer (switch_list.switch_count)), 1 42 3 name_index fixed bin, /* index of first name for this switch */ 1 43 3 name_count fixed bin, /* number of names for this switch */ 1 44 3 default_value bit (1) aligned, /* default setting for this switch */ 1 45 3 mbz1 bit (36) aligned, /* reserved for future use */ 1 46 2 names (alloc_switch_name_count refer (switch_list.switch_name_count)) char (32); 1 47 1 48 declare SWITCH_LIST_VERSION_1 char (8) static options (constant) init ("SWLIST01"); 1 49 1 50 declare ( 1 51 FS_OBJECT_TYPE_SEGMENT init ("-segment"), 1 52 FS_OBJECT_TYPE_DIRECTORY init ("-directory"), 1 53 FS_OBJECT_TYPE_MSF init ("-multisegment_file"), 1 54 FS_OBJECT_TYPE_DM_FILE init ("-dm_file"), 1 55 FS_OBJECT_TYPE_LINK init ("-link") 1 56 ) char (32) unaligned int static options (constant); 1 57 1 58 /* END INCLUDE FILE: suffix_info.incl.pl1 */ 353 354 2 1 /* BEGIN INCLUDE FILE: copy_flags.incl.pl1 */ 2 2 2 3 /* Flags for attributes that should/may be copied by the copy_ subroutine. This include file is 2 4* required by suffix_info.incl.pl1 and copy_options.incl.pl1 2 5* 2 6* Jay Pattin 6/23/83 */ 2 7 2 8 declare 1 copy_flags aligned based, /* ON means that this attribute may be copied by copy_ */ 2 9 2 names bit (1) unaligned, 2 10 2 acl bit (1) unaligned, 2 11 2 ring_brackets bit (1) unaligned, 2 12 2 max_length bit (1) unaligned, 2 13 2 copy_switch bit (1) unaligned, 2 14 2 safety_switch bit (1) unaligned, 2 15 2 dumper_switches bit (1) unaligned, 2 16 2 entry_bound bit (1) unaligned, /* only for vanilla object segments */ 2 17 2 extend bit (1) unaligned, /* copy_ may append to end of existing object */ 2 18 2 update bit (1) unaligned, /* copy_ may replace contents of existing object */ 2 19 2 mbz bit (26) unaligned; 2 20 2 21 /* END INCLUDE FILE: copy_flags.incl.pl1 */ 355 356 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 357 358 end get_effective_access; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/22/86 1443.7 get_effective_access.pl1 >spec>install>1042>get_effective_access.pl1 353 1 03/05/85 1807.3 suffix_info.incl.pl1 >ldd>include>suffix_info.incl.pl1 355 2 10/14/83 1606.7 copy_flags.incl.pl1 >ldd>include>copy_flags.incl.pl1 357 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.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. CHASE 000074 constant fixed bin(1,0) initial dcl 97 set ref 322* DIRECTORY constant fixed bin(2,0) initial dcl 97 ref 309 331 FALSE constant bit(1) initial unaligned dcl 97 ref 121 133 144 206 FS_OBJECT_TYPE_DIRECTORY 000010 constant char(32) initial unaligned dcl 1-50 ref 309 FS_OBJECT_TYPE_MSF 000000 constant char(32) initial unaligned dcl 1-50 ref 311 FS_OBJECT_TYPE_SEGMENT 000020 constant char(32) initial unaligned dcl 1-50 ref 307 ME 000032 constant char(20) initial unaligned dcl 97 set ref 151* 159* 166* 174* 186* 203* 209* 222* 237* 256* 268* 302* 325* P_code parameter fixed bin(35,0) dcl 292 set ref 288 295* 303* P_dname parameter char unaligned dcl 290 set ref 288 299* 302* 302* 322* 336* 338* P_ename parameter char unaligned dcl 290 set ref 288 299* 302* 302* 322* 336* 338* P_return_string parameter varying char dcl 291 set ref 288 319* 344* 344 348 348* SEGMENT constant fixed bin(2,0) initial dcl 97 ref 307 311 329 SUFFIX_INFO_VERSION_1 000030 constant char(8) initial unaligned dcl 1-29 ref 297 TRUE constant bit(1) initial unaligned dcl 97 ref 127 141 148 171 179 181 212 232 250 active_fnc_err_ 000010 constant entry external dcl 70 ref 129 active_function 000361 automatic bit(1) dcl 34 set ref 127* 133* 186* 186* 229 237 248 252 254 262 addr builtin function dcl 116 ref 299 299 339 341 all_modes 000100 automatic char(36) unaligned dcl 34 set ref 329* 331* 334* 343 344 arg based char unaligned dcl 65 set ref 140 141 141 144 144 147 156 163 170* 174* 194 194 196 196 198 198 201* 203* 209* 268* argl 000111 automatic fixed bin(21,0) dcl 34 set ref 139* 140 141 141 144 144 147 154* 156 163 169* 170 170 174 174 193* 194 194 196 196 198 198 201 201 203 203 209 209 268 268 argn 000112 automatic fixed bin(17,0) dcl 34 set ref 124* 138 150 165 192 argp 000114 automatic pointer dcl 34 set ref 139* 140 141 141 144 144 147 154* 156 163 169* 170 174 193* 194 194 196 196 198 198 201 203 209 268 bit_count 000116 automatic fixed bin(24,0) dcl 34 set ref 322* bits based bit(1) array unaligned dcl 65 ref 344 bits_ptr 000120 automatic pointer dcl 34 set ref 339* 341* 344 check_star_name_$entry 000014 constant entry external dcl 70 ref 207 cleanup 000402 stack reference condition dcl 118 ref 217 242 code 000122 automatic fixed bin(35,0) dcl 34 set ref 124* 126 139* 154* 169* 201* 202 203* 207* 208 209* 212 218* 221 222* 223 228* 229 234 237 237* 246* 248 252 256 256* 264 299* 301 302* 303 322* 324 325* 336* 338* com_err_ 000012 constant entry external dcl 70 ref 135 complain 000372 automatic entry variable dcl 92 set ref 129* 135* 151 159 166 174 186 203 209 222 237 256 268 302 325 conversion 000410 stack reference condition dcl 118 ref 155 157 convert builtin function dcl 116 ref 156 copy_flags based structure level 1 dcl 2-8 cu_$af_arg_ptr 000020 constant entry external dcl 70 ref 128 cu_$af_return_arg 000022 constant entry external dcl 70 ref 124 cu_$arg_ptr 000016 constant entry external dcl 70 ref 134 cv_userid_ 000024 constant entry external dcl 70 ref 170 dname 000123 automatic char(168) unaligned dcl 34 set ref 201* 218* 222* 222* 228* 230* 230* 237* 237* 246* 249* 249* 325* 325* ename 000175 automatic char(32) unaligned dcl 34 set ref 201* 207* 218* 222* 222* 246* 249* 249* 325* 325* error_table_$bad_conversion 000052 external static fixed bin(35,0) dcl 106 set ref 268* error_table_$badopt 000050 external static fixed bin(35,0) dcl 106 set ref 174* error_table_$badstar 000054 external static fixed bin(35,0) dcl 106 ref 208 error_table_$noarg 000056 external static fixed bin(35,0) dcl 106 set ref 151* 166* error_table_$nomatch 000060 external static fixed bin(35,0) dcl 106 ref 223 error_table_$unsupported_operation 000062 external static fixed bin(35,0) dcl 106 ref 237 256 ex_mode 000210 automatic bit(36) dcl 34 set ref 336* 338* 341 expand_pathname_ 000026 constant entry external dcl 70 ref 201 extended_acl 32(01) 000226 automatic bit(1) level 3 packed unaligned dcl 34 set ref 339 flags 32 000226 automatic structure level 2 packed unaligned dcl 34 fs_util_$get_user_access_modes 000030 constant entry external dcl 70 ref 338 fs_util_$suffix_info 000032 constant entry external dcl 70 ref 299 get_arg_ptr 000376 automatic entry variable dcl 92 set ref 128* 134* 139 154 169 193 get_system_free_area_ 000034 constant entry external dcl 70 ref 218 218 hcs_$get_user_access_modes 000036 constant entry external dcl 70 ref 336 hcs_$star_ 000040 constant entry external dcl 70 ref 218 hcs_$status_minf 000042 constant entry external dcl 70 ref 322 idx 000205 automatic fixed bin(17,0) dcl 34 in procedure "gea" set ref 138* 139* 149* 149 150 154* 164* 164 165 169* 192* 193* 198* 198* idx 000446 automatic fixed bin(17,0) dcl 293 in procedure "return_info" set ref 343* 344 344* ioa_ 000044 constant entry external dcl 70 ref 230 249 264 jdx 000206 automatic fixed bin(17,0) dcl 34 set ref 227* 228 230 230 237 237* length builtin function dcl 116 ref 343 348 mode 000207 automatic bit(36) dcl 34 set ref 336* 338* 339 modes 33 000226 automatic char(36) level 2 dcl 34 set ref 334 multiple_paths 000364 automatic bit(1) dcl 34 set ref 121* 179* 248 264 nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 3-27 ref 228 230 230 237 237 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 3-27 ref 275 no_type 000367 automatic bit(1) dcl 34 set ref 121* 141* 144* 321 336 339 null builtin function dcl 116 ref 216 274 276 278 280 path_arg 000363 automatic bit(1) dcl 34 set ref 121* 179 181* 185 pathname_ 000046 constant entry external dcl 70 ref 222 222 230 230 237 237 249 249 302 302 325 325 printed_path 000370 automatic bit(1) dcl 34 set ref 121* 230* 232* 249* 250* return_arg based varying char dcl 65 set ref 234* 234 254* 254 262* 262 return_len 000211 automatic fixed bin(21,0) dcl 34 set ref 124* 234 254 262 return_ptr 000212 automatic pointer dcl 34 set ref 124* 234 234 254 254 262 262 return_string 000214 automatic varying char(36) dcl 34 set ref 190* 228* 230* 234 246* 249* 254 264* ring_arg 000366 automatic bit(1) dcl 34 set ref 121* 148* 316 rtrim builtin function dcl 116 ref 262 343 si 000226 automatic structure level 1 dcl 34 set ref 299 299 size 000416 stack reference condition dcl 118 ref 155 157 standard_object 32 000226 automatic bit(1) level 3 packed unaligned dcl 34 set ref 339 star_ALL_ENTRIES 000046 constant fixed bin(2,0) initial dcl 3-111 set ref 218* star_entries based structure array level 1 dcl 3-27 ref 279 star_entry_count 000424 automatic fixed bin(17,0) dcl 3-14 set ref 218* 227 275 279 star_entry_ptr 000426 automatic pointer dcl 3-15 set ref 216* 218* 228 230 230 237 237 275 278 279 280* star_names based char(32) array unaligned dcl 3-37 set ref 228* 230* 230* 237* 237* 275 star_names_ptr 000430 automatic pointer dcl 3-19 set ref 216* 218* 228 230 230 237 237 274 275 276* star_path 000365 automatic bit(1) dcl 34 set ref 206* 212* 215 264 substr builtin function dcl 116 ref 140 344 suffix_info based structure level 1 dcl 1-12 sum builtin function dcl 116 ref 275 type 2 000226 automatic char(32) level 2 in structure "si" packed unaligned dcl 34 in procedure "gea" set ref 307 309 311 type 000347 automatic fixed bin(2,0) dcl 34 in procedure "gea" set ref 307* 309* 311* 322* 329 331 user_ring 000360 automatic fixed bin(17,0) dcl 34 set ref 156* 156 158 158 316* 336* 338* userid 000350 automatic char(32) unaligned dcl 34 set ref 170* 314* 336* 338* userid_arg 000362 automatic bit(1) dcl 34 set ref 121* 171* 314 version 000226 automatic char(8) level 2 dcl 34 set ref 297* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FS_OBJECT_TYPE_DM_FILE internal static char(32) initial unaligned dcl 1-50 FS_OBJECT_TYPE_LINK internal static char(32) initial unaligned dcl 1-50 SWITCH_LIST_VERSION_1 internal static char(8) initial unaligned dcl 1-48 alloc_switch_count automatic fixed bin(17,0) dcl 1-33 alloc_switch_name_count automatic fixed bin(17,0) dcl 1-33 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 3-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 3-121 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 suffix_info_ptr automatic pointer dcl 1-10 switch_list based structure level 1 dcl 1-37 switch_list_ptr automatic pointer dcl 1-33 NAMES DECLARED BY EXPLICIT CONTEXT. CONVERSION 002024 constant label dcl 268 ref 155 free_star_structures 002060 constant entry internal dcl 272 ref 217 241 gea 000173 constant entry external dcl 30 get_effective_access 000202 constant entry external dcl 30 return_info 002136 constant entry internal dcl 288 ref 228 246 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3224 3310 2716 3234 Length 3600 2716 64 253 305 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gea 604 external procedure is an external procedure. on unit on line 155 64 on unit on unit on line 217 64 on unit free_star_structures 64 internal procedure is called by several nonquick procedures. return_info internal procedure shares stack frame of external procedure gea. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gea 000100 all_modes gea 000111 argl gea 000112 argn gea 000114 argp gea 000116 bit_count gea 000120 bits_ptr gea 000122 code gea 000123 dname gea 000175 ename gea 000205 idx gea 000206 jdx gea 000207 mode gea 000210 ex_mode gea 000211 return_len gea 000212 return_ptr gea 000214 return_string gea 000226 si gea 000347 type gea 000350 userid gea 000360 user_ring gea 000361 active_function gea 000362 userid_arg gea 000363 path_arg gea 000364 multiple_paths gea 000365 star_path gea 000366 ring_arg gea 000367 no_type gea 000370 printed_path gea 000372 complain gea 000376 get_arg_ptr gea 000424 star_entry_count gea 000426 star_entry_ptr gea 000430 star_names_ptr gea 000446 idx return_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_var_desc call_var call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext mpfx2 enable shorten_stack ext_entry int_entry any_to_any_tr free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_$entry com_err_ cu_$af_arg_ptr cu_$af_return_arg cu_$arg_ptr cv_userid_ expand_pathname_ fs_util_$get_user_access_modes fs_util_$suffix_info get_system_free_area_ hcs_$get_user_access_modes hcs_$star_ hcs_$status_minf ioa_ pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$badstar error_table_$noarg error_table_$nomatch error_table_$unsupported_operation LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 30 000172 121 000207 124 000216 126 000232 127 000234 128 000236 129 000243 130 000246 133 000247 134 000250 135 000255 138 000260 139 000267 140 000303 141 000310 144 000324 147 000336 148 000342 149 000344 150 000345 151 000350 152 000373 154 000374 155 000410 156 000434 157 000444 158 000446 159 000453 160 000477 162 000500 163 000501 164 000505 165 000506 166 000511 167 000536 169 000537 170 000553 171 000573 172 000575 174 000576 175 000630 177 000631 179 000632 181 000636 183 000640 185 000642 186 000644 187 000676 190 000677 192 000700 193 000707 194 000724 196 000737 198 000750 201 000762 202 001012 203 001014 204 001045 206 001046 207 001047 208 001064 209 001070 210 001121 212 001122 215 001126 216 001130 217 001133 218 001155 221 001227 222 001231 223 001277 227 001303 228 001313 229 001347 230 001356 232 001437 233 001441 234 001442 237 001502 240 001565 241 001567 242 001573 243 001574 246 001575 248 001600 249 001607 250 001660 251 001662 252 001663 254 001670 256 001730 260 001751 262 001753 264 001776 266 002023 268 002024 270 002056 272 002057 274 002065 275 002072 276 002121 278 002124 279 002130 280 002132 282 002135 288 002136 295 002161 297 002163 299 002165 301 002215 302 002217 303 002270 304 002273 307 002274 309 002303 311 002312 314 002320 316 002325 319 002331 321 002334 322 002336 324 002374 325 002376 326 002444 329 002445 331 002454 333 002461 334 002462 336 002465 338 002532 339 002574 341 002607 343 002611 344 002631 346 002650 348 002652 351 002666 ----------------------------------------------------------- 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