COMPILATION LISTING OF SEGMENT edit_proj Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 10/21/92 1136.8 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 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 /****^ HISTORY COMMENTS: 16* 1) change(92-09-23,Zimmerman), approve(92-09-23,MCR8268), audit(92-10-13,Vu), 17* install(92-10-21,MR12.5-1034): 18* edit_proj changed to allow deletion of project alias from SAT (phx21304) 19* END HISTORY COMMENTS */ 20 21 22 /* format: style2 */ 23 edit_proj: 24 procedure options (variable); 25 26 27 /* EDIT_PROJ - This program is used by User Accounts to modify projects. 28* 29* Written by T. H. VanVleck in 1973 30* Modified June 1975 by T. Casey to add groups 31* Modified August 1977 by T. Casey to add min_ring and max_ring 32* Modified May 1978 by T. Casey to add pdir_quota. 33* Modified November 1978 by T. Casey for MR7.0 to add new absentee control parameters. 34* Modified April 1979 by T. Casey for MR7.0a to fix bug in $change_all entry point. 35* Modified October 1979 by T. Casey for MR8.0 to fix another bug in $change_all entry point. 36* Modified November 1979 by T. Casey to add -long ctl arg and change default to not -long. 37* Modified June 1980 by J.N. R. Barnecut to support multiple rate structure feature. 38* Modified March 1982 by E. N. Kittlitz to eliminate proj_admin_seg. 39* Modified 1984-07-09 BIM to restructure, add B2 things, dir quota. 40* Modified 1984-09-14 BIM to go to V3 edit_proj_args and pass the mgtp. 41* Modified 1984-09-20 BIM to correct acl determination on delegation. 42* Modified 1985-02-15 E. Swenson: Since Benson was just kidding, above, I 43* really corrected acl determination on delegation. 44* Modified 1985-04-25 EJ Sharpe: fixed bad subscript in CHANGE_ACLS 45**/ 46 47 dcl argx fixed bin; 48 dcl arg_count fixed bin; 49 dcl ap pointer; 50 dcl al fixed bin (21); 51 dcl argument char (al) based (ap); 52 dcl change_all_match_all bit (1) aligned; 53 dcl changed bit (1) aligned; 54 dcl changed_count fixed bin; 55 dcl code fixed bin (35); 56 dcl debug_switch bit (1) aligned init ("0"b); 57 dcl dir_priv_code fixed bin (35) init (-1); 58 dcl error bit (1) aligned; 59 dcl me char (32); 60 dcl mylock bit (1) aligned init ("0"b); 61 dcl project_name char (32); 62 dcl projfile_index fixed bin init (-1); 63 dcl reqfile_index fixed bin init (-1); 64 dcl satx fixed bin; 65 dcl (pp, qp, sadp, satp, satep, mgtp) 66 pointer; /* to famous data segments */ 67 dcl 1 EPA aligned like edit_proj_arg; 68 dcl uid char (32); 69 70 /* static (or nearly) */ 71 72 dcl USER_RING fixed bin (3) init (4); 73 74 dcl udd char (168) int static init (">user_dir_dir"); 75 dcl sc1_pdt char (168) int static init (">system_control_1>pdt"); 76 dcl sc1 char (168) int static init (">system_control_1"); 77 78 79 /* Entrypoints */ 80 81 dcl absolute_pathname_ entry (character (*), character (*), fixed binary (35)); 82 dcl aim_check_$greater entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 83 dcl com_err_ entry () options (variable); 84 dcl command_query_$yes_no entry () options (variable); 85 dcl continue_to_signal_ entry (fixed binary (35)); 86 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 87 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 88 dcl edit_proj_$check entry (pointer); 89 dcl edit_proj_ entry (pointer); 90 dcl expand_pathname_ entry (character (*), character (*), character (*), fixed binary (35)); 91 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 92 dcl get_group_id_ entry () returns (char (32)); 93 dcl get_wdir_ entry () returns (character (168)); 94 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 95 dcl hcs_$add_dir_acl_entries 96 entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 97 dcl hcs_$add_dir_inacl_entries 98 entry (char (*), char (*), ptr, fixed bin, fixed bin (3), fixed bin (35)); 99 dcl hcs_$delete_acl_entries 100 entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 101 dcl hcs_$delete_dir_acl_entries 102 entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 103 dcl hcs_$delete_dir_inacl_entries 104 entry (char (*), char (*), ptr, fixed bin, fixed bin (3), fixed bin (35)); 105 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 106 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 107 dcl ( 108 hcs_$quota_move, 109 hcs_$dir_quota_move 110 ) entry (char (*), char (*), fixed bin (18), fixed bin (35)); 111 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 112 dcl ioa_ entry () options (variable); 113 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), 114 fixed binary (35)); 115 dcl mdc_$set_mdir_quota entry (char (*), char (*), bit (1) aligned, fixed bin (18), fixed bin (35)); 116 dcl set_lock_$lock entry (bit (36) aligned, fixed binary, fixed binary (35)); 117 dcl set_lock_$unlock entry (bit (36) aligned, fixed binary (35)); 118 dcl sub_err_ entry () options (variable); 119 dcl system_privilege_$dir_priv_on 120 entry (fixed bin (35)); 121 dcl system_privilege_$dir_priv_off 122 entry (fixed bin (35)); 123 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 124 125 declare error_table_$too_many_args 126 fixed bin (35) ext static; 127 declare error_table_$badopt fixed bin (35) ext static; 128 declare error_table_$noentry fixed bin (35) ext static; 129 declare error_table_$locked_by_this_process 130 fixed bin (35) ext static; 131 declare error_table_$invalid_lock_reset 132 fixed bin (35) ext static; 133 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 */ 134 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 */ 135 4 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 4 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 4 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 4 4 /* Modified 1984-09-14 BIM for reasonable array size */ 4 5 4 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 4 7 2 nproj fixed bin (35), /* number of entries */ 4 8 2 version fixed bin, 4 9 2 projfilexx0 (6) bit (36) aligned, 4 10 2 projfiletab (3000), /* in seg limit */ 4 11 3 id char (12) unal, /* project ID */ 4 12 3 title char (52) unal, /* project title */ 4 13 3 inv char (32) unal, /* name of principal investigator */ 4 14 3 inv_addr char (32) unal, /* address */ 4 15 3 sup char (32) unal, /* name of supervisor */ 4 16 3 sup_addr char (32) unal, /* address */ 4 17 3 sup_phone char (16) unal, /* telephone */ 4 18 3 on fixed bin (71), /* date on */ 4 19 3 off fixed bin (71), /* date off */ 4 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 4 21 3 disk_quota fixed bin (35), /* project disk quota */ 4 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 4 23 3 disk_use fixed bin (35), /* total segment pages used */ 4 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 4 25 3 misc_charges float bin, /* manuals, etc */ 4 26 3 n_misc fixed bin, /* number of entries */ 4 27 3 processed fixed bin, /* temp for usage-report */ 4 28 3 pad bit (36) aligned; /* out to even number of words */ 4 29 4 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 4 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 4 32 4 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 4 34 4 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 136 5 1 /* Requisition file declaration */ 5 2 /* Modified BIM 1984-07-10 for unaligned strings */ 5 3 /* Modified BIM 1984-09-14 foor 3000 size-array */ 5 4 5 5 dcl 1 reqfile based (qp) aligned, /* MIT accounting data */ 5 6 2 nacts fixed, 5 7 2 version fixed bin, 5 8 2 pad (6) bit (36) aligned, 5 9 2 reqfiletab (3000), /* one entry per Multics account */ 5 10 /* same size as projfile */ 5 11 3 acctid char (12) unal, /* account id. usually same as Proj */ 5 12 3 mitacct char (12) unal, /* MIT account no. */ 5 13 3 reqno char (12) unal, /* requisition or PO no. */ 5 14 3 qflag char (8), /* class & activity */ 5 15 3 procssd fixed bin, /* temp for usage report */ 5 16 3 qdn fixed bin (71), /* date on for account */ 5 17 3 qdf fixed bin (71), /* date off */ 5 18 3 billing_name char (32) unal, /* where to send bill */ 5 19 3 billing_addr char (32) unal, 5 20 3 chg_mo float bin (63), /* charges this month */ 5 21 3 chg_tr float bin (63), /* charges this req */ 5 22 3 req_amt float bin (63), /* req face value */ 5 23 3 cutoff fixed bin (71); /* term date for req */ 5 24 5 25 dcl loqh int static fixed bin (17) init (8), /* length of reqfile head */ 5 26 loqe int static fixed bin (17) init (40); /* lth of reqfile entry */ 5 27 5 28 declare REQFILE_VERSION fixed bin init (2) int static options (constant); 5 29 5 30 /* End include file reqfile.incl.pl1 */ 137 6 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 6 2 6 3 6 4 6 5 6 6 /****^ HISTORY COMMENTS: 6 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 6 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 6 9* Expand comment line of project.state to include the renamed state (state = 6 10* 3). 6 11* END HISTORY COMMENTS */ 6 12 6 13 6 14 6 15 /* Modified 740723 by PG to add AIM info */ 6 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 6 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 6 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 6 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 6 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 6 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 6 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 6 23 6 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 6 25 6 26 SAT_header_lth init (466), /* length in words of SAT header */ 6 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 6 28 6 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 6 30 ) fixed bin internal static options (constant); 6 31 6 32 dcl 1 sat based (satp) aligned, 6 33 7 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 7 2 7 3 /* the "author" items must always be the first ones in the table. The 7 4* module which moves the converted table to the System Control process 7 5* fills in these data items and assumes them to be at the head of the segment 7 6* regardless of the specific table's actual declaration. The variables 7 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 7 8* respectively. For tables installed in multiple processes, these 7 9* are to be used to lock out multiple installations. */ 7 10 7 11 /* Lock should be used as a modification lock. Since, in general, 7 12* entries may not be moved in system tables, even by installations, 7 13* it is sufficient for only installers and programs that change threads 7 14* to set or respect the lock. Simply updating data in an entry 7 15* requires no such protection. 7 16* 7 17* Last_install_time is used by readers of system tables to detect 7 18* installations or other serious modifications. By checking it before 7 19* and after copying a block of data, they can be protected against 7 20* modifications. 7 21* 7 22* Modules that set the lock should save proc_group_id, and then 7 23* put their group id there for the time they hold the lock. 7 24* if they do not actually install the, they should restore the group id. 7 25**/ 7 26 7 27 2 author aligned, /* validation data about table's author */ 7 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 7 29 3 lock bit (36), /* installation lock */ 7 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 7 31 3 update_authorization bit (1) unal, /* update only authorizations */ 7 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 7 33 3 pad bit (33) unaligned, 7 34 3 last_install_time fixed bin (71), 7 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 7 36 3 w_dir char (64), /* author's working directory */ 7 37 7 38 /* END INCLUDE FILE author.incl.pl1 */ 6 34 6 35 2 max_size fixed bin, /* max number of entries table can grow */ 6 36 2 current_size fixed bin, /* current size of table (in entries) */ 6 37 2 version fixed bin, /* version number of table (word 32) */ 6 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 6 39 2 n_projects fixed bin, /* number of entries actually used */ 6 40 2 pad_was_max_users bit (36) aligned, 6 41 2 max_units fixed bin, /* maximum number of login-units per session */ 6 42 2 pad_was_max_prim bit (36) aligned, 6 43 2 uwt_size fixed bin, /* size of User Weight Table */ 6 44 2 uwt (24) aligned, /* User Weight Table */ 6 45 3 initproc char (64) unaligned, /* user's initial procedure */ 6 46 3 units fixed bin, /* weight of initial procedure */ 6 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 6 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 6 49 2 project (3258), /* The SAT entries. 255K segment. */ 6 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 6 51 6 52 6 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 6 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 6 55 2 project_id char (12) unaligned, /* project's name */ 6 56 2 project_dir char (64) unaligned, /* project's directory */ 6 57 2 pdt_ptr pointer, /* pointer to current PDT */ 6 58 2 max_users fixed bin, /* maximum number of users from project */ 6 59 2 n_users fixed bin, /* current number */ 6 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 6 61 2 admin (4) aligned, /* list of project's administrators */ 6 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 6 63 3 pad char (2) unal, 6 64 2 cutoff char (1), /* if project is cut off, why. */ 6 65 2 min_ring fixed bin, /* lowest ring for project */ 6 66 2 max_ring fixed bin, /* highest ring for project */ 6 67 2 alias char (8) unal, /* project alias */ 6 68 2 group char (8) unal, /* default group for this project */ 6 69 2 grace_max fixed bin, /* maximum bump grace */ 6 70 2 audit bit (36), /* audit flags for project */ 6 71 2 project_authorization (2) bit (72), /* authorization of this project */ 6 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 6 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 6 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 6 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 6 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 6 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 6 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 6 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 6 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 6 81 2 satpad1 fixed bin (9) unsigned unaligned, 6 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 6 83 2 chain fixed bin; /* if free entry, chain */ 6 84 6 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 138 8 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 8 2 8 3 /* Structure for find_condition_info_. 8 4* 8 5* Written 1-Mar-79 by M. N. Davidoff. 8 6**/ 8 7 8 8 /* automatic */ 8 9 8 10 declare condition_info_ptr pointer; 8 11 8 12 /* based */ 8 13 8 14 declare 1 condition_info aligned based (condition_info_ptr), 8 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 8 16 2 version fixed binary, /* Must be 1 */ 8 17 2 condition_name char (32) varying, /* name of condition */ 8 18 2 info_ptr pointer, /* pointer to the condition data structure */ 8 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 8 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 8 21 2 flags unaligned, 8 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 8 23 3 pad1 bit (35), 8 24 2 pad2 bit (36), 8 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 8 26 2 pad3 (4) bit (36); 8 27 8 28 /* internal static */ 8 29 8 30 declare condition_info_version_1 8 31 fixed binary internal static options (constant) initial (1); 8 32 8 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 139 9 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 9 2 /* format: style2 */ 9 3 9 4 declare condition_info_header_ptr 9 5 pointer; 9 6 declare 1 condition_info_header 9 7 aligned based (condition_info_header_ptr), 9 8 2 length fixed bin, /* length in words of this structure */ 9 9 2 version fixed bin, /* version number of this structure */ 9 10 2 action_flags aligned, /* tell handler how to proceed */ 9 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 9 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 9 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 9 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 9 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 9 16 3 pad bit (32) unaligned, 9 17 2 info_string char (256) varying, /* may contain printable message */ 9 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 9 19 9 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 140 10 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 10 2 /* format: style2 */ 10 3 10 4 /* The include file condition_info_header must be used with this file */ 10 5 10 6 declare sub_error_info_ptr pointer; 10 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 10 8 2 header aligned like condition_info_header, 10 9 2 retval fixed bin (35), /* return value */ 10 10 2 name char (32), /* module name */ 10 11 2 info_ptr ptr; 10 12 10 13 declare sub_error_info_version_1 10 14 internal static options (constant) fixed bin init (1); 10 15 10 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 141 11 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 11 2 11 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 11 4 11 5 /* This include file contains branch and link structures returned by 11 6* hcs_$status_ and hcs_$status_long. */ 11 7 11 8 dcl 1 status_branch aligned based (status_ptr), 11 9 2 short aligned, 11 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 11 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 11 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 11 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 11 14 3 dtu bit (36) unaligned, /* date/time last used */ 11 15 3 mode bit (5) unaligned, /* caller's effective access */ 11 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 11 17 3 pad1 bit (8) unaligned, 11 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 11 19 11 20 /* Limit of information returned by hcs_$status_ */ 11 21 11 22 2 long aligned, 11 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 11 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 11 25 3 lvid bit (36) unaligned, /* logical volume ID */ 11 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 11 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 11 28 3 pad2 bit (8) unaligned, 11 29 3 copy_switch bit (1) unaligned, /* copy switch */ 11 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 11 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 11 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 11 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 11 34 3 pad3 bit (5) unaligned, 11 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 11 36 3 uid bit (36) unaligned; /* unique ID */ 11 37 11 38 dcl 1 status_link aligned based (status_ptr), 11 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 11 40 2 nnames fixed bin (16) unaligned unsigned, 11 41 2 names_relp bit (18) unaligned, 11 42 2 dtem bit (36) unaligned, 11 43 2 dtd bit (36) unaligned, 11 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 11 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 11 46 11 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 11 48 based (pointer (status_area_ptr, status_branch.names_relp)), 11 49 /* array of names returned */ 11 50 status_pathname character (status_link.pathname_length) aligned 11 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 11 52 /* link target path */ 11 53 status_area_ptr pointer, 11 54 status_ptr pointer; 11 55 11 56 dcl (Link initial (0), 11 57 Segment initial (1), 11 58 Directory initial (2)) fixed bin internal static options (constant); 11 59 /* values for type fields declared above */ 11 60 11 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 142 12 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 12 2* 12 3* Values for the "access mode" argument so often used in hardcore 12 4* James R. Davis 26 Jan 81 MCR 4844 12 5* Added constants for SM access 4/28/82 Jay Pattin 12 6* Added text strings 03/19/85 Chris Jones 12 7**/ 12 8 12 9 12 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 12 11 dcl ( 12 12 N_ACCESS init ("000"b), 12 13 R_ACCESS init ("100"b), 12 14 E_ACCESS init ("010"b), 12 15 W_ACCESS init ("001"b), 12 16 RE_ACCESS init ("110"b), 12 17 REW_ACCESS init ("111"b), 12 18 RW_ACCESS init ("101"b), 12 19 S_ACCESS init ("100"b), 12 20 M_ACCESS init ("010"b), 12 21 A_ACCESS init ("001"b), 12 22 SA_ACCESS init ("101"b), 12 23 SM_ACCESS init ("110"b), 12 24 SMA_ACCESS init ("111"b) 12 25 ) bit (3) internal static options (constant); 12 26 12 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 12 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 12 29 12 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 12 31 static options (constant); 12 32 12 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 12 34 static options (constant); 12 35 12 36 dcl ( 12 37 N_ACCESS_BIN init (00000b), 12 38 R_ACCESS_BIN init (01000b), 12 39 E_ACCESS_BIN init (00100b), 12 40 W_ACCESS_BIN init (00010b), 12 41 RW_ACCESS_BIN init (01010b), 12 42 RE_ACCESS_BIN init (01100b), 12 43 REW_ACCESS_BIN init (01110b), 12 44 S_ACCESS_BIN init (01000b), 12 45 M_ACCESS_BIN init (00010b), 12 46 A_ACCESS_BIN init (00001b), 12 47 SA_ACCESS_BIN init (01001b), 12 48 SM_ACCESS_BIN init (01010b), 12 49 SMA_ACCESS_BIN init (01011b) 12 50 ) fixed bin (5) internal static options (constant); 12 51 12 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 143 13 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 13 2 /* format: style2,^inddcls,idind32 */ 13 3 13 4 declare 1 terminate_file_switches based, 13 5 2 truncate bit (1) unaligned, 13 6 2 set_bc bit (1) unaligned, 13 7 2 terminate bit (1) unaligned, 13 8 2 force_write bit (1) unaligned, 13 9 2 delete bit (1) unaligned; 13 10 13 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 13 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 13 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 13 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 13 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 13 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 13 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 13 18 13 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 144 14 1 /* Begin include file edit_proj_arguments_.incl.pl1 BIM 1984-08-27 */ 14 2 /* format: style3 */ 14 3 /* Modified 1984-09-14 BIM to pass in mgt_ptr */ 14 4 14 5 /**** This data structure is passed to edit_proj_ (and edit_proj_$review) 14 6* to inform if of the desired action. */ 14 7 14 8 declare edit_proj_arg_ptr pointer; 14 9 declare 1 edit_proj_arg aligned based (edit_proj_arg_ptr), 14 10 2 version char (8) aligned, 14 11 2 caller char (32) unaligned, 14 12 2 seg_pointers aligned, 14 13 3 ( 14 14 satep, /* SAT entry (project) */ 14 15 projfile_ep, /* projfile entry */ 14 16 reqfile_ep, /* reqfile entry */ 14 17 mgtp /* entire MGT */ 14 18 ) pointer, 14 19 2 flags aligned, 14 20 3 all bit (1) unaligned, /* prompt for all values */ 14 21 3 long bit (1) unaligned, /* speak up when changing one */ 14 22 3 report_project_name 14 23 bit (1) unaligned, /* include name of project in speech */ 14 24 3 match bit (1) unaligned, /* replace one of a list with another */ 14 25 3 brief_match bit (1) unaligned, /* do not complain if match fails */ 14 26 2 changes aligned, 14 27 3 anything bit (1) unaligned, /* any field changed */ 14 28 3 acls bit (1) unaligned, /* acls need to be recalculated */ 14 29 3 alias bit (1) unaligned, 14 30 3 seg_quota bit (1) unaligned, 14 31 3 dir_quota bit (1) unaligned, 14 32 2 value_index fixed bin, /* keyword */ 14 33 2 new_value aligned, 14 34 3 ptr pointer, 14 35 3 length fixed bin (21), 14 36 2 match_value aligned, 14 37 3 ptr pointer, 14 38 3 length fixed bin (21); 14 39 14 40 declare new_value_string char (edit_proj_arg.new_value.length) based (edit_proj_arg.new_value.ptr); 14 41 declare match_value_string char (edit_proj_arg.match_value.length) based (edit_proj_arg.match_value.ptr); 14 42 14 43 declare EDIT_PROJ_ARGS_V_2 char (8) init ("epagv002") int static options (constant); 14 44 14 45 /* End include file edit_proj_arguments_.incl.pl1 */ 145 15 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 15 2 /* format: style3,indcomtxt,idind30 */ 15 3 15 4 declare acl_ptr pointer; 15 5 declare acl_count fixed bin; 15 6 15 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 15 8 2 version char (8) aligned, 15 9 2 count fixed bin, 15 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 15 11 15 12 declare 1 general_acl_entry based, 15 13 2 access_name character (32) unaligned, 15 14 2 mode bit (36) aligned, 15 15 2 status_code fixed bin (35); 15 16 15 17 15 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 15 19 2 version char (8) aligned, 15 20 2 count fixed bin, 15 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 15 22 15 23 declare 1 general_extended_acl_entry aligned based, 15 24 2 access_name character (32) unaligned, 15 25 2 mode bit (36) aligned, 15 26 2 extended_mode bit (36) aligned, 15 27 2 status_code fixed bin (35); 15 28 15 29 15 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 15 31 2 version char (8) aligned, 15 32 2 count fixed bin, 15 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 15 34 15 35 declare 1 general_delete_acl_entry aligned based, 15 36 2 access_name character (32) unaligned, 15 37 2 status_code fixed bin (35); 15 38 15 39 15 40 declare 1 segment_acl aligned based (acl_ptr), 15 41 2 version fixed bin, 15 42 2 count fixed bin, 15 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 15 44 15 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 15 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 15 47 15 48 15 49 declare 1 directory_acl aligned based (acl_ptr), 15 50 2 version fixed bin, 15 51 2 count fixed bin, 15 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 15 53 15 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 15 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 15 56 15 57 15 58 declare 1 delete_acl based (acl_ptr) aligned, 15 59 2 version fixed bin, 15 60 2 count fixed bin, 15 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 15 62 15 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 15 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 15 65 15 66 15 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 15 68 DIR_ACL_VERSION_1 init ("dra1"), 15 69 DELETE_ACL_VERSION_1 init ("dla1")) 15 70 char (4) int static options (constant); 15 71 15 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 15 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 15 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 15 75 char (8) internal static options (constant); 15 76 15 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 15 78 15 79 /* End include file acl_structures.incl.pl1 */ 146 16 1 /* Begin include file edit_proj_keywords_.incl.pl1 BIM 1984-08-27 */ 16 2 /* format: style3 */ 16 3 16 4 dcl PROJ_KEY_NAMES (57) char (32) aligned int static options (constant) init ( 16 5 /** names of keywords */ 16 6 "title", /* 1 */ 16 7 "investigator", /* 2 */ 16 8 "investigator_address", /* 3 */ 16 9 "supervisor", /* 4 */ 16 10 "supervisor_address", /* 5 */ 16 11 "supervisor_phone", /* 6 */ 16 12 "account", /* 7 */ 16 13 "requisition", /* 8 */ 16 14 "requisition_amount", /* 9 */ 16 15 "cutoff_date", /* 10 */ 16 16 "billing_name", /* 11 */ 16 17 "billing_address", /* 12 */ 16 18 "group", /* 13 */ 16 19 "attributes", /* 14 */ 16 20 "grace", /* 15 */ 16 21 "administrator", /* 16 */ 16 22 "quota", /* 17 */ 16 23 "alias", /* 18 */ 16 24 "groups", /* 19 */ 16 25 "min_ring", /* 20 */ 16 26 "max_ring", /* 21 */ 16 27 "pdir_quota", /* 22 */ 16 28 "max_foreground", /* 23 */ 16 29 "max_background", /* 24 */ 16 30 "abs_foreground_cpu_limit", /* 25 */ 16 31 "rate_structure", /* 26 */ 16 32 "dir_quota", /* 27 */ 16 33 "authorization", /* 28 */ 16 34 "audit", /* 29 */ 16 35 /* Short names start here */ 16 36 "t", /* 1 */ 16 37 "inv", /* 2 */ 16 38 "inv_addr", /* 3 */ 16 39 "sup", /* 4 */ 16 40 "sup_addr", /* 5 */ 16 41 "sup_phone", /* 6 */ 16 42 "acct", /* 7 */ 16 43 "req", /* 8 */ 16 44 "amt", /* 9 */ 16 45 "cutoff", /* 10 */ 16 46 "billto", /* 11 */ 16 47 "billat", /* 12 */ 16 48 "grp", /* 13 */ 16 49 "attr", /* 14 */ 16 50 "gr", /* 15 */ 16 51 "admin", /* 16 */ 16 52 "q", /* 17 */ 16 53 "aka", /* 18 */ 16 54 "grps", /* 19 */ 16 55 "min", /* 20 */ 16 56 "max", /* 21 */ 16 57 "pdq", /* 22 */ 16 58 "maxfg", /* 23 */ 16 59 "maxbg", /* 24 */ 16 60 "absfgcpulim", /* 25 */ 16 61 "rs", /* 26 */ 16 62 "dq", /* 27 */ 16 63 "auth"); /* 28 */ 16 64 16 65 /* Note -- no short name for audit */ 16 66 16 67 16 68 dcl PROJ_KEY_VALUES (57) fixed bin int static options (constant) 16 69 init (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 16 70 25, 26, 27, 28, 29, /* long names */ 16 71 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 16 72 26, 27, 28); /* short names */ 16 73 16 74 dcl PROJ_KEY_ALL_ORDER (29) fixed bin int static options (constant) init ( 16 75 /** order to query when querying all */ 16 76 1, /* title */ 16 77 2, /* inv */ 16 78 3, /* inv_addr */ 16 79 4, /* sup */ 16 80 5, /* sup_addr */ 16 81 6, /* sup_phone */ 16 82 7, /* account */ 16 83 8, /* req */ 16 84 9, /* req_amt */ 16 85 10, /* cutoff */ 16 86 11, /* billing name */ 16 87 12, /* billing_addr */ 16 88 18, /* alias */ 16 89 16, /* administrator */ 16 90 25, /* abs-max-fg-cpu */ 16 91 28, /* auth */ 16 92 29, /* audit */ 16 93 17, /* quota */ 16 94 27, /* dir_quota */ 16 95 26, /* rate str */ 16 96 13, /* group */ 16 97 19, /* groups */ 16 98 14, /* attributes */ 16 99 15, /* grace */ 16 100 20, /* min ring */ 16 101 21, /* max_ring */ 16 102 22, /* pdir_quota */ 16 103 23, /* max_fg */ 16 104 24 /* max_bg */); 16 105 16 106 declare PROJ_KEYS_MATCH (2) fixed bin int static options (constant) init ( 16 107 /*** These can take the syntax: 16 108* edit_proj Project KEY OLD_VALUE NEW_VALUE 16 109* To match and replace OLD_VALUE ***/ 16 110 16, /** admin */ 16 111 19 /** groups */ 16 112 ); 16 113 16 114 /* End include file edit_proj_keywords_.incl.pl1 */ 147 17 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 17 2 /* format: style3 */ 17 3 17 4 /* These constants are to be used for the flags argument of sub_err_ */ 17 5 /* They are just "string (condition_info_header.action_flags)" */ 17 6 17 7 declare ( 17 8 ACTION_CAN_RESTART init (""b), 17 9 ACTION_CANT_RESTART init ("1"b), 17 10 ACTION_DEFAULT_RESTART 17 11 init ("01"b), 17 12 ACTION_QUIET_RESTART 17 13 init ("001"b), 17 14 ACTION_SUPPORT_SIGNAL 17 15 init ("0001"b) 17 16 ) bit (36) aligned internal static options (constant); 17 17 17 18 /* End include file */ 148 149 150 dcl 1 Nsate aligned like project; 151 dcl 1 Nprojfile aligned like projfile.projfiletab; 152 dcl 1 Nreqfile aligned like reqfile.reqfiletab; 153 dcl (addr, hbound, index, null, rtrim, unspec) builtin; 154 dcl (cleanup, sub_error_) condition; 155 156 157 /**** Normal call: 158* edit_proj Project prompts for all. 159* edit_proj Project keyword prompts for one. 160* edit_proj Project keyword new_value sets key to value 161* edit_proj Project keyword new_value -long sets key to value and reports result. 162* edit_proj Project match_keyword old_value {new_value} {-long} 163* looks up old_value in set of values for match_keyword and optionally replaces. 164**/ 165 166 me = "edit_proj"; 167 call command_setup; 168 169 if arg_count < 1 170 then 171 USAGE: 172 do; 173 call com_err_ (0, me, "Usage: edit_proj Project {key} {old_value} {new_value}"); 174 return; 175 end; 176 177 project_name = ""; 178 179 do argx = 1 to arg_count; 180 call cu_$arg_ptr (argx, ap, al, (0)); 181 if index (argument, "-") ^= 1 182 then do; /* non-control */ 183 if project_name = "" 184 then project_name = argument; 185 else if EPA.value_index = -1 186 then call lookup_keyword (); 187 else if matching_keyword () 188 then if EPA.match_value.ptr = null () 189 then do; 190 EPA.match = "1"b; 191 EPA.match_value.ptr = ap; 192 EPA.match_value.length = al; 193 end; 194 else if EPA.new_value.ptr = null () 195 then do; 196 EPA.new_value.ptr = ap; 197 EPA.new_value.length = al; 198 end; 199 else do; 200 call com_err_ (error_table_$too_many_args, me, 201 "Usage: edit_proj Project ^a old_value {new_value} {-control_args}.", 202 PROJ_KEY_NAMES (EPA.value_index)); 203 go to return; 204 end; 205 else /* not matching form */ 206 if EPA.new_value.ptr = null () 207 then do; 208 EPA.new_value.ptr = ap; 209 EPA.new_value.length = al; 210 end; 211 else do; 212 call com_err_ (error_table_$too_many_args, me, 213 "Usage: edit_proj Project ^a {new_value} {-control_args}.", 214 PROJ_KEY_NAMES (EPA.value_index)); 215 go to return; 216 end; 217 end; 218 else if argument = "-long" | argument = "-lg" 219 then EPA.long = "1"b; 220 else if argument = "-brief" | argument = "-bf" 221 then EPA.long = "0"b; 222 else if argument = "-debug" 223 then debug_switch = "1"b; 224 else do; 225 call com_err_ (error_table_$badopt, me, """^a"".", argument); 226 go to return; 227 end; 228 end; 229 230 if project_name = "" /* cannot abide without that */ 231 then go to USAGE; 232 233 mgtp, sadp, pp, qp, satp = null (); 234 dir_priv_code = -1; /* priv disabled */ 235 on cleanup call cleanup_segments; /* and priv */ 236 on sub_error_ call sub_error_handler; 237 238 call initiate_segments; /* and other misc setup */ 239 EPA.mgtp = mgtp; /* use the version we found */ 240 241 /**** Now, look for the specified project */ 242 243 do satx = 1 to sat.current_size; 244 satep = addr (sat.project (satx)); 245 if project.state = 1 246 then if project.project_id = project_name 247 then go to GOT_PROJECT; 248 end; 249 250 call com_err_ (error_table_$noentry, me, "Project ""^a"" not defined in SAT.", project_name); 251 call cleanup_segments; 252 go to return; 253 254 GOT_PROJECT: 255 Nsate = project; /* Now we have temporary copy */ 256 257 /**** However, we have to turn up the matching reqfile and projfile entries */ 258 259 call find_and_copy_other_tables (project_name, reqfile_index, projfile_index, error); 260 261 if error 262 then do; /* message already printed */ 263 call cleanup_segments; 264 go to return; 265 end; 266 267 if EPA.value_index = -1 268 then EPA.all = "1"b; /* all of them */ 269 270 EPA.satep = addr (Nsate); 271 EPA.projfile_ep = addr (Nprojfile); 272 EPA.reqfile_ep = addr (Nreqfile); 273 274 /**** At this point, EPA is completely filled in. */ 275 276 if ^EPA.all 277 then call edit_proj_$check (addr (EPA)); 278 call edit_one_project (("0"b)); /* ignore changed flag */ 279 if EPA.match 280 then if ^EPA.changes.anything 281 then call com_err_ (0, me, "No match for ^a ^a.", PROJ_KEY_NAMES (EPA.value_index), match_value_string); 282 283 call cleanup_segments; 284 return; 285 286 287 change_all: 288 entry options (variable); 289 290 /**** edit_proj$change_all keyword new_value {-long} 291* edit_proj$change_all match_keyword old_value new_value {-long} 292**/ 293 294 me = "edit_proj$change_all"; 295 call command_setup; 296 EPA.brief_match = "1"b; /* never complain about this in the all case, very few will match */ 297 EPA.report_project_name = "1"b; 298 299 if arg_count < 2 300 then 301 CA_USAGE: 302 do; 303 call com_err_ (0, me, "Usage: new_prog$change_all Keyword {old_value} {new_value} {-long}"); 304 go to return; 305 end; 306 307 change_all_match_all = "0"b; 308 do argx = 1 to arg_count; 309 call cu_$arg_ptr (argx, ap, al, (0)); 310 if index (argument, "-") ^= 1 311 then do; /* non-control */ 312 if EPA.value_index = -1 313 then call lookup_keyword (); 314 else if EPA.match_value.ptr = null () 315 then do; 316 EPA.match = "1"b; 317 EPA.match_value.ptr = ap; 318 EPA.match_value.length = al; 319 end; 320 else if EPA.new_value.ptr = null () 321 then do; 322 EPA.new_value.ptr = ap; 323 EPA.new_value.length = al; 324 end; 325 else do; 326 call com_err_ (error_table_$too_many_args, me, 327 "Usage: edit_proj$change_all ^a {old_value} {new_value} {-control_args}.", 328 PROJ_KEY_NAMES (EPA.value_index)); 329 go to return; 330 end; 331 end; 332 else if argument = "-all" 333 then change_all_match_all = "1"b; 334 else if argument = "-long" | argument = "-lg" 335 then EPA.long = "1"b; 336 else if argument = "-brief" | argument = "-bf" 337 then EPA.long = "0"b; 338 else if argument = "-debug" 339 then debug_switch = "1"b; 340 else do; 341 call com_err_ (error_table_$badopt, me, """^a"".", argument); 342 go to return; 343 end; 344 end; 345 346 if EPA.value_index = -1 /* Must know what keyword */ 347 then go to CA_USAGE; 348 349 if change_all_match_all 350 then do; 351 if EPA.new_value.ptr ^= null () 352 then do; 353 call com_err_ (0, me, 354 "-all may not be specified with a match value, since it matches all values of the field." 355 ); 356 go to return; 357 end; 358 EPA.new_value.ptr = EPA.match_value.ptr; 359 EPA.new_value.length = EPA.match_value.length; 360 EPA.match_value.ptr = null (); 361 EPA.match_value.length = 0; 362 EPA.match = "0"b; /* no match required, just do it. */ 363 end; 364 365 if ^EPA.match & EPA.new_value.ptr ^= null () /* set all, unconditionally? */ 366 then do; 367 call command_query_$yes_no (error, 0, me, 368 "If you answer ""yes"" to this query, ALL PROJECT will be changed.", 369 "Do you wish to change the ^a field of ALL projects on the system to ""^a""?", 370 PROJ_KEY_NAMES (EPA.value_index), new_value_string); 371 if ^error 372 then go to return; 373 end; 374 375 /**** Okay, we have arguments (we have arguments, earther.) */ 376 /**** However, we want to validate the new value BEFORE we go tearing 377* off through the SAT. */ 378 379 call edit_proj_$check (addr (EPA)); /* signals sub_error_ if it is displeasing */ 380 381 /**** We have a valid new value and match, to the extent that we know how. */ 382 /**** Now to loop through the SAT (with the greatest of ease.) */ 383 384 sadp, pp, qp, satp = null (); 385 dir_priv_code = -1; /* priv disabled */ 386 on cleanup call cleanup_segments; /* and priv */ 387 on sub_error_ call sub_error_handler; 388 389 call initiate_segments; /* assuming, of course, that the crucial goodies are to be had. */ 390 391 changed_count = 0; 392 do satx = 1 to sat.current_size; 393 satep = addr (sat.project (satx)); 394 if project.state = 1 /* in business? */ 395 then do; 396 Nsate = project; 397 project_name = Nsate.project_id; 398 call find_and_copy_other_tables (project_name, reqfile_index, projfile_index, error); 399 if ^error 400 then do; 401 EPA.changes = "0"b; /* expunge leftovers */ 402 EPA.satep = addr (Nsate); 403 EPA.projfile_ep = addr (Nprojfile); 404 EPA.reqfile_ep = addr (Nreqfile); 405 call edit_one_project (changed); 406 /* do the work */ 407 if changed 408 then changed_count = changed_count + 1; 409 end; 410 end; /* all done! */ 411 end; 412 413 if changed_count = 0 414 then call ioa_ ("^a: No projects were changed.", me); 415 else call ioa_ ("^a: ^d projects changed.", me, changed_count); 416 call cleanup_segments; 417 return; 418 419 420 edit_one_project: 421 procedure (changed); 422 423 declare changed bit (1) aligned; 424 425 /**** call edit_proj_ to do make changes in N*. 426* It leaves us notes when things change that require FS adjustments. */ 427 428 changed = "0"b; 429 call edit_proj_ (addr (EPA)); /* no errors save sub errors */ 430 if ^EPA.changes.anything 431 then return; /* dull! */ 432 433 changed = "1"b; 434 435 if EPA.changes.acls 436 then call CHANGE_ACLS; 437 if EPA.changes.alias & Nsate.alias ^= "" /* If null then alias deleted from SAT */ 438 then call CHANGE_ALIAS; 439 if EPA.changes.seg_quota 440 then call CHANGE_SEG_QUOTA; 441 if EPA.changes.dir_quota 442 then call CHANGE_DIR_QUOTA; 443 444 project = Nsate; /* ZOOM */ 445 projfile.projfiletab (projfile_index) = Nprojfile; 446 reqfile.reqfiletab (reqfile_index) = Nreqfile; 447 return; 448 449 CHANGE_ACLS: 450 procedure; 451 452 declare delete_me (4) char (32); 453 declare add_me (4) char (32); 454 declare add_idx fixed bin; 455 declare delete_idx fixed bin; 456 declare oldx fixed bin; 457 declare newx fixed bin; 458 declare x fixed bin; 459 declare 1 seg_acl_array (4) aligned like segment_acl_entry; 460 declare 1 dir_acl_array (4) aligned like directory_acl_entry; 461 declare 1 dl_acl_array (4) aligned like delete_acl_entry; 462 463 delete_me (*) = project.admin (*).userid; 464 add_me (*) = Nsate.admin (*).userid; 465 do oldx = 1 to 4; 466 if delete_me (oldx) ^= "" 467 then do newx = 1 to 4; 468 if delete_me (oldx) = add_me (newx) 469 then delete_me (oldx), add_me (newx) = ""; 470 end; 471 end; 472 473 /**** Now, delete_me is a possibly sparse array of entries to remove, 474* and add_me is a possibly sparse array of entries to add. */ 475 476 delete_idx, add_idx = 0; 477 478 do x = 1 to 4; 479 if delete_me (x) ^= "" 480 then do; 481 delete_idx = delete_idx + 1; 482 dl_acl_array (delete_idx).access_name = rtrim (delete_me (x)) || ".*"; 483 dl_acl_array (delete_idx).status_code = 0; 484 end; 485 if add_me (x) ^= "" 486 then do; 487 add_idx = add_idx + 1; 488 seg_acl_array (add_idx).access_name, dir_acl_array (add_idx).access_name = 489 rtrim (add_me (x)) || ".*"; 490 seg_acl_array (add_idx).mode = R_ACCESS; 491 /* >sc1>pdt>PDT */ 492 seg_acl_array (add_idx).extended_mode = ""b; 493 dir_acl_array (add_idx).mode = SMA_ACCESS; 494 /* project dir */ 495 seg_acl_array (add_idx).status_code, dir_acl_array (add_idx).status_code = 0; 496 end; 497 end; 498 499 /**** Now, we know we have something to do, and we have the arrays */ 500 501 if add_idx = 0 & delete_idx = 0 502 then return; /* nothing to do */ 503 504 call SET_DIR_PRIVILEGE_AS_NEEDED; 505 506 if delete_idx > 0 507 then do; 508 call hcs_$delete_acl_entries (sc1_pdt, rtrim (Nsate.project_id) || ".pdt", addr (dl_acl_array), 509 delete_idx, code); 510 if code ^= 0 511 then call com_err_ (code, me, 512 "Warning: Could not delete acl entries for removed administrators from ^a>^a.pdt", sc1_pdt, 513 Nsate.project_id); 514 call hcs_$delete_dir_acl_entries (udd, (Nsate.project_id), addr (dl_acl_array), delete_idx, code); 515 if code ^= 0 516 then call com_err_ (code, me, 517 "Warning: Could not delete acl entries for removed administrators from ^a>^a.", udd, 518 Nsate.project_id); 519 call hcs_$delete_dir_inacl_entries (udd, (Nsate.project_id), addr (dl_acl_array), delete_idx, 520 USER_RING, code); 521 if code ^= 0 522 then call com_err_ (code, me, 523 "Warning: Could not delete initial acl entries for removed administrators from ^a>^a.", udd, 524 Nsate.project_id); 525 end; 526 527 if add_idx > 0 528 then do; 529 call hcs_$add_acl_entries (sc1_pdt, rtrim (Nsate.project_id) || ".pdt", addr (seg_acl_array), add_idx, 530 code); 531 if code ^= 0 532 then call com_err_ (code, me, 533 "Warning: Could not add acl entries for added administrators to ^a>^a.pdt", sc1_pdt, 534 Nsate.project_id); 535 call hcs_$add_dir_inacl_entries (udd, (Nsate.project_id), addr (dir_acl_array), add_idx, USER_RING, 536 code); 537 if code ^= 0 538 then call com_err_ (code, me, 539 "Warning: Could not add initial acl entries for added administrators to ^a>^a.", udd, 540 Nsate.project_id); 541 call hcs_$add_dir_acl_entries (udd, (Nsate.project_id), addr (dir_acl_array), add_idx, code); 542 if code ^= 0 543 then call com_err_ (code, me, "Warning: Could not add acl entries for added administrators to ^a>^a.", 544 udd, Nsate.project_id); 545 546 dir_acl_array (*).mode = A_ACCESS; /* prepare to fool with >sc1>update */ 547 call hcs_$add_dir_acl_entries (sc1, "update", addr (dir_acl_array), add_idx, code); 548 if code ^= 0 549 then call com_err_ (code, me, 550 "Warning: Could not add append access to ^a>update for added administrators.", sc1); 551 return; 552 end; 553 end CHANGE_ACLS; 554 555 CHANGE_ALIAS: 556 procedure; 557 558 /* Fix the alias if it changed. */ 559 560 call SET_DIR_PRIVILEGE_AS_NEEDED; 561 562 call hcs_$chname_file (udd, (Nsate.project_id), "", (Nsate.alias), code); 563 /* don't remove old one, people may be used to it! */ 564 if code ^= 0 565 then call com_err_ (code, me, "Warning: Could not add new name ^a to ^a>^a.", Nsate.alias, udd, 566 Nsate.project_id); 567 568 return; 569 end CHANGE_ALIAS; 570 571 572 CHANGE_SEG_QUOTA: 573 procedure; 574 575 declare 1 SL aligned like status_branch; 576 declare q_delta fixed bin (18); 577 578 q_delta = Nprojfile.disk_quota - projfile.projfiletab (projfile_index).disk_quota; 579 580 call hcs_$status_long (udd, (Nsate.project_id), (1), addr (SL), null (), code); 581 if code ^= 0 582 then do; 583 call com_err_ (code, me, "Warning: Could not retrieve LVID of ^a>^a. Segment quota not changed.", udd, 584 Nsate.project_id); 585 return; 586 end; 587 588 call SET_DIR_PRIVILEGE_AS_NEEDED; 589 590 if SL.mdir_switch 591 then call mdc_$set_mdir_quota (udd, (Nsate.project_id), "1"b, q_delta, code); 592 else call hcs_$quota_move (udd, (Nsate.project_id), q_delta, code); 593 if code ^= 0 594 then call com_err_ (code, me, "Warning: could not move segment quota ^d for ^a>^a", q_delta, udd, 595 Nsate.project_id); 596 return; 597 end CHANGE_SEG_QUOTA; 598 599 600 601 CHANGE_DIR_QUOTA: 602 procedure; 603 604 declare q_delta fixed bin (18); 605 606 q_delta = Nprojfile.dir_disk_quota - projfile.projfiletab (projfile_index).dir_disk_quota; 607 608 call SET_DIR_PRIVILEGE_AS_NEEDED; 609 610 call hcs_$dir_quota_move (udd, (Nsate.project_id), q_delta, code); 611 if code ^= 0 612 then call com_err_ (code, me, "Warning: could not move directory quota ^d for ^a>^a", q_delta, udd, 613 Nsate.project_id); 614 return; 615 end CHANGE_DIR_QUOTA; 616 end edit_one_project; 617 618 619 test: 620 entry (asc1, audd); 621 dcl (asc1, audd) char (*); 622 623 call absolute_pathname_ (asc1, sc1, (0)); 624 call absolute_pathname_ (audd, udd, (0)); 625 626 sc1_pdt = rtrim (sc1) || ">pdt"; 627 call ioa_ ("sc1 = ^a, udd = ^a.", sc1, udd); 628 return; 629 630 631 SET_DIR_PRIVILEGE_AS_NEEDED: 632 procedure; 633 634 declare udd_acc bit (72) aligned; 635 declare pj_acc bit (72) aligned; 636 declare uddd char (168); 637 declare udde char (32); 638 639 if dir_priv_code = 0 640 then return; /* already on */ 641 call expand_pathname_ (udd, uddd, udde, code); 642 if code ^= 0 643 then call sub_err_ (code, me, ACTION_CANT_RESTART, null (), (0), "Could not expand pathname of ^a.", udd); 644 call hcs_$get_access_class (uddd, udde, udd_acc, code); 645 if code ^= 0 646 then call sub_err_ (code, me, ACTION_CANT_RESTART, null (), (0), "Could not get access class of ^a.", udd); 647 call hcs_$get_access_class (udd, (Nsate.project_id), pj_acc, code); 648 if code ^= 0 649 then call sub_err_ (code, me, ACTION_CANT_RESTART, null (), (0), "Could not get access class of ^a>^a.", udd, 650 Nsate.project_id); 651 if ^aim_check_$greater (pj_acc, udd_acc) 652 then return; 653 call system_privilege_$dir_priv_on (dir_priv_code); 654 /* atomic over code setting */ 655 return; 656 end SET_DIR_PRIVILEGE_AS_NEEDED; 657 658 command_setup: 659 procedure; /* has to be quick ... */ 660 661 unspec (EPA) = ""b; 662 edit_proj_arg_ptr = addr (EPA); 663 EPA.seg_pointers = null (); 664 EPA.new_value.ptr = null (); 665 EPA.match_value.ptr = null (); 666 EPA.value_index = -1; 667 EPA.version = EDIT_PROJ_ARGS_V_2; 668 EPA.caller = me; 669 670 call cu_$arg_count (arg_count, code); 671 if code ^= 0 672 then do; 673 call com_err_ (code, me); 674 go to return; 675 end; 676 return; 677 end command_setup; 678 679 lookup_keyword: 680 procedure; 681 declare kx fixed bin; 682 683 do kx = 1 to hbound (PROJ_KEY_NAMES, 1); 684 if argument = PROJ_KEY_NAMES (kx) 685 then do; 686 EPA.value_index = PROJ_KEY_VALUES (kx); 687 return; 688 end; 689 end; 690 691 call com_err_ (0, me, "Invalid keyword ""^a"".", argument); 692 go to return; 693 end lookup_keyword; 694 695 matching_keyword: 696 procedure returns (bit (1) aligned); 697 698 declare kx fixed bin; 699 700 do kx = 1 to hbound (PROJ_KEYS_MATCH, 1); 701 if EPA.value_index = PROJ_KEYS_MATCH (kx) 702 then return ("1"b); 703 end; 704 return ("0"b); 705 end matching_keyword; 706 707 sub_error_handler: 708 procedure; 709 710 declare 1 CI aligned like condition_info; 711 if debug_switch 712 then call continue_to_signal_ ((0)); 713 else do; 714 CI.version = condition_info_version_1; 715 call find_condition_info_ (null (), addr (CI), (0)); 716 sub_error_info_ptr = CI.info_ptr; 717 call com_err_ (sub_error_info.status_code, me, "^a", sub_error_info.info_string); 718 go to ERROR_EXIT; 719 end; 720 end sub_error_handler; 721 722 initiate_segments: 723 procedure; 724 725 declare dn char (168); 726 declare en char (32); 727 728 dn = get_wdir_ (); 729 en = "sys_admin_data"; 730 call initiate_file_ (dn, en, R_ACCESS, sadp, (0), code); 731 if code ^= 0 732 then go to segment_error; 733 call set_lock_$lock (sys_admin_data.lock, 60, code); 734 if code ^= 0 735 then if code = error_table_$locked_by_this_process 736 then mylock = "1"b; 737 else if code ^= error_table_$invalid_lock_reset 738 then do; 739 call com_err_ (code, "edit_proj", "Sys_admin_data is locked by ^a", sys_admin_data.locker); 740 call terminate_file_ (sadp, (0), TERM_FILE_TERM, (0)); 741 go to return; 742 end; 743 744 uid = get_group_id_ (); 745 746 en = "smf.cur.sat"; 747 call initiate_file_ (dn, en, RW_ACCESS, satp, (0), code); 748 if code ^= 0 749 then go to segment_error; 750 751 en = "projfile"; 752 call initiate_file_ (dn, en, RW_ACCESS, pp, (0), code); 753 if code ^= 0 754 then go to segment_error; 755 en = "reqfile"; 756 call initiate_file_ (dn, en, RW_ACCESS, qp, (0), code); 757 if code ^= 0 758 then go to segment_error; 759 dn = sc1; 760 en = "mgt"; 761 call initiate_file_ (dn, en, R_ACCESS, mgtp, (0), code); 762 if code ^= 0 763 then go to segment_error; 764 return; 765 766 segment_error: 767 call com_err_ (code, "edit_proj", "^a>^a", dn, en); 768 call cleanup_segments; 769 go to return; 770 end initiate_segments; 771 772 773 find_and_copy_other_tables: 774 procedure (project_name, reqfile_index, projfile_index, error); 775 776 declare error bit (1) aligned; 777 declare project_name char (*); 778 declare reqfile_index fixed bin; 779 declare projfile_index fixed bin; 780 declare tx fixed bin; 781 782 error = "0"b; 783 reqfile_index, projfile_index = -1; 784 785 do tx = 1 to reqfile.nacts while (project_name ^= reqfile.acctid (tx)); 786 end; 787 if tx > reqfile.nacts 788 then do; 789 call com_err_ (0, me, "Project ^a not in reqfile.", project_name); 790 error = "1"b; 791 return; 792 end; 793 if reqfile.qdf (tx) ^= 0 794 then call ioa_ ("^a: Warning: Project ""^a"" deleted from reqfile.", me, project_name); 795 796 reqfile_index = tx; 797 Nreqfile = reqfile.reqfiletab (tx); 798 799 do tx = 1 to projfile.nproj while (project_name ^= projfile.id (tx)); 800 end; 801 if tx > projfile.nproj 802 then do; 803 call com_err_ (0, me, "Project ""^a"" is not in projfile.", project_name); 804 error = "1"b; 805 return; 806 end; 807 if projfile.off (tx) ^= 0 808 then call ioa_ ("^a: Warning: project ""^a"" deleted from projfile.", me, project_name); 809 Nprojfile = projfile.projfiletab (tx); 810 projfile_index = tx; 811 return; 812 end find_and_copy_other_tables; 813 814 cleanup_segments: 815 procedure; 816 817 if dir_priv_code = 0 818 then call system_privilege_$dir_priv_off (code); 819 if pp ^= null () 820 then call terminate_file_ (pp, 36 * (loph + projfile.nproj * lope), TERM_FILE_TRUNC_BC_TERM, (0)); 821 if qp ^= null () 822 then call terminate_file_ (qp, 36 * (loqh + reqfile.nacts * loqe), TERM_FILE_TRUNC_BC_TERM, (0)); 823 if satp ^= null () 824 then call terminate_file_ (satp, 36 * (SAT_header_lth + sat.current_size * SAT_entry_lth), 825 TERM_FILE_TRUNC_BC_TERM, (0)); 826 if sadp ^= null () 827 then do; 828 if ^mylock 829 then call set_lock_$unlock (sys_admin_data.lock, code); 830 call terminate_file_ (sadp, (0), TERM_FILE_TERM, (0)); 831 end; 832 if mgtp ^= null () 833 then call terminate_file_ (mgtp, 0, TERM_FILE_TERM, (0)); 834 835 end cleanup_segments; 836 837 ERROR_EXIT: 838 call cleanup_segments; 839 return; 840 841 return: 842 return; 843 844 end edit_proj; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/21/92 1136.8 edit_proj.pl1 >spec>install>1034>edit_proj.pl1 134 1 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 1-112 2 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 135 3 01/30/85 1623.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 136 4 09/20/84 1025.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 137 5 09/20/84 1025.7 reqfile.incl.pl1 >ldd>include>reqfile.incl.pl1 138 6 08/06/87 1516.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 6-34 7 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 139 8 06/28/79 1304.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 140 9 03/24/82 1447.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 141 10 07/18/81 1200.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 142 11 11/22/82 1055.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 143 12 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 144 13 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 145 14 09/20/84 1025.7 edit_proj_arguments_.incl.pl1 >ldd>include>edit_proj_arguments_.incl.pl1 146 15 10/14/83 1706.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 147 16 09/13/84 1021.5 edit_proj_keywords_.incl.pl1 >ldd>include>edit_proj_keywords_.incl.pl1 148 17 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 001077 constant bit(36) initial dcl 17-7 set ref 642* 645* 648* A_ACCESS 001007 constant bit(3) initial packed unaligned dcl 12-11 ref 546 CI 000100 automatic structure level 1 dcl 710 set ref 715 715 EDIT_PROJ_ARGS_V_2 001004 constant char(8) initial packed unaligned dcl 14-43 ref 667 EPA 000154 automatic structure level 1 dcl 67 set ref 276 276 379 379 429 429 661* 662 Nprojfile 000346 automatic structure level 1 dcl 151 set ref 271 403 445 809* Nreqfile 000450 automatic structure level 1 dcl 152 set ref 272 404 446 797* Nsate 000226 automatic structure level 1 dcl 150 set ref 254* 270 396* 402 444 PROJ_KEYS_MATCH 000000 constant fixed bin(17,0) initial array dcl 16-106 ref 700 701 PROJ_KEY_NAMES 000073 constant char(32) initial array dcl 16-4 set ref 200* 212* 279* 326* 367* 683 684 PROJ_KEY_VALUES 000002 constant fixed bin(17,0) initial array dcl 16-68 ref 686 RW_ACCESS 001010 constant bit(3) initial packed unaligned dcl 12-11 set ref 747* 752* 756* R_ACCESS 001077 constant bit(3) initial packed unaligned dcl 12-11 set ref 490 730* 761* SAT_entry_lth constant fixed bin(17,0) initial dcl 6-24 ref 823 SAT_header_lth constant fixed bin(17,0) initial dcl 6-24 ref 823 SL 001066 automatic structure level 1 dcl 575 set ref 580 580 SMA_ACCESS 001006 constant bit(3) initial packed unaligned dcl 12-11 ref 493 TERM_FILE_TERM 001007 constant bit(3) initial packed unaligned dcl 13-14 set ref 740* 830* 832* TERM_FILE_TRUNC_BC_TERM 001006 constant bit(3) initial packed unaligned dcl 13-15 set ref 819* 821* 823* USER_RING 000221 automatic fixed bin(3,0) initial dcl 72 set ref 72* 519* 535* absolute_pathname_ 000206 constant entry external dcl 81 ref 623 624 access_name 000661 automatic char(32) array level 2 in structure "seg_acl_array" packed packed unaligned dcl 459 in procedure "CHANGE_ACLS" set ref 488* access_name 000735 automatic char(32) array level 2 in structure "dir_acl_array" packed packed unaligned dcl 460 in procedure "CHANGE_ACLS" set ref 488* access_name 001005 automatic char(32) array level 2 in structure "dl_acl_array" packed packed unaligned dcl 461 in procedure "CHANGE_ACLS" set ref 482* acctid 10 based char(12) array level 3 packed packed unaligned dcl 5-5 set ref 785 acls 23(01) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 435 add_idx 000654 automatic fixed bin(17,0) dcl 454 set ref 476* 487* 487 488 488 490 492 493 495 495 501 527 529* 535* 541* 547* add_me 000614 automatic char(32) array packed unaligned dcl 453 set ref 464* 468 468* 485 488 addr builtin function dcl 153 ref 244 270 271 272 276 276 379 379 393 402 403 404 429 429 508 508 514 514 519 519 529 529 535 535 541 541 547 547 580 580 662 715 715 admin 31 based structure array level 2 in structure "project" dcl 6-53 in procedure "edit_proj" admin 31 000226 automatic structure array level 2 in structure "Nsate" dcl 150 in procedure "edit_proj" aim_check_$greater 000210 constant entry external dcl 82 ref 651 al 000104 automatic fixed bin(21,0) dcl 50 set ref 180* 181 183 192 197 209 218 218 220 220 222 225 225 309* 310 318 323 332 334 334 336 336 338 341 341 684 691 691 alias 74 000226 automatic char(8) level 2 in structure "Nsate" packed packed unaligned dcl 150 in procedure "edit_proj" set ref 437 562 564* alias 23(02) 000154 automatic bit(1) level 3 in structure "EPA" packed packed unaligned dcl 67 in procedure "edit_proj" set ref 437 all 22 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 267* 276 anything 23 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 279 430 ap 000102 automatic pointer dcl 49 set ref 180* 181 183 191 196 208 218 218 220 220 222 225 309* 310 317 322 332 334 334 336 336 338 341 684 691 arg_count 000101 automatic fixed bin(17,0) dcl 48 set ref 169 179 299 308 670* argument based char packed unaligned dcl 51 set ref 181 183 218 218 220 220 222 225* 310 332 334 334 336 336 338 341* 684 691* argx 000100 automatic fixed bin(17,0) dcl 47 set ref 179* 180* 308* 309* asc1 parameter char packed unaligned dcl 621 set ref 619 623* audd parameter char packed unaligned dcl 621 set ref 619 624* brief_match 22(04) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 296* caller 2 000154 automatic char(32) level 2 packed packed unaligned dcl 67 set ref 668* change_all_match_all 000105 automatic bit(1) dcl 52 set ref 307* 332* 349 changed 000106 automatic bit(1) dcl 53 in procedure "edit_proj" set ref 405* 407 changed parameter bit(1) dcl 423 in procedure "edit_one_project" set ref 420 428* 433* changed_count 000107 automatic fixed bin(17,0) dcl 54 set ref 391* 407* 407 413 415* changes 23 000154 automatic structure level 2 dcl 67 set ref 401* cleanup 000520 stack reference condition dcl 154 ref 235 386 code 000110 automatic fixed bin(35,0) dcl 55 set ref 508* 510 510* 514* 515 515* 519* 521 521* 529* 531 531* 535* 537 537* 541* 542 542* 547* 548 548* 562* 564 564* 580* 581 583* 590* 592* 593 593* 610* 611 611* 641* 642 642* 644* 645 645* 647* 648 648* 670* 671 673* 730* 731 733* 734 734 737 739* 747* 748 752* 753 756* 757 761* 762 766* 817* 828* com_err_ 000212 constant entry external dcl 83 ref 173 200 212 225 250 279 303 326 341 353 510 515 521 531 537 542 548 564 583 593 611 673 691 717 739 766 789 803 command_query_$yes_no 000214 constant entry external dcl 84 ref 367 condition_info based structure level 1 dcl 8-14 condition_info_header based structure level 1 dcl 9-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 8-30 ref 714 continue_to_signal_ 000216 constant entry external dcl 85 ref 711 cu_$arg_count 000220 constant entry external dcl 86 ref 670 cu_$arg_ptr 000222 constant entry external dcl 87 ref 180 309 current_size 36 based fixed bin(17,0) level 2 dcl 6-32 ref 243 392 823 debug_switch 000111 automatic bit(1) initial dcl 56 set ref 56* 222* 338* 711 delete_acl_entry based structure level 1 dcl 15-63 delete_idx 000655 automatic fixed bin(17,0) dcl 455 set ref 476* 481* 481 482 483 501 506 508* 514* 519* delete_me 000554 automatic char(32) array packed unaligned dcl 452 set ref 463* 466 468 468* 479 482 dir_acl_array 000735 automatic structure array level 1 dcl 460 set ref 535 535 541 541 547 547 dir_disk_quota 73 000346 automatic fixed bin(35,0) level 2 in structure "Nprojfile" dcl 151 in procedure "edit_proj" set ref 606 dir_disk_quota 103 based fixed bin(35,0) array level 3 in structure "projfile" dcl 4-6 in procedure "edit_proj" set ref 606 dir_priv_code 000112 automatic fixed bin(35,0) initial dcl 57 set ref 57* 234* 385* 639 653* 817 dir_quota 23(04) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 441 directory_acl_entry based structure level 1 dcl 15-54 disk_quota 72 000346 automatic fixed bin(35,0) level 2 in structure "Nprojfile" dcl 151 in procedure "edit_proj" set ref 578 disk_quota 102 based fixed bin(35,0) array level 3 in structure "projfile" dcl 4-6 in procedure "edit_proj" set ref 578 dl_acl_array 001005 automatic structure array level 1 dcl 461 set ref 508 508 514 514 519 519 dn 001242 automatic char(168) packed unaligned dcl 725 set ref 728* 730* 747* 752* 756* 759* 761* 766* edit_proj_ 000226 constant entry external dcl 89 ref 429 edit_proj_$check 000224 constant entry external dcl 88 ref 276 379 edit_proj_arg based structure level 1 dcl 14-9 edit_proj_arg_ptr 000224 automatic pointer dcl 14-8 set ref 279 279 279 367 367 367 662* en 001314 automatic char(32) packed unaligned dcl 726 set ref 729* 730* 746* 747* 751* 752* 755* 756* 760* 761* 766* error 000113 automatic bit(1) dcl 58 in procedure "edit_proj" set ref 259* 261 367* 371 398* 399 error parameter bit(1) dcl 776 in procedure "find_and_copy_other_tables" set ref 773 782* 790* 804* error_table_$badopt 000312 external static fixed bin(35,0) dcl 127 set ref 225* 341* error_table_$invalid_lock_reset 000320 external static fixed bin(35,0) dcl 131 ref 737 error_table_$locked_by_this_process 000316 external static fixed bin(35,0) dcl 129 ref 734 error_table_$noentry 000314 external static fixed bin(35,0) dcl 128 set ref 250* error_table_$too_many_args 000310 external static fixed bin(35,0) dcl 125 set ref 200* 212* 326* expand_pathname_ 000230 constant entry external dcl 90 ref 641 extended_mode 11 000661 automatic bit(36) array level 2 dcl 459 set ref 492* find_condition_info_ 000232 constant entry external dcl 91 ref 715 flags 22 000154 automatic structure level 2 dcl 67 general_acl_entry based structure level 1 unaligned dcl 15-12 general_delete_acl_entry based structure level 1 dcl 15-35 general_extended_acl_entry based structure level 1 dcl 15-23 get_group_id_ 000234 constant entry external dcl 92 ref 744 get_wdir_ 000236 constant entry external dcl 93 ref 728 hbound builtin function dcl 153 ref 683 700 hcs_$add_acl_entries 000240 constant entry external dcl 94 ref 529 hcs_$add_dir_acl_entries 000242 constant entry external dcl 95 ref 541 547 hcs_$add_dir_inacl_entries 000244 constant entry external dcl 97 ref 535 hcs_$chname_file 000254 constant entry external dcl 105 ref 562 hcs_$delete_acl_entries 000246 constant entry external dcl 99 ref 508 hcs_$delete_dir_acl_entries 000250 constant entry external dcl 101 ref 514 hcs_$delete_dir_inacl_entries 000252 constant entry external dcl 103 ref 519 hcs_$dir_quota_move 000262 constant entry external dcl 107 ref 610 hcs_$get_access_class 000256 constant entry external dcl 106 ref 644 647 hcs_$quota_move 000260 constant entry external dcl 107 ref 592 hcs_$status_long 000264 constant entry external dcl 111 ref 580 header based structure level 2 dcl 10-7 id 10 based char(12) array level 3 packed packed unaligned dcl 4-6 set ref 799 index builtin function dcl 153 ref 181 310 info_ptr 14 000100 automatic pointer level 2 dcl 710 set ref 716 info_string 3 based varying char(256) level 3 dcl 10-7 set ref 717* initiate_file_ 000270 constant entry external dcl 113 ref 730 747 752 756 761 ioa_ 000266 constant entry external dcl 112 ref 413 415 627 793 807 kx 001222 automatic fixed bin(17,0) dcl 681 in procedure "lookup_keyword" set ref 683* 684 686* kx 001232 automatic fixed bin(17,0) dcl 698 in procedure "matching_keyword" set ref 700* 701* length 34 based fixed bin(21,0) level 3 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" ref 279 279 length 30 000154 automatic fixed bin(21,0) level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 197* 209* 323* 359* length 34 000154 automatic fixed bin(21,0) level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 192* 318* 359 361* length 30 based fixed bin(21,0) level 3 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" ref 367 367 lock based bit(36) level 2 dcl 3-10 set ref 733* 828* locker 1 based char(24) level 2 dcl 3-10 set ref 739* long 22(01) 000154 automatic bit(1) level 3 in structure "EPA" packed packed unaligned dcl 67 in procedure "edit_proj" set ref 218* 220* 334* 336* long 4 001066 automatic structure level 2 in structure "SL" dcl 575 in procedure "CHANGE_SEG_QUOTA" lope constant fixed bin(17,0) initial dcl 4-30 ref 819 loph constant fixed bin(17,0) initial dcl 4-30 ref 819 loqe constant fixed bin(17,0) initial dcl 5-25 ref 821 loqh constant fixed bin(17,0) initial dcl 5-25 ref 821 match 22(03) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 190* 279 316* 362* 365 match_value 32 based structure level 2 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" match_value 32 000154 automatic structure level 2 in structure "EPA" dcl 67 in procedure "edit_proj" match_value_string based char packed unaligned dcl 14-41 set ref 279* mdc_$set_mdir_quota 000272 constant entry external dcl 115 ref 590 mdir_switch 10(10) 001066 automatic bit(1) level 3 packed packed unaligned dcl 575 set ref 590 me 000114 automatic char(32) packed unaligned dcl 59 set ref 166* 173* 200* 212* 225* 250* 279* 294* 303* 326* 341* 353* 367* 413* 415* 510* 515* 521* 531* 537* 542* 548* 564* 583* 593* 611* 642* 645* 648* 668 673* 691* 717* 789* 793* 803* 807* mgtp 000152 automatic pointer dcl 65 in procedure "edit_proj" set ref 233* 239 761* 832 832* mgtp 20 000154 automatic pointer level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 239* mode 10 000735 automatic bit(36) array level 2 in structure "dir_acl_array" dcl 460 in procedure "CHANGE_ACLS" set ref 493* 546* mode 10 000661 automatic bit(36) array level 2 in structure "seg_acl_array" dcl 459 in procedure "CHANGE_ACLS" set ref 490* mylock 000124 automatic bit(1) initial dcl 60 set ref 60* 734* 828 nacts based fixed bin(17,0) level 2 dcl 5-5 ref 785 787 821 new_value 26 000154 automatic structure level 2 in structure "EPA" dcl 67 in procedure "edit_proj" new_value 26 based structure level 2 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" new_value_string based char packed unaligned dcl 14-40 set ref 367* newx 000657 automatic fixed bin(17,0) dcl 457 set ref 466* 468 468* nproj based fixed bin(35,0) level 2 dcl 4-6 ref 799 801 819 null builtin function dcl 153 ref 187 194 205 233 314 320 351 360 365 384 580 580 642 642 645 645 648 648 663 664 665 715 715 819 821 823 826 832 off 76 based fixed bin(71,0) array level 3 dcl 4-6 set ref 807 oldx 000656 automatic fixed bin(17,0) dcl 456 set ref 465* 466 468 468* pj_acc 001122 automatic bit(72) dcl 635 set ref 647* 651* pp 000140 automatic pointer dcl 65 set ref 233* 384* 445 578 606 752* 799 799 801 807 809 819 819* 819 project based structure level 1 dcl 6-53 in procedure "edit_proj" set ref 254 396 444* project 722 based structure array level 2 in structure "sat" dcl 6-32 in procedure "edit_proj" set ref 244 393 project_id 1 000226 automatic char(12) level 2 in structure "Nsate" packed packed unaligned dcl 150 in procedure "edit_proj" set ref 397 508 510* 514 515* 519 521* 529 531* 535 537* 541 542* 562 564* 580 583* 590 592 593* 610 611* 647 648* project_id 1 based char(12) level 2 in structure "project" packed packed unaligned dcl 6-53 in procedure "edit_proj" set ref 245 project_name parameter char packed unaligned dcl 777 in procedure "find_and_copy_other_tables" set ref 773 785 789* 793* 799 803* 807* project_name 000125 automatic char(32) packed unaligned dcl 61 in procedure "edit_proj" set ref 177* 183 183* 230 245 250* 259* 397* 398* projfile based structure level 1 dcl 4-6 projfile_ep 14 000154 automatic pointer level 3 dcl 67 set ref 271* 403* projfile_index parameter fixed bin(17,0) dcl 779 in procedure "find_and_copy_other_tables" set ref 773 783* 810* projfile_index 000135 automatic fixed bin(17,0) initial dcl 62 in procedure "edit_proj" set ref 62* 259* 398* 445 578 606 projfiletab 10 based structure array level 2 dcl 4-6 set ref 445* 809 ptr 32 based pointer level 3 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" ref 279 ptr 26 based pointer level 3 in structure "edit_proj_arg" dcl 14-9 in procedure "edit_proj" ref 367 ptr 32 000154 automatic pointer level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 187 191* 314 317* 358 360* 665* ptr 26 000154 automatic pointer level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 194 196* 205 208* 320 322* 351 358* 365 664* q_delta 001100 automatic fixed bin(18,0) dcl 576 in procedure "CHANGE_SEG_QUOTA" set ref 578* 590* 592* 593* q_delta 001110 automatic fixed bin(18,0) dcl 604 in procedure "CHANGE_DIR_QUOTA" set ref 606* 610* 611* qdf 26 based fixed bin(71,0) array level 3 dcl 5-5 set ref 793 qp 000142 automatic pointer dcl 65 set ref 233* 384* 446 756* 785 785 787 793 797 821 821* 821 report_project_name 22(02) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 297* reqfile based structure level 1 dcl 5-5 reqfile_ep 16 000154 automatic pointer level 3 dcl 67 set ref 272* 404* reqfile_index parameter fixed bin(17,0) dcl 778 in procedure "find_and_copy_other_tables" set ref 773 783* 796* reqfile_index 000136 automatic fixed bin(17,0) initial dcl 63 in procedure "edit_proj" set ref 63* 259* 398* 446 reqfiletab 10 based structure array level 2 dcl 5-5 set ref 446* 797 rtrim builtin function dcl 153 ref 482 488 508 529 626 sadp 000144 automatic pointer dcl 65 set ref 233* 384* 730* 733 739 740* 826 828 830* sat based structure level 1 dcl 6-32 satep 000150 automatic pointer dcl 65 in procedure "edit_proj" set ref 244* 245 245 254 393* 394 396 444 463 satep 12 000154 automatic pointer level 3 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 270* 402* satp 000146 automatic pointer dcl 65 set ref 233* 243 244 384* 392 393 747* 823 823* 823 satx 000137 automatic fixed bin(17,0) dcl 64 set ref 243* 244* 392* 393* sc1 000134 internal static char(168) initial packed unaligned dcl 76 set ref 547* 548* 623* 626 627* 759 sc1_pdt 000062 internal static char(168) initial packed unaligned dcl 75 set ref 508* 510* 529* 531* 626* seg_acl_array 000661 automatic structure array level 1 dcl 459 set ref 529 529 seg_pointers 12 000154 automatic structure level 2 dcl 67 set ref 663* seg_quota 23(03) 000154 automatic bit(1) level 3 packed packed unaligned dcl 67 set ref 439 segment_acl_entry based structure level 1 dcl 15-45 set_lock_$lock 000274 constant entry external dcl 116 ref 733 set_lock_$unlock 000276 constant entry external dcl 117 ref 828 state based fixed bin(17,0) level 2 dcl 6-53 set ref 245 394 status_branch based structure level 1 dcl 11-8 status_code 11 000735 automatic fixed bin(35,0) array level 2 in structure "dir_acl_array" dcl 460 in procedure "CHANGE_ACLS" set ref 495* status_code 10 001005 automatic fixed bin(35,0) array level 2 in structure "dl_acl_array" dcl 461 in procedure "CHANGE_ACLS" set ref 483* status_code 12 000661 automatic fixed bin(35,0) array level 2 in structure "seg_acl_array" dcl 459 in procedure "CHANGE_ACLS" set ref 495* status_code 104 based fixed bin(35,0) level 3 in structure "sub_error_info" dcl 10-7 in procedure "edit_proj" set ref 717* sub_err_ 000300 constant entry external dcl 118 ref 642 645 648 sub_error_ 000526 stack reference condition dcl 154 ref 236 387 sub_error_info based structure level 1 dcl 10-7 sub_error_info_ptr 000222 automatic pointer dcl 10-6 set ref 716* 717 717 sys_admin_data based structure level 1 dcl 3-10 system_privilege_$dir_priv_off 000304 constant entry external dcl 121 ref 817 system_privilege_$dir_priv_on 000302 constant entry external dcl 119 ref 653 terminate_file_ 000306 constant entry external dcl 123 ref 740 819 821 823 830 832 tx 001332 automatic fixed bin(17,0) dcl 780 set ref 785* 785* 787 793 796 797 799* 799* 801 807 809 810 udd 000010 internal static char(168) initial packed unaligned dcl 74 set ref 514* 515* 519* 521* 535* 537* 541* 542* 562* 564* 580* 583* 590* 592* 593* 610* 611* 624* 627* 641* 642* 645* 647* 648* udd_acc 001120 automatic bit(72) dcl 634 set ref 644* 651* uddd 001124 automatic char(168) packed unaligned dcl 636 set ref 641* 644* udde 001176 automatic char(32) packed unaligned dcl 637 set ref 641* 644* uid 000211 automatic char(32) packed unaligned dcl 68 set ref 744* unspec builtin function dcl 153 set ref 661* user_attributes based structure level 1 dcl 1-21 userid 31 based char(30) array level 3 in structure "project" packed packed unaligned dcl 6-53 in procedure "edit_proj" set ref 463 userid 31 000226 automatic char(30) array level 3 in structure "Nsate" packed packed unaligned dcl 150 in procedure "edit_proj" set ref 464 value_index 24 000154 automatic fixed bin(17,0) level 2 dcl 67 set ref 185 200 212 267 279 312 326 346 367 666* 686* 701 version 000154 automatic char(8) level 2 in structure "EPA" dcl 67 in procedure "edit_proj" set ref 667* version 2 000100 automatic fixed bin(17,0) level 2 in structure "CI" dcl 710 in procedure "sub_error_handler" set ref 714* x 000660 automatic fixed bin(17,0) dcl 458 set ref 478* 479 482 485 488* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 15-77 ACTION_CAN_RESTART internal static bit(36) initial dcl 17-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 17-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 17-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 17-7 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-77 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 15-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 12-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 15-67 Directory internal static fixed bin(17,0) initial dcl 11-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 GENERAL_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 15-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 15-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 15-72 Link internal static fixed bin(17,0) initial dcl 11-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 4-33 PROJ_KEY_ALL_ORDER internal static fixed bin(17,0) initial array dcl 16-74 REQFILE_VERSION internal static fixed bin(17,0) initial dcl 5-28 REW_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SAT_project_name_length internal static fixed bin(17,0) initial dcl 6-24 SAT_version internal static fixed bin(17,0) initial dcl 6-24 SA_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 12-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 15-67 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 Segment internal static fixed bin(17,0) initial dcl 11-56 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 13-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 13-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 13-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 13-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 13-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 W_ACCESS internal static bit(3) initial packed unaligned dcl 12-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 acl_count automatic fixed bin(17,0) dcl 15-5 acl_ptr automatic pointer dcl 15-4 condition_info_header_ptr automatic pointer dcl 9-4 condition_info_ptr automatic pointer dcl 8-10 delete_acl based structure level 1 dcl 15-58 delete_acl_array based structure array level 1 dcl 15-64 directory_acl based structure level 1 dcl 15-49 directory_acl_array based structure array level 1 dcl 15-55 general_acl based structure level 1 dcl 15-7 general_delete_acl based structure level 1 dcl 15-30 general_extended_acl based structure level 1 dcl 15-18 segment_acl based structure level 1 dcl 15-40 segment_acl_array based structure array level 1 dcl 15-46 status_area_ptr automatic pointer dcl 11-47 status_entry_names based char(32) array dcl 11-47 status_link based structure level 1 dcl 11-38 status_pathname based char dcl 11-47 status_ptr automatic pointer dcl 11-47 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 10-13 terminate_file_switches based structure level 1 packed packed unaligned dcl 13-4 user_abs_attributes based structure level 1 dcl 2-25 NAMES DECLARED BY EXPLICIT CONTEXT. CA_USAGE 002721 constant label dcl 299 set ref 346 CHANGE_ACLS 004035 constant entry internal dcl 449 ref 435 CHANGE_ALIAS 005271 constant entry internal dcl 555 ref 437 CHANGE_DIR_QUOTA 005660 constant entry internal dcl 601 ref 441 CHANGE_SEG_QUOTA 005376 constant entry internal dcl 572 ref 439 ERROR_EXIT 003735 constant label dcl 837 ref 718 GOT_PROJECT 002550 constant label dcl 254 set ref 245 SET_DIR_PRIVILEGE_AS_NEEDED 005771 constant entry internal dcl 631 ref 504 560 588 608 USAGE 002051 constant label dcl 169 set ref 230 change_all 002700 constant entry external dcl 287 cleanup_segments 007605 constant entry internal dcl 814 ref 235 251 263 283 386 416 768 837 command_setup 006326 constant entry internal dcl 658 ref 167 295 edit_one_project 003743 constant entry internal dcl 420 ref 278 405 edit_proj 002034 constant entry external dcl 23 find_and_copy_other_tables 007302 constant entry internal dcl 773 ref 259 398 initiate_segments 006617 constant entry internal dcl 722 ref 238 389 lookup_keyword 006404 constant entry internal dcl 679 ref 185 312 matching_keyword 006472 constant entry internal dcl 695 ref 187 return 003742 constant label dcl 841 ref 203 215 226 252 264 304 329 342 356 371 674 692 741 769 segment_error 007235 constant label dcl 766 ref 731 748 753 757 762 sub_error_handler 006517 constant entry internal dcl 707 ref 236 387 test 003571 constant entry external dcl 619 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10716 11240 10154 10726 Length 12142 10154 322 665 542 176 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME edit_proj 1324 external procedure is an external procedure. on unit on line 235 64 on unit on unit on line 236 64 on unit on unit on line 386 64 on unit on unit on line 387 64 on unit edit_one_project internal procedure shares stack frame of external procedure edit_proj. CHANGE_ACLS internal procedure shares stack frame of external procedure edit_proj. CHANGE_ALIAS internal procedure shares stack frame of external procedure edit_proj. CHANGE_SEG_QUOTA internal procedure shares stack frame of external procedure edit_proj. CHANGE_DIR_QUOTA internal procedure shares stack frame of external procedure edit_proj. SET_DIR_PRIVILEGE_AS_NEEDED internal procedure shares stack frame of external procedure edit_proj. command_setup internal procedure shares stack frame of external procedure edit_proj. lookup_keyword internal procedure shares stack frame of external procedure edit_proj. matching_keyword internal procedure shares stack frame of external procedure edit_proj. sub_error_handler 126 internal procedure is called by several nonquick procedures. initiate_segments internal procedure shares stack frame of external procedure edit_proj. find_and_copy_other_tables internal procedure shares stack frame of external procedure edit_proj. cleanup_segments 90 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 udd edit_proj 000062 sc1_pdt edit_proj 000134 sc1 edit_proj STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME edit_proj 000100 argx edit_proj 000101 arg_count edit_proj 000102 ap edit_proj 000104 al edit_proj 000105 change_all_match_all edit_proj 000106 changed edit_proj 000107 changed_count edit_proj 000110 code edit_proj 000111 debug_switch edit_proj 000112 dir_priv_code edit_proj 000113 error edit_proj 000114 me edit_proj 000124 mylock edit_proj 000125 project_name edit_proj 000135 projfile_index edit_proj 000136 reqfile_index edit_proj 000137 satx edit_proj 000140 pp edit_proj 000142 qp edit_proj 000144 sadp edit_proj 000146 satp edit_proj 000150 satep edit_proj 000152 mgtp edit_proj 000154 EPA edit_proj 000211 uid edit_proj 000221 USER_RING edit_proj 000222 sub_error_info_ptr edit_proj 000224 edit_proj_arg_ptr edit_proj 000226 Nsate edit_proj 000346 Nprojfile edit_proj 000450 Nreqfile edit_proj 000554 delete_me CHANGE_ACLS 000614 add_me CHANGE_ACLS 000654 add_idx CHANGE_ACLS 000655 delete_idx CHANGE_ACLS 000656 oldx CHANGE_ACLS 000657 newx CHANGE_ACLS 000660 x CHANGE_ACLS 000661 seg_acl_array CHANGE_ACLS 000735 dir_acl_array CHANGE_ACLS 001005 dl_acl_array CHANGE_ACLS 001066 SL CHANGE_SEG_QUOTA 001100 q_delta CHANGE_SEG_QUOTA 001110 q_delta CHANGE_DIR_QUOTA 001120 udd_acc SET_DIR_PRIVILEGE_AS_NEEDED 001122 pj_acc SET_DIR_PRIVILEGE_AS_NEEDED 001124 uddd SET_DIR_PRIVILEGE_AS_NEEDED 001176 udde SET_DIR_PRIVILEGE_AS_NEEDED 001222 kx lookup_keyword 001232 kx matching_keyword 001242 dn initiate_segments 001314 en initiate_segments 001332 tx find_and_copy_other_tables sub_error_handler 000100 CI sub_error_handler THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 mpfx2 enable_op shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ aim_check_$greater com_err_ command_query_$yes_no continue_to_signal_ cu_$arg_count cu_$arg_ptr edit_proj_ edit_proj_$check expand_pathname_ find_condition_info_ get_group_id_ 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_$dir_quota_move hcs_$get_access_class hcs_$quota_move hcs_$status_long initiate_file_ ioa_ mdc_$set_mdir_quota set_lock_$lock set_lock_$unlock sub_err_ system_privilege_$dir_priv_off system_privilege_$dir_priv_on terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$invalid_lock_reset error_table_$locked_by_this_process error_table_$noentry error_table_$too_many_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 56 002020 57 002021 60 002023 62 002024 63 002026 72 002027 23 002033 166 002042 167 002045 169 002046 173 002051 174 002076 177 002077 179 002102 180 002111 181 002127 183 002143 185 002153 187 002160 190 002171 191 002173 192 002175 193 002177 194 002200 196 002204 197 002206 198 002210 200 002211 203 002243 204 002244 205 002245 208 002251 209 002253 210 002255 212 002256 215 002310 217 002311 218 002312 220 002325 222 002340 225 002347 226 002401 228 002402 230 002404 233 002410 234 002416 235 002420 236 002442 238 002464 239 002465 243 002467 244 002477 245 002503 248 002512 250 002514 251 002543 252 002547 254 002550 259 002553 261 002556 263 002561 264 002565 267 002566 270 002573 271 002575 272 002577 276 002601 278 002615 279 002621 283 002672 284 002676 287 002677 294 002706 295 002711 296 002712 297 002714 299 002716 303 002721 304 002746 307 002747 308 002750 309 002757 310 002775 312 003011 314 003016 316 003022 317 003024 318 003025 319 003027 320 003030 322 003034 323 003035 324 003037 326 003040 329 003072 331 003073 332 003074 334 003103 336 003116 338 003131 341 003140 342 003172 344 003173 346 003175 349 003200 351 003202 353 003206 356 003233 358 003234 359 003236 360 003240 361 003242 362 003243 365 003245 367 003254 371 003332 379 003335 384 003346 385 003353 386 003355 387 003377 389 003421 391 003422 392 003423 393 003433 394 003437 396 003442 397 003445 398 003450 399 003453 401 003456 402 003470 403 003472 404 003474 405 003476 407 003500 411 003504 413 003506 415 003531 416 003560 417 003564 619 003565 623 003612 624 003636 626 003662 627 003711 628 003734 837 003735 839 003741 841 003742 420 003743 428 003745 429 003746 430 003757 433 003763 435 003766 437 003772 439 004002 441 004006 444 004012 445 004016 446 004025 447 004034 449 004035 463 004036 464 004054 465 004071 466 004077 468 004113 470 004140 471 004142 476 004144 478 004146 479 004153 481 004162 482 004163 483 004221 485 004223 487 004231 488 004232 490 004301 492 004304 493 004305 495 004307 497 004311 501 004313 504 004320 506 004321 508 004323 510 004404 514 004443 515 004503 519 004541 521 004605 527 004643 529 004645 531 004726 535 004765 537 005031 541 005067 542 005127 546 005165 547 005200 548 005235 551 005267 553 005270 555 005271 560 005272 562 005273 564 005333 568 005375 572 005376 578 005377 580 005410 581 005457 583 005461 585 005515 588 005516 590 005517 592 005563 593 005615 596 005657 601 005660 606 005661 608 005673 610 005674 611 005726 614 005770 631 005771 639 005772 641 005775 642 006021 644 006072 645 006117 647 006170 648 006222 651 006277 653 006316 655 006325 658 006326 661 006327 662 006332 663 006334 664 006341 665 006342 666 006343 667 006345 668 006347 670 006352 671 006363 673 006365 674 006402 676 006403 679 006404 683 006405 684 006413 686 006424 687 006427 689 006430 691 006432 692 006471 695 006472 700 006474 701 006501 703 006511 704 006513 707 006516 711 006524 714 006537 715 006541 716 006560 717 006563 718 006613 720 006616 722 006617 728 006620 729 006627 730 006632 731 006670 733 006672 734 006707 737 006717 739 006721 740 006756 741 007005 744 007006 746 007015 747 007020 748 007056 751 007060 752 007063 753 007121 755 007123 756 007126 757 007164 759 007166 760 007172 761 007175 762 007232 764 007234 766 007235 768 007275 769 007301 773 007302 782 007313 783 007315 785 007320 786 007341 787 007343 789 007346 790 007401 791 007404 793 007405 796 007440 797 007443 799 007451 800 007473 801 007475 803 007500 804 007533 805 007536 807 007537 809 007572 810 007600 811 007603 814 007604 817 007612 819 007623 821 007666 823 007733 826 010001 828 010006 830 010021 832 010051 835 010105 ----------------------------------------------------------- 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