COMPILATION LISTING OF SEGMENT reclassify_dir Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/22/85 1524.9 mst Tue Options: optimize list 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 reclassify_dir: proc; 12 13 14 /* first version coded 09/29/74 J.C.Whitmore */ 15 16 /* This procedure is used to change the access class of a segment, a directory 17* and all immediately inferior segments, or a ring 1 multiple access class segment 18* 19* The three entry points are: 20* 21* 1. reclassify_dir path [access_class] 22* 23* 2. reclassify_seg path 24* 25* 3. reclassify_sys_seg path [access_class] 26* 27* If the optional access_class argument is omitted, the access class of 28* the parent directory is assumed. Access to the system_privilege_ 29* gate is assumed. 30**/ 31 32 dcl aptr ptr, 33 alen fixed bin, 34 arg char (alen) based (aptr), 35 acc_class bit (72) aligned, 36 ec fixed bin (35), 37 d_priv fixed bin (35) init (1), /* 0 if we set dir priv here */ 38 os_priv fixed bin (35) init (1), /* 0 if we set out-of-service priv here */ 39 dir char (168), 40 ent char (32), 41 (rd_entry, rs_entry, rss_entry) bit (1) init ("0"b), 42 whoami char (24), 43 addr builtin; 44 45 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 46 com_err_ entry options (variable), 47 convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)), 48 hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)), 49 system_privilege_$dir_priv_on entry (fixed bin (35)), 50 system_privilege_$dir_priv_off entry (fixed bin (35)), 51 system_privilege_$soos_priv_on entry (fixed bin (35)), 52 system_privilege_$soos_priv_off entry (fixed bin (35)), 53 system_privilege_$reclassify_branch entry (char (*), char (*), bit (72) aligned, fixed bin (35)), 54 system_privilege_$reclassify_node entry (char (*), char (*), bit (72) aligned, fixed bin (35)), 55 system_privilege_$reclassify_sys_seg entry (char (*), char (*), bit (72) aligned, fixed bin (35)), 56 expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)); 57 58 dcl error_table_$noarg ext static fixed bin (35); 59 dcl (linkage_error, cleanup) condition; 60 61 62 whoami = "reclassify_dir"; /* name the entry point for com_err */ 63 rd_entry = "1"b; /* reclass dir entry switch */ 64 go to start; 65 66 reclassify_seg: entry; 67 68 whoami = "reclassify_seg"; /* ....for com_err */ 69 rs_entry = "1"b; /* reclass seg entry switch */ 70 go to start; 71 72 reclassify_sys_seg: entry; 73 74 whoami = "reclassify_sys_seg"; /* ....for com_err */ 75 rss_entry = "1"b; /* reclass sys seg entry switch */ 76 77 start: call cu_$arg_ptr (1, aptr, alen, ec); /* get the pathname */ 78 if ec ^= 0 then do; 79 80 err: call com_err_ (ec, whoami); 81 go to clean_up; /* be sure we reset privileges */ 82 83 end; 84 85 if arg = "-wd" | arg = "-wdir" then alen = 0; 86 87 call expand_path_ (aptr, alen, addr (dir), addr (ent), ec); 88 if ec ^= 0 then go to err; 89 90 on linkage_error go to abort; /* do something intelligent if user doesn't have access */ 91 92 on cleanup go to clean_up; /* cleanup after a "quit" or ..... */ 93 94 call system_privilege_$soos_priv_on (os_priv); /* be sure we have the needed privilege */ 95 call system_privilege_$dir_priv_on (d_priv); 96 97 if rs_entry then /* do one seg at access class of parent */ 98 99 call system_privilege_$reclassify_branch (dir, ent, "0"b, ec); /* access class is ignored */ 100 101 else do; /* the other entries may have another arg */ 102 103 call cu_$arg_ptr (2, aptr, alen, ec); /* see if an access class was specified */ 104 if ec ^= 0 then 105 if ec = error_table_$noarg then /* none supplied so, */ 106 if rss_entry then do; /* user really wanted to make the sys seg normal */ 107 108 call system_privilege_$reclassify_branch (dir, ent, "0"b, ec); 109 110 rss_entry = "0"b; /* we are done, this will make us fall through */ 111 112 end; 113 else do; 114 call hcs_$get_access_class (dir, ent, acc_class, ec); /* assume level of parent */ 115 if ec ^= 0 then go to err; /* not much we can do */ 116 end; 117 118 else go to err; /* wrong error from arg_ptr */ 119 120 else do; /* we got a second argument */ 121 122 call convert_authorization_$from_string (acc_class, arg, ec); /* convert to binary access class */ 123 if ec ^= 0 then go to err; /* bad access class string */ 124 125 end; 126 127 if rd_entry then 128 call system_privilege_$reclassify_node (dir, ent, acc_class, ec); 129 else if rss_entry then /* see if we still want a sys seg */ 130 call system_privilege_$reclassify_sys_seg (dir, ent, acc_class, ec); 131 132 end; 133 134 if ec ^= 0 then do; 135 if dir = "> " then dir = ""; /* special case root for com_err */ 136 call com_err_ (ec, whoami, "^a>^a", dir, ent); 137 end; 138 139 clean_up: if d_priv = 0 then call system_privilege_$dir_priv_off (ec); /* turn off if we set it */ 140 if os_priv = 0 then call system_privilege_$soos_priv_off (ec); 141 142 return; 143 144 abort: call com_err_ (0, whoami, "This command requires privileged access not given to this user."); 145 /* we don't have to worry about reseting privileges */ 146 /* since we got here because user didn't have access */ 147 148 return; 149 150 end reclassify_dir; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/22/85 1313.4 reclassify_dir.pl1 >spec>temp>41-5>reclassify_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. acc_class 000104 automatic bit(72) dcl 32 set ref 114* 122* 127* 129* addr builtin function dcl 32 ref 87 87 87 87 alen 000102 automatic fixed bin(17,0) dcl 32 set ref 77* 85 85 85* 87* 103* 122 122 aptr 000100 automatic pointer dcl 32 set ref 77* 85 85 87* 103* 122 arg based char unaligned dcl 32 set ref 85 85 122* cleanup 000212 stack reference condition dcl 59 ref 92 com_err_ 000012 constant entry external dcl 45 ref 80 136 144 convert_authorization_$from_string 000014 constant entry external dcl 45 ref 122 cu_$arg_ptr 000010 constant entry external dcl 45 ref 77 103 d_priv 000107 automatic fixed bin(35,0) initial dcl 32 set ref 32* 95* 139 dir 000111 automatic char(168) unaligned dcl 32 set ref 87 87 97* 108* 114* 127* 129* 135 135* 136* ec 000106 automatic fixed bin(35,0) dcl 32 set ref 77* 78 80* 87* 88 97* 103* 104 104 108* 114* 115 122* 123 127* 129* 134 136* 139* 140* ent 000163 automatic char(32) unaligned dcl 32 set ref 87 87 97* 108* 114* 127* 129* 136* error_table_$noarg 000040 external static fixed bin(35,0) dcl 58 ref 104 expand_path_ 000036 constant entry external dcl 45 ref 87 hcs_$get_access_class 000016 constant entry external dcl 45 ref 114 linkage_error 000204 stack reference condition dcl 59 ref 90 os_priv 000110 automatic fixed bin(35,0) initial dcl 32 set ref 32* 94* 140 rd_entry 000173 automatic bit(1) initial unaligned dcl 32 set ref 32* 63* 127 rs_entry 000174 automatic bit(1) initial unaligned dcl 32 set ref 32* 69* 97 rss_entry 000175 automatic bit(1) initial unaligned dcl 32 set ref 32* 75* 104 110* 129 system_privilege_$dir_priv_off 000022 constant entry external dcl 45 ref 139 system_privilege_$dir_priv_on 000020 constant entry external dcl 45 ref 95 system_privilege_$reclassify_branch 000030 constant entry external dcl 45 ref 97 108 system_privilege_$reclassify_node 000032 constant entry external dcl 45 ref 127 system_privilege_$reclassify_sys_seg 000034 constant entry external dcl 45 ref 129 system_privilege_$soos_priv_off 000026 constant entry external dcl 45 ref 140 system_privilege_$soos_priv_on 000024 constant entry external dcl 45 ref 94 whoami 000176 automatic char(24) unaligned dcl 32 set ref 62* 68* 74* 80* 136* 144* NAMES DECLARED BY EXPLICIT CONTEXT. abort 000652 constant label dcl 144 ref 90 clean_up 000627 constant label dcl 139 ref 81 92 err 000165 constant label dcl 80 ref 88 104 115 123 reclassify_dir 000077 constant entry external dcl 11 reclassify_seg 000114 constant entry external dcl 66 reclassify_sys_seg 000131 constant entry external dcl 72 start 000144 constant label dcl 77 ref 64 70 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1126 1170 700 1136 Length 1370 700 42 163 225 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME reclassify_dir 212 external procedure is an external procedure. on unit on line 90 64 on unit on unit on line 92 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME reclassify_dir 000100 aptr reclassify_dir 000102 alen reclassify_dir 000104 acc_class reclassify_dir 000106 ec reclassify_dir 000107 d_priv reclassify_dir 000110 os_priv reclassify_dir 000111 dir reclassify_dir 000163 ent reclassify_dir 000173 rd_entry reclassify_dir 000174 rs_entry reclassify_dir 000175 rss_entry reclassify_dir 000176 whoami reclassify_dir THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_authorization_$from_string cu_$arg_ptr expand_path_ hcs_$get_access_class system_privilege_$dir_priv_off system_privilege_$dir_priv_on system_privilege_$reclassify_branch system_privilege_$reclassify_node system_privilege_$reclassify_sys_seg system_privilege_$soos_priv_off system_privilege_$soos_priv_on THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noarg CONSTANTS 000000 aa 524000000077 000001 aa 404000000005 000002 aa 524000000005 000003 aa 076 040 040 000 > 000004 aa 526000000000 000005 aa 514000000110 000006 aa 526000000040 000007 aa 526000000250 000010 aa 055 167 144 000 -wd 000011 aa 526000000030 000012 aa 404000000043 000014 aa 136 141 076 136 ^a>^ 000015 aa 141 000 000 000 a 000016 aa 000000000000 000017 aa 000000000000 000020 aa 055 167 144 151 -wdi 000021 aa 162 000 000 000 r 000022 aa 143 154 145 141 clea 000023 aa 156 165 160 000 nup 000024 aa 162 145 143 154 recl 000025 aa 141 163 163 151 assi 000026 aa 146 171 137 163 fy_s 000027 aa 145 147 000 000 eg 000030 aa 162 145 143 154 recl 000031 aa 141 163 163 151 assi 000032 aa 146 171 137 144 fy_d 000033 aa 151 162 000 000 ir 000034 aa 154 151 156 153 link 000035 aa 141 147 145 137 age_ 000036 aa 145 162 162 157 erro 000037 aa 162 000 000 000 r 000040 aa 162 145 143 154 recl 000041 aa 141 163 163 151 assi 000042 aa 146 171 137 163 fy_s 000043 aa 171 163 137 163 ys_s 000044 aa 145 147 000 000 eg 000045 aa 124 150 151 163 This 000046 aa 040 143 157 155 com 000047 aa 155 141 156 144 mand 000050 aa 040 162 145 161 req 000051 aa 165 151 162 145 uire 000052 aa 163 040 160 162 s pr 000053 aa 151 166 151 154 ivil 000054 aa 145 147 145 144 eged 000055 aa 040 141 143 143 acc 000056 aa 145 163 163 040 ess 000057 aa 156 157 164 040 not 000060 aa 147 151 166 145 give 000061 aa 156 040 164 157 n to 000062 aa 040 164 150 151 thi 000063 aa 163 040 165 163 s us 000064 aa 145 162 056 000 er. BEGIN PROCEDURE reclassify_dir PROLOGUE SEQUENCE 000065 aa 6 00220 4401 00 sxl0 pr6|144 STATEMENT 1 ON LINE 32 000066 aa 000001 2360 07 ldq 1,dl 000067 aa 6 00107 7561 00 stq pr6|71 d_priv 000070 aa 6 00110 7561 00 stq pr6|72 os_priv 000071 aa 6 00173 4501 00 stz pr6|123 rd_entry 000072 aa 6 00174 4501 00 stz pr6|124 rs_entry 000073 aa 6 00175 4501 00 stz pr6|125 rss_entry 000074 aa 6 00220 7201 00 lxl0 pr6|144 000075 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO reclassify_dir STATEMENT 1 ON LINE 11 reclassify_dir: proc; 000076 da 000172200000 000077 aa 000340 6270 00 eax7 224 000100 aa 7 00034 3521 20 epp2 pr7|28,* 000101 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000102 aa 000000000000 000103 aa 000000000000 000104 aa 777761 7000 04 tsx0 -15,ic 000065 STATEMENT 1 ON LINE 62 whoami = "reclassify_dir"; 000105 aa 040 100 100 404 mlr (ic),(pr),fill(040) 000106 aa 777723 00 0016 desc9a -45,14 000030 = 162145143154 000107 aa 6 00176 00 0030 desc9a pr6|126,24 whoami STATEMENT 1 ON LINE 63 rd_entry = "1"b; 000110 aa 400000 2350 03 lda 131072,du 000111 aa 6 00173 7551 00 sta pr6|123 rd_entry STATEMENT 1 ON LINE 64 go to start; 000112 aa 000032 7100 04 tra 26,ic 000144 ENTRY TO reclassify_seg STATEMENT 1 ON LINE 66 reclassify_seg: entry; 000113 da 000201200000 000114 aa 000340 6270 00 eax7 224 000115 aa 7 00034 3521 20 epp2 pr7|28,* 000116 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000117 aa 000000000000 000120 aa 000000000000 000121 aa 777744 7000 04 tsx0 -28,ic 000065 STATEMENT 1 ON LINE 68 whoami = "reclassify_seg"; 000122 aa 040 100 100 404 mlr (ic),(pr),fill(040) 000123 aa 777702 00 0016 desc9a -62,14 000024 = 162145143154 000124 aa 6 00176 00 0030 desc9a pr6|126,24 whoami STATEMENT 1 ON LINE 69 rs_entry = "1"b; 000125 aa 400000 2350 03 lda 131072,du 000126 aa 6 00174 7551 00 sta pr6|124 rs_entry STATEMENT 1 ON LINE 70 go to start; 000127 aa 000015 7100 04 tra 13,ic 000144 ENTRY TO reclassify_sys_seg STATEMENT 1 ON LINE 72 reclassify_sys_seg: entry; 000130 da 000204200000 000131 aa 000340 6270 00 eax7 224 000132 aa 7 00034 3521 20 epp2 pr7|28,* 000133 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000134 aa 000000000000 000135 aa 000000000000 000136 aa 777727 7000 04 tsx0 -41,ic 000065 STATEMENT 1 ON LINE 74 whoami = "reclassify_sys_seg"; 000137 aa 040 100 100 404 mlr (ic),(pr),fill(040) 000140 aa 777701 00 0022 desc9a -63,18 000040 = 162145143154 000141 aa 6 00176 00 0030 desc9a pr6|126,24 whoami STATEMENT 1 ON LINE 75 rss_entry = "1"b; 000142 aa 400000 2350 03 lda 131072,du 000143 aa 6 00175 7551 00 sta pr6|125 rss_entry STATEMENT 1 ON LINE 77 start: call cu_$arg_ptr (1, aptr, alen, ec); 000144 aa 000001 2360 07 ldq 1,dl 000145 aa 6 00221 7561 00 stq pr6|145 000146 aa 6 00221 3521 00 epp2 pr6|145 000147 aa 6 00224 2521 00 spri2 pr6|148 000150 aa 6 00100 3521 00 epp2 pr6|64 aptr 000151 aa 6 00226 2521 00 spri2 pr6|150 000152 aa 6 00102 3521 00 epp2 pr6|66 alen 000153 aa 6 00230 2521 00 spri2 pr6|152 000154 aa 6 00106 3521 00 epp2 pr6|70 ec 000155 aa 6 00232 2521 00 spri2 pr6|154 000156 aa 6 00222 6211 00 eax1 pr6|146 000157 aa 020000 4310 07 fld 8192,dl 000160 aa 6 00044 3701 20 epp4 pr6|36,* 000161 la 4 00010 3521 20 epp2 pr4|8,* cu_$arg_ptr 000162 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 78 if ec ^= 0 then do; 000163 aa 6 00106 2361 00 ldq pr6|70 ec 000164 aa 000017 6000 04 tze 15,ic 000203 STATEMENT 1 ON LINE 80 err: call com_err_ (ec, whoami); 000165 aa 6 00106 3521 00 epp2 pr6|70 ec 000166 aa 6 00224 2521 00 spri2 pr6|148 000167 aa 6 00176 3521 00 epp2 pr6|126 whoami 000170 aa 6 00226 2521 00 spri2 pr6|150 000171 aa 777621 3520 04 epp2 -111,ic 000012 = 404000000043 000172 aa 6 00230 2521 00 spri2 pr6|152 000173 aa 777616 3520 04 epp2 -114,ic 000011 = 526000000030 000174 aa 6 00232 2521 00 spri2 pr6|154 000175 aa 6 00222 6211 00 eax1 pr6|146 000176 aa 010000 4310 07 fld 4096,dl 000177 aa 6 00044 3701 20 epp4 pr6|36,* 000200 la 4 00012 3521 20 epp2 pr4|10,* com_err_ 000201 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 81 go to clean_up; 000202 aa 000425 7100 04 tra 277,ic 000627 STATEMENT 1 ON LINE 83 end; STATEMENT 1 ON LINE 85 if arg = "-wd" | arg = "-wdir" then alen = 0; 000203 aa 6 00100 3735 20 epp7 pr6|64,* aptr 000204 aa 6 00102 7271 00 lxl7 pr6|66 alen 000205 aa 040 004 106 540 cmpc (pr,rl),(ic),fill(040) 000206 aa 7 00000 00 0017 desc9a pr7|0,x7 arg 000207 aa 777603 00 0003 desc9a -125,3 000010 = 055167144000 000210 aa 000005 6000 04 tze 5,ic 000215 000211 aa 040 004 106 540 cmpc (pr,rl),(ic),fill(040) 000212 aa 7 00000 00 0017 desc9a pr7|0,x7 arg 000213 aa 777607 00 0005 desc9a -121,5 000020 = 055167144151 000214 aa 000002 6010 04 tnz 2,ic 000216 000215 aa 6 00102 4501 00 stz pr6|66 alen STATEMENT 1 ON LINE 87 call expand_path_ (aptr, alen, addr (dir), addr (ent), ec); 000216 aa 6 00111 3715 00 epp5 pr6|73 dir 000217 aa 6 00234 6515 00 spri5 pr6|156 000220 aa 6 00163 3535 00 epp3 pr6|115 ent 000221 aa 6 00236 2535 00 spri3 pr6|158 000222 aa 6 00100 3521 00 epp2 pr6|64 aptr 000223 aa 6 00242 2521 00 spri2 pr6|162 000224 aa 6 00102 3521 00 epp2 pr6|66 alen 000225 aa 6 00244 2521 00 spri2 pr6|164 000226 aa 6 00234 3521 00 epp2 pr6|156 000227 aa 6 00246 2521 00 spri2 pr6|166 000230 aa 6 00236 3521 00 epp2 pr6|158 000231 aa 6 00250 2521 00 spri2 pr6|168 000232 aa 6 00106 3521 00 epp2 pr6|70 ec 000233 aa 6 00252 2521 00 spri2 pr6|170 000234 aa 6 00240 6211 00 eax1 pr6|160 000235 aa 024000 4310 07 fld 10240,dl 000236 aa 6 00044 3701 20 epp4 pr6|36,* 000237 la 4 00036 3521 20 epp2 pr4|30,* expand_path_ 000240 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 88 if ec ^= 0 then go to err; 000241 aa 6 00106 2361 00 ldq pr6|70 ec 000242 aa 777723 6010 04 tnz -45,ic 000165 STATEMENT 1 ON LINE 90 on linkage_error go to abort; 000243 aa 000015 7260 07 lxl6 13,dl 000244 aa 777570 3520 04 epp2 -136,ic 000034 = 154151156153 000245 aa 0 00717 7001 00 tsx0 pr0|463 enable 000246 aa 000004 7100 04 tra 4,ic 000252 000247 aa 000204000000 000250 aa 000012 7100 04 tra 10,ic 000262 BEGIN CONDITION linkage_error.1 ENTRY TO linkage_error.1 STATEMENT 1 ON LINE 90 on linkage_error go to abort; 000251 da 000213200000 000252 aa 000100 6270 00 eax7 64 000253 aa 7 00034 3521 20 epp2 pr7|28,* 000254 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000255 aa 000000000000 000256 aa 000000000000 000257 aa 000373 3520 04 epp2 251,ic 000652 = 600221450100 000260 aa 000001 7270 07 lxl7 1,dl 000261 aa 0 00657 7101 00 tra pr0|431 tra_ext END CONDITION linkage_error.1 STATEMENT 1 ON LINE 92 on cleanup go to clean_up; 000262 aa 000007 7260 07 lxl6 7,dl 000263 aa 777537 3520 04 epp2 -161,ic 000022 = 143154145141 000264 aa 0 00717 7001 00 tsx0 pr0|463 enable 000265 aa 000004 7100 04 tra 4,ic 000271 000266 aa 000212000000 000267 aa 000012 7100 04 tra 10,ic 000301 BEGIN CONDITION cleanup.2 ENTRY TO cleanup.2 STATEMENT 1 ON LINE 92 on cleanup go to clean_up; 000270 da 000221200000 000271 aa 000100 6270 00 eax7 64 000272 aa 7 00034 3521 20 epp2 pr7|28,* 000273 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000274 aa 000000000000 000275 aa 000000000000 000276 aa 000331 3520 04 epp2 217,ic 000627 = 600107236100 000277 aa 000001 7270 07 lxl7 1,dl 000300 aa 0 00657 7101 00 tra pr0|431 tra_ext END CONDITION cleanup.2 STATEMENT 1 ON LINE 94 call system_privilege_$soos_priv_on (os_priv); 000301 aa 6 00110 3521 00 epp2 pr6|72 os_priv 000302 aa 6 00224 2521 00 spri2 pr6|148 000303 aa 6 00222 6211 00 eax1 pr6|146 000304 aa 004000 4310 07 fld 2048,dl 000305 aa 6 00044 3701 20 epp4 pr6|36,* 000306 la 4 00024 3521 20 epp2 pr4|20,* system_privilege_$soos_priv_on 000307 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 95 call system_privilege_$dir_priv_on (d_priv); 000310 aa 6 00107 3521 00 epp2 pr6|71 d_priv 000311 aa 6 00224 2521 00 spri2 pr6|148 000312 aa 6 00222 6211 00 eax1 pr6|146 000313 aa 004000 4310 07 fld 2048,dl 000314 aa 6 00044 3701 20 epp4 pr6|36,* 000315 la 4 00020 3521 20 epp2 pr4|16,* system_privilege_$dir_priv_on 000316 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 97 if rs_entry then /* do one seg at access class of parent */ call system_privilege_$reclassify_branch (dir, ent, "0"b, ec); 000317 aa 6 00174 2351 00 lda pr6|124 rs_entry 000320 aa 000031 6000 04 tze 25,ic 000351 000321 aa 777475 2370 04 ldaq -195,ic 000016 = 000000000000 000000000000 000322 aa 6 00236 7571 00 staq pr6|158 000323 aa 6 00111 3521 00 epp2 pr6|73 dir 000324 aa 6 00256 2521 00 spri2 pr6|174 000325 aa 6 00163 3521 00 epp2 pr6|115 ent 000326 aa 6 00260 2521 00 spri2 pr6|176 000327 aa 6 00236 3521 00 epp2 pr6|158 000330 aa 6 00262 2521 00 spri2 pr6|178 000331 aa 6 00106 3521 00 epp2 pr6|70 ec 000332 aa 6 00264 2521 00 spri2 pr6|180 000333 aa 777454 3520 04 epp2 -212,ic 000007 = 526000000250 000334 aa 6 00266 2521 00 spri2 pr6|182 000335 aa 777451 3520 04 epp2 -215,ic 000006 = 526000000040 000336 aa 6 00270 2521 00 spri2 pr6|184 000337 aa 777446 3520 04 epp2 -218,ic 000005 = 514000000110 000340 aa 6 00272 2521 00 spri2 pr6|186 000341 aa 777451 3520 04 epp2 -215,ic 000012 = 404000000043 000342 aa 6 00274 2521 00 spri2 pr6|188 000343 aa 6 00254 6211 00 eax1 pr6|172 000344 aa 020000 4310 07 fld 8192,dl 000345 aa 6 00044 3701 20 epp4 pr6|36,* 000346 la 4 00030 3521 20 epp2 pr4|24,* system_privilege_$reclassify_branch 000347 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 000350 aa 000213 7100 04 tra 139,ic 000563 STATEMENT 1 ON LINE 101 else do; STATEMENT 1 ON LINE 103 call cu_$arg_ptr (2, aptr, alen, ec); 000351 aa 000002 2360 07 ldq 2,dl 000352 aa 6 00221 7561 00 stq pr6|145 000353 aa 6 00221 3521 00 epp2 pr6|145 000354 aa 6 00224 2521 00 spri2 pr6|148 000355 aa 6 00100 3521 00 epp2 pr6|64 aptr 000356 aa 6 00226 2521 00 spri2 pr6|150 000357 aa 6 00102 3521 00 epp2 pr6|66 alen 000360 aa 6 00230 2521 00 spri2 pr6|152 000361 aa 6 00106 3521 00 epp2 pr6|70 ec 000362 aa 6 00232 2521 00 spri2 pr6|154 000363 aa 6 00222 6211 00 eax1 pr6|146 000364 aa 020000 4310 07 fld 8192,dl 000365 aa 6 00044 3701 20 epp4 pr6|36,* 000366 la 4 00010 3521 20 epp2 pr4|8,* cu_$arg_ptr 000367 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 104 if ec ^= 0 then if ec = error_table_$noarg then /* none supplied so, */ if rss_entry then do; 000370 aa 6 00106 2361 00 ldq pr6|70 ec 000371 aa 000065 6000 04 tze 53,ic 000456 000372 aa 6 00044 3701 20 epp4 pr6|36,* 000373 la 4 00040 1161 20 cmpq pr4|32,* error_table_$noarg 000374 aa 777571 6010 04 tnz -135,ic 000165 000375 aa 6 00175 2351 00 lda pr6|125 rss_entry 000376 aa 000031 6000 04 tze 25,ic 000427 STATEMENT 1 ON LINE 108 call system_privilege_$reclassify_branch (dir, ent, "0"b, ec); 000377 aa 777417 2370 04 ldaq -241,ic 000016 = 000000000000 000000000000 000400 aa 6 00236 7571 00 staq pr6|158 000401 aa 6 00111 3521 00 epp2 pr6|73 dir 000402 aa 6 00256 2521 00 spri2 pr6|174 000403 aa 6 00163 3521 00 epp2 pr6|115 ent 000404 aa 6 00260 2521 00 spri2 pr6|176 000405 aa 6 00236 3521 00 epp2 pr6|158 000406 aa 6 00262 2521 00 spri2 pr6|178 000407 aa 6 00106 3521 00 epp2 pr6|70 ec 000410 aa 6 00264 2521 00 spri2 pr6|180 000411 aa 777376 3520 04 epp2 -258,ic 000007 = 526000000250 000412 aa 6 00266 2521 00 spri2 pr6|182 000413 aa 777373 3520 04 epp2 -261,ic 000006 = 526000000040 000414 aa 6 00270 2521 00 spri2 pr6|184 000415 aa 777370 3520 04 epp2 -264,ic 000005 = 514000000110 000416 aa 6 00272 2521 00 spri2 pr6|186 000417 aa 777373 3520 04 epp2 -261,ic 000012 = 404000000043 000420 aa 6 00274 2521 00 spri2 pr6|188 000421 aa 6 00254 6211 00 eax1 pr6|172 000422 aa 020000 4310 07 fld 8192,dl 000423 la 4 00030 3521 20 epp2 pr4|24,* system_privilege_$reclassify_branch 000424 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 110 rss_entry = "0"b; 000425 aa 6 00175 4501 00 stz pr6|125 rss_entry STATEMENT 1 ON LINE 112 end; 000426 aa 000056 7100 04 tra 46,ic 000504 STATEMENT 1 ON LINE 113 else do; STATEMENT 1 ON LINE 114 call hcs_$get_access_class (dir, ent, acc_class, ec); 000427 aa 6 00111 3521 00 epp2 pr6|73 dir 000430 aa 6 00256 2521 00 spri2 pr6|174 000431 aa 6 00163 3521 00 epp2 pr6|115 ent 000432 aa 6 00260 2521 00 spri2 pr6|176 000433 aa 6 00104 3521 00 epp2 pr6|68 acc_class 000434 aa 6 00262 2521 00 spri2 pr6|178 000435 aa 6 00106 3521 00 epp2 pr6|70 ec 000436 aa 6 00264 2521 00 spri2 pr6|180 000437 aa 777350 3520 04 epp2 -280,ic 000007 = 526000000250 000440 aa 6 00266 2521 00 spri2 pr6|182 000441 aa 777345 3520 04 epp2 -283,ic 000006 = 526000000040 000442 aa 6 00270 2521 00 spri2 pr6|184 000443 aa 777342 3520 04 epp2 -286,ic 000005 = 514000000110 000444 aa 6 00272 2521 00 spri2 pr6|186 000445 aa 777345 3520 04 epp2 -283,ic 000012 = 404000000043 000446 aa 6 00274 2521 00 spri2 pr6|188 000447 aa 6 00254 6211 00 eax1 pr6|172 000450 aa 020000 4310 07 fld 8192,dl 000451 la 4 00016 3521 20 epp2 pr4|14,* hcs_$get_access_class 000452 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 115 if ec ^= 0 then go to err; 000453 aa 6 00106 2361 00 ldq pr6|70 ec 000454 aa 777511 6010 04 tnz -183,ic 000165 STATEMENT 1 ON LINE 116 end; 000455 aa 000027 7100 04 tra 23,ic 000504 STATEMENT 1 ON LINE 120 else do; STATEMENT 1 ON LINE 122 call convert_authorization_$from_string (acc_class, arg, ec); 000456 aa 6 00102 2361 00 ldq pr6|66 alen 000457 aa 526000 2760 03 orq 175104,du 000460 aa 6 00221 7561 00 stq pr6|145 000461 aa 6 00104 3521 00 epp2 pr6|68 acc_class 000462 aa 6 00256 2521 00 spri2 pr6|174 000463 aa 6 00100 3521 20 epp2 pr6|64,* arg 000464 aa 6 00260 2521 00 spri2 pr6|176 000465 aa 6 00106 3521 00 epp2 pr6|70 ec 000466 aa 6 00262 2521 00 spri2 pr6|178 000467 aa 777316 3520 04 epp2 -306,ic 000005 = 514000000110 000470 aa 6 00264 2521 00 spri2 pr6|180 000471 aa 6 00221 3521 00 epp2 pr6|145 000472 aa 6 00266 2521 00 spri2 pr6|182 000473 aa 777317 3520 04 epp2 -305,ic 000012 = 404000000043 000474 aa 6 00270 2521 00 spri2 pr6|184 000475 aa 6 00254 6211 00 eax1 pr6|172 000476 aa 014000 4310 07 fld 6144,dl 000477 aa 6 00044 3701 20 epp4 pr6|36,* 000500 la 4 00014 3521 20 epp2 pr4|12,* convert_authorization_$from_string 000501 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 123 if ec ^= 0 then go to err; 000502 aa 6 00106 2361 00 ldq pr6|70 ec 000503 aa 777462 6010 04 tnz -206,ic 000165 STATEMENT 1 ON LINE 125 end; STATEMENT 1 ON LINE 127 if rd_entry then call system_privilege_$reclassify_node (dir, ent, acc_class, ec); 000504 aa 6 00173 2351 00 lda pr6|123 rd_entry 000505 aa 000027 6000 04 tze 23,ic 000534 000506 aa 6 00111 3521 00 epp2 pr6|73 dir 000507 aa 6 00256 2521 00 spri2 pr6|174 000510 aa 6 00163 3521 00 epp2 pr6|115 ent 000511 aa 6 00260 2521 00 spri2 pr6|176 000512 aa 6 00104 3521 00 epp2 pr6|68 acc_class 000513 aa 6 00262 2521 00 spri2 pr6|178 000514 aa 6 00106 3521 00 epp2 pr6|70 ec 000515 aa 6 00264 2521 00 spri2 pr6|180 000516 aa 777271 3520 04 epp2 -327,ic 000007 = 526000000250 000517 aa 6 00266 2521 00 spri2 pr6|182 000520 aa 777266 3520 04 epp2 -330,ic 000006 = 526000000040 000521 aa 6 00270 2521 00 spri2 pr6|184 000522 aa 777263 3520 04 epp2 -333,ic 000005 = 514000000110 000523 aa 6 00272 2521 00 spri2 pr6|186 000524 aa 777266 3520 04 epp2 -330,ic 000012 = 404000000043 000525 aa 6 00274 2521 00 spri2 pr6|188 000526 aa 6 00254 6211 00 eax1 pr6|172 000527 aa 020000 4310 07 fld 8192,dl 000530 aa 6 00044 3701 20 epp4 pr6|36,* 000531 la 4 00032 3521 20 epp2 pr4|26,* system_privilege_$reclassify_node 000532 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc 000533 aa 000030 7100 04 tra 24,ic 000563 STATEMENT 1 ON LINE 129 else if rss_entry then /* see if we still want a sys seg */ call system_privilege_$reclassify_sys_seg (dir, ent, acc_class, ec); 000534 aa 6 00175 2351 00 lda pr6|125 rss_entry 000535 aa 000026 6000 04 tze 22,ic 000563 000536 aa 6 00111 3521 00 epp2 pr6|73 dir 000537 aa 6 00256 2521 00 spri2 pr6|174 000540 aa 6 00163 3521 00 epp2 pr6|115 ent 000541 aa 6 00260 2521 00 spri2 pr6|176 000542 aa 6 00104 3521 00 epp2 pr6|68 acc_class 000543 aa 6 00262 2521 00 spri2 pr6|178 000544 aa 6 00106 3521 00 epp2 pr6|70 ec 000545 aa 6 00264 2521 00 spri2 pr6|180 000546 aa 777241 3520 04 epp2 -351,ic 000007 = 526000000250 000547 aa 6 00266 2521 00 spri2 pr6|182 000550 aa 777236 3520 04 epp2 -354,ic 000006 = 526000000040 000551 aa 6 00270 2521 00 spri2 pr6|184 000552 aa 777233 3520 04 epp2 -357,ic 000005 = 514000000110 000553 aa 6 00272 2521 00 spri2 pr6|186 000554 aa 777236 3520 04 epp2 -354,ic 000012 = 404000000043 000555 aa 6 00274 2521 00 spri2 pr6|188 000556 aa 6 00254 6211 00 eax1 pr6|172 000557 aa 020000 4310 07 fld 8192,dl 000560 aa 6 00044 3701 20 epp4 pr6|36,* 000561 la 4 00034 3521 20 epp2 pr4|28,* system_privilege_$reclassify_sys_seg 000562 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 132 end; STATEMENT 1 ON LINE 134 if ec ^= 0 then do; 000563 aa 6 00106 2361 00 ldq pr6|70 ec 000564 aa 000043 6000 04 tze 35,ic 000627 STATEMENT 1 ON LINE 135 if dir = "> " then dir = ""; 000565 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000566 aa 6 00111 00 0250 desc9a pr6|73,168 dir 000567 aa 777216 00 0003 desc9a -370,3 000003 = 076040040000 000570 aa 000004 6010 04 tnz 4,ic 000574 000571 aa 040 100 100 400 mlr (),(pr),fill(040) 000572 aa 000000 00 0000 desc9a 0,0 000573 aa 6 00111 00 0250 desc9a pr6|73,168 dir STATEMENT 1 ON LINE 136 call com_err_ (ec, whoami, "^a>^a", dir, ent); 000574 aa 777220 2370 04 ldaq -368,ic 000014 = 136141076136 141000000000 000575 aa 6 00236 7571 00 staq pr6|158 000576 aa 6 00106 3521 00 epp2 pr6|70 ec 000577 aa 6 00300 2521 00 spri2 pr6|192 000600 aa 6 00176 3521 00 epp2 pr6|126 whoami 000601 aa 6 00302 2521 00 spri2 pr6|194 000602 aa 6 00236 3521 00 epp2 pr6|158 000603 aa 6 00304 2521 00 spri2 pr6|196 000604 aa 6 00111 3521 00 epp2 pr6|73 dir 000605 aa 6 00306 2521 00 spri2 pr6|198 000606 aa 6 00163 3521 00 epp2 pr6|115 ent 000607 aa 6 00310 2521 00 spri2 pr6|200 000610 aa 777202 3520 04 epp2 -382,ic 000012 = 404000000043 000611 aa 6 00312 2521 00 spri2 pr6|202 000612 aa 777177 3520 04 epp2 -385,ic 000011 = 526000000030 000613 aa 6 00314 2521 00 spri2 pr6|204 000614 aa 777166 3520 04 epp2 -394,ic 000002 = 524000000005 000615 aa 6 00316 2521 00 spri2 pr6|206 000616 aa 777171 3520 04 epp2 -391,ic 000007 = 526000000250 000617 aa 6 00320 2521 00 spri2 pr6|208 000620 aa 777166 3520 04 epp2 -394,ic 000006 = 526000000040 000621 aa 6 00322 2521 00 spri2 pr6|210 000622 aa 6 00276 6211 00 eax1 pr6|190 000623 aa 024000 4310 07 fld 10240,dl 000624 aa 6 00044 3701 20 epp4 pr6|36,* 000625 la 4 00012 3521 20 epp2 pr4|10,* com_err_ 000626 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 137 end; STATEMENT 1 ON LINE 139 clean_up: if d_priv = 0 then call system_privilege_$dir_priv_off (ec); 000627 aa 6 00107 2361 00 ldq pr6|71 d_priv 000630 aa 000010 6010 04 tnz 8,ic 000640 000631 aa 6 00106 3521 00 epp2 pr6|70 ec 000632 aa 6 00224 2521 00 spri2 pr6|148 000633 aa 6 00222 6211 00 eax1 pr6|146 000634 aa 004000 4310 07 fld 2048,dl 000635 aa 6 00044 3701 20 epp4 pr6|36,* 000636 la 4 00022 3521 20 epp2 pr4|18,* system_privilege_$dir_priv_off 000637 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 140 if os_priv = 0 then call system_privilege_$soos_priv_off (ec); 000640 aa 6 00110 2361 00 ldq pr6|72 os_priv 000641 aa 000010 6010 04 tnz 8,ic 000651 000642 aa 6 00106 3521 00 epp2 pr6|70 ec 000643 aa 6 00224 2521 00 spri2 pr6|148 000644 aa 6 00222 6211 00 eax1 pr6|146 000645 aa 004000 4310 07 fld 2048,dl 000646 aa 6 00044 3701 20 epp4 pr6|36,* 000647 la 4 00026 3521 20 epp2 pr4|22,* system_privilege_$soos_priv_off 000650 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 142 return; 000651 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 144 abort: call com_err_ (0, whoami, "This command requires privileged access not given to this user."); 000652 aa 6 00221 4501 00 stz pr6|145 000653 aa 000 100 100 404 mlr (ic),(pr),fill(000) 000654 aa 777172 00 0100 desc9a -390,64 000045 = 124150151163 000655 aa 6 00254 00 0100 desc9a pr6|172,64 000656 aa 6 00221 3521 00 epp2 pr6|145 000657 aa 6 00300 2521 00 spri2 pr6|192 000660 aa 6 00176 3521 00 epp2 pr6|126 whoami 000661 aa 6 00302 2521 00 spri2 pr6|194 000662 aa 6 00254 3521 00 epp2 pr6|172 000663 aa 6 00304 2521 00 spri2 pr6|196 000664 aa 777115 3520 04 epp2 -435,ic 000001 = 404000000005 000665 aa 6 00306 2521 00 spri2 pr6|198 000666 aa 777123 3520 04 epp2 -429,ic 000011 = 526000000030 000667 aa 6 00310 2521 00 spri2 pr6|200 000670 aa 777110 3520 04 epp2 -440,ic 000000 = 524000000077 000671 aa 6 00312 2521 00 spri2 pr6|202 000672 aa 6 00276 6211 00 eax1 pr6|190 000673 aa 014000 4310 07 fld 6144,dl 000674 aa 6 00044 3701 20 epp4 pr6|36,* 000675 la 4 00012 3521 20 epp2 pr4|10,* com_err_ 000676 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 148 return; 000677 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 150 end reclassify_dir; END PROCEDURE reclassify_dir ----------------------------------------------------------- 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