COMPILATION LISTING OF SEGMENT set_ring_brackets Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/08/85 1020.0 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 set_ring_brackets: 8 srb: 9 procedure () options (variable); 10 11 /* sytle: version3 */ 12 13 /* 14* ring bracket setting program. 15* 16* Command/Interface Function 17* ----------------- -------- 18* set_ring_brackets sets ring brackets via fs_util_ 19* l_set_ring_brackets sets ring brackets via installation_tools_ 20* hp_set_ring_brackets sets ring brackets via hphcs_ 21* set_dir_ring_brackets allow only dirs 22* l_set_dir_ring_brackets allow only dirs 23* hp_set_dir_ring_brackets allow only dirs 24* 25* Usage: 26* 27* srb path r1 r2 r3 28* 29* Where: 30* path is a starname indicating segment(s) to have brackets set. 31* rN is a ring number from 0 to 7 32* if not provided, 33* r3 = r2 (dir operation excludes r3) 34* r2 = r1 35* r1 = current validation level. 36* 37* Originally coded by R. J. Feiertag on March 23, 1972 38* Completely recoded by M. Pandolf on January 10, 1984 39* 40**/ 41 42 43 44 /* DECLARATIONS */ 45 46 /* Automatic */ 47 48 dcl argl fixed bin (21); /* length of command line arg */ 49 dcl argno fixed bin; /* index into command line args */ 50 dcl argp pointer; /* pointer to command line arg */ 51 dcl bc fixed bin (24); /* entry's bit count */ 52 dcl code fixed bin (35); /* standard status code */ 53 dcl dirname char (168); /* path name of parent */ 54 dcl ename_count fixed bin; /* number of names in structure */ 55 dcl ename_ix fixed bin; /* index into ename structure */ 56 dcl enamep pointer; /* pointer to structure of entrynames */ 57 dcl entryname char (32); /* star name of target to be set */ 58 dcl i fixed bin; /* index... */ 59 dcl nargs fixed bin; /* number of command line args */ 60 dcl ring dim (3) fixed bin (3); /* the ring bracket values */ 61 dcl ss_type fixed bin (2); /* storage system entry type */ 62 dcl system_areap pointer; /* pointer to system free area */ 63 64 /* Based */ 65 66 dcl arg char (argl) based (argp); /* command line argument */ 67 dcl dir_ring dim (2) fixed bin (3) based (addr (ring)); /* for correct dir RB parameter */ 68 dcl 1 ename aligned based (enamep), /* entryname structure */ 69 2 count fixed bin, 70 2 string dim (ename_count refer (ename.count)) char (32) unaligned; 71 dcl system_area area based (system_areap); /* is system_free_area_ */ 72 73 /* Static, External */ 74 75 dcl error_table_$bad_conversion fixed bin (35) ext static; 76 dcl error_table_$invalid_ring_brackets fixed bin (35) ext static; 77 dcl error_table_$lower_ring fixed bin (35) ext static; 78 dcl error_table_$nomatch fixed bin (35) ext static; 79 dcl error_table_$not_privileged fixed bin (35) ext static; 80 dcl error_table_$notadir fixed bin (35) ext static; 81 dcl error_table_$too_many_args fixed bin (35) ext static; 82 83 /* Entry */ 84 85 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 86 dcl com_err_ entry () options (variable); 87 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin (35)); 88 dcl cu_$arg_list_ptr entry () returns (ptr); 89 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 90 dcl cu_$generate_call entry (entry, ptr); 91 dcl cu_$level_get entry () returns (fixed bin); 92 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 93 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 94 dcl fs_util_$set_ring_brackets entry (char (*), char (*), (*) fixed bin (3), fixed bin (35)); 95 dcl get_ring_ entry () returns (fixed bin (3)); 96 dcl get_system_free_area_ entry () returns (ptr); 97 dcl hcs_$set_dir_ring_brackets entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 98 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 99 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 100 dcl hphcs_$set_dir_ring_brackets entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 101 dcl hphcs_$set_ring_brackets entry (char (*), char (*), (*) fixed bin (3), fixed bin (35)); 102 dcl installation_tools_$set_dir_ring_brackets entry (char (*), char (*), (2) fixed bin (3), fixed bin (35)); 103 dcl installation_tools_$set_ring_brackets entry (char (*), char (*), (*) fixed bin (3), fixed bin (35)); 104 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 105 106 /* Constant */ 107 108 dcl CHASE fixed bin (1) internal static options (constant) init (1); 109 110 dcl IDENT dim (6) char (32) internal static options (constant) 111 init ("set_ring_brackets", "l_set_ring_brackets", "hp_set_ring_brackets", 112 "set_dir_ring_brackets", "l_set_dir_ring_brackets", "hp_set_dir_ring_brackets"); 113 114 dcl (RB init (1), 115 L_RB init (2), 116 HP_RB init (3), 117 D_RB init (4), 118 L_D_RB init (5), 119 HP_D_RB init (6)) internal static options (constant); 120 121 /* Builtin */ 122 123 dcl addr builtin; 124 dcl max builtin; 125 dcl mod builtin; 126 dcl null builtin; 127 dcl sum builtin; 128 129 /* Condition */ 130 131 dcl cleanup condition; 132 dcl linkage_error condition; 133 134 135 136 /* BEGIN MAIN CODE */ 137 138 /* 139*set_ring_brackets: 140*sdrb: 141* entry () options (variable); 142**/ 143 144 call SET (RB, fs_util_$set_ring_brackets, cu_$arg_list_ptr ()); 145 return; 146 147 l_set_ring_brackets: 148 lset_ring_brackets: 149 lsrb: 150 entry () options (variable); 151 152 call SET (L_RB, installation_tools_$set_ring_brackets, cu_$arg_list_ptr ()); 153 return; 154 155 hp_set_ring_brackets: 156 hpset_ring_brackets: 157 hpsrb: 158 entry () options (variable); 159 160 call SET (HP_RB, hphcs_$set_ring_brackets, cu_$arg_list_ptr ()); 161 return; 162 163 set_dir_ring_brackets: 164 sdrb: 165 entry () options (variable); 166 167 call SET (D_RB, hcs_$set_dir_ring_brackets, cu_$arg_list_ptr ()); 168 return; 169 170 l_set_dir_ring_brackets: 171 lset_dir_ring_brackets: 172 lsdrb: 173 entry () options (variable); 174 175 call SET (L_D_RB, installation_tools_$set_dir_ring_brackets, cu_$arg_list_ptr ()); 176 return; 177 178 hp_set_dir_ring_brackets: 179 hpset_dir_ring_brackets: 180 hpsdrb: 181 entry () options (variable); 182 183 call SET (HP_D_RB, hphcs_$set_dir_ring_brackets, cu_$arg_list_ptr ()); 184 return; 185 186 error_return: 187 call RELEASE_STORAGE (); 188 return; 189 190 191 192 /* INTERNAL PROCEDURES */ 193 194 SET: 195 procedure (operation, operator, command_line_argp); 196 197 dcl operation fixed bin parameter; 198 dcl operator entry options (variable) parameter; 199 dcl command_line_argp pointer parameter; 200 201 /* initialize important values */ 202 203 system_areap = get_system_free_area_ (); 204 star_names_ptr, 205 star_entry_ptr, 206 enamep = null (); 207 208 on cleanup 209 call RELEASE_STORAGE (); 210 211 /* get arg information */ 212 213 call cu_$arg_count_rel (nargs, command_line_argp, code); 214 if code ^= 0 215 then call ABORT (code, IDENT (operation), 216 "^/Usage is: ^a path {r1 {r2^[ {r3^;^]}}", IDENT (operation), (operation < 4)); 217 218 /* get starname of entries to set */ 219 220 call cu_$arg_ptr_rel (1, argp, argl, code, command_line_argp); 221 if code ^= 0 222 then call ABORT (code, IDENT (operation), 223 "^/Usage is: ^a path {r1 {r2^[ {r3^;^]}}", IDENT (operation), (operation < 4)); 224 225 call expand_pathname_ (arg, dirname, entryname, code); 226 if code ^= 0 227 then call ABORT (code, IDENT (operation), """^a""", arg); 228 229 /* get the ring brackets from the command line */ 230 231 if ((nargs > 3) & (operation > 3)) | ((nargs > 4) & (operation < 4)) 232 then call ABORT (error_table_$too_many_args, IDENT (operation)); 233 234 do argno = 2 to nargs; 235 236 call cu_$arg_ptr_rel (argno, argp, argl, code, command_line_argp); 237 if code = 0 238 then do; 239 ring (argno - 1) = cv_dec_check_ (arg, code); 240 if code ^= 0 241 then call ABORT (error_table_$bad_conversion, IDENT (operation), 242 """^a"" isn't numeric.", arg); 243 end; 244 end; 245 246 if (nargs > 3) & (operation > 3) 247 then call ABORT (error_table_$too_many_args, IDENT (operation)); 248 249 /* validate the ring brackets */ 250 251 if nargs = 1 252 then ring (1), ring (2), ring (3) = cu_$level_get (); /* if no ring brackets, assume validation level */ 253 if nargs = 2 254 then ring (2), ring (3) = ring (1); 255 if nargs = 3 256 then ring (3) = ring (2); 257 258 if ^((operation = 1) | (operation = 4)) 259 then on linkage_error 260 call ABORT (error_table_$not_privileged, IDENT (operation), 261 "Access to ^[hphcs_^;^;installation_tools_^;^].", mod (operation, 3) + 1); 262 else do; 263 if ring (1) < max (cu_$level_get (), get_ring_ ()) 264 then call ABORT (error_table_$lower_ring, IDENT (operation), 265 "^d ^d ^[^d^;^s^]", ring (1), ring (2), (operation < 4), ring (3)); 266 267 if (ring (1) > ring (2)) | (ring (2) > ring (3)) 268 then call ABORT (error_table_$invalid_ring_brackets, IDENT (operation), 269 "^d ^d ^[^d^;^s^]", ring (1), ring (2), (operation < 4), ring (3)); 270 end; 271 272 /* set the ring brackets */ 273 274 call MAKE_NAME_LIST (dirname, entryname, enamep); 275 276 if enamep -> ename.count = 0 277 then call ABORT (error_table_$nomatch, IDENT (operation), 278 "^a.", pathname_ (dirname, entryname)); 279 280 do i = 1 to enamep -> ename.count; 281 282 if operation > 3 283 then call operator (dirname, enamep -> ename.string (i), dir_ring, code); 284 else call operator (dirname, enamep -> ename.string (i), ring, code); 285 286 if code ^= 0 287 then call com_err_ (code, IDENT (operation), 288 "^a.", pathname_ (dirname, enamep -> ename.string (i))); 289 290 end; 291 292 call RELEASE_STORAGE (); 293 294 return; 295 296 MAKE_NAME_LIST: 297 procedure (parent, starname, eptr); 298 299 dcl parent char (168) parameter; 300 dcl starname char (32) parameter; 301 dcl eptr pointer parameter; 302 303 /* see if we have a starname or not */ 304 305 call check_star_name_$entry (starname, code); 306 if code > 2 /* malformed star name */ 307 then do; 308 call com_err_ (code, IDENT (operation), 309 "^a.", starname); 310 goto error_return; 311 end; 312 313 if code = 0 /* no special characters in starname */ 314 then do; 315 call hcs_$status_minf (parent, starname, CHASE, ss_type, bc, code); 316 if code ^= 0 317 then call ABORT (code, IDENT (operation), "^a.", pathname_ (parent, starname)); 318 319 if (operation > 3) & (ss_type ^= star_DIRECTORY) 320 then call ABORT (error_table_$notadir, IDENT (operation), "^a.", pathname_ (parent, starname)); 321 322 ename_count = 1; 323 allocate ename set (eptr) in (system_area); 324 eptr -> ename.string (1) = starname; 325 end; 326 else do; /* potentially matches multiple names */ 327 call hcs_$star_ (parent, starname, star_BRANCHES_ONLY, system_areap, 328 star_entry_count, star_entry_ptr, star_names_ptr, code); 329 if code ^= 0 330 then do; 331 call com_err_ (code, IDENT (operation), 332 "^a.", pathname_ (parent, starname)); 333 goto error_return; 334 end; 335 336 ename_count = star_entry_count; 337 allocate ename set (eptr) in (system_area); 338 ename_ix = 1; 339 do i = 1 to star_entry_count; 340 if operation > 3 /* DIR wanted */ 341 then if star_entries (i).type = star_DIRECTORY 342 then eptr -> ename.string (ename_ix) = star_names (star_entries (i).nindex); 343 else ename_ix = ename_ix - 1; 344 else eptr -> ename.string (ename_ix) = star_names (star_entries (i).nindex); 345 ename_ix = ename_ix + 1; 346 end; 347 348 eptr -> ename.count = ename_ix - 1; 349 350 free star_names_ptr -> star_names in (system_area); 351 free star_entry_ptr -> star_entries in (system_area); 352 353 end; 354 355 return; 356 357 end MAKE_NAME_LIST; 358 359 ABORT: 360 procedure () options (variable); 361 362 call cu_$generate_call (com_err_, cu_$arg_list_ptr ()); 363 goto error_return; 364 365 end ABORT; 366 367 end SET; 368 369 RELEASE_STORAGE: 370 procedure (); 371 372 system_areap = get_system_free_area_ (); 373 374 if enamep ^= null () 375 then free enamep -> ename in (system_area); 376 377 if star_names_ptr ^= null () 378 then free star_names_ptr -> star_names in (system_area); 379 380 if star_entry_ptr ^= null () 381 then free star_entry_ptr -> star_entries in (system_area); 382 383 return; 384 385 end RELEASE_STORAGE; 386 387 388 389 /* INCLUDE FILES */ 390 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 */ 391 392 393 end set_ring_brackets; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/08/85 0951.5 set_ring_brackets.pl1 >spec>on>maggie_fixes>set_ring_brackets.pl1 391 1 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 000113 constant fixed bin(1,0) initial dcl 108 set ref 315* D_RB 000105 constant fixed bin(17,0) initial dcl 114 set ref 167* HP_D_RB 000000 constant fixed bin(17,0) initial dcl 114 set ref 183* HP_RB 000102 constant fixed bin(17,0) initial dcl 114 set ref 160* IDENT 000002 constant char(32) initial array unaligned dcl 110 set ref 214* 214* 221* 221* 226* 231* 240* 246* 258* 263* 267* 276* 286* 308* 316* 319* 331* L_D_RB 000001 constant fixed bin(17,0) initial dcl 114 set ref 175* L_RB 000103 constant fixed bin(17,0) initial dcl 114 set ref 152* RB 000113 constant fixed bin(17,0) initial dcl 114 set ref 144* addr builtin function dcl 123 ref 282 arg based char unaligned dcl 66 set ref 225* 226* 239* 240* argl 000100 automatic fixed bin(21,0) dcl 48 set ref 220* 225 225 226 226 236* 239 239 240 240 argno 000101 automatic fixed bin(17,0) dcl 49 set ref 234* 236* 239* argp 000102 automatic pointer dcl 50 set ref 220* 225 226 236* 239 240 bc 000104 automatic fixed bin(24,0) dcl 51 set ref 315* check_star_name_$entry 000026 constant entry external dcl 85 ref 305 cleanup 000000 stack reference condition dcl 131 ref 208 code 000105 automatic fixed bin(35,0) dcl 52 set ref 213* 214 214* 220* 221 221* 225* 226 226* 236* 237 239* 240 282* 284* 286 286* 305* 306 308* 313 315* 316 316* 327* 329 331* com_err_ 000030 constant entry external dcl 86 ref 286 308 331 362 362 command_line_argp parameter pointer dcl 199 set ref 194 213* 220* 236* count based fixed bin(17,0) level 2 dcl 68 set ref 276 280 323* 337* 348* 374 cu_$arg_count_rel 000032 constant entry external dcl 87 ref 213 cu_$arg_list_ptr 000034 constant entry external dcl 88 ref 144 144 152 152 160 160 167 167 175 175 183 183 362 362 cu_$arg_ptr_rel 000036 constant entry external dcl 89 ref 220 236 cu_$generate_call 000040 constant entry external dcl 90 ref 362 cu_$level_get 000042 constant entry external dcl 91 ref 251 263 cv_dec_check_ 000044 constant entry external dcl 92 ref 239 dir_ring based fixed bin(3,0) array dcl 67 set ref 282* dirname 000106 automatic char(168) unaligned dcl 53 set ref 225* 274* 276* 276* 282* 284* 286* 286* ename based structure level 1 dcl 68 set ref 323 337 374 ename_count 000160 automatic fixed bin(17,0) dcl 54 set ref 322* 323 323 336* 337 337 ename_ix 000161 automatic fixed bin(17,0) dcl 55 set ref 338* 340 343* 343 344 345* 345 348 enamep 000162 automatic pointer dcl 56 set ref 204* 274* 276 280 282 284 286 286 374 374 entryname 000164 automatic char(32) unaligned dcl 57 set ref 225* 274* 276* 276* eptr parameter pointer dcl 301 set ref 296 323* 324 337* 340 344 348 error_table_$bad_conversion 000010 external static fixed bin(35,0) dcl 75 set ref 240* error_table_$invalid_ring_brackets 000012 external static fixed bin(35,0) dcl 76 set ref 267* error_table_$lower_ring 000014 external static fixed bin(35,0) dcl 77 set ref 263* error_table_$nomatch 000016 external static fixed bin(35,0) dcl 78 set ref 276* error_table_$not_privileged 000020 external static fixed bin(35,0) dcl 79 set ref 258* error_table_$notadir 000022 external static fixed bin(35,0) dcl 80 set ref 319* error_table_$too_many_args 000024 external static fixed bin(35,0) dcl 81 set ref 231* 246* expand_pathname_ 000046 constant entry external dcl 93 ref 225 fs_util_$set_ring_brackets 000050 constant entry external dcl 94 ref 144 144 get_ring_ 000052 constant entry external dcl 95 ref 263 get_system_free_area_ 000054 constant entry external dcl 96 ref 203 372 hcs_$set_dir_ring_brackets 000056 constant entry external dcl 97 ref 167 167 hcs_$star_ 000060 constant entry external dcl 98 ref 327 hcs_$status_minf 000062 constant entry external dcl 99 ref 315 hphcs_$set_dir_ring_brackets 000064 constant entry external dcl 100 ref 183 183 hphcs_$set_ring_brackets 000066 constant entry external dcl 101 ref 160 160 i 000174 automatic fixed bin(17,0) dcl 58 set ref 280* 282 284 286 286* 339* 340 340 344* installation_tools_$set_dir_ring_brackets 000070 constant entry external dcl 102 ref 175 175 installation_tools_$set_ring_brackets 000072 constant entry external dcl 103 ref 152 152 linkage_error 000000 stack reference condition dcl 132 ref 258 max builtin function dcl 124 ref 263 mod builtin function dcl 125 ref 258 nargs 000175 automatic fixed bin(17,0) dcl 59 set ref 213* 231 231 234 246 251 253 255 nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 1-27 ref 340 344 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 1-27 ref 350 377 null builtin function dcl 126 ref 204 374 377 380 operation parameter fixed bin(17,0) dcl 197 ref 194 214 214 214 221 221 221 226 231 231 231 240 246 246 258 258 258 258 263 263 267 267 276 282 286 308 316 319 319 331 340 operator parameter entry variable dcl 198 ref 194 282 284 parent parameter char(168) unaligned dcl 299 set ref 296 315* 316* 316* 319* 319* 327* 331* 331* pathname_ 000074 constant entry external dcl 104 ref 276 276 286 286 316 316 319 319 331 331 ring 000176 automatic fixed bin(3,0) array dcl 60 set ref 239* 251* 251* 251* 253 253* 253* 255* 255 263 263* 263* 263* 267 267 267 267 267* 267* 267* 282 284* ss_type 000201 automatic fixed bin(2,0) dcl 61 set ref 315* 319 star_BRANCHES_ONLY 000103 constant fixed bin(2,0) initial dcl 1-110 set ref 327* star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 1-121 ref 319 340 star_entries based structure array level 1 dcl 1-27 ref 351 380 star_entry_count 000204 automatic fixed bin(17,0) dcl 1-14 set ref 327* 336 339 350 351 377 380 star_entry_ptr 000206 automatic pointer dcl 1-15 set ref 204* 327* 340 340 344 350 351 377 380 380 star_names based char(32) array unaligned dcl 1-37 ref 340 344 350 377 star_names_ptr 000210 automatic pointer dcl 1-19 set ref 204* 327* 340 344 350 377 377 starname parameter char(32) unaligned dcl 300 set ref 296 305* 308* 315* 316* 316* 319* 319* 324 327* 331* 331* string 1 based char(32) array level 2 packed unaligned dcl 68 set ref 282* 284* 286* 286* 324* 340* 344* sum builtin function dcl 127 ref 350 377 system_area based area(1024) dcl 71 ref 323 337 350 351 374 377 380 system_areap 000202 automatic pointer dcl 62 set ref 203* 323 327* 337 350 351 372* 374 377 380 type based fixed bin(2,0) array level 2 packed unsigned unaligned dcl 1-27 ref 340 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. 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_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 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 unaligned dcl 1-92 star_list_names_ptr automatic pointer dcl 1-20 star_select_sw automatic fixed bin(3,0) dcl 1-21 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT 002720 constant entry internal dcl 359 ref 214 221 226 231 240 246 258 263 267 276 316 319 MAKE_NAME_LIST 002077 constant entry internal dcl 296 ref 274 RELEASE_STORAGE 002754 constant entry internal dcl 369 ref 186 208 292 SET 000560 constant entry internal dcl 194 ref 144 152 160 167 175 183 error_return 000552 constant label dcl 186 ref 310 333 363 hp_set_dir_ring_brackets 000517 constant entry external dcl 178 hp_set_ring_brackets 000330 constant entry external dcl 155 hpsdrb 000501 constant entry external dcl 178 hpset_dir_ring_brackets 000510 constant entry external dcl 178 hpset_ring_brackets 000321 constant entry external dcl 155 hpsrb 000312 constant entry external dcl 155 l_set_dir_ring_brackets 000445 constant entry external dcl 170 l_set_ring_brackets 000256 constant entry external dcl 147 lsdrb 000427 constant entry external dcl 170 lset_dir_ring_brackets 000436 constant entry external dcl 170 lset_ring_brackets 000247 constant entry external dcl 147 lsrb 000240 constant entry external dcl 147 sdrb 000364 constant entry external dcl 163 set_dir_ring_brackets 000373 constant entry external dcl 163 set_ring_brackets 000205 constant entry external dcl 7 srb 000176 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3572 3670 3052 3602 Length 4200 3052 76 273 520 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME srb 164 external procedure is an external procedure. SET 308 internal procedure enables or reverts conditions. on unit on line 208 64 on unit on unit on line 258 98 on unit MAKE_NAME_LIST internal procedure shares stack frame of internal procedure SET. ABORT 80 internal procedure is declared options(variable). RELEASE_STORAGE 68 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME srb 000100 argl srb 000101 argno srb 000102 argp srb 000104 bc srb 000105 code srb 000106 dirname srb 000160 ename_count srb 000161 ename_ix srb 000162 enamep srb 000164 entryname srb 000174 i srb 000175 nargs srb 000176 ring srb 000201 ss_type srb 000202 system_areap srb 000204 star_entry_count srb 000206 star_entry_ptr srb 000210 star_names_ptr srb THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a call_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext mpfx2 mod_fx1 enable ext_entry int_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ cu_$arg_count_rel cu_$arg_list_ptr cu_$arg_ptr_rel cu_$generate_call cu_$level_get cv_dec_check_ expand_pathname_ fs_util_$set_ring_brackets get_ring_ get_system_free_area_ hcs_$set_dir_ring_brackets hcs_$star_ hcs_$status_minf hphcs_$set_dir_ring_brackets hphcs_$set_ring_brackets installation_tools_$set_dir_ring_brackets installation_tools_$set_ring_brackets pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$invalid_ring_brackets error_table_$lower_ring error_table_$nomatch error_table_$not_privileged error_table_$notadir error_table_$too_many_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000175 144 000212 145 000236 147 000237 152 000263 153 000310 155 000311 160 000335 161 000362 163 000363 167 000400 168 000425 170 000426 175 000452 176 000477 178 000500 183 000524 184 000551 186 000552 188 000556 194 000557 203 000565 204 000574 208 000601 213 000623 214 000640 220 000706 221 000731 225 000776 226 001027 231 001066 234 001123 236 001134 237 001154 239 001157 240 001206 244 001252 246 001255 251 001302 253 001322 255 001330 258 001335 263 001423 267 001524 274 001606 276 001621 280 001700 282 001712 284 001750 286 002001 290 002066 292 002071 294 002076 296 002077 305 002101 306 002117 308 002123 310 002156 313 002161 315 002163 316 002221 319 002301 322 002365 323 002370 324 002404 325 002410 327 002411 329 002455 331 002460 333 002536 336 002541 337 002543 338 002557 339 002561 340 002572 343 002625 344 002630 345 002652 346 002654 348 002656 350 002663 351 002713 355 002716 359 002717 362 002725 363 002750 369 002753 372 002761 374 002770 377 003002 380 003037 383 003046 ----------------------------------------------------------- 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