COMPILATION LISTING OF SEGMENT install Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/05/86 1535.9 mst Tue 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 12 /* INSTALL - program to copy new tables into >system_control_1>update 13* and signal the answering service to install them. 14* 15* Written by THVV 16* Modified 750114 by PG to add command options for authorizations, etc. 17* Modified 750614 by T. Casey to enable install of MGT 18* Modified 760804 by THVV to eliminate response handler 19* Modified 062377 by Robert Coren to add TTT to list of legal tables 20* Modified 03/16/78 by C. D. Tavares to add RTDT 21* Modified 12/26/81 by E. N. Kittlitz to use whotab instead of proj_admin_seg to send wakeup. 22* Modified 1/2/82 by Benson I. Margulies for ttt installations through gate. 23* Modified April 1982 by E. N. Kittlitz to not write original table. 24* Modified July 1982 by E. N. Kittlitz to not use sc_stat_ (TOOLS), because this is an SSS program. 25**/ 26 27 28 /****^ HISTORY COMMENTS: 29* 1) change(86-05-02,Kissel), approve(86-07-23,MCR7460), audit(86-07-28,Ex), 30* install(86-08-05,MR12.0-1115): 31* Changed to accept the "nit" suffix for the DSA NIT. It is handled just 32* like the "ttt" suffix, but dsa_install_nit_ is called rather than 33* installation_gate_$install_ttt 34* END HISTORY COMMENTS */ 35 36 37 /* format: style4 */ 38 install: proc; 39 40 /* entries */ 41 42 dcl com_err_ entry options (variable); 43 dcl cu_$arg_count entry returns (fixed bin); 44 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 45 dcl dsa_install_nit_ entry (ptr, uns fixed bin (18), char (*), fixed bin (35)); 46 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 47 dcl get_group_id_ entry returns (char (32)); 48 dcl get_process_id_ entry returns (bit (36)); 49 dcl get_wdir_ entry returns (char (168)); /* return working dir */ 50 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 51 dcl hcs_$make_seg entry (char (*), char (*), char (*), 52 fixed bin (5), ptr, fixed bin (35)); 53 dcl hcs_$wakeup entry (bit (*), fixed bin (71), fixed bin (71), fixed bin (35)); 54 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 55 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 56 dcl installation_gate_$install_ttt entry (ptr, fixed bin (18) uns, char (*), fixed bin (35)); 57 dcl ioa_ entry options (variable); 58 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 59 dcl unique_chars_ entry (bit (*)) returns (char (15)); 60 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 61 62 /* builtins */ 63 64 dcl (dim, divide, index, length, null, reverse, rtrim, substr) builtin; 65 66 /* external static */ 67 68 dcl error_table_$bad_arg fixed bin (35) ext static; 69 dcl error_table_$badopt fixed bin (35) ext static; 70 dcl error_table_$not_seg_type ext fixed bin (35) static; 71 72 /* static */ 73 74 dcl LEGAL_TYPES (7) char (4) aligned static options (constant) initial 75 ("sat", "pdt", "mgt", "cdt", "ttt", "rtdt", "nit"); 76 dcl sysdir char (64) int static init (">system_control_1"); 77 78 79 /* automatic */ 80 81 dcl (idir char (80), copyname char (15)); 82 dcl (dir char (168), ename char (32)); 83 84 dcl (argno, i) fixed bin; 85 dcl code fixed bin (35); 86 dcl arg_length fixed bin (21); 87 dcl lng fixed bin (21); 88 dcl arg_ptr ptr; 89 dcl bitcount fixed bin (24); 90 dcl (segp, copyp) ptr; /* ... */ 91 dcl suffix char (4) varying; /* pdt, etc */ 92 dcl whoptr pointer; 93 dcl answer character (256); 94 dcl update_attributes_sw bit (1) aligned; 95 dcl update_authorization_sw bit (1) aligned; 96 97 /* based */ 98 99 dcl arg_string char (arg_length) based (arg_ptr); 100 101 dcl 1 t based (segp) aligned, /* dummy structure for seg. header */ 102 2 author like author_dcl.author; 103 104 dcl 1 segmnt based aligned, /* structure to move_ stuff */ 105 2 words (lng) fixed bin; 106 107 /* ext static */ 108 109 declare whotab_$ ext bit (36) aligned; 110 111 /* include files */ 112 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 113 2 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 2 2 2 3 /* This include file declares the "author" substructure 2 4* in a form suitable for using the PL/I "like" attribute. 2 5* 2 6* Written 750304 by PG 2 7**/ 2 8 2 9 dcl 1 author_dcl aligned based, 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 10 2 11 2 pad; 2 12 2 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 114 4 1 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 4 2 4 3 /* Modified 740723 by PG to add security info */ 4 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 4 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 4 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 4 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 4 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 4 9 4 10 dcl 1 whotab based (whoptr) aligned, 4 11 2 mxusers fixed bin, /* max. number of users on system */ 4 12 2 n_users fixed bin, /* current number of users */ 4 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 4 14 2 n_units fixed bin, /* current load */ 4 15 2 timeup fixed bin (71), /* time system was started */ 4 16 2 session char (8), /* AS state, same as anstbl.session */ 4 17 2 nextsd fixed bin (71), /* time we will shutdown */ 4 18 2 until fixed bin (71), /* projected time we start up again */ 4 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 4 20 2 erfno char (8), /* if a crash, the error number */ 4 21 2 obsolete_why char (32), /* reason for last shutdown */ 4 22 2 installation_id char (32), /* name of installation */ 4 23 2 obsolete_message char (32), /* message for all users */ 4 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 4 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 4 26 2 max_abs_users fixed bin, /* max number of absentee users */ 4 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 4 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 4 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 4 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 4 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 4 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 4 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 4 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 4 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 4 36 2 pad1 bit (9) unal, 4 37 2 pad (3) fixed bin, 4 38 2 version fixed bin, /* structure version */ 4 39 2 header_size fixed bin, /* length of header in words */ 4 40 2 entry_size fixed bin, /* length of entry in words */ 4 41 /* laste_adjust is used only by Answering Service programs */ 4 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 4 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 4 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 4 45 4 46 /* whotab header extension: The header is extended from 64 words by 4 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 4 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 4 49* present. This allows existing programs to function with old definitions of 4 50* whotab. Obviously no new header field can be more than 31 contiguous words in 4 51* length. In the Answering Service, all programs using whotab must be compiled 4 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 4 53 4 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 4 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 4 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 4 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 4 58 2 abs_control, /* see absentee_user_table */ 4 59 3 mnbz bit (1) unal, /* must not be zero */ 4 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 4 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 4 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 4 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 4 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 4 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 4 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 4 67 3 control_pad bit (23) unal, 4 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 4 69 2 installation_request_pid bit (36), /* installation process identifier */ 4 70 2 sysid char (32), /* current system name */ 4 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 4 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 4 73 2 message char (124), /* message for all users */ 4 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 4 75 2 why char (124), /* reason for last shutdown */ 4 76 2 e (1000), /* offset 240o */ 4 77 3 active fixed bin, /* nonzero means logged in */ 4 78 3 person char (28) aligned, /* person name */ 4 79 3 project char (28), /* project id */ 4 80 3 anon fixed bin, /* 1 if anonymous user */ 4 81 3 padding fixed bin (71), 4 82 3 timeon fixed bin (71), /* time of login */ 4 83 3 units fixed bin, /* load units */ 4 84 3 stby fixed bin, /* 1 if stby */ 4 85 3 idcode char (4), /* tty id code */ 4 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 4 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 4 88 3 group char (8), /* party-line group */ 4 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 4 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 4 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 4 92 3 pad2 bit (33) unal, 4 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 4 94 3 process_authorization bit (72); /* access authorization of process */ 4 95 4 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 4 97 4 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 115 5 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 5 2 /* format: style2,^inddcls,idind32 */ 5 3 5 4 declare 1 terminate_file_switches based, 5 5 2 truncate bit (1) unaligned, 5 6 2 set_bc bit (1) unaligned, 5 7 2 terminate bit (1) unaligned, 5 8 2 force_write bit (1) unaligned, 5 9 2 delete bit (1) unaligned; 5 10 5 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 5 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 5 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 5 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 5 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 5 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 5 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 5 18 5 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 116 117 /* condition */ 118 119 declare cleanup condition; 120 declare linkage_error condition; 121 122 123 /* - - - - - - - - - - - - - - - -- - - - - */ 124 125 126 update_attributes_sw, update_authorization_sw = ""b; 127 128 on linkage_error begin; 129 call hcs_$initiate (sysdir, "whotab", "whotab_", 0, 0, 130 whoptr, code); 131 if whoptr = null 132 then do; 133 call com_err_ (code, "install", "cannot initiate ^a.", pathname_ (sysdir, "whotab")); 134 go to RETURN; 135 end; 136 end; 137 138 whoptr = addr (whotab_$); 139 revert linkage_error; 140 141 call cu_$arg_ptr (1, arg_ptr, arg_length, code); /* get name of segment */ 142 if code ^= 0 then do; 143 call com_err_ (code, "install", "Usage: install pathname -all(-a), -attributes(-attr), -authorization(-auth)"); 144 return; 145 end; 146 147 call expand_pathname_ (arg_string, dir, ename, code); 148 if code ^= 0 then do; 149 call com_err_ (code, "install", arg_string); 150 return; 151 end; 152 153 if index (ename, ".") = 0 then goto not_known_type; 154 155 i = length (rtrim (ename)); 156 157 suffix = reverse (before (reverse (ename), ".")); 158 159 do i = 1 to dim (LEGAL_TYPES, 1) while (LEGAL_TYPES (i) ^= suffix); 160 end; 161 162 if i > dim (LEGAL_TYPES, 1) then do; 163 not_known_type: 164 call com_err_ (error_table_$not_seg_type, "install", 165 "Table is not ^v(^a, ^)or ^a. Installation refused.", 166 dim (LEGAL_TYPES, 1) - 1, LEGAL_TYPES (*)); 167 return; 168 end; 169 170 copyp, segp = null; 171 on cleanup call clean_up; 172 173 call initiate_file_ (dir, ename, R_ACCESS, segp, bitcount, code); 174 if code ^= 0 then do; 175 call com_err_ (code, "install", "^a", pathname_ (dir, ename)); 176 go to RETURN; /* segp may be nonnull */ 177 end; 178 179 if bitcount < 2304 then do; /* check length of segment */ 180 call ioa_ ("install: ^a less than 64 words long.", pathname_ (dir, ename)); 181 go to RETURN; 182 end; 183 184 /* read the arguments */ 185 186 do argno = 2 to cu_$arg_count (); 187 call cu_$arg_ptr (argno, arg_ptr, arg_length, code); 188 if code ^= 0 then go to no_more_args; 189 190 if arg_string = "-all" | arg_string = "-a" then 191 update_attributes_sw, update_authorization_sw = "1"b; 192 else if arg_string = "-attributes" | arg_string = "-attr" then 193 update_attributes_sw = "1"b; 194 else if arg_string = "-authorization" | arg_string = "-auth" then 195 update_authorization_sw = "1"b; 196 else do; 197 call com_err_ (error_table_$badopt, "install", "^a", arg_string); 198 return; 199 end; 200 end; 201 202 no_more_args: 203 if argno = 2 then /* if no options were given, use default */ 204 update_attributes_sw = "1"b; /* dft is -attr */ 205 206 lng = divide (bitcount + 35, 36, 17, 0); /* get wordcount */ 207 208 if t.table = "TTT" 209 then do; /* The first of the easy variety */ 210 /* Note we ignore control arguments */ 211 call installation_gate_$install_ttt (segp, (lng), answer, code); 212 if code ^= 0 213 then call com_err_ (code, "install", "^a installing ^a.", 214 answer, pathname_ (dir, ename)); 215 else call ioa_ ("install: Installed ^a as system ttt.", 216 pathname_ (dir, ename)); 217 go to RETURN; 218 end; 219 220 if t.table = "NIT" 221 then do; /* The next of the easy variety */ 222 /* Note we ignore control arguments */ 223 /*** Get ready for problems. */ 224 225 on linkage_error 226 begin; 227 code = error_table_$bad_arg; 228 answer = "DSA is not enabled on this system. "; 229 goto NIT_ERROR; 230 end; 231 232 call dsa_install_nit_ (segp, (lng), answer, code); 233 234 revert linkage_error; 235 236 NIT_ERROR: 237 if code ^= 0 238 then call com_err_ (code, "install", "^a installing ^a.", 239 answer, pathname_ (dir, ename)); 240 else call ioa_ ("install: Installed ^a as DSA system nit.", 241 pathname_ (dir, ename)); 242 go to RETURN; 243 end; 244 245 idir = pathname_ (sysdir, "update"); 246 copyname = unique_chars_ (""b); /* make up a name */ 247 248 call hcs_$make_seg (idir, copyname, "", 01010b, copyp, code); 249 if copyp = null then do; /* make null segment */ 250 call com_err_ (code, "install", "can't create ^a>^a", idir, copyname); 251 go to RETURN; 252 end; 253 copyp -> segmnt = segp -> segmnt; /* copy seg into update dir */ 254 copyp -> t.author.w_dir = get_wdir_ (); /* set working dir into head of table */ 255 copyp -> t.author.proc_group_id = get_group_id_ (); /* Get name of this user (with tag) */ 256 copyp -> t.update_authorization = update_authorization_sw; /* now the controls */ 257 copyp -> t.update_attributes = update_attributes_sw; /* ... */ 258 259 call terminate_file_ (copyp, bitcount, TERM_FILE_TRUNC_BC_TERM, (0)); 260 copyp = null; 261 262 call hcs_$wakeup ((whotab.installation_request_pid), whotab.installation_request_channel, 0, code); 263 264 RETURN: 265 call clean_up; 266 return; /* done */ 267 268 clean_up: 269 procedure; 270 if copyp ^= null 271 then call hcs_$delentry_seg (copyp, (0)); 272 copyp = null; 273 if segp ^= null 274 then call terminate_file_ (segp, (0), TERM_FILE_TERM, (0)); 275 segp = null; 276 end clean_up; 277 278 end install; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/05/86 1535.9 install.pl1 >spec>install>1115>install.pl1 113 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 114 2 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 2-10 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 115 4 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.incl.pl1 116 5 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. LEGAL_TYPES 000002 constant char(4) initial array dcl 74 set ref 159 159 162 163 163* R_ACCESS 000033 constant bit(3) initial unaligned dcl 1-11 set ref 173* TERM_FILE_TERM 000001 constant bit(3) initial unaligned dcl 5-14 set ref 273* TERM_FILE_TRUNC_BC_TERM 000000 constant bit(3) initial unaligned dcl 5-15 set ref 259* answer 000234 automatic char(256) unaligned dcl 93 set ref 211* 212* 228* 232* 236* arg_length 000215 automatic fixed bin(21,0) dcl 86 set ref 141* 147 147 149 149 187* 190 190 192 192 194 194 197 197 arg_ptr 000220 automatic pointer dcl 88 set ref 141* 147 149 187* 190 190 192 192 194 194 197 arg_string based char unaligned dcl 99 set ref 147* 149* 190 190 192 192 194 194 197* argno 000212 automatic fixed bin(17,0) dcl 84 set ref 186* 187* 202 author based structure level 2 in structure "author_dcl" dcl 2-9 in procedure "install" author based structure level 2 in structure "t" dcl 101 in procedure "install" author_dcl based structure level 1 dcl 2-9 bitcount 000222 automatic fixed bin(24,0) dcl 89 set ref 173* 179 206 259* cleanup 000336 stack reference condition dcl 119 ref 171 code 000214 automatic fixed bin(35,0) dcl 85 set ref 129* 133* 141* 142 143* 147* 148 149* 173* 174 175* 187* 188 211* 212 212* 227* 232* 236 236* 248* 250* 262* com_err_ 000030 constant entry external dcl 42 ref 133 143 149 163 175 197 212 236 250 copyname 000124 automatic char(15) unaligned dcl 81 set ref 246* 248* 250* copyp 000226 automatic pointer dcl 90 set ref 170* 248* 249 253 254 255 256 257 259* 260* 270 270* 272* cu_$arg_count 000032 constant entry external dcl 43 ref 186 cu_$arg_ptr 000034 constant entry external dcl 44 ref 141 187 dim builtin function dcl 64 ref 159 162 163 dir 000130 automatic char(168) unaligned dcl 82 set ref 147* 173* 175* 175* 180* 180* 212* 212* 215* 215* 236* 236* 240* 240* divide builtin function dcl 64 ref 206 dsa_install_nit_ 000036 constant entry external dcl 45 ref 232 ename 000202 automatic char(32) unaligned dcl 82 set ref 147* 153 155 157 173* 175* 175* 180* 180* 212* 212* 215* 215* 236* 236* 240* 240* error_table_$bad_arg 000072 external static fixed bin(35,0) dcl 68 ref 227 error_table_$badopt 000074 external static fixed bin(35,0) dcl 69 set ref 197* error_table_$not_seg_type 000076 external static fixed bin(35,0) dcl 70 set ref 163* expand_pathname_ 000040 constant entry external dcl 46 ref 147 get_group_id_ 000042 constant entry external dcl 47 ref 255 get_wdir_ 000044 constant entry external dcl 49 ref 254 hcs_$delentry_seg 000046 constant entry external dcl 50 ref 270 hcs_$initiate 000054 constant entry external dcl 54 ref 129 hcs_$make_seg 000050 constant entry external dcl 51 ref 248 hcs_$wakeup 000052 constant entry external dcl 53 ref 262 i 000213 automatic fixed bin(17,0) dcl 84 set ref 155* 159* 159* 162 idir 000100 automatic char(80) unaligned dcl 81 set ref 245* 248* 250* index builtin function dcl 64 ref 153 initiate_file_ 000056 constant entry external dcl 55 ref 173 installation_gate_$install_ttt 000060 constant entry external dcl 56 ref 211 installation_request_channel 116 based fixed bin(71,0) level 2 dcl 4-10 set ref 262* installation_request_pid 120 based bit(36) level 2 dcl 4-10 ref 262 ioa_ 000062 constant entry external dcl 57 ref 180 215 240 length builtin function dcl 64 ref 155 linkage_error 000344 stack reference condition dcl 120 ref 128 139 225 234 lng 000216 automatic fixed bin(21,0) dcl 87 set ref 206* 211 232 253 null builtin function dcl 64 ref 131 170 249 260 270 272 273 275 pathname_ 000064 constant entry external dcl 58 ref 133 133 175 175 180 180 212 212 215 215 236 236 240 240 245 proc_group_id based char(32) level 3 dcl 101 set ref 255* reverse builtin function dcl 64 ref 157 157 rtrim builtin function dcl 64 ref 155 segmnt based structure level 1 dcl 104 set ref 253* 253 segp 000224 automatic pointer dcl 90 set ref 170* 173* 208 211* 220 232* 253 273 273* 275* suffix 000230 automatic varying char(4) dcl 91 set ref 157* 159 sysdir 000010 internal static char(64) initial unaligned dcl 76 set ref 129* 133* 133* 245* t based structure level 1 dcl 101 table 14 based char(4) level 3 dcl 101 ref 208 220 terminate_file_ 000070 constant entry external dcl 60 ref 259 273 unique_chars_ 000066 constant entry external dcl 59 ref 246 update_attributes 11 based bit(1) level 3 packed unaligned dcl 101 set ref 257* update_attributes_sw 000334 automatic bit(1) dcl 94 set ref 126* 190* 192* 202* 257 update_authorization 11(01) based bit(1) level 3 packed unaligned dcl 101 set ref 256* update_authorization_sw 000335 automatic bit(1) dcl 95 set ref 126* 190* 194* 256 w_dir 15 based char(64) level 3 dcl 101 set ref 254* whoptr 000232 automatic pointer dcl 92 set ref 129* 131 138* 262 262 whotab based structure level 1 dcl 4-10 whotab_$ 000100 external static bit(36) dcl 109 set ref 138 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 5-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 5-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 5-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 5-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 5-13 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 4-96 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 get_process_id_ 000000 constant entry external dcl 48 substr builtin function dcl 64 terminate_file_switches based structure level 1 packed unaligned dcl 5-4 NAMES DECLARED BY EXPLICIT CONTEXT. NIT_ERROR 001531 constant label dcl 236 ref 229 RETURN 002152 constant label dcl 264 ref 134 176 181 217 242 251 clean_up 002160 constant entry internal dcl 268 ref 171 264 install 000244 constant entry external dcl 38 no_more_args 001257 constant label dcl 202 ref 188 not_known_type 000655 constant label dcl 163 ref 153 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 138 before builtin function ref 157 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2540 2642 2245 2550 Length 3156 2245 102 300 273 20 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME install 372 external procedure is an external procedure. on unit on line 128 174 on unit on unit on line 171 64 on unit on unit on line 225 64 on unit clean_up 90 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 sysdir install STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME install 000100 idir install 000124 copyname install 000130 dir install 000202 ename install 000212 argno install 000213 i install 000214 code install 000215 arg_length install 000216 lng install 000220 arg_ptr install 000222 bitcount install 000224 segp install 000226 copyp install 000230 suffix install 000232 whoptr install 000234 answer install 000334 update_attributes_sw install 000335 update_authorization_sw install THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry reverse_cs set_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr dsa_install_nit_ expand_pathname_ get_group_id_ get_wdir_ hcs_$delentry_seg hcs_$initiate hcs_$make_seg hcs_$wakeup initiate_file_ installation_gate_$install_ttt ioa_ pathname_ terminate_file_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badopt error_table_$not_seg_type whotab_$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 38 000243 126 000251 128 000253 129 000267 131 000336 133 000343 134 000421 136 000424 138 000425 139 000430 141 000431 142 000447 143 000451 144 000477 147 000500 148 000530 149 000532 150 000560 153 000561 155 000572 157 000604 159 000635 160 000651 162 000653 163 000655 167 000715 170 000716 171 000721 173 000743 174 001000 175 001002 176 001053 179 001054 180 001057 181 001117 186 001120 187 001135 188 001152 190 001154 192 001172 194 001205 197 001220 198 001254 200 001255 202 001257 206 001264 208 001270 211 001276 212 001325 215 001406 217 001446 220 001447 225 001454 227 001470 228 001473 229 001476 232 001501 234 001530 236 001531 240 001612 242 001652 245 001653 246 001701 248 001716 249 001755 250 001761 251 002022 253 002023 254 002032 255 002045 256 002060 257 002065 259 002071 260 002117 262 002121 264 002152 266 002156 268 002157 270 002165 272 002203 273 002206 275 002240 276 002243 ----------------------------------------------------------- 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