COMPILATION LISTING OF SEGMENT check_dir Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/12/82 1257.3 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 check_dir: proc; 12 13 dcl (path, dn) char (168) aligned, 14 (en, char32) char (32) aligned, 15 myid char (32) aligned, 16 line char (120) aligned, 17 datstr char (16) aligned, 18 (c1, char1) char (1) aligned, 19 (i, j, k, l, m, n) fixed bin, 20 (ii, jj) fixed bin, 21 (pers, tpers (10)) char (32) aligned, 22 (proj, tproj (10)) char (32) aligned, 23 (tag, ttag (10)) char (4) aligned, 24 nids fixed bin init (1), 25 idx fixed bin init (2), 26 fb71 fixed bin (71) init (0), 27 bitc fixed bin (24), 28 movelen fixed bin, 29 areap ptr init (null), 30 barea area ((512)) based (areap), 31 (eptr, nptr) ptr init (null), 32 ap ptr, 33 al fixed bin, 34 bchr char (al) unaligned based (ap), 35 ec fixed bin (35), 36 (p, q) ptr; 37 38 dcl bcs char (131071) based (p) aligned; 39 40 dcl NL char (1) aligned int static init (" 41 "); 42 43 dcl (addr, null, substr, index, unspec, length, bit, fixed, divide, mod, abs) builtin; 44 45 dcl establish_cleanup_proc_ entry (entry), 46 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 47 get_wdir_ entry () returns (char (168) aligned), 48 get_system_free_area_ entry (ptr), 49 get_group_id_$tag_star entry () returns (char (32) aligned), 50 expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)), 51 ioa_ entry options (variable), 52 ioa_$rsnnl entry options (variable), 53 ioa_$nnl entry options (variable), 54 ioa_$rs entry options (variable), 55 date_time_ entry (fixed bin (71), char (*) aligned), 56 com_err_ entry options (variable); 57 58 dcl hcs_$star_list_ entry (char (*) aligned, char (*) aligned, fixed bin (3), 59 ptr, fixed bin, fixed bin, ptr, ptr, fixed bin (35)), 60 hcs_$get_bc_author entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (35)); 61 62 dcl hcs_$list_acl entry (char (*) aligned, char (*) aligned, ptr, ptr, ptr, fixed bin, fixed bin (35)), 63 hcs_$list_dir_acl entry (char (*) aligned, char (*) aligned, ptr, ptr, ptr, fixed bin, fixed bin (35)), 64 hcs_$add_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)), 65 hcs_$add_dir_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)), 66 hcs_$delete_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)), 67 hcs_$delete_dir_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)), 68 hcs_$replace_acl entry (char (*) aligned, char (*) aligned, ptr, fixed bin, bit (1) aligned, fixed bin (35)), 69 hcs_$replace_dir_acl entry (char (*) aligned, char (*) aligned, ptr, fixed bin, bit (1) aligned, fixed bin (35)); 70 71 dcl 1 btime based aligned, 72 2 xpad bit (20) unal, 73 2 xdtm bit (36) unal, 74 2 ypad bit (16) unal; 75 76 dcl 1 br (n) based (eptr) aligned, 77 2 type bit (2) unal, 78 2 nnam bit (16) unal, 79 2 nindex bit (18) unal, 80 2 dtm bit (36) unal, 81 2 dtu bit (36) unal, 82 2 mode bit (5) unal, 83 2 pad bit (13) unal, 84 2 recs bit (18) unal; 85 86 dcl names (100) char (32) aligned based (nptr); 87 88 /* ------------------------------------------------------ */ 89 90 call cu_$arg_ptr (1, ap, al, ec); 91 if ec ^= 0 then do; 92 wd: dn = get_wdir_ (); 93 go to join; 94 end; 95 else if bchr = "-wd" then go to wd; 96 97 call expand_path_ (ap, al, addr (dn), null, ec); 98 if ec ^= 0 then go to er; 99 100 join: call get_system_free_area_ (areap); 101 call establish_cleanup_proc_ (clean); 102 myid = get_group_id_$tag_star (); 103 idlp: tpers (nids), tproj (nids), ttag (nids) = "*"; 104 i = index (myid, "."); 105 if i = 0 then tpers (nids) = myid; 106 else do; 107 if i > 1 then tpers (nids) = substr (myid, 1, i-1); 108 j = index (substr (myid, i+1), "."); 109 if j = 0 then tproj (nids) = substr (myid, i+1); 110 else do; 111 tproj (nids) = substr (myid, i+1, j-1); 112 ttag (nids) = substr (myid, i+j+1); 113 end; 114 end; 115 call cu_$arg_ptr (idx, ap, al, ec); 116 if ec = 0 then do; /* If given any ids, override */ 117 nids = idx - 1; 118 idx = idx + 1; 119 myid = bchr; 120 go to idlp; 121 end; 122 123 call hcs_$star_list_ (dn, "**", 2, areap, n, k, eptr, nptr, ec); 124 if ec ^= 0 then do; 125 er: call com_err_ (ec, "check_dir", dn); 126 return; 127 end; 128 129 do i = 1 to n; 130 if br (i).type = "10"b then go to skip; 131 en = names (fixed (br (i).nindex, 18)); 132 call hcs_$get_bc_author (dn, en, char32, ec); 133 if ec ^= 0 then call com_err_ (ec, "check_dir", "^a>^a", dn, en); 134 else do; 135 ii = index (char32, "."); 136 pers = substr (char32, 1, ii-1); 137 jj = index (substr (char32, ii+1), "."); 138 proj = substr (char32, ii+1, jj-1); 139 tag = substr (char32, ii+jj+1); 140 do m = 1 to nids; 141 if tpers (m) = "*" then; 142 else if tpers (m) ^= pers then go to fail; 143 if tproj (m) = "*" then; 144 else if tproj (m) ^= proj then go to fail; 145 if ttag (m) = "*" then; 146 else if ttag (m) ^= tag then go to fail; 147 go to skip; /* all match. so not list */ 148 fail: end; 149 150 list: addr (fb71) -> xdtm = br (i).dtm; 151 call date_time_ (fb71, datstr); 152 call ioa_ ("^32a^8x^16a ^32a", en, datstr, char32); 153 end; 154 skip: end; 155 156 call clean; 157 158 return; 159 160 clean: proc; 161 162 if eptr ^= null then 163 free eptr -> br in (barea); 164 if nptr ^= null then 165 free nptr -> names in (barea); 166 167 end clean; 168 169 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/12/82 1045.2 check_dir.pl1 >spec>on>11/12/82>check_dir.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. addr builtin function dcl 43 ref 97 97 150 al 000524 automatic fixed bin(17,0) dcl 13 set ref 90* 95 97* 115* 119 ap 000522 automatic pointer dcl 13 set ref 90* 95 97* 115* 119 areap 000514 automatic pointer initial dcl 13 set ref 13* 100* 123* 162 164 barea based area(512) dcl 13 ref 162 164 bchr based char unaligned dcl 13 ref 95 119 br based structure array level 1 dcl 76 ref 162 btime based structure level 1 dcl 71 char32 000162 automatic char(32) dcl 13 set ref 132* 135 136 137 138 139 152* com_err_ 000030 constant entry external dcl 45 ref 125 133 cu_$arg_ptr 000012 constant entry external dcl 45 ref 90 115 date_time_ 000026 constant entry external dcl 45 ref 151 datstr 000202 automatic char(16) dcl 13 set ref 151* 152* dn 000100 automatic char(168) dcl 13 set ref 92* 97 97 123* 125* 132* 133* dtm 1 based bit(36) array level 2 packed unaligned dcl 76 ref 150 ec 000525 automatic fixed bin(35,0) dcl 13 set ref 90* 91 97* 98 115* 116 123* 124 125* 132* 133 133* en 000152 automatic char(32) dcl 13 set ref 131* 132* 133* 152* eptr 000516 automatic pointer initial dcl 13 set ref 13* 123* 130 131 150 162 162 establish_cleanup_proc_ 000010 constant entry external dcl 45 ref 101 expand_path_ 000022 constant entry external dcl 45 ref 97 fb71 000512 automatic fixed bin(71,0) initial dcl 13 set ref 13* 150 151* fixed builtin function dcl 43 ref 131 get_group_id_$tag_star 000020 constant entry external dcl 45 ref 102 get_system_free_area_ 000016 constant entry external dcl 45 ref 100 get_wdir_ 000014 constant entry external dcl 45 ref 92 hcs_$get_bc_author 000034 constant entry external dcl 58 ref 132 hcs_$star_list_ 000032 constant entry external dcl 58 ref 123 i 000206 automatic fixed bin(17,0) dcl 13 set ref 104* 105 107 107 108 109 111 112 129* 130 131 150* idx 000511 automatic fixed bin(17,0) initial dcl 13 set ref 13* 115* 117 118* 118 ii 000213 automatic fixed bin(17,0) dcl 13 set ref 135* 136 137 138 139 index builtin function dcl 43 ref 104 108 135 137 ioa_ 000024 constant entry external dcl 45 ref 152 j 000207 automatic fixed bin(17,0) dcl 13 set ref 108* 109 111 112 jj 000214 automatic fixed bin(17,0) dcl 13 set ref 137* 138 139 k 000210 automatic fixed bin(17,0) dcl 13 set ref 123* m 000211 automatic fixed bin(17,0) dcl 13 set ref 140* 141 142 143 144 145 146* myid 000172 automatic char(32) dcl 13 set ref 102* 104 105 107 108 109 111 112 119* n 000212 automatic fixed bin(17,0) dcl 13 set ref 123* 129 162 names based char(32) array dcl 86 ref 131 164 nids 000510 automatic fixed bin(17,0) initial dcl 13 set ref 13* 103 103 103 105 107 109 111 112 117* 140 nindex 0(18) based bit(18) array level 2 packed unaligned dcl 76 ref 131 nptr 000520 automatic pointer initial dcl 13 set ref 13* 123* 131 164 164 null builtin function dcl 43 ref 13 13 13 97 97 162 164 pers 000215 automatic char(32) dcl 13 set ref 136* 142 proj 000345 automatic char(32) dcl 13 set ref 138* 144 substr builtin function dcl 43 ref 107 108 109 111 112 136 137 138 139 tag 000475 automatic char(4) dcl 13 set ref 139* 146 tpers 000225 automatic char(32) array dcl 13 set ref 103* 105* 107* 141 142 tproj 000355 automatic char(32) array dcl 13 set ref 103* 109* 111* 143 144 ttag 000476 automatic char(4) array dcl 13 set ref 103* 112* 145 146 type based bit(2) array level 2 packed unaligned dcl 76 ref 130 xdtm 0(20) based bit(36) level 2 packed unaligned dcl 71 set ref 150* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. NL internal static char(1) initial dcl 40 abs builtin function dcl 43 bcs based char(131071) dcl 38 bit builtin function dcl 43 bitc automatic fixed bin(24,0) dcl 13 c1 automatic char(1) dcl 13 char1 automatic char(1) dcl 13 divide builtin function dcl 43 hcs_$add_acl_entries 000000 constant entry external dcl 62 hcs_$add_dir_acl_entries 000000 constant entry external dcl 62 hcs_$delete_acl_entries 000000 constant entry external dcl 62 hcs_$delete_dir_acl_entries 000000 constant entry external dcl 62 hcs_$list_acl 000000 constant entry external dcl 62 hcs_$list_dir_acl 000000 constant entry external dcl 62 hcs_$replace_acl 000000 constant entry external dcl 62 hcs_$replace_dir_acl 000000 constant entry external dcl 62 ioa_$nnl 000000 constant entry external dcl 45 ioa_$rs 000000 constant entry external dcl 45 ioa_$rsnnl 000000 constant entry external dcl 45 l automatic fixed bin(17,0) dcl 13 length builtin function dcl 43 line automatic char(120) dcl 13 mod builtin function dcl 43 movelen automatic fixed bin(17,0) dcl 13 p automatic pointer dcl 13 path automatic char(168) dcl 13 q automatic pointer dcl 13 unspec builtin function dcl 43 NAMES DECLARED BY EXPLICIT CONTEXT. check_dir 000035 constant entry external dcl 11 clean 000757 constant entry internal dcl 160 ref 101 101 156 er 000407 constant label dcl 125 ref 98 fail 000670 constant label dcl 148 ref 142 144 146 idlp 000167 constant label dcl 103 ref 120 join 000137 constant label dcl 100 ref 93 list 000672 constant label dcl 150 skip 000747 constant label dcl 154 ref 130 147 wd 000074 constant label dcl 92 ref 95 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1162 1220 1011 1172 Length 1402 1011 36 146 150 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME check_dir 410 external procedure is an external procedure. clean 64 internal procedure is assigned to an entry variable. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_dir 000100 dn check_dir 000152 en check_dir 000162 char32 check_dir 000172 myid check_dir 000202 datstr check_dir 000206 i check_dir 000207 j check_dir 000210 k check_dir 000211 m check_dir 000212 n check_dir 000213 ii check_dir 000214 jj check_dir 000215 pers check_dir 000225 tpers check_dir 000345 proj check_dir 000355 tproj check_dir 000475 tag check_dir 000476 ttag check_dir 000510 nids check_dir 000511 idx check_dir 000512 fb71 check_dir 000514 areap check_dir 000516 eptr check_dir 000520 nptr check_dir 000522 ap check_dir 000524 al check_dir 000525 ec check_dir THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this return ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr date_time_ establish_cleanup_proc_ expand_path_ get_group_id_$tag_star get_system_free_area_ get_wdir_ hcs_$get_bc_author hcs_$star_list_ ioa_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000034 13 000042 90 000054 91 000072 92 000074 93 000103 95 000104 97 000112 98 000135 100 000137 101 000146 102 000160 103 000167 104 000204 105 000216 107 000225 108 000235 109 000252 111 000262 112 000270 115 000302 116 000317 117 000321 118 000324 119 000325 120 000332 123 000333 124 000405 125 000407 126 000434 129 000435 130 000444 131 000453 132 000464 133 000510 135 000552 136 000563 137 000567 138 000603 139 000607 140 000620 141 000627 142 000637 143 000643 144 000651 145 000655 146 000664 147 000667 148 000670 150 000672 151 000703 152 000720 154 000747 156 000751 158 000755 160 000756 162 000764 164 000775 167 001004 ----------------------------------------------------------- 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