COMPILATION LISTING OF SEGMENT rename_proj Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1021.2 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 18* audit(87-06-17,Hirneisen), install(87-08-06,MR12.1-1066): 19* Create a dummy SAT entry for the old (renamed) project id to be used by 20* up_sat_ to recognize a renamed project so it can flag the corresponding 21* system SAT entry as renamed for billing purposes. Also update pdt 22* elements not previously updated (project_dir & home_dir). 23* Also revise ACLs of project admins on renamed project, and ACLs for 24* individual users of their own home dirs. 25* END HISTORY COMMENTS */ 26 27 28 29 rename_proj: proc; 30 31 /* RENAME_PROJ - Used by user accounts to rename a project. 32* 33* THVV */ 34 /* Modified March 1982 by E. N. Kittlitz to eliminate proj_admin_seg. */ 35 36 dcl dn char (168) aligned, 37 en char (32) aligned, 38 (reqi, projj) fixed bin, 39 (i, j, k, ai) fixed bin, 40 sat_count fixed bin, 41 mylock bit (1) init ("0"b), 42 movelen fixed bin (24), 43 ap ptr, 44 al fixed bin, 45 bchr char (al) unaligned based (ap), 46 ec fixed bin (35); 47 48 dcl (old_name, new_name) char (12) aligned; 49 dcl (old_alias, new_alias) char (8) aligned; 50 dcl (old_pdt, new_pdt) char (32) aligned; 51 52 dcl (tp, tpp) ptr; 53 54 dcl myname char (24), 55 myproj char (12); 56 57 dcl 1 add_dir_acl (4) aligned, 58 2 user char (32), 59 2 mode bit (36), 60 2 code fixed bin (35); 61 dcl 1 add_seg_acl (4) aligned, 62 2 user char (32), 63 2 mode bit (36), 64 2 mbz fixed bin (35), 65 2 code fixed bin (35); 66 dcl 1 del_acl (4) aligned, 67 2 user char (32), 68 2 code fixed bin (35); 69 dcl 1 add_user_dir_acl aligned, /* for setting ACLs of users home_dirs for themselves */ 70 2 user char (32), 71 2 mode bit (36), 72 2 code fixed bin (35); 73 dcl 1 del_user_acl aligned, 74 2 user char (32), 75 2 code fixed bin (35); /* for users own home_dirs */ 76 dcl old (4) char (32), new (4) char (32); 77 78 dcl USERRING fixed bin (3) init (4); 79 dcl special_project bit (1) init ("0"b); 80 81 dcl n_acladd fixed bin init (0), 82 n_acldel fixed bin init (0), 83 udd char (64) aligned int static init (">user_dir_dir"), 84 sc1_pdt char (64) aligned int static init (">system_control_1>pdt"), 85 sc1 char (64) aligned int static init (">system_control_1"); 86 dcl pp ptr, /* ptr to projfile */ 87 qp ptr, /* ptr to reqfile */ 88 satp ptr, /* ptr to sat */ 89 sadp ptr, /* ptr to sys_admin_data */ 90 satep ptr, /* ptr to sat entry. */ 91 (pdtp, pdtep) ptr, 92 (pp1, pp2) ptr, 93 (qp1, qp2) ptr; 94 95 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)), 96 set_lock_$unlock entry (bit (36) aligned, fixed bin (35)), 97 error_table_$locked_by_this_process fixed bin (35) ext, 98 error_table_$invalid_lock_reset fixed bin (35) ext; 99 100 dcl (addr, null, substr, index, verify, rtrim) builtin; 101 102 dcl user_info_ entry options (variable), 103 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 104 get_wdir_ entry () returns (char (168) aligned), 105 ioa_ entry options (variable), 106 ioa_$rsnnl entry options (variable), 107 com_err_ entry options (variable); 108 109 dcl hcs_$add_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)); 110 dcl hcs_$add_dir_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)); 111 dcl hcs_$add_dir_inacl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (3), 112 fixed bin (35)); 113 dcl hcs_$chname_file entry (char (*) aligned, char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (35)); 114 dcl hcs_$delete_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)); 115 dcl hcs_$delete_dir_acl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (35)); 116 dcl hcs_$delete_dir_inacl_entries entry (char (*) aligned, char (*) aligned, ptr, fixed bin, fixed bin (3), 117 fixed bin (35)); 118 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (1), fixed bin (2), 119 ptr, fixed bin (35)); 120 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 121 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 122 123 dcl 1 movetable based aligned, 124 2 moveary (movelen) fixed bin (35); 125 1 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 1 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 1 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 1 8* attribute switches. 1 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 1 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 1 12* be deleted. 1 13* B) Add constants identifying attributes that can be changed by user at 1 14* login, etc. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 1 19 1 20 /* format: style4 */ 1 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 1 22 (2 administrator bit (1), /* 1 system administrator privileges */ 1 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 1 24 2 nobump bit (1), /* 2 user cannot be bumped */ 1 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 1 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 1 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 1 28* . of same project (distinct from "nobump") */ 1 29 2 nolist bit (1), /* 7 don't list user on "who" */ 1 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 1 31 2 multip bit (1), /* 9 user may have several processes */ 1 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 1 33 2 brief bit (1), /* 11 no login or logout message */ 1 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 1 35 2 vhomedir bit (1), /* 13 user may change homedir */ 1 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 1 37 2 sb_ok bit (1), /* 15 user may be standby */ 1 38 2 pm_ok bit (1), /* 16 user may be primary */ 1 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 1 40 2 daemon bit (1), /* 18 user may login as daemon */ 1 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 1 42 2 no_warning bit (1), /* 20 no warning message */ 1 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 1 44* . in PDT: this user has an individual load control group */ 1 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 1 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 1 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 1 48 2 pad bit (12)) unaligned; 1 49 1 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 51 ("none", /* 0 */ 1 52 "administrator", /* 1 */ 1 53 "primary_line", /* 2 */ 1 54 "nobump", /* 3 */ 1 55 "guaranteed_login", /* 4 */ 1 56 "anonymous", /* 5 */ 1 57 "nopreempt", /* 6 */ 1 58 "nolist", /* 7 */ 1 59 "dialok", /* 8 */ 1 60 "multip", /* 9 */ 1 61 "bumping", /* 10 */ 1 62 "brief", /* 11 */ 1 63 "vinitproc", /* 12 */ 1 64 "vhomedir", /* 13 */ 1 65 "nostartup", /* 14 */ 1 66 "no_secondary", /* 15 */ 1 67 "no_prime", /* 16 */ 1 68 "no_eo", /* 17 */ 1 69 "daemon", /* 18 */ 1 70 "", /* 19 vdim OBSOLETE */ 1 71 "no_warning", /* 20 */ 1 72 "igroup", /* 21 */ 1 73 "save_pdir", /* 22 */ 1 74 "disconnect_ok", /* 23 */ 1 75 "save_on_disconnect"); /* 24 */ 1 76 1 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 78 ("null", /* 0 */ 1 79 "admin", /* 1 */ 1 80 "", "", /* 2 - 3 */ 1 81 "guar", /* 4 */ 1 82 "anon", /* 5 */ 1 83 "", "", /* 6 - 7 */ 1 84 "dial", /* 8 */ 1 85 "multi_login", /* 9 */ 1 86 "preempting", /* 10 */ 1 87 "", /* 11 */ 1 88 "v_process_overseer", /* 12 */ 1 89 "v_home_dir", /* 13 */ 1 90 "no_start_up", /* 14 */ 1 91 "no_sec", /* 15 */ 1 92 "no_primary", /* 16 */ 1 93 "no_edit_only", /* 17 */ 1 94 "op_login", /* 18 */ 1 95 "", /* 19 */ 1 96 "nowarn", /* 20 */ 1 97 "", "", "", /* 21 - 23 */ 1 98 "save"); /* 24 */ 1 99 1 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 1 101 options(constant) init("000000000010000000010000000000000000"b); 1 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 1 103 1 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 1 105 options(constant) init("000000000010000000010000000000000000"b); 1 106 /* PDT value for (brief, no_warning) is default */ 1 107 1 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 1 109 options(constant) init("000100000110010000010000000000000000"b); 1 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 1 111 2 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* This include file describes the attributes of an absentee job. It is */ 2 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 2 7 /* and PIT.incl.pl1. */ 2 8 /* */ 2 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 2 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 14* Separated abs_attributes from the request structure 2 15* (abs_message_format.incl.pl1) so that the identical structure could be 2 16* used in the ute structure (user_table_entry.incl.pl1). 2 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 19* Added ABS_ATTRIBUTE_NAMES array. 2 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 2 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 2 22* Added the no_start_up flag. SCP6367 2 23* END HISTORY COMMENTS */ 2 24 2 25 dcl 1 user_abs_attributes aligned based, 2 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 2 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 2 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 2 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 2 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 2 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 2 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 2 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 2 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 2 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 2 36 2 attributes_pad bit (26) unaligned; 2 37 2 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 2 39 "restartable", 2 40 "user_deferred_until_time", 2 41 "proxy", 2 42 "set_bit_cnt", 2 43 "time_in_gmt", 2 44 "user_deferred_indefinitely", 2 45 "secondary_ok", 2 46 "truncate_absout", 2 47 "restarted", 2 48 "no_start_up"); 2 49 2 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 51 1 112 1 113 1 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 126 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 */ 127 4 1 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 4 2 /* Requires user_attributes.incl.pl1 */ 4 3 4 4 /* Modified 740723 by PG to add AIM info */ 4 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 4 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 4 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 4 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 4 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 4 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 4 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 4 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 4 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 4 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 4 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 4 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 4 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 4 18 4 19 dcl (PDT_version init (4), /* version of this declaration */ 4 20 PDT_header_lth init (256), /* length in words of PDT head */ 4 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 4 22 4 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 4 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 4 25 ) fixed bin internal static options (constant); 4 26 4 27 dcl 1 pdt based (pdtp) aligned, 4 28 5 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 5 2 5 3 /* the "author" items must always be the first ones in the table. The 5 4* module which moves the converted table to the System Control process 5 5* fills in these data items and assumes them to be at the head of the segment 5 6* regardless of the specific table's actual declaration. The variables 5 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 5 8* respectively. For tables installed in multiple processes, these 5 9* are to be used to lock out multiple installations. */ 5 10 5 11 /* Lock should be used as a modification lock. Since, in general, 5 12* entries may not be moved in system tables, even by installations, 5 13* it is sufficient for only installers and programs that change threads 5 14* to set or respect the lock. Simply updating data in an entry 5 15* requires no such protection. 5 16* 5 17* Last_install_time is used by readers of system tables to detect 5 18* installations or other serious modifications. By checking it before 5 19* and after copying a block of data, they can be protected against 5 20* modifications. 5 21* 5 22* Modules that set the lock should save proc_group_id, and then 5 23* put their group id there for the time they hold the lock. 5 24* if they do not actually install the, they should restore the group id. 5 25**/ 5 26 5 27 2 author aligned, /* validation data about table's author */ 5 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 5 29 3 lock bit (36), /* installation lock */ 5 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 5 31 3 update_authorization bit (1) unal, /* update only authorizations */ 5 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 5 33 3 pad bit (33) unaligned, 5 34 3 last_install_time fixed bin (71), 5 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 5 36 3 w_dir char (64), /* author's working directory */ 5 37 5 38 /* END INCLUDE FILE author.incl.pl1 */ 4 29 4 30 2 max_size fixed bin, /* max number of entries table can grow */ 4 31 2 current_size fixed bin, /* current size of table (in entries) */ 4 32 2 version fixed bin, /* table version */ 4 33 2 freep fixed bin, /* relptr to begin of free chain */ 4 34 2 n_users fixed bin, /* number of entries actually used */ 4 35 2 project_name char (28), /* name of project */ 4 36 2 project_dir char (64), /* treename of project's directory */ 4 37 2 projfile_version fixed bin, 4 38 2 projentry bit (66*36), 4 39 2 pad3 (5) bit (36) aligned, 4 40 2 reqfile_version fixed bin, 4 41 2 reqentry bit (40*36), 4 42 2 pad4 (9) fixed bin, 4 43 2 sat_version fixed bin, 4 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 4 45 2 pad5 (4) bit (36) aligned, 4 46 2 date_reqfile_copied fixed bin (71), 4 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 4 48 2 pad2l bit (27) unaligned, 4 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 4 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 4 51 2 user (1019) aligned, /* the project definition table entries */ 4 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 4 53 4 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 4 55 4 56 4 57 4 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 4 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 4 60 2 lock bit (36), /* update lock */ 4 61 2 person_id char (24) aligned, /* login name of user */ 4 62 2 now_in fixed bin, /* count of users logged in on this entry */ 4 63 2 password char (8) aligned, /* password for anonymous user */ 4 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 4 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 4 66 2 home_dir char (64) aligned, /* user's default working directory */ 4 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 4 68 2 high_ring fixed bin, /* highest ring user may use */ 4 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 4 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 4 71 2 outer_module char (32), /* outer module used if user is interactive */ 4 72 2 lot_size fixed bin, /* size of linkage offset table */ 4 73 2 kst_size fixed bin, /* size of known segment table */ 4 74 2 cls_size fixed bin, /* size of combined linkage */ 4 75 2 uflags, /* various flags */ 4 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 4 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 4 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 4 79 3 flagpad bit (33) unal, 4 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 4 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 4 82 2 dollar_limit float bin, 4 83 2 dollar_charge float bin, /* total dollars spent this month */ 4 84 2 shift_limit (0: 7) float bin, 4 85 2 daton fixed bin (71), /* date user added to system */ 4 86 2 datof fixed bin (71), /* date user deleted */ 4 87 2 last_login_time fixed bin (71), /* time of last login */ 4 88 2 last_login_unit char (4), /* terminal id last used */ 4 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 4 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 4 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 4 92 2 last_update fixed bin (71), /* time of last transaction */ 4 93 2 logins fixed bin, /* number of logins */ 4 94 2 crashes fixed bin, /* sessions abnormally terminated */ 4 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 4 96 3 charge float bin, /* total dollar charge this shift */ 4 97 3 xxx fixed bin, 4 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 4 99 3 core fixed bin (71), /* core demand in page-microseconds */ 4 100 3 connect fixed bin (71), /* total console time in microseconds */ 4 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 4 102 2 absentee (4), /* absentee use, queues 1-4 */ 4 103 3 charge float bin, /* dollar charge this queue */ 4 104 3 jobs fixed bin, /* number of jobs submitted */ 4 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 4 106 3 memory fixed bin (71), /* total memory demand */ 4 107 2 iod (4), /* io daemon use, queues 1-4 */ 4 108 3 charge float bin, /* dollar charge this queue */ 4 109 3 pieces fixed bin, /* pieces of output requested */ 4 110 3 pad fixed bin (35), 4 111 3 pages fixed bin (35), /* number of pages output */ 4 112 3 lines fixed bin (71), /* total record count of output */ 4 113 2 devices (16) float bin, /* device charges */ 4 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 4 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 4 116 2 absolute_spent float bin, /* Spending against this */ 4 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 4 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 4 119 2 pad_was_authorization bit (72) aligned, 4 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 4 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 4 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 4 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 4 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 4 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 4 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 4 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 4 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 4 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 4 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 4 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 4 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 4 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 4 134 2 user_authorization (2) bit (72) aligned, /* range */ 4 135 2 pdtupad (5) fixed bin, 4 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 4 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 4 138 2 chain fixed bin; /* free chain */ 4 139 4 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 128 6 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 6 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 6 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 6 4 /* Modified 1984-09-14 BIM for reasonable array size */ 6 5 6 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 6 7 2 nproj fixed bin (35), /* number of entries */ 6 8 2 version fixed bin, 6 9 2 projfilexx0 (6) bit (36) aligned, 6 10 2 projfiletab (3000), /* in seg limit */ 6 11 3 id char (12) unal, /* project ID */ 6 12 3 title char (52) unal, /* project title */ 6 13 3 inv char (32) unal, /* name of principal investigator */ 6 14 3 inv_addr char (32) unal, /* address */ 6 15 3 sup char (32) unal, /* name of supervisor */ 6 16 3 sup_addr char (32) unal, /* address */ 6 17 3 sup_phone char (16) unal, /* telephone */ 6 18 3 on fixed bin (71), /* date on */ 6 19 3 off fixed bin (71), /* date off */ 6 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 6 21 3 disk_quota fixed bin (35), /* project disk quota */ 6 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 6 23 3 disk_use fixed bin (35), /* total segment pages used */ 6 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 6 25 3 misc_charges float bin, /* manuals, etc */ 6 26 3 n_misc fixed bin, /* number of entries */ 6 27 3 processed fixed bin, /* temp for usage-report */ 6 28 3 pad bit (36) aligned; /* out to even number of words */ 6 29 6 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 6 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 6 32 6 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 6 34 6 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 129 7 1 /* Requisition file declaration */ 7 2 /* Modified BIM 1984-07-10 for unaligned strings */ 7 3 /* Modified BIM 1984-09-14 foor 3000 size-array */ 7 4 7 5 dcl 1 reqfile based (qp) aligned, /* MIT accounting data */ 7 6 2 nacts fixed, 7 7 2 version fixed bin, 7 8 2 pad (6) bit (36) aligned, 7 9 2 reqfiletab (3000), /* one entry per Multics account */ 7 10 /* same size as projfile */ 7 11 3 acctid char (12) unal, /* account id. usually same as Proj */ 7 12 3 mitacct char (12) unal, /* MIT account no. */ 7 13 3 reqno char (12) unal, /* requisition or PO no. */ 7 14 3 qflag char (8), /* class & activity */ 7 15 3 procssd fixed bin, /* temp for usage report */ 7 16 3 qdn fixed bin (71), /* date on for account */ 7 17 3 qdf fixed bin (71), /* date off */ 7 18 3 billing_name char (32) unal, /* where to send bill */ 7 19 3 billing_addr char (32) unal, 7 20 3 chg_mo float bin (63), /* charges this month */ 7 21 3 chg_tr float bin (63), /* charges this req */ 7 22 3 req_amt float bin (63), /* req face value */ 7 23 3 cutoff fixed bin (71); /* term date for req */ 7 24 7 25 dcl loqh int static fixed bin (17) init (8), /* length of reqfile head */ 7 26 loqe int static fixed bin (17) init (40); /* lth of reqfile entry */ 7 27 7 28 declare REQFILE_VERSION fixed bin init (2) int static options (constant); 7 29 7 30 /* End include file reqfile.incl.pl1 */ 130 8 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 8 2 8 3 8 4 8 5 8 6 /****^ HISTORY COMMENTS: 8 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 8 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 8 9* Expand comment line of project.state to include the renamed state (state = 8 10* 3). 8 11* END HISTORY COMMENTS */ 8 12 8 13 8 14 8 15 /* Modified 740723 by PG to add AIM info */ 8 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 8 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 8 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 8 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 8 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 8 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 8 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 8 23 8 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 8 25 8 26 SAT_header_lth init (466), /* length in words of SAT header */ 8 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 8 28 8 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 8 30 ) fixed bin internal static options (constant); 8 31 8 32 dcl 1 sat based (satp) aligned, 8 33 9 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 9 2 9 3 /* the "author" items must always be the first ones in the table. The 9 4* module which moves the converted table to the System Control process 9 5* fills in these data items and assumes them to be at the head of the segment 9 6* regardless of the specific table's actual declaration. The variables 9 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 9 8* respectively. For tables installed in multiple processes, these 9 9* are to be used to lock out multiple installations. */ 9 10 9 11 /* Lock should be used as a modification lock. Since, in general, 9 12* entries may not be moved in system tables, even by installations, 9 13* it is sufficient for only installers and programs that change threads 9 14* to set or respect the lock. Simply updating data in an entry 9 15* requires no such protection. 9 16* 9 17* Last_install_time is used by readers of system tables to detect 9 18* installations or other serious modifications. By checking it before 9 19* and after copying a block of data, they can be protected against 9 20* modifications. 9 21* 9 22* Modules that set the lock should save proc_group_id, and then 9 23* put their group id there for the time they hold the lock. 9 24* if they do not actually install the, they should restore the group id. 9 25**/ 9 26 9 27 2 author aligned, /* validation data about table's author */ 9 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 9 29 3 lock bit (36), /* installation lock */ 9 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 9 31 3 update_authorization bit (1) unal, /* update only authorizations */ 9 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 9 33 3 pad bit (33) unaligned, 9 34 3 last_install_time fixed bin (71), 9 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 9 36 3 w_dir char (64), /* author's working directory */ 9 37 9 38 /* END INCLUDE FILE author.incl.pl1 */ 8 34 8 35 2 max_size fixed bin, /* max number of entries table can grow */ 8 36 2 current_size fixed bin, /* current size of table (in entries) */ 8 37 2 version fixed bin, /* version number of table (word 32) */ 8 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 8 39 2 n_projects fixed bin, /* number of entries actually used */ 8 40 2 pad_was_max_users bit (36) aligned, 8 41 2 max_units fixed bin, /* maximum number of login-units per session */ 8 42 2 pad_was_max_prim bit (36) aligned, 8 43 2 uwt_size fixed bin, /* size of User Weight Table */ 8 44 2 uwt (24) aligned, /* User Weight Table */ 8 45 3 initproc char (64) unaligned, /* user's initial procedure */ 8 46 3 units fixed bin, /* weight of initial procedure */ 8 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 8 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 8 49 2 project (3258), /* The SAT entries. 255K segment. */ 8 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 8 51 8 52 8 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 8 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 8 55 2 project_id char (12) unaligned, /* project's name */ 8 56 2 project_dir char (64) unaligned, /* project's directory */ 8 57 2 pdt_ptr pointer, /* pointer to current PDT */ 8 58 2 max_users fixed bin, /* maximum number of users from project */ 8 59 2 n_users fixed bin, /* current number */ 8 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 8 61 2 admin (4) aligned, /* list of project's administrators */ 8 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 8 63 3 pad char (2) unal, 8 64 2 cutoff char (1), /* if project is cut off, why. */ 8 65 2 min_ring fixed bin, /* lowest ring for project */ 8 66 2 max_ring fixed bin, /* highest ring for project */ 8 67 2 alias char (8) unal, /* project alias */ 8 68 2 group char (8) unal, /* default group for this project */ 8 69 2 grace_max fixed bin, /* maximum bump grace */ 8 70 2 audit bit (36), /* audit flags for project */ 8 71 2 project_authorization (2) bit (72), /* authorization of this project */ 8 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 8 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 8 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 8 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 8 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 8 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 8 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 8 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 8 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 8 81 2 satpad1 fixed bin (9) unsigned unaligned, 8 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 8 83 2 chain fixed bin; /* if free entry, chain */ 8 84 8 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 131 10 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 10 2 /* format: style2,^inddcls,idind32 */ 10 3 10 4 declare 1 terminate_file_switches based, 10 5 2 truncate bit (1) unaligned, 10 6 2 set_bc bit (1) unaligned, 10 7 2 terminate bit (1) unaligned, 10 8 2 force_write bit (1) unaligned, 10 9 2 delete bit (1) unaligned; 10 10 10 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 10 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 10 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 10 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 10 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 10 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 10 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 10 18 10 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 132 133 134 dcl 1 Nsate aligned like project; 135 136 dcl 1 Nprojfile aligned, 137 2 id char (12), /* project ID */ 138 2 title char (52), /* project title */ 139 2 inv char (32), /* name of principal investigator */ 140 2 inv_addr char (32), /* address */ 141 2 sup char (32), /* name of supervisor */ 142 2 sup_addr char (32), /* address */ 143 2 sup_phone char (16), /* telephone */ 144 2 on fixed bin (71), /* date on */ 145 2 off fixed bin (71), /* date off */ 146 2 disk_psec fixed bin (71), /* project disk page-seconds */ 147 2 disk_quota fixed bin (35), /* project disk quota */ 148 2 disk_use fixed bin (35), /* current project disk occupancy */ 149 2 disk_infs fixed bin (35), /* number of inferior directories on proj */ 150 2 misc_charges float bin, /* manuals, etc */ 151 2 n_misc fixed bin, /* number of entries */ 152 2 processed fixed bin; /* temp for usage-report */ 153 154 dcl 1 Nreqfile aligned, 155 2 acctid char (12), /* account id. usually same as Proj */ 156 2 mitacct char (12), /* MIT account no. */ 157 2 reqno char (12), /* requisition or PO no. */ 158 2 qflag char (8), /* class & activity */ 159 2 procssd fixed bin, /* temp for usage report */ 160 2 qdn fixed bin (71), /* date on for account */ 161 2 qdf fixed bin (71), /* date off */ 162 2 billing_name char (32), /* where to send bill */ 163 2 billing_addr char (32), 164 2 chg_mo float bin (63), /* charges this month */ 165 2 chg_tr float bin (63), /* charges this req */ 166 2 req_amt float bin (63), /* req face value */ 167 2 cutoff fixed bin (71); /* term date for req */ 168 169 dcl LEGAL char (71) int static init /* Legal chars for project ID. */ 170 ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'_`^~/-abcdefghijklmnopqrstuvwxyz "); 171 172 /* ======================================================== */ 173 174 dn = get_wdir_ (); 175 en = "sys_admin_data"; 176 call hcs_$initiate (dn, en, "", 0, 1, sadp, ec); 177 if sadp = null then go to er1; 178 call set_lock_$lock (sys_admin_data.lock, 60, ec); 179 if ec ^= 0 then 180 if ec = error_table_$locked_by_this_process then mylock = "1"b; 181 else if ec ^= error_table_$invalid_lock_reset then do; 182 call com_err_ (ec, "rename_proj", "Sys_admin_data is locked by ^a", sys_admin_data.locker); 183 go to exit1; 184 end; 185 call user_info_ (myname, myproj); 186 sys_admin_data.locker = myname; 187 en = "smf.cur.sat"; 188 call hcs_$initiate (dn, en, "", 0, 1, satp, ec); 189 if satp = null then do; 190 er1: call com_err_ (ec, "rename_proj", en); 191 go to abend; 192 end; 193 en = "projfile"; 194 call hcs_$initiate (dn, en, "", 0, 1, pp, ec); 195 if pp = null then go to er1; 196 en = "reqfile"; 197 call hcs_$initiate (dn, en, "", 0, 1, qp, ec); 198 if qp = null then go to er1; 199 200 call cu_$arg_ptr (1, ap, al, ec); /* was Project ID supplied */ 201 if ec ^= 0 then go to er1; 202 old_name = bchr; /* Get old name of project */ 203 Nsate.project_id = old_name; 204 205 do i = 1 to sat.current_size; 206 satep = addr (sat.project (i)); 207 if project.state = 1 then 208 if project.project_id = old_name then go to satfnd; 209 end; 210 call com_err_ (0, "rename_proj", "Project ""^a"" is not registered.", old_name); 211 go to abend; 212 213 satfnd: do reqi = 1 to reqfile.nacts while (old_name ^= reqfile.acctid (reqi)); end; 214 if reqi > reqfile.nacts then do; 215 call com_err_ (0, "rename_proj", "Project ""^a"" is not in reqfile.", old_name); 216 return; 217 end; 218 if reqfile.qdf (reqi) ^= 0 then call ioa_ ("Warning: Project ""^a"" deleted from reqfile.", 219 old_name); 220 do projj = 1 to projfile.nproj while (old_name ^= projfile.id (projj)); end; 221 if projj > projfile.nproj then do; 222 call com_err_ (0, "rename_proj", "Project ""^a"" is not in projfile.", old_name); 223 return; 224 end; 225 if projfile.off (projj) ^= 0 then call ioa_ ("Warning: project ""^a"" deleted from projfile.", 226 old_name); 227 228 /* Get the new name */ 229 230 call cu_$arg_ptr (2, ap, al, ec); /* was Project ID supplied */ 231 if ec ^= 0 then go to er1; 232 new_name = bchr; /* Get desired new name */ 233 if verify (new_name, LEGAL) ^= 0 then do; 234 call ioa_ ("rename_proj: illegal character in new project ID ""^a""", new_name); 235 go to abend; 236 end; 237 if index (substr (LEGAL, 1, 36), substr (new_name, 1, 1)) = 0 then do; 238 call ioa_ ("rename_proj: New project ID does not begin with capital letter or digit."); 239 go to abend; 240 end; 241 if new_name ^= old_name then 242 do i = 1 to sat.current_size; 243 tp = addr (sat.project (i)); 244 if tp -> project.state ^= 0 then 245 if tp -> project.project_id = new_name then do; 246 call com_err_ (0, "rename_proj", "Project ""^a"" already exists.", new_name); 247 go to abend; 248 end; 249 end; 250 251 call ioa_$rsnnl ("^a.pdt", new_pdt, i, new_name); 252 call ioa_$rsnnl ("^a.pdt", old_pdt, i, old_name); 253 254 old_alias = project.alias; 255 call cu_$arg_ptr (3, ap, al, ec); /* Get new alias */ 256 if ec ^= 0 then new_alias = ""; 257 else do; 258 new_alias = bchr; 259 if new_alias ^= old_alias then 260 do i = 1 to sat.current_size; 261 tp = addr (sat.project (i)); 262 if tp -> project.state = 1 then 263 if tp -> project.alias = new_alias then do; 264 call com_err_ (0, "rename_proj", "Alias ^a is already used by project ^a", 265 new_alias, tp -> project.project_id); 266 go to abend; 267 end; 268 end; 269 end; 270 271 /* Copy the project data so we can edit it. */ 272 273 Nsate = project; /* Copy whole SAT entry. */ 274 275 movelen = lope; /* Copy projfile entry. */ 276 pp1 = addr (projfile.projfiletab (projj)); 277 pp2 = addr (Nprojfile); 278 pp2 -> movetable = pp1 -> movetable; 279 280 movelen = loqe; /* Copy whole reqfile entry. */ 281 qp1 = addr (reqfile.reqfiletab (reqi)); 282 qp2 = addr (Nreqfile); 283 qp2 -> movetable = qp1 -> movetable; 284 285 /* Renaming of project */ 286 287 Nsate.project_id = new_name; 288 Nsate.alias = new_alias; 289 Nprojfile.id = new_name; 290 Nreqfile.acctid = new_name; 291 292 /* Fix Nsate.admin (i) and Nsate.project_dir */ 293 294 do i = 1 to 4; 295 k = index (Nsate.admin (i).userid, "."); 296 if substr (Nsate.admin (i).userid, k+1) = old_name then 297 substr (Nsate.admin (i).userid, k+1) = new_name; 298 end; 299 300 call ioa_$rsnnl ("^a>^a", Nsate.project_dir, i, udd, new_name); 301 302 /* Now adjust ACLs if any changes were made. */ 303 304 do i = 1 to 4; 305 old (i) = project.admin (i).userid; 306 new (i) = Nsate.admin (i).userid; 307 end; 308 do i = 1 to 4; 309 do j = 1 to 4; 310 if old (i) = new (j) then do; 311 old (i), new (j) = ""; 312 go to okacl; 313 end; 314 end; 315 okacl: end; 316 do i = 1 to 4; 317 if old (i) ^= "" then do; 318 n_acldel = n_acldel + 1; 319 j = index (old (i), " "); 320 del_acl (n_acldel).user = substr (old (i), 1, j-1) || ".*"; 321 end; 322 if new (i) ^= "" then do; 323 n_acladd = n_acladd + 1; 324 j = index (new (i), " "); 325 add_seg_acl (n_acladd).user = substr (new (i), 1, j-1) || ".*"; 326 add_seg_acl (n_acladd).mode = "100"b; 327 add_seg_acl (n_acladd).mbz = 0; 328 add_dir_acl (n_acladd).user = add_seg_acl (n_acladd).user; 329 add_dir_acl (n_acladd).mode = "111"b; 330 end; 331 end; 332 n_acldel = n_acldel + 1; 333 call ioa_$rsnnl ("*.^a.*", del_acl (n_acldel).user, i, old_name); 334 n_acladd = n_acladd + 1; 335 call ioa_$rsnnl ("*.^a.*", add_dir_acl (n_acladd).user, i, new_name); 336 add_dir_acl (n_acladd).mode = "100"b; /* "S" access for others on project */ 337 338 call hcs_$delete_dir_acl_entries (sc1, "update", addr (del_acl), n_acldel-1, ec); 339 call hcs_$delete_acl_entries (sc1_pdt, old_pdt, addr (del_acl), n_acldel-1, ec); 340 call hcs_$delete_dir_inacl_entries (udd, old_name, addr (del_acl), n_acldel, USERRING, ec); 341 call hcs_$delete_dir_acl_entries (udd, old_name, addr (del_acl), n_acldel, ec); 342 call hcs_$add_acl_entries (sc1_pdt, old_pdt, addr (add_seg_acl), n_acladd-1, ec); 343 if ec ^= 0 then do i = 1 to n_acladd-1; 344 if add_seg_acl (i).code ^= 0 then 345 call com_err_ (add_seg_acl (i).code, "rename_proj", "Cannot add ^a to ACL of ^a", 346 add_seg_acl (i).user, old_pdt); 347 end; 348 call hcs_$add_dir_inacl_entries (udd, old_name, addr (add_dir_acl), n_acladd, USERRING, ec); 349 if ec ^= 0 then do i = 1 to n_acladd-1; 350 if add_dir_acl (i).code ^= 0 then 351 call com_err_ (add_dir_acl (i).code, "rename_proj", "Cannot add ^a to initial ACL of ^a>^a", 352 add_dir_acl (i).user, udd, old_name); 353 end; 354 call hcs_$add_dir_acl_entries (udd, old_name, addr (add_dir_acl), n_acladd, ec); 355 if ec ^= 0 then do i = 1 to n_acladd; 356 if add_dir_acl (i).code ^= 0 then 357 call com_err_ (add_dir_acl (i).code, "rename_proj", "Cannot add ^a to ACL of ^a>^a", 358 add_dir_acl (i).user, udd, old_name); 359 end; 360 n_acladd = n_acladd - 1; 361 do i = 1 to n_acladd; 362 add_dir_acl (i).mode = "001"b; 363 end; 364 call hcs_$add_dir_acl_entries (sc1, "update", addr (add_dir_acl), n_acladd, ec); 365 if ec ^= 0 then do i = 1 to n_acladd; 366 if add_dir_acl (i).code ^= 0 then 367 call com_err_ (add_dir_acl (i).code, "rename_proj", "Cannot add ^a to ACL of ^a>^a", 368 add_dir_acl (i).user, sc1, "update"); 369 end; 370 371 /* Rename the project directory. */ 372 373 call hcs_$chname_file (udd, old_name, old_name, new_name, ec); 374 if ec ^= 0 then 375 call com_err_ (ec, "rename_proj", "Cannot add name ^a to ^a>^a", new_name, udd, old_name); 376 if old_alias ^= "" then 377 call hcs_$chname_file (udd, old_alias, old_alias, new_alias, ec); 378 if ec ^= 0 then 379 call com_err_ (ec, "rename_proj", "Cannot add alias ^a to ^a>^a", new_alias, udd, old_alias); 380 381 /* Fix up the project's PDT, and then rename it */ 382 383 en = old_pdt; 384 call hcs_$initiate (sc1_pdt, en, "", 0, 1, pdtp, ec); 385 if pdtp = null then go to er2; 386 pdt.project_name = new_name; /* update pdt entries */ 387 pdt.project_dir = rtrim(udd) || ">" || rtrim(new_name); 388 call hcs_$chname_file (sc1_pdt, old_pdt, old_pdt, new_pdt, ec); 389 if ec ^= 0 then do; 390 er2: call com_err_ (ec, "rename_proj", "Cannot add name ^a to ^a>^a", new_pdt, sc1_pdt, old_pdt); 391 end; 392 do ai = 1 to n_acladd; 393 add_dir_acl (ai).mode = "111"b; 394 end; 395 add_user_dir_acl.mode = "111"b; /* for user's own home_dir */ 396 do i = 1 to pdt.current_size; 397 tpp = addr (pdt.user (i)); 398 tpp -> user.home_dir = rtrim(pdt.project_dir) || ">" || rtrim(tpp -> user.person_id); 399 call hcs_$add_dir_acl_entries (pdt.project_dir, tpp -> user.person_id, addr (add_dir_acl), n_acladd, ec); 400 if ec ^= 0 then do ai = 1 to n_acladd; 401 if add_dir_acl (ai).code ^= 0 then 402 call com_err_ (add_dir_acl (ai).code, "rename_proj", "Cannot add ^a to ACL of ^a>^a", add_dir_acl (ai).user, rtrim(pdt.project_dir), tpp -> user.home_dir); 403 end; 404 call hcs_$delete_dir_acl_entries (pdt.project_dir, tpp -> user.person_id, addr (del_acl), n_acldel, ec); 405 if ec ^= 0 then do ai = 1 to n_acldel; 406 if del_acl (ai).code ^= 0 then 407 call com_err_ (del_acl (ai).code, "rename_proj", "Cannot delete ^a from ACL of ^a>^a", del_acl (ai).user, rtrim(pdt.project_dir), tpp -> user.home_dir); 408 end; 409 add_user_dir_acl.user = rtrim(tpp -> user.person_id) || "." || rtrim(new_name) || ".*"; 410 del_user_acl.user = rtrim(tpp -> user.person_id) || "." || rtrim(old_name) || ".*"; 411 call hcs_$add_dir_acl_entries (pdt.project_dir, rtrim(tpp -> user.person_id), addr (add_user_dir_acl), 1, ec); 412 if ec ^= 0 then do; 413 if add_user_dir_acl.code ^= 0 then 414 call com_err_ (add_user_dir_acl.code, "rename_proj", "Cannot add ^a to ACL of ^a", add_user_dir_acl.user, tpp -> user.home_dir); 415 end; 416 call hcs_$delete_dir_acl_entries (pdt.project_dir, rtrim(tpp -> user.person_id), addr (del_user_acl), 1, ec); 417 if ec ^= 0 then do ai = 1 to n_acldel; 418 if del_acl (ai).code ^= 0 then 419 call com_err_ (del_acl (ai).code, "rename_proj", "Cannot delete ^a from ACL of ^a>^a", del_acl (ai).user, rtrim(pdt.project_dir), tpp -> user.home_dir); 420 end; 421 end; 422 tpp = null; 423 424 /* Copy the data back. */ 425 426 project = Nsate; 427 428 /* Create a dummy SAT entry for the old project name. This entry will be 429* used by up_sat_ to recognize a renamed project based on the state = 3 */ 430 431 sat_count = sat.current_size + 1; 432 satep = addr (sat.project (sat_count)); 433 Nsate.state = 3; /* renamed state */ 434 Nsate.project_id = old_name; /* previous name */ 435 Nsate.project_dir, Nsate.cutoff, 436 Nsate.alias, Nsate.group = ""; 437 Nsate.pdt_ptr = null (); 438 Nsate.max_users, Nsate.n_users, 439 Nsate.min_ring, Nsate.max_ring, 440 Nsate.grace_max, Nsate.days_to_cutoff, 441 Nsate.pct_balance, Nsate.pdir_quota, 442 Nsate.max_foreground, Nsate.max_background, 443 Nsate.abs_foreground_cpu_limit, 444 Nsate.rs_number, Nsate.satpad1, 445 Nsate.chain = 0; 446 Nsate.at = ""b; 447 do i = 1 to 4; 448 Nsate.admin.userid (i) = ""; 449 Nsate.admin.pad (i) = ""; 450 end; 451 Nsate.audit, Nsate.project_authorization, 452 Nsate.satpad = ""b; 453 Nsate.groups = ""; 454 Nsate.dollars_to_cutoff = 0e0; 455 456 project = Nsate; /* append the dummy */ 457 sat.current_size = sat_count; /* increment size of SAT to 458* include dummy entry */ 459 460 movelen = lope; 461 pp1 -> movetable = pp2 -> movetable; 462 463 movelen = loqe; 464 qp1 -> movetable = qp2 -> movetable; 465 466 /* Terminate all segments. */ 467 468 abend: call hcs_$terminate_noname (pp, ec); 469 call hcs_$terminate_noname (pdtp, ec); 470 call hcs_$terminate_noname (qp, ec); 471 /* call hcs_$terminate_noname (satp, ec);*/ 472 call terminate_file_ (satp, 36 * (SAT_header_lth + sat.current_size * 473 SAT_entry_lth), TERM_FILE_TRUNC_BC_TERM, (0)); 474 exit1: if ^mylock then call set_lock_$unlock (sys_admin_data.lock, ec); 475 call hcs_$terminate_noname (sadp, ec); 476 return; 477 478 test: entry (asc1, audd, asc1p); 479 dcl (asc1, audd, asc1p) char (*); 480 481 sc1 = asc1; 482 udd = audd; 483 sc1_pdt = asc1p; 484 return; 485 486 end rename_proj; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0941.2 rename_proj.pl1 >special_ldd>install>MR12.2-1047>rename_proj.pl1 126 1 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 1-112 2 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 127 3 01/30/85 1523.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 128 4 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 4-29 5 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 129 6 09/20/84 0925.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 130 7 09/20/84 0925.7 reqfile.incl.pl1 >ldd>include>reqfile.incl.pl1 131 8 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 8-34 9 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 132 10 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 000000 constant char(71) initial packed unaligned dcl 169 ref 233 237 Nprojfile 000732 automatic structure level 1 dcl 136 set ref 277 Nreqfile 001032 automatic structure level 1 dcl 154 set ref 282 Nsate 000612 automatic structure level 1 dcl 134 set ref 273* 426 456 SAT_entry_lth constant fixed bin(17,0) initial dcl 8-24 ref 472 SAT_header_lth constant fixed bin(17,0) initial dcl 8-24 ref 472 TERM_FILE_TRUNC_BC_TERM 000032 constant bit(3) initial packed unaligned dcl 10-15 set ref 472* USERRING 000562 automatic fixed bin(3,0) initial dcl 78 set ref 78* 340* 348* abs_foreground_cpu_limit 115 000612 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 134 set ref 438* acctid 001032 automatic char(12) level 2 in structure "Nreqfile" dcl 154 in procedure "rename_proj" set ref 290* acctid 10 based char(12) array level 3 in structure "reqfile" packed packed unaligned dcl 7-5 in procedure "rename_proj" set ref 213 add_dir_acl 000247 automatic structure array level 1 dcl 57 set ref 348 348 354 354 364 364 399 399 add_seg_acl 000317 automatic structure array level 1 dcl 61 set ref 342 342 add_user_dir_acl 000437 automatic structure level 1 dcl 69 set ref 411 411 addr builtin function dcl 100 ref 206 243 261 276 277 281 282 338 338 339 339 340 340 341 341 342 342 348 348 354 354 364 364 397 399 399 404 404 411 411 416 416 432 admin 31 based structure array level 2 in structure "project" dcl 8-53 in procedure "rename_proj" admin 31 000612 automatic structure array level 2 in structure "Nsate" dcl 134 in procedure "rename_proj" ai 000167 automatic fixed bin(17,0) dcl 36 set ref 392* 393* 400* 401 401 401* 405* 406 406 406* 417* 418 418 418* al 000176 automatic fixed bin(17,0) dcl 36 set ref 200* 202 230* 232 255* 258 alias 74 000612 automatic char(8) level 2 in structure "Nsate" packed packed unaligned dcl 134 in procedure "rename_proj" set ref 288* 435* alias 74 based char(8) level 2 in structure "project" packed packed unaligned dcl 8-53 in procedure "rename_proj" set ref 254 262 ap 000174 automatic pointer dcl 36 set ref 200* 202 230* 232 255* 258 asc1 parameter char packed unaligned dcl 479 ref 478 481 asc1p parameter char packed unaligned dcl 479 ref 478 483 at 30 000612 automatic structure level 2 dcl 134 set ref 446* audd parameter char packed unaligned dcl 479 ref 478 482 audit 101 000612 automatic bit(36) level 2 dcl 134 set ref 451* bchr based char packed unaligned dcl 36 ref 202 232 258 chain 117 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* code 11 000247 automatic fixed bin(35,0) array level 2 in structure "add_dir_acl" dcl 57 in procedure "rename_proj" set ref 350 350* 356 356* 366 366* 401 401* code 10 000373 automatic fixed bin(35,0) array level 2 in structure "del_acl" dcl 66 in procedure "rename_proj" set ref 406 406* 418 418* code 11 000437 automatic fixed bin(35,0) level 2 in structure "add_user_dir_acl" dcl 69 in procedure "rename_proj" set ref 413 413* code 12 000317 automatic fixed bin(35,0) array level 2 in structure "add_seg_acl" dcl 61 in procedure "rename_proj" set ref 344 344* com_err_ 000112 constant entry external dcl 102 ref 182 190 210 215 222 246 264 344 350 356 366 374 378 390 401 406 413 418 cu_$arg_ptr 000102 constant entry external dcl 102 ref 200 230 255 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 8-32 in procedure "rename_proj" set ref 205 241 259 431 457* 472 current_size 36 based fixed bin(17,0) level 2 in structure "pdt" dcl 4-27 in procedure "rename_proj" ref 396 cutoff 71 000612 automatic char(1) level 2 dcl 134 set ref 435* days_to_cutoff 112 000612 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 134 set ref 438* del_acl 000373 automatic structure array level 1 dcl 66 set ref 338 338 339 339 340 340 341 341 404 404 del_user_acl 000451 automatic structure level 1 dcl 73 set ref 416 416 dn 000100 automatic char(168) dcl 36 set ref 174* 176* 188* 194* 197* dollars_to_cutoff 113 000612 automatic float bin(27) level 2 dcl 134 set ref 454* ec 000177 automatic fixed bin(35,0) dcl 36 set ref 176* 178* 179 179 181 182* 188* 190* 194* 197* 200* 201 230* 231 255* 256 338* 339* 340* 341* 342* 343 348* 349 354* 355 364* 365 373* 374 374* 376* 378 378* 384* 388* 389 390* 399* 400 404* 405 411* 412 416* 417 468* 469* 470* 474* 475* en 000152 automatic char(32) dcl 36 set ref 175* 176* 187* 188* 190* 193* 194* 196* 197* 383* 384* error_table_$invalid_lock_reset 000076 external static fixed bin(35,0) dcl 95 ref 181 error_table_$locked_by_this_process 000074 external static fixed bin(35,0) dcl 95 ref 179 get_wdir_ 000104 constant entry external dcl 102 ref 174 grace_max 100 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* group 76 000612 automatic char(8) level 2 packed packed unaligned dcl 134 set ref 435* groups 106 000612 automatic char(8) array level 2 packed packed unaligned dcl 134 set ref 453* hcs_$add_acl_entries 000114 constant entry external dcl 109 ref 342 hcs_$add_dir_acl_entries 000116 constant entry external dcl 110 ref 354 364 399 411 hcs_$add_dir_inacl_entries 000120 constant entry external dcl 111 ref 348 hcs_$chname_file 000122 constant entry external dcl 113 ref 373 376 388 hcs_$delete_acl_entries 000124 constant entry external dcl 114 ref 339 hcs_$delete_dir_acl_entries 000126 constant entry external dcl 115 ref 338 341 404 416 hcs_$delete_dir_inacl_entries 000130 constant entry external dcl 116 ref 340 hcs_$initiate 000132 constant entry external dcl 118 ref 176 188 194 197 384 hcs_$terminate_noname 000134 constant entry external dcl 120 ref 468 469 470 475 home_dir 34 based char(64) level 2 dcl 4-58 set ref 398* 401* 406* 413* 418* i 000164 automatic fixed bin(17,0) dcl 36 set ref 205* 206* 241* 243* 251* 252* 259* 261* 294* 295 296 296* 300* 304* 305 305 306 306* 308* 310 311* 316* 317 319 320 322 324 325* 333* 335* 343* 344 344 344* 349* 350 350 350* 355* 356 356 356* 361* 362* 365* 366 366 366* 396* 397* 447* 448 449* id 10 based char(12) array level 3 in structure "projfile" packed packed unaligned dcl 6-6 in procedure "rename_proj" set ref 220 id 000732 automatic char(12) level 2 in structure "Nprojfile" dcl 136 in procedure "rename_proj" set ref 289* index builtin function dcl 100 ref 237 295 319 324 ioa_ 000106 constant entry external dcl 102 ref 218 225 234 238 ioa_$rsnnl 000110 constant entry external dcl 102 ref 251 252 300 333 335 j 000165 automatic fixed bin(17,0) dcl 36 set ref 309* 310 311* 319* 320 324* 325 k 000166 automatic fixed bin(17,0) dcl 36 set ref 295* 296 296 lock based bit(36) level 2 dcl 3-10 set ref 178* 474* locker 1 based char(24) level 2 dcl 3-10 set ref 182* 186* lope constant fixed bin(17,0) initial dcl 6-30 ref 275 460 loqe constant fixed bin(17,0) initial dcl 7-25 ref 280 463 max_background 114(27) 000612 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 134 set ref 438* max_foreground 114(18) 000612 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 134 set ref 438* max_ring 73 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* max_users 26 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* mbz 11 000317 automatic fixed bin(35,0) array level 2 dcl 61 set ref 327* min_ring 72 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* mode 10 000317 automatic bit(36) array level 2 in structure "add_seg_acl" dcl 61 in procedure "rename_proj" set ref 326* mode 10 000437 automatic bit(36) level 2 in structure "add_user_dir_acl" dcl 69 in procedure "rename_proj" set ref 395* mode 10 000247 automatic bit(36) array level 2 in structure "add_dir_acl" dcl 57 in procedure "rename_proj" set ref 329* 336* 362* 393* movelen 000172 automatic fixed bin(24,0) dcl 36 set ref 275* 278 280* 283 460* 461 463* 464 movetable based structure level 1 dcl 123 set ref 278* 278 283* 283 461* 461 464* 464 mylock 000171 automatic bit(1) initial packed unaligned dcl 36 set ref 36* 179* 474 myname 000236 automatic char(24) packed unaligned dcl 54 set ref 185* 186 myproj 000244 automatic char(12) packed unaligned dcl 54 set ref 185* n_acladd 000564 automatic fixed bin(17,0) initial dcl 81 set ref 81* 323* 323 325 326 327 328 328 329 334* 334 335 336 342 343 348* 349 354* 355 360* 360 361 364* 365 392 399* 400 n_acldel 000565 automatic fixed bin(17,0) initial dcl 81 set ref 81* 318* 318 320 332* 332 333 338 339 340* 341* 404* 405 417 n_users 27 000612 automatic fixed bin(17,0) level 2 dcl 134 set ref 438* nacts based fixed bin(17,0) level 2 dcl 7-5 ref 213 214 new 000522 automatic char(32) array packed unaligned dcl 76 set ref 306* 310 311* 322 324 325 new_alias 000210 automatic char(8) dcl 49 set ref 256* 258* 259 262 264* 288 376* 378* new_name 000203 automatic char(12) dcl 48 set ref 232* 233 234* 237 241 244 246* 251* 287 289 290 296 300* 335* 373* 374* 386 387 409 new_pdt 000222 automatic char(32) dcl 50 set ref 251* 388* 390* nproj based fixed bin(35,0) level 2 dcl 6-6 ref 220 221 null builtin function dcl 100 ref 177 189 195 198 385 422 437 off 76 based fixed bin(71,0) array level 3 dcl 6-6 set ref 225 old 000462 automatic char(32) array packed unaligned dcl 76 set ref 305* 310 311* 317 319 320 old_alias 000206 automatic char(8) dcl 49 set ref 254* 259 376 376* 376* 378* old_name 000200 automatic char(12) dcl 48 set ref 202* 203 207 210* 213 215* 218* 220 222* 225* 241 252* 296 333* 340* 341* 348* 350* 354* 356* 373* 373* 374* 410 434 old_pdt 000212 automatic char(32) dcl 50 set ref 252* 339* 342* 344* 383 388* 388* 390* pad 40(18) 000612 automatic char(2) array level 3 packed packed unaligned dcl 134 set ref 449* pct_balance 112(18) 000612 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 134 set ref 438* pdir_quota 114 000612 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 134 set ref 438* pdt based structure level 1 dcl 4-27 pdt_ptr 24 000612 automatic pointer level 2 dcl 134 set ref 437* pdtp 000600 automatic pointer dcl 86 set ref 384* 385 386 387 396 397 398 399 401 401 404 406 406 411 416 418 418 469* person_id 2 based char(24) level 2 dcl 4-58 set ref 398 399* 404* 409 410 411 411 416 416 pp 000566 automatic pointer dcl 86 set ref 194* 195 220 220 221 225 276 468* pp1 000602 automatic pointer dcl 86 set ref 276* 278 461 pp2 000604 automatic pointer dcl 86 set ref 277* 278 461 project based structure level 1 dcl 8-53 in procedure "rename_proj" set ref 273 426* 456* project 722 based structure array level 2 in structure "sat" dcl 8-32 in procedure "rename_proj" set ref 206 243 261 432 project_authorization 102 000612 automatic bit(72) array level 2 dcl 134 set ref 451* project_dir 4 000612 automatic char(64) level 2 in structure "Nsate" packed packed unaligned dcl 134 in procedure "rename_proj" set ref 300* 435* project_dir 51 based char(64) level 2 in structure "pdt" dcl 4-27 in procedure "rename_proj" set ref 387* 398 399* 401 401 404* 406 406 411* 416* 418 418 project_id 1 000612 automatic char(12) level 2 in structure "Nsate" packed packed unaligned dcl 134 in procedure "rename_proj" set ref 203* 287* 434* project_id 1 based char(12) level 2 in structure "project" packed packed unaligned dcl 8-53 in procedure "rename_proj" set ref 207 244 264* project_name 42 based char(28) level 2 dcl 4-27 set ref 386* projfile based structure level 1 dcl 6-6 projfiletab 10 based structure array level 2 dcl 6-6 set ref 276 projj 000163 automatic fixed bin(17,0) dcl 36 set ref 220* 220* 221 225 276 qdf 26 based fixed bin(71,0) array level 3 dcl 7-5 set ref 218 qp 000570 automatic pointer dcl 86 set ref 197* 198 213 213 214 218 281 470* qp1 000606 automatic pointer dcl 86 set ref 281* 283 464 qp2 000610 automatic pointer dcl 86 set ref 282* 283 464 reqfile based structure level 1 dcl 7-5 reqfiletab 10 based structure array level 2 dcl 7-5 set ref 281 reqi 000162 automatic fixed bin(17,0) dcl 36 set ref 213* 213* 214 218 281 rs_number 115(18) 000612 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 134 set ref 438* rtrim builtin function dcl 100 ref 387 387 398 398 401 401 406 406 409 409 410 410 411 411 416 416 418 418 sadp 000574 automatic pointer dcl 86 set ref 176* 177 178 182 186 474 475* sat based structure level 1 dcl 8-32 sat_count 000170 automatic fixed bin(17,0) dcl 36 set ref 431* 432 457 satep 000576 automatic pointer dcl 86 set ref 206* 207 207 254 273 305 426 432* 456 satp 000572 automatic pointer dcl 86 set ref 188* 189 205 206 241 243 259 261 431 432 457 472* 472 satpad 116 000612 automatic bit(36) array level 2 dcl 134 set ref 451* satpad1 115(27) 000612 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 134 set ref 438* sc1 000050 internal static char(64) initial dcl 81 set ref 338* 364* 366* 481* sc1_pdt 000030 internal static char(64) initial dcl 81 set ref 339* 342* 384* 388* 390* 483* set_lock_$lock 000070 constant entry external dcl 95 ref 178 set_lock_$unlock 000072 constant entry external dcl 95 ref 474 special_project 000563 automatic bit(1) initial packed unaligned dcl 79 set ref 79* state 000612 automatic fixed bin(17,0) level 2 in structure "Nsate" dcl 134 in procedure "rename_proj" set ref 433* state based fixed bin(17,0) level 2 in structure "project" dcl 8-53 in procedure "rename_proj" set ref 207 244 262 substr builtin function dcl 100 set ref 237 237 296 296* 320 325 sys_admin_data based structure level 1 dcl 3-10 terminate_file_ 000136 constant entry external dcl 121 ref 472 tp 000232 automatic pointer dcl 52 set ref 243* 244 244 261* 262 262 264 tpp 000234 automatic pointer dcl 52 set ref 397* 398 398 399 401 404 406 409 410 411 411 413 416 416 418 422* udd 000010 internal static char(64) initial dcl 81 set ref 300* 340* 341* 348* 350* 354* 356* 373* 374* 376* 378* 387 482* user 400 based structure array level 2 in structure "pdt" dcl 4-27 in procedure "rename_proj" set ref 397 user 000437 automatic char(32) level 2 in structure "add_user_dir_acl" dcl 69 in procedure "rename_proj" set ref 409* 413* user 000247 automatic char(32) array level 2 in structure "add_dir_acl" dcl 57 in procedure "rename_proj" set ref 328* 335* 350* 356* 366* 401* user 000373 automatic char(32) array level 2 in structure "del_acl" dcl 66 in procedure "rename_proj" set ref 320* 333* 406* 418* user 000317 automatic char(32) array level 2 in structure "add_seg_acl" dcl 61 in procedure "rename_proj" set ref 325* 328 344* user based structure level 1 dcl 4-58 in procedure "rename_proj" user 000451 automatic char(32) level 2 in structure "del_user_acl" dcl 73 in procedure "rename_proj" set ref 410* user_attributes based structure level 1 dcl 1-21 user_info_ 000100 constant entry external dcl 102 ref 185 userid 31 000612 automatic char(30) array level 3 in structure "Nsate" packed packed unaligned dcl 134 in procedure "rename_proj" set ref 295 296 296* 306 448* userid 31 based char(30) array level 3 in structure "project" packed packed unaligned dcl 8-53 in procedure "rename_proj" set ref 305 verify builtin function dcl 100 ref 233 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-77 PDT_entry_lth internal static fixed bin(17,0) initial dcl 4-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 4-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 4-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 4-19 PDT_version internal static fixed bin(17,0) initial dcl 4-19 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 6-33 REQFILE_VERSION internal static fixed bin(17,0) initial dcl 7-28 SAT_project_name_length internal static fixed bin(17,0) initial dcl 8-24 SAT_version internal static fixed bin(17,0) initial dcl 8-24 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 10-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 10-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 10-16 TERM_FILE_TERM internal static bit(3) initial packed unaligned dcl 10-14 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 10-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 10-13 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 1-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 1-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 1-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-50 loph internal static fixed bin(17,0) initial dcl 6-30 loqh internal static fixed bin(17,0) initial dcl 7-25 pdtep automatic pointer dcl 86 terminate_file_switches based structure level 1 packed packed unaligned dcl 10-4 user_abs_attributes based structure level 1 dcl 2-25 NAMES DECLARED BY EXPLICIT CONTEXT. abend 005413 constant label dcl 468 ref 191 211 235 239 247 266 er1 000636 constant label dcl 190 ref 177 195 198 201 231 er2 003757 constant label dcl 390 ref 385 exit1 005507 constant label dcl 474 ref 183 okacl 002223 constant label dcl 315 ref 312 rename_proj 000365 constant entry external dcl 29 satfnd 001133 constant label dcl 213 ref 207 test 005540 constant entry external dcl 478 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6322 6462 6044 6332 Length 7132 6044 140 433 255 60 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rename_proj 659 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 udd rename_proj 000030 sc1_pdt rename_proj 000050 sc1 rename_proj STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rename_proj 000100 dn rename_proj 000152 en rename_proj 000162 reqi rename_proj 000163 projj rename_proj 000164 i rename_proj 000165 j rename_proj 000166 k rename_proj 000167 ai rename_proj 000170 sat_count rename_proj 000171 mylock rename_proj 000172 movelen rename_proj 000174 ap rename_proj 000176 al rename_proj 000177 ec rename_proj 000200 old_name rename_proj 000203 new_name rename_proj 000206 old_alias rename_proj 000210 new_alias rename_proj 000212 old_pdt rename_proj 000222 new_pdt rename_proj 000232 tp rename_proj 000234 tpp rename_proj 000236 myname rename_proj 000244 myproj rename_proj 000247 add_dir_acl rename_proj 000317 add_seg_acl rename_proj 000373 del_acl rename_proj 000437 add_user_dir_acl rename_proj 000451 del_user_acl rename_proj 000462 old rename_proj 000522 new rename_proj 000562 USERRING rename_proj 000563 special_project rename_proj 000564 n_acladd rename_proj 000565 n_acldel rename_proj 000566 pp rename_proj 000570 qp rename_proj 000572 satp rename_proj 000574 sadp rename_proj 000576 satep rename_proj 000600 pdtp rename_proj 000602 pp1 rename_proj 000604 pp2 rename_proj 000606 qp1 rename_proj 000610 qp2 rename_proj 000612 Nsate rename_proj 000732 Nprojfile rename_proj 001032 Nreqfile rename_proj THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac mpfx2 shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr get_wdir_ hcs_$add_acl_entries hcs_$add_dir_acl_entries hcs_$add_dir_inacl_entries hcs_$chname_file hcs_$delete_acl_entries hcs_$delete_dir_acl_entries hcs_$delete_dir_inacl_entries hcs_$initiate hcs_$terminate_noname ioa_ ioa_$rsnnl set_lock_$lock set_lock_$unlock terminate_file_ user_info_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_lock_reset error_table_$locked_by_this_process LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 36 000354 78 000355 79 000357 81 000360 29 000364 174 000373 175 000402 176 000405 177 000451 178 000455 179 000472 181 000502 182 000504 183 000541 185 000542 186 000557 187 000563 188 000566 189 000632 190 000636 191 000664 193 000665 194 000670 195 000734 196 000740 197 000743 198 001007 200 001013 201 001032 202 001034 203 001041 205 001046 206 001057 207 001063 209 001072 210 001074 211 001132 213 001133 213 001152 214 001154 215 001157 216 001215 218 001216 220 001242 220 001260 221 001262 222 001265 223 001323 225 001324 230 001350 231 001367 232 001371 233 001376 234 001410 235 001430 237 001431 238 001442 239 001456 241 001457 243 001473 244 001477 246 001505 247 001543 249 001544 251 001546 252 001575 254 001624 255 001630 256 001647 258 001654 259 001661 261 001675 262 001701 264 001710 266 001752 268 001753 273 001755 275 001761 276 001763 277 001770 278 001772 280 001777 281 002001 282 002006 283 002010 287 002015 288 002021 289 002023 290 002030 294 002035 295 002043 296 002057 298 002076 300 002100 304 002133 305 002141 306 002150 307 002155 308 002157 309 002165 310 002173 311 002210 312 002220 314 002221 315 002223 316 002225 317 002233 318 002242 319 002243 320 002254 321 002303 322 002304 323 002312 324 002313 325 002324 326 002353 327 002356 328 002357 329 002365 331 002367 332 002371 333 002372 334 002423 335 002424 336 002456 338 002461 339 002521 340 002557 341 002616 342 002651 343 002707 344 002721 347 002766 348 002770 349 003027 350 003041 353 003113 354 003115 355 003150 356 003161 359 003233 360 003235 361 003237 362 003247 363 003252 364 003254 365 003311 366 003323 369 003377 373 003401 374 003427 376 003475 378 003527 383 003575 384 003600 385 003644 386 003650 387 003654 388 003727 389 003755 390 003757 392 004023 393 004033 394 004036 395 004040 396 004042 397 004053 398 004056 399 004131 400 004165 401 004177 403 004273 404 004276 405 004333 406 004345 408 004441 409 004444 410 004527 411 004612 412 004671 413 004674 416 004740 417 005017 418 005031 420 005125 421 005130 422 005132 426 005134 431 005140 432 005144 433 005147 434 005151 435 005156 437 005166 438 005170 446 005220 447 005302 448 005307 449 005314 450 005317 451 005321 453 005346 454 005362 456 005364 457 005370 460 005373 461 005375 463 005403 464 005405 468 005413 469 005424 470 005435 472 005446 474 005507 475 005522 476 005533 478 005534 481 005566 482 005575 483 005602 484 005607 ----------------------------------------------------------- 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