COMPILATION LISTING OF SEGMENT admin_util Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1024.8 mst Wed 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 /* format: style4 */ 12 admin_util: proc; 13 14 /* originally coded by K.Willis 4/5/71 */ 15 /* upgraded for version 2 pl/1 July 1972 by J.Phillipps */ 16 /* Modified by T.H. VanVleck, .... 1974 to include default values for a new project */ 17 /* Modified by T. Casey, Feb 1975 to fix bugs */ 18 /* Modified by T. Casey, September 1977 to allow deletions of uwt table entries. */ 19 /* Modified by E. N. Kittlitz, June 1982 for user_attributes.incl.pl1. */ 20 /* Modified 1984-09-11 BIM for removal of max_users. */ 21 /* Modified 1984-12-14 by EJ Sharpe for addition of default_audit_flags, also 22* removed log_control references for Benson */ 23 24 dcl bchr char (al) based (ap) unaligned, 25 ap ptr, 26 (i, j) fixed bin, 27 al fixed bin, 28 ec fixed bin (35), 29 ttt fixed bin init (60), 30 dum char (12) aligned, 31 (has, hasnt) bit (36), 32 uname char (24) aligned, 33 key char (32) aligned, 34 wt fixed bin, 35 sadp ptr, 36 (satp, satep) ptr init (null), 37 atts char (512) var, 38 flags_str char (256), 39 datstr char (24) aligned; 40 41 dcl parse_attributes_ entry (char (*) aligned, bit (36), bit (36), fixed bin (35)), 42 format_attributes_ entry (ptr, char (*) var), 43 date_time_ entry (fixed bin (71), char (*) aligned), 44 get_wdir_ entry () returns (char (168) aligned), 45 user_info_ entry options (variable), 46 hcs_$terminate_noname entry (ptr, fixed bin (35)), 47 hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, 48 fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 49 error_table_$lock_wait_time_exceeded fixed bin (35) ext, 50 error_table_$badopt fixed bin (35) ext, 51 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 52 com_err_ entry options (variable), 53 set_lock_$unlock entry (bit (36) aligned, fixed bin (35)), 54 set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)), 55 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 56 signal_ entry (char (*)), 57 ioa_ entry options (variable), 58 convert_access_audit_flags_$from_string entry (char (*), bit (36) aligned, fixed bin (35)), 59 convert_access_audit_flags_$to_string entry (bit (36) aligned, char (*), fixed bin (35)); 60 61 62 dcl (addr, null) builtin; 63 64 dcl 1 default_attributes aligned based (addr (sys_admin_data.default_proj_attributes)), 65 2 at aligned like user_attributes; 66 67 /* ----------------------------------- */ 68 69 call cu_$arg_ptr (1, ap, al, ec); 70 if ec ^= 0 then do; 71 er: call com_err_ (ec, "admin_util", ""); 72 return; 73 end; 74 call hcs_$initiate ((get_wdir_ ()), "sys_admin_data", "", 0, 1, sadp, ec); 75 if sadp = null then go to er; 76 if bchr = "lock" then do; 77 call cu_$arg_ptr (2, ap, al, ec); 78 if ec ^= 0 then ttt = 60; 79 else do; 80 ttt = cv_dec_check_ (bchr, ec); 81 if ec ^= 0 then go to badarg; 82 end; 83 call lock_sad; 84 end; 85 else if bchr = "unlock" then do; 86 call set_lock_$unlock (sadp -> sys_admin_data.lock, ec); 87 if ec ^= 0 then go to er; 88 end; 89 else if bchr = "print" then do; 90 call ioa_ ("^/SYS ADMIN DATA"); 91 if sys_admin_data.lock = (36)"0"b then dum = "-unlocked-"; else dum = "-locked-"; 92 call ioa_ ("^/lock:^-^-^a", dum); 93 call ioa_ ("locker:^-^-^a", sys_admin_data.locker); 94 call ioa_ (""); 95 call ioa_ ("user_accts_office:^-^a", sys_admin_data.user_accounts_office); 96 call ioa_ ("user_accts_addr:^-^a", sys_admin_data.user_accounts_addr); 97 call ioa_ ("user_accts_phone:^-^a", sys_admin_data.user_accounts_phone); 98 call ioa_ ("mailing banner:"); 99 do i = 1 to 3; 100 call ioa_ ("^10xb^d:^-^a", i, sys_admin_data.mailing_banner (i)); 101 end; 102 call ioa_ ("^/Default project attributes:"); 103 call format_attributes_ (addr (sys_admin_data.default_proj_attributes), atts); 104 call ioa_ ("Attributes:^-^a", atts); 105 call ioa_ ("Init_ring:^-^d", sys_admin_data.default_proj_ring1); 106 call ioa_ ("Max_ring:^-^-^d", sys_admin_data.default_proj_ring2); 107 call ioa_ ("Group:^-^-^a", sys_admin_data.default_proj_group); 108 call ioa_ ("Grace:^-^-^d", sys_admin_data.default_proj_grace); 109 call convert_access_audit_flags_$to_string (sys_admin_data.default_audit_flags, flags_str, ec); 110 if ec ^= 0 then flags_str = "invalid binary flags"; 111 call ioa_ ("Audit flags:^-^a", flags_str); 112 end; 113 else if bchr = "dft" then go to dfts; 114 else if bchr = "default" then go to dfts; 115 else if bchr = "set" then do; 116 dfts: call cu_$arg_ptr (2, ap, al, ec); 117 if ec ^= 0 then go to er; 118 key = bchr; 119 call cu_$arg_ptr (3, ap, al, ec); 120 if ec ^= 0 then go to er; 121 call lock_sad; 122 if key = "user_accts" then sys_admin_data.user_accounts_office = bchr; 123 else if key = "user_accts_addr" then sys_admin_data.user_accounts_addr = bchr; 124 else if key = "user_accts_phone" then sys_admin_data.user_accounts_phone = bchr; 125 else if key = "user_accts_office" then sys_admin_data.user_accounts_office = bchr; 126 else if key = "b1" then sys_admin_data.mailing_banner (1) = bchr; 127 else if key = "b2" then sys_admin_data.mailing_banner (2) = bchr; 128 else if key = "b3" then sys_admin_data.mailing_banner (3) = bchr; 129 else if key = "attributes" then do; 130 call parse_attributes_ ((bchr), has, hasnt, ec); 131 if ec ^= 0 then go to badarg1; 132 133 /* The meanings of the primary, secondary (standby), and edit_only bits 134* in the attributes word are reversed for internal versus external use. 135* Internally, a 1-bit means a user is allowed to log in as a primary, 136* secondary, or edit_only user. Externally, when an administrator edits attributes, he 137* must type the keywords no_primary, no_secondary, or no_edit_only (for historical reasons). 138* The parse_attributes_ subroutine returns a 1-bit for no_prime, and a 0-bit for ^no_prime, for example. 139* To resolve this incompatibility, we complement the current internal values of these bits, 140* so they become compatible with the external input values. Then we make the requested changes. 141* Finally, we complement these 3 bits back to their internal values. 142**/ 143 144 default_attributes.at.pm_ok = ^default_attributes.at.pm_ok; 145 default_attributes.at.sb_ok = ^default_attributes.at.sb_ok; 146 default_attributes.at.eo_ok = ^default_attributes.at.eo_ok; 147 sys_admin_data.default_proj_attributes = sys_admin_data.default_proj_attributes & ^hasnt; 148 sys_admin_data.default_proj_attributes = sys_admin_data.default_proj_attributes | has; 149 default_attributes.at.pm_ok = ^default_attributes.at.pm_ok; 150 default_attributes.at.sb_ok = ^default_attributes.at.sb_ok; 151 default_attributes.at.eo_ok = ^default_attributes.at.eo_ok; 152 end; 153 else if key = "init_ring" then do; 154 sys_admin_data.default_proj_ring1 = cv_dec_check_ (bchr, ec); 155 if ec ^= 0 then go to badarg1; 156 end; 157 else if key = "max_ring" then do; 158 sys_admin_data.default_proj_ring2 = cv_dec_check_ (bchr, ec); 159 if ec ^= 0 then go to badarg1; 160 end; 161 else if key = "group" then sys_admin_data.default_proj_group = bchr; 162 else if key = "grace" then do; 163 sys_admin_data.default_proj_grace = cv_dec_check_ (bchr, ec); 164 if ec ^= 0 then go to badarg1; 165 end; 166 else if key = "audit" | key = "audit_flags" then do; 167 call convert_access_audit_flags_$from_string (bchr, 168 sys_admin_data.default_audit_flags, ec); 169 if ec ^= 0 then go to badarg1; 170 end; 171 else if key = "uwt" then do; 172 if bchr = "dl" | bchr = "delete" | bchr = "-dl" | bchr = "-delete" 173 then wt = -1; /* remember to delete it */ 174 else do; /* convert weight */ 175 wt = cv_dec_check_ (bchr, ec); 176 if ec ^= 0 | wt < 0 then go to badarg1; 177 end; 178 call cu_$arg_ptr (4, ap, al, ec); 179 if ec ^= 0 then do; 180 call com_err_ (ec, "admin_util", ""); 181 go to badarg2; 182 end; 183 call get_sat; 184 do i = 1 to sat.uwt_size while (sat.uwt (i).initproc ^= bchr); end; 185 if wt = -1 & i > sat.uwt_size then do; /* if one to be deleted was not found */ 186 call com_err_ (0, "admin_util", "^a not in table", bchr); 187 goto badarg2; 188 end; 189 if i > 24 then do; 190 call com_err_ (0, "admin_util", "UWT overflow. Maximum 24"); 191 go to badarg2; 192 end; 193 if wt = -1 then do; /* delete this one */ 194 do j = i + 1 to sat.uwt_size; /* move the others up */ 195 sat.uwt (j - 1).initproc = sat.uwt (j).initproc; 196 sat.uwt (j - 1).units = sat.uwt (j).units; 197 end; 198 sat.uwt_size = sat.uwt_size - 1; /* decrement the count */ 199 end; 200 else do; /* add this one */ 201 sat.uwt_size = max (i, sat.uwt_size); 202 sat.uwt (i).initproc = bchr; 203 sat.uwt (i).units = wt; 204 end; 205 end; 206 else if key = "administrator1" then do; 207 call get_sat; 208 sat.system_admin (1) = bchr; 209 end; 210 else if key = "administrator2" then do; 211 call get_sat; 212 sat.system_admin (2) = bchr; 213 end; 214 else if key = "max_units" then do; 215 call get_sat; 216 sat.max_units = cv_dec_check_ (bchr, ec); 217 if ec ^= 0 then go to badarg1; 218 end; 219 else do; 220 badarg1: call com_err_ (error_table_$badopt, "admin_util", bchr); 221 end; 222 badarg2: call set_lock_$unlock (sys_admin_data.lock, ec); 223 if ec ^= 0 then go to er; 224 if satp ^= null then call hcs_$terminate_noname (satp, ec); 225 end; 226 else do; 227 badarg: call com_err_ (error_table_$badopt, "admin_util", bchr); 228 end; 229 call hcs_$terminate_noname (sadp, ec); 230 231 /* ----------------------------------------- */ 232 233 lock_sad: proc; 234 235 call set_lock_$lock (sadp -> sys_admin_data.lock, ttt, ec); 236 if ec = error_table_$lock_wait_time_exceeded then do; 237 call com_err_ (ec, "admin_util", "sys_admin_data locked by ^a", locker); 238 call signal_ ("program_interrupt"); /* can't use pl1 signal - default_error_handler_ */ 239 return; 240 end; 241 call user_info_ (uname); 242 sys_admin_data.locker = uname; 243 244 end; 245 246 get_sat: proc; 247 248 call hcs_$initiate ((get_wdir_ ()), "smf.cur.sat", "", 0, 1, satp, ec); 249 if satp = null then go to er; 250 251 end; 252 1 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 1 2 1 3 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 1 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 1 9* Expand comment line of project.state to include the renamed state (state = 1 10* 3). 1 11* END HISTORY COMMENTS */ 1 12 1 13 1 14 1 15 /* Modified 740723 by PG to add AIM info */ 1 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 1 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 1 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 1 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 1 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 1 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 1 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 1 23 1 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 1 25 1 26 SAT_header_lth init (466), /* length in words of SAT header */ 1 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 1 28 1 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 1 30 ) fixed bin internal static options (constant); 1 31 1 32 dcl 1 sat based (satp) aligned, 1 33 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 34 1 35 2 max_size fixed bin, /* max number of entries table can grow */ 1 36 2 current_size fixed bin, /* current size of table (in entries) */ 1 37 2 version fixed bin, /* version number of table (word 32) */ 1 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 1 39 2 n_projects fixed bin, /* number of entries actually used */ 1 40 2 pad_was_max_users bit (36) aligned, 1 41 2 max_units fixed bin, /* maximum number of login-units per session */ 1 42 2 pad_was_max_prim bit (36) aligned, 1 43 2 uwt_size fixed bin, /* size of User Weight Table */ 1 44 2 uwt (24) aligned, /* User Weight Table */ 1 45 3 initproc char (64) unaligned, /* user's initial procedure */ 1 46 3 units fixed bin, /* weight of initial procedure */ 1 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 1 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 1 49 2 project (3258), /* The SAT entries. 255K segment. */ 1 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 1 51 1 52 1 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 1 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 1 55 2 project_id char (12) unaligned, /* project's name */ 1 56 2 project_dir char (64) unaligned, /* project's directory */ 1 57 2 pdt_ptr pointer, /* pointer to current PDT */ 1 58 2 max_users fixed bin, /* maximum number of users from project */ 1 59 2 n_users fixed bin, /* current number */ 1 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 1 61 2 admin (4) aligned, /* list of project's administrators */ 1 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 1 63 3 pad char (2) unal, 1 64 2 cutoff char (1), /* if project is cut off, why. */ 1 65 2 min_ring fixed bin, /* lowest ring for project */ 1 66 2 max_ring fixed bin, /* highest ring for project */ 1 67 2 alias char (8) unal, /* project alias */ 1 68 2 group char (8) unal, /* default group for this project */ 1 69 2 grace_max fixed bin, /* maximum bump grace */ 1 70 2 audit bit (36), /* audit flags for project */ 1 71 2 project_authorization (2) bit (72), /* authorization of this project */ 1 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 1 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 1 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 1 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 1 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 1 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 1 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 1 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 1 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 1 81 2 satpad1 fixed bin (9) unsigned unaligned, 1 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 1 83 2 chain fixed bin; /* if free entry, chain */ 1 84 1 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 253 254 3 1 /* BEGIN INCLUDE FILE ... sys_admin_data.incl.pl1 */ 3 2 3 3 /* This data base is writeable by all system administrators. 3 4* It resides in the working directory of the system administrators. 3 5* The important item in this data base is "lock", which is used to prevent 3 6* two administrators from modifying the system administration data bases simultaneously. */ 3 7 3 8 /* Modified 1984-12-14 by EJ Sharpe to add default_audit_flags, and remove log_control */ 3 9 3 10 dcl 1 sys_admin_data based (sadp) aligned, 3 11 2 lock bit (36), 3 12 2 locker char (24), /* name of person using table */ 3 13 2 sadxx fixed bin, 3 14 2 time_locked fixed bin (71), 3 15 2 pntno fixed bin, 3 16 2 pnt_entries_to_install bit (1), 3 17 2 smf_entries_to_install bit (1), 3 18 2 pad1 (97) fixed bin, /* was log_control stuff before MR11 */ 3 19 2 user_accounts_office char (64), 3 20 2 user_accounts_addr char (64), 3 21 2 user_accounts_phone char (16), 3 22 2 mailing_banner (3) char (10), /* Used by mailing_page_ */ 3 23 2 default_proj_attributes bit (36), /* Used by new_proj */ 3 24 2 default_proj_ring1 fixed bin, /* .. */ 3 25 2 default_proj_ring2 fixed bin, /* .. */ 3 26 2 default_proj_group char (8), /* .. */ 3 27 2 default_proj_grace fixed bin, /* .. */ 3 28 2 default_audit_flags bit (36) aligned; /* initial set of flags for new_user and edit_proj */ 3 29 3 30 /* END INCLUDE FILE .. sys_admin_data.incl.pl1 */ 255 256 4 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 4 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 4 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 4 8* attribute switches. 4 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 4 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 4 12* be deleted. 4 13* B) Add constants identifying attributes that can be changed by user at 4 14* login, etc. 4 15* END HISTORY COMMENTS */ 4 16 4 17 4 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 4 19 4 20 /* format: style4 */ 4 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 4 22 (2 administrator bit (1), /* 1 system administrator privileges */ 4 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 4 24 2 nobump bit (1), /* 2 user cannot be bumped */ 4 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 4 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 4 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 4 28* . of same project (distinct from "nobump") */ 4 29 2 nolist bit (1), /* 7 don't list user on "who" */ 4 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 4 31 2 multip bit (1), /* 9 user may have several processes */ 4 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 4 33 2 brief bit (1), /* 11 no login or logout message */ 4 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 4 35 2 vhomedir bit (1), /* 13 user may change homedir */ 4 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 4 37 2 sb_ok bit (1), /* 15 user may be standby */ 4 38 2 pm_ok bit (1), /* 16 user may be primary */ 4 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 4 40 2 daemon bit (1), /* 18 user may login as daemon */ 4 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 4 42 2 no_warning bit (1), /* 20 no warning message */ 4 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 4 44* . in PDT: this user has an individual load control group */ 4 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 4 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 4 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 4 48 2 pad bit (12)) unaligned; 4 49 4 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 4 51 ("none", /* 0 */ 4 52 "administrator", /* 1 */ 4 53 "primary_line", /* 2 */ 4 54 "nobump", /* 3 */ 4 55 "guaranteed_login", /* 4 */ 4 56 "anonymous", /* 5 */ 4 57 "nopreempt", /* 6 */ 4 58 "nolist", /* 7 */ 4 59 "dialok", /* 8 */ 4 60 "multip", /* 9 */ 4 61 "bumping", /* 10 */ 4 62 "brief", /* 11 */ 4 63 "vinitproc", /* 12 */ 4 64 "vhomedir", /* 13 */ 4 65 "nostartup", /* 14 */ 4 66 "no_secondary", /* 15 */ 4 67 "no_prime", /* 16 */ 4 68 "no_eo", /* 17 */ 4 69 "daemon", /* 18 */ 4 70 "", /* 19 vdim OBSOLETE */ 4 71 "no_warning", /* 20 */ 4 72 "igroup", /* 21 */ 4 73 "save_pdir", /* 22 */ 4 74 "disconnect_ok", /* 23 */ 4 75 "save_on_disconnect"); /* 24 */ 4 76 4 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 4 78 ("null", /* 0 */ 4 79 "admin", /* 1 */ 4 80 "", "", /* 2 - 3 */ 4 81 "guar", /* 4 */ 4 82 "anon", /* 5 */ 4 83 "", "", /* 6 - 7 */ 4 84 "dial", /* 8 */ 4 85 "multi_login", /* 9 */ 4 86 "preempting", /* 10 */ 4 87 "", /* 11 */ 4 88 "v_process_overseer", /* 12 */ 4 89 "v_home_dir", /* 13 */ 4 90 "no_start_up", /* 14 */ 4 91 "no_sec", /* 15 */ 4 92 "no_primary", /* 16 */ 4 93 "no_edit_only", /* 17 */ 4 94 "op_login", /* 18 */ 4 95 "", /* 19 */ 4 96 "nowarn", /* 20 */ 4 97 "", "", "", /* 21 - 23 */ 4 98 "save"); /* 24 */ 4 99 4 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 4 101 options(constant) init("000000000010000000010000000000000000"b); 4 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 4 103 4 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 4 105 options(constant) init("000000000010000000010000000000000000"b); 4 106 /* PDT value for (brief, no_warning) is default */ 4 107 4 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 4 109 options(constant) init("000100000110010000010000000000000000"b); 4 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 4 111 5 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 5 2 5 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 4 /* */ 5 5 /* This include file describes the attributes of an absentee job. It is */ 5 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 5 7 /* and PIT.incl.pl1. */ 5 8 /* */ 5 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 10 5 11 /****^ HISTORY COMMENTS: 5 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 5 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 14* Separated abs_attributes from the request structure 5 15* (abs_message_format.incl.pl1) so that the identical structure could be 5 16* used in the ute structure (user_table_entry.incl.pl1). 5 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 5 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 19* Added ABS_ATTRIBUTE_NAMES array. 5 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 5 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 5 22* Added the no_start_up flag. SCP6367 5 23* END HISTORY COMMENTS */ 5 24 5 25 dcl 1 user_abs_attributes aligned based, 5 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 5 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 5 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 5 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 5 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 5 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 5 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 5 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 5 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 5 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 5 36 2 attributes_pad bit (26) unaligned; 5 37 5 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 5 39 "restartable", 5 40 "user_deferred_until_time", 5 41 "proxy", 5 42 "set_bit_cnt", 5 43 "time_in_gmt", 5 44 "user_deferred_indefinitely", 5 45 "secondary_ok", 5 46 "truncate_absout", 5 47 "restarted", 5 48 "no_start_up"); 5 49 5 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 5 51 4 112 4 113 4 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 257 258 259 end admin_util; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0940.7 admin_util.pl1 >special_ldd>install>MR12.2-1047>admin_util.pl1 253 1 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 1-34 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 255 3 01/30/85 1523.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 257 4 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 4-112 5 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.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. addr builtin function dcl 62 ref 103 103 144 144 145 145 146 146 149 149 150 150 151 151 al 000104 automatic fixed bin(17,0) dcl 24 set ref 69* 76 77* 80 80 85 89 113 114 115 116* 118 119* 122 123 124 125 126 127 128 130 154 154 158 158 161 163 163 167 167 172 172 172 172 175 175 178* 184 186 186 202 208 212 216 216 220 220 227 227 ap 000100 automatic pointer dcl 24 set ref 69* 76 77* 80 85 89 113 114 115 116* 118 119* 122 123 124 125 126 127 128 130 154 158 161 163 167 172 172 172 172 175 178* 184 186 202 208 212 216 220 227 at based structure level 2 dcl 64 atts 000142 automatic varying char(512) dcl 24 set ref 103* 104* bchr based char packed unaligned dcl 24 set ref 76 80* 85 89 113 114 115 118 122 123 124 125 126 127 128 130 154* 158* 161 163* 167* 172 172 172 172 175* 184 186* 202 208 212 216* 220* 227* com_err_ 000032 constant entry external dcl 41 ref 71 180 186 190 220 227 237 convert_access_audit_flags_$from_string 000046 constant entry external dcl 41 ref 167 convert_access_audit_flags_$to_string 000050 constant entry external dcl 41 ref 109 cu_$arg_ptr 000030 constant entry external dcl 41 ref 69 77 116 119 178 cv_dec_check_ 000040 constant entry external dcl 41 ref 80 154 158 163 175 216 default_attributes based structure level 1 dcl 64 default_audit_flags 241 based bit(36) level 2 dcl 3-10 set ref 109* 167* default_proj_attributes 233 based bit(36) level 2 dcl 3-10 set ref 103 103 144 144 145 145 146 146 147* 147 148* 148 149 149 150 150 151 151 default_proj_grace 240 based fixed bin(17,0) level 2 dcl 3-10 set ref 108* 163* default_proj_group 236 based char(8) level 2 dcl 3-10 set ref 107* 161* default_proj_ring1 234 based fixed bin(17,0) level 2 dcl 3-10 set ref 105* 154* default_proj_ring2 235 based fixed bin(17,0) level 2 dcl 3-10 set ref 106* 158* dum 000107 automatic char(12) dcl 24 set ref 91* 91* 92* ec 000105 automatic fixed bin(35,0) dcl 24 set ref 69* 70 71* 74* 77* 78 80* 81 86* 87 109* 110 116* 117 119* 120 130* 131 154* 155 158* 159 163* 164 167* 169 175* 176 178* 179 180* 216* 217 222* 223 224* 229* 235* 236 237* 248* eo_ok 0(16) based bit(1) level 3 packed packed unaligned dcl 64 set ref 146* 146 151* 151 error_table_$badopt 000026 external static fixed bin(35,0) dcl 41 set ref 220* 227* error_table_$lock_wait_time_exceeded 000024 external static fixed bin(35,0) dcl 41 ref 236 flags_str 000343 automatic char(256) packed unaligned dcl 24 set ref 109* 110* 111* format_attributes_ 000012 constant entry external dcl 41 ref 103 get_wdir_ 000014 constant entry external dcl 41 ref 74 248 has 000112 automatic bit(36) packed unaligned dcl 24 set ref 130* 148 hasnt 000113 automatic bit(36) packed unaligned dcl 24 set ref 130* 147 hcs_$initiate 000022 constant entry external dcl 41 ref 74 248 hcs_$terminate_noname 000020 constant entry external dcl 41 ref 224 229 i 000102 automatic fixed bin(17,0) dcl 24 set ref 99* 100* 100* 184* 184* 185 189 194 201 202 203 initproc 46 based char(64) array level 3 packed packed unaligned dcl 1-32 set ref 184 195* 195 202* ioa_ 000044 constant entry external dcl 41 ref 90 92 93 94 95 96 97 98 100 102 104 105 106 107 108 111 j 000103 automatic fixed bin(17,0) dcl 24 set ref 194* 195 195 196 196* key 000122 automatic char(32) dcl 24 set ref 118* 122 123 124 125 126 127 128 129 153 157 161 162 166 166 171 206 210 214 lock based bit(36) level 2 dcl 3-10 set ref 86* 91 222* 235* locker 1 based char(24) level 2 dcl 3-10 set ref 93* 237* 242* mailing_banner 222 based char(10) array level 2 dcl 3-10 set ref 100* 126* 127* 128* max_units 43 based fixed bin(17,0) level 2 dcl 1-32 set ref 216* null builtin function dcl 62 ref 24 24 75 224 249 parse_attributes_ 000010 constant entry external dcl 41 ref 130 pm_ok 0(15) based bit(1) level 3 packed packed unaligned dcl 64 set ref 144* 144 149* 149 sadp 000134 automatic pointer dcl 24 set ref 74* 75 86 91 93 95 96 97 100 103 103 105 106 107 108 109 122 123 124 125 126 127 128 144 144 145 145 146 146 147 147 148 148 149 149 150 150 151 151 154 158 161 163 167 222 229* 235 237 242 sat based structure level 1 dcl 1-32 satep 000140 automatic pointer initial dcl 24 set ref 24* satp 000136 automatic pointer initial dcl 24 set ref 24* 184 184 185 194 195 195 196 196 198 198 201 201 202 203 208 212 216 224 224* 248* 249 sb_ok 0(14) based bit(1) level 3 packed packed unaligned dcl 64 set ref 145* 145 150* 150 set_lock_$lock 000036 constant entry external dcl 41 ref 235 set_lock_$unlock 000034 constant entry external dcl 41 ref 86 222 signal_ 000042 constant entry external dcl 41 ref 238 sys_admin_data based structure level 1 dcl 3-10 system_admin 676 based char(32) array level 2 packed packed unaligned dcl 1-32 set ref 208* 212* ttt 000106 automatic fixed bin(17,0) initial dcl 24 set ref 24* 78* 80* 235* uname 000114 automatic char(24) dcl 24 set ref 241* 242 units 66 based fixed bin(17,0) array level 3 dcl 1-32 set ref 196* 196 203* user_accounts_addr 176 based char(64) level 2 dcl 3-10 set ref 96* 123* user_accounts_office 156 based char(64) level 2 dcl 3-10 set ref 95* 122* 125* user_accounts_phone 216 based char(16) level 2 dcl 3-10 set ref 97* 124* user_attributes based structure level 1 dcl 4-21 user_info_ 000016 constant entry external dcl 41 ref 241 uwt 46 based structure array level 2 dcl 1-32 uwt_size 45 based fixed bin(17,0) level 2 dcl 1-32 set ref 184 185 194 198* 198 201* 201 wt 000132 automatic fixed bin(17,0) dcl 24 set ref 172* 175* 176 185 193 203 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 5-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 4-77 SAT_entry_lth internal static fixed bin(17,0) initial dcl 1-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 1-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 1-24 SAT_version internal static fixed bin(17,0) initial dcl 1-24 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 4-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 4-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 4-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 4-50 date_time_ 000000 constant entry external dcl 41 datstr automatic char(24) dcl 24 project based structure level 1 dcl 1-53 user_abs_attributes based structure level 1 dcl 5-25 NAMES DECLARED BY EXPLICIT CONTEXT. admin_util 000303 constant entry external dcl 12 badarg 002552 constant label dcl 227 ref 81 badarg1 002471 constant label dcl 220 ref 131 155 159 164 169 176 217 badarg2 002521 constant label dcl 222 ref 181 187 191 dfts 001314 constant label dcl 116 ref 113 114 er 000335 constant label dcl 71 ref 75 87 117 120 223 249 get_sat 002722 constant entry internal dcl 246 ref 183 207 211 215 lock_sad 002614 constant entry internal dcl 233 ref 83 121 NAME DECLARED BY CONTEXT OR IMPLICATION. max builtin function ref 201 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3234 3306 3014 3244 Length 3634 3014 52 311 217 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME admin_util 522 external procedure is an external procedure. lock_sad internal procedure shares stack frame of external procedure admin_util. get_sat internal procedure shares stack frame of external procedure admin_util. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME admin_util 000100 ap admin_util 000102 i admin_util 000103 j admin_util 000104 al admin_util 000105 ec admin_util 000106 ttt admin_util 000107 dum admin_util 000112 has admin_util 000113 hasnt admin_util 000114 uname admin_util 000122 key admin_util 000132 wt admin_util 000134 sadp admin_util 000136 satp admin_util 000140 satep admin_util 000142 atts admin_util 000343 flags_str admin_util THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_access_audit_flags_$from_string convert_access_audit_flags_$to_string cu_$arg_ptr cv_dec_check_ format_attributes_ get_wdir_ hcs_$initiate hcs_$terminate_noname ioa_ parse_attributes_ set_lock_$lock set_lock_$unlock signal_ user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$lock_wait_time_exceeded LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000302 24 000310 69 000315 70 000333 71 000335 72 000362 74 000363 75 000444 76 000450 77 000456 78 000475 80 000500 81 000525 83 000527 84 000530 85 000531 86 000535 87 000546 88 000550 89 000551 90 000555 91 000574 91 000602 92 000605 93 000630 94 000654 95 000665 96 000706 97 000732 98 000753 99 000772 100 000777 101 001027 102 001031 103 001045 104 001065 105 001110 106 001134 107 001160 108 001203 109 001225 110 001247 111 001254 112 001277 113 001300 114 001304 115 001310 116 001314 117 001333 118 001335 119 001342 120 001361 121 001363 122 001364 123 001377 124 001412 125 001425 126 001440 127 001453 128 001466 129 001501 130 001505 131 001541 144 001544 145 001555 146 001565 147 001575 148 001600 149 001602 150 001612 151 001622 152 001632 153 001633 154 001637 155 001665 156 001667 157 001670 158 001674 159 001722 160 001724 161 001725 162 001740 163 001744 164 001772 165 001774 166 001775 167 002005 169 002032 170 002034 171 002035 172 002041 175 002066 176 002113 178 002117 179 002136 180 002140 181 002165 183 002166 184 002167 184 002210 185 002212 186 002221 187 002264 189 002265 190 002270 191 002321 193 002322 194 002325 195 002337 196 002347 197 002353 198 002355 199 002360 201 002361 202 002367 203 002377 205 002402 206 002403 207 002407 208 002410 209 002416 210 002417 211 002423 212 002424 213 002432 214 002433 215 002437 216 002440 217 002466 218 002470 220 002471 222 002521 223 002532 224 002534 225 002551 227 002552 229 002602 259 002613 233 002614 235 002615 236 002630 237 002634 238 002670 239 002704 241 002705 242 002715 244 002721 246 002722 248 002723 249 003002 251 003006 ----------------------------------------------------------- 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