COMPILATION LISTING OF SEGMENT print_auth_names Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1756.9 mst Thu 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 print_auth_names: pan: proc; 12 13 /* This procedure will print the names of the access categories and sensitivity 14* levels of the access isolation mechanism. There are four control arguments 15* for this command: 16* 17* -level list sensitivity levels 0 to system high level. 18* 19* -category, -cat list access categories in system high category set. 20* 21* -brief, -bf suppress titles. 22* 23* -all, -a list all possible level or category names (as requested) 24* . even if they are above system high. 25* 26* If neither the -level nor the -category options are specified, both options 27* are assumed as default. 28**/ 29 30 /* Originally coded 741218 by J. Whitmore */ 31 /* Modified 750102 by PG to use system_info_ */ 32 /* Modified 750417 by LJS */ 33 34 35 dcl long_name char (32), 36 (long, brief, lev, cat) bit (1) init ("0"b), 37 max_level fixed bin, 38 max_cat_set bit (18) aligned, 39 high ptr, 40 i fixed bin, 41 (level_names dim (0:7), category_names dim (18)) char (32), 42 (short_level_names dim (0:7), short_category_names dim (18)) char (8), 43 access_ceiling bit (72) aligned, 44 ec fixed bin (35), 45 sys_high char (400), 46 no_print bit (1) init ("1"b), 47 date char (24); 48 49 dcl (ioa_, com_err_) entry options (variable), 50 cu_$arg_count entry () returns (fixed bin), 51 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 52 date_time_ entry (fixed bin (71), char (*)), 53 clock_ entry () returns (fixed bin (71)), 54 system_info_$access_ceiling entry (bit (72) aligned), 55 system_info_$level_names entry (dim (0:7) char (32), dim (0:7) char (8)), 56 system_info_$category_names entry (dim (18) char (32), dim (18) char (8)); 57 58 dcl aptr ptr, 59 alen fixed bin, 60 arg char (alen) based (aptr), 61 nargs fixed bin; 62 63 dcl (addr, substr) builtin, 64 error_table_$badopt ext fixed bin (35); 65 1 1 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 1 2 1 3 /* Created 740723 by PG */ 1 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 1 5 1 6 /* This structure defines the components of both an access 1 7* class and an access authorization as interpreted by the 1 8* Access Isolation Mechanism. */ 1 9 1 10 1 11 dcl 1 aim_template aligned based, /* authorization/access class template */ 1 12 2 categories bit (36), /* access categories */ 1 13 2 level fixed bin (17) unaligned, /* sensitivity level */ 1 14 2 privileges unaligned, /* special access privileges (in authorization only) */ 1 15 (3 ipc, /* interprocess communication privilege */ 1 16 3 dir, /* directory privilege */ 1 17 3 seg, /* segment privilege */ 1 18 3 soos, /* security out-of-service privilege */ 1 19 3 ring1, /* ring 1 access privilege */ 1 20 3 rcp) bit (1), /* RCP resource access privilege */ 1 21 3 pad bit (12); 1 22 1 23 1 24 /* END INCLUDE FILE aim_template.incl.pl1 */ 66 67 68 69 nargs = cu_$arg_count (); 70 71 if nargs = 0 then do; /* if no arguments, take the default */ 72 lev, cat = "1"b; 73 go to start; 74 end; 75 76 do i = 1 to nargs; /* check the arguments ... what does he want printed? */ 77 78 call cu_$arg_ptr (i, aptr, alen, ec); 79 if ec ^= 0 then do; 80 err: 81 call com_err_ (ec, "print_auth_names", "^/Usage: print_auth_names -brief(-bf), -level, -category(-cat), -all(-a)"); 82 return; 83 end; 84 85 if arg = "-level" then lev = "1"b; 86 87 else if arg = "-cat" | arg = "-category" then cat = "1"b; 88 89 else if arg = "-bf" | arg = "-brief" then brief = "1"b; 90 91 else if arg = "-a" | arg = "-all" then long = "1"b; 92 93 else do; 94 ec = error_table_$badopt; 95 go to err; 96 end; 97 end; 98 99 if ^lev & ^cat then lev, cat = "1"b; /* default to both names if no option */ 100 101 102 start: /* get value of access ceiling */ 103 call system_info_$access_ceiling (access_ceiling); 104 105 if ^brief then do; /* do we print a heading? */ 106 107 call date_time_ (clock_ (), date); /* give the date...names change over time */ 108 call ioa_ ("^/Access Isolation Attribute Names - ^a", date); 109 110 end; 111 112 if long then do; /* see how much info we should print */ 113 max_level = 7; /* print 0 through 7 */ 114 max_cat_set = (18)"1"b; /* print each of the 18 categories */ 115 end; 116 else do; /* stay within the system high boundry */ 117 high = addr (access_ceiling); /* ptr to system high */ 118 max_level = high -> aim_template.level; /* copy system high level */ 119 max_cat_set = substr (high -> aim_template.categories, 1, 18); /* only the first 18 are defined */ 120 end; 121 122 if lev then do; /* print the level names? */ 123 124 call system_info_$level_names (level_names, short_level_names); 125 126 if max_level = 0 then do; /* there may be nothing to print */ 127 if level_names (0) ^= " " then do; /* name exists, so print */ 128 no_print = "0"b; /* indicate that something was printed */ 129 if ^brief then call ioa_ ("^/^-Sensitivity level"); /* title? */ 130 call ioa_ ("^-^11a^a", short_level_names (0), level_names (0)); /* print name */ 131 end; 132 end; 133 else do; /* he wants several names */ 134 no_print = "0"b; /* indicate that we printed */ 135 if ^brief then call ioa_ ("^/^-Sensitivity Levels^/^7xShort Name^-Long Name"); 136 do i = 0 to max_level; 137 long_name = level_names (i); 138 if long_name = "" then long_name = "*- NOT NAMED -*"; /* we should print something!! */ 139 call ioa_ ("^-^8a^2x^a", short_level_names (i), long_name); 140 end; 141 end; 142 end; 143 144 if cat then /* print category names? */ 145 146 if max_cat_set ^= (18)"0"b then do; /* is there anything to print? */ 147 call system_info_$category_names (category_names, short_category_names); 148 no_print = "0"b; /* yes, say we did it */ 149 if ^brief then call ioa_ ("^/^-Access Categories^/^7xShort Name^-Long Name"); /* short title? */ 150 do i = 1 to 18; 151 if substr (max_cat_set, i, 1) then do; 152 long_name = category_names (i); 153 if long_name = "" then long_name = "*- NOT NAMED -*"; /* again...print something */ 154 call ioa_ ("^-^8a^2x^a", short_category_names (i), long_name); 155 end; 156 end; 157 158 end; 159 160 161 162 if no_print then /* special case when no names were printed */ 163 if lev & cat then 164 call ioa_ ("The only acceptable access class is ""system_low""."); 165 else if lev then 166 call ioa_ ("There are no sensitivity levels defined."); 167 else call ioa_ ("There are no access categories defined."); 168 169 return; 170 end print_auth_names; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1624.5 print_auth_names.pl1 >dumps>old>recomp>print_auth_names.pl1 66 1 02/01/79 1023.7 aim_template.incl.pl1 >ldd>include>aim_template.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. access_ceiling 000526 automatic bit(72) dcl 35 set ref 102* 117 addr builtin function dcl 63 ref 117 aim_template based structure level 1 dcl 1-11 alen 000542 automatic fixed bin(17,0) dcl 58 set ref 78* 85 87 87 89 89 91 91 aptr 000540 automatic pointer dcl 58 set ref 78* 85 87 87 89 89 91 91 arg based char unaligned dcl 58 ref 85 87 87 89 89 91 91 brief 000111 automatic bit(1) initial unaligned dcl 35 set ref 35* 89* 105 129 135 149 cat 000113 automatic bit(1) initial unaligned dcl 35 set ref 35* 72* 87* 99 99* 144 162 categories based bit(36) level 2 dcl 1-11 ref 119 category_names 000221 automatic char(32) array unaligned dcl 35 set ref 147* 152 clock_ 000022 constant entry external dcl 49 ref 107 107 com_err_ 000012 constant entry external dcl 49 ref 80 cu_$arg_count 000014 constant entry external dcl 49 ref 69 cu_$arg_ptr 000016 constant entry external dcl 49 ref 78 date 000532 automatic char(24) unaligned dcl 35 set ref 107* 108* date_time_ 000020 constant entry external dcl 49 ref 107 ec 000530 automatic fixed bin(35,0) dcl 35 set ref 78* 79 80* 94* error_table_$badopt 000032 external static fixed bin(35,0) dcl 63 ref 94 high 000116 automatic pointer dcl 35 set ref 117* 118 119 i 000120 automatic fixed bin(17,0) dcl 35 set ref 76* 78* 136* 137 139* 150* 151 152 154* ioa_ 000010 constant entry external dcl 49 ref 108 129 130 135 139 149 154 162 165 167 lev 000112 automatic bit(1) initial unaligned dcl 35 set ref 35* 72* 85* 99 99* 122 162 165 level 1 based fixed bin(17,0) level 2 packed unaligned dcl 1-11 ref 118 level_names 000121 automatic char(32) array unaligned dcl 35 set ref 124* 127 130* 137 long 000110 automatic bit(1) initial unaligned dcl 35 set ref 35* 91* 112 long_name 000100 automatic char(32) unaligned dcl 35 set ref 137* 138 138* 139* 152* 153 153* 154* max_cat_set 000115 automatic bit(18) dcl 35 set ref 114* 119* 144 151 max_level 000114 automatic fixed bin(17,0) dcl 35 set ref 113* 118* 126 136 nargs 000543 automatic fixed bin(17,0) dcl 58 set ref 69* 71 76 no_print 000531 automatic bit(1) initial unaligned dcl 35 set ref 35* 128* 134* 148* 162 short_category_names 000461 automatic char(8) array unaligned dcl 35 set ref 147* 154* short_level_names 000441 automatic char(8) array unaligned dcl 35 set ref 124* 130* 139* substr builtin function dcl 63 ref 119 151 system_info_$access_ceiling 000024 constant entry external dcl 49 ref 102 system_info_$category_names 000030 constant entry external dcl 49 ref 147 system_info_$level_names 000026 constant entry external dcl 49 ref 124 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. sys_high automatic char(400) unaligned dcl 35 NAMES DECLARED BY EXPLICIT CONTEXT. err 000275 constant label dcl 80 ref 95 pan 000215 constant entry external dcl 11 print_auth_names 000225 constant entry external dcl 11 start 000415 constant label dcl 102 ref 73 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1224 1260 1067 1234 Length 1464 1067 34 167 135 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pan 408 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pan 000100 long_name pan 000110 long pan 000111 brief pan 000112 lev pan 000113 cat pan 000114 max_level pan 000115 max_cat_set pan 000116 high pan 000120 i pan 000121 level_names pan 000221 category_names pan 000441 short_level_names pan 000461 short_category_names pan 000526 access_ceiling pan 000530 ec pan 000531 no_print pan 000532 date pan 000540 aptr pan 000542 alen pan 000543 nargs pan THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ cu_$arg_count cu_$arg_ptr date_time_ ioa_ system_info_$access_ceiling system_info_$category_names system_info_$level_names THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 35 000204 11 000214 69 000233 71 000242 72 000244 73 000247 76 000250 78 000256 79 000273 80 000275 82 000325 85 000326 87 000337 89 000352 91 000365 94 000400 95 000403 97 000404 99 000406 102 000415 105 000424 107 000430 108 000454 112 000474 113 000476 114 000500 115 000502 117 000503 118 000505 119 000510 122 000513 124 000515 126 000526 127 000530 128 000534 129 000535 130 000556 132 000601 134 000602 135 000603 136 000621 137 000627 138 000634 139 000643 140 000672 144 000674 147 000700 148 000711 149 000712 150 000730 151 000735 152 000741 153 000746 154 000755 156 001004 162 001006 165 001031 167 001050 169 001064 ----------------------------------------------------------- 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