COMPILATION LISTING OF SEGMENT ta_filesys_util_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 06/17/86 1503.0 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 ta_filesys_util_: proc; return; 19 20 /* This module performs branch manipulation for tape_archive. It examines 21* files and records all their interesting attributes for storage on tape. 22* It also replaces as many of these as possible when a file is 23* extracted from tape. 24* Written 06/07/77 by C. D. Tavares. 25* Modified 09/24/79 by CDT to implement star convention entry. 26* Modified 09/03/80 by CDT for version 3. 27* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. 28* Modified 7/83 by S. Krupp for conversion to mtape_. 29**/ 30 31 /* BASED */ 32 33 dcl 1 based_acl_list (ta_attributes.acl_count) aligned based (acl_list_ptr) like ta_attributes.acl_list; 34 35 dcl name_array (binary (branch.nnames)) char (32) aligned based; 36 dcl system_free_area area (sys_info$max_seg_size) based (system_free_ptr); 37 dcl based_segment char (char_count) based (seg_ptr) aligned; 38 39 /* AUTOMATIC */ 40 41 dcl dirname char (168), 42 ename char (32); 43 44 dcl 1 auto_branch like status_branch aligned automatic; 45 46 dcl 1 info like indx_info automatic; 47 48 dcl 1 auto_sfb aligned automatic like status_for_backup; 49 50 dcl acl_list_ptr pointer, 51 char_count fixed bin (21), 52 check_for_binary bit (1), 53 i fixed bin, 54 n_components fixed bin, 55 msf_fcb_ptr pointer, 56 seg_ptr pointer, 57 temp_area area (3000), 58 temp_bit bit (1) aligned; 59 60 /* ENTRIES */ 61 62 dcl get_system_free_area_ ext entry returns (pointer), 63 hcs_$get_bc_author ext entry (char (*), char (*), char (*) aligned, fixed bin (35)), 64 hcs_$get_max_length ext entry (char (*), char (*), fixed bin (19), fixed bin (35)), 65 hcs_$get_safety_sw ext entry (char (*), char (*), bit (1) aligned, fixed bin (35)), 66 hcs_$initiate ext entry (char (*), char (*), char (*), fixed bin, fixed bin, pointer, fixed bin (35)), 67 hcs_$list_acl ext entry (char (*), char (*), pointer, pointer, pointer, fixed bin, fixed bin (35)), 68 hcs_$star_dir_list_ ext entry (char (*), char (*), fixed bin (3), pointer, fixed bin, fixed bin, pointer, pointer, fixed bin (35)), 69 hcs_$status_for_backup ext entry (char (*), char (*), pointer, fixed bin (35)), 70 hcs_$status_long ext entry (char (*), char (*), fixed bin, pointer, pointer, fixed bin (35)), 71 hcs_$terminate_noname ext entry (pointer, fixed bin (35)), 72 msf_manager_$acl_list ext entry (pointer, pointer, pointer, pointer, fixed bin, fixed bin (35)), 73 msf_manager_$get_ptr ext entry (pointer, fixed bin, bit (1) aligned, pointer, fixed bin (24), fixed bin (35)), 74 msf_manager_$close ext entry (pointer), 75 msf_manager_$open ext entry (char (*), char (*), pointer, fixed bin (35)), 76 nd_handler_ ext entry (char (*), char (*), char (*), fixed bin (35)), 77 nd_handler_$force ext entry (char (*), char (*), char (*), fixed bin (35)), 78 vfile_status_ ext entry (char (*), char (*), pointer, fixed bin (35)); 79 80 /* INTERNAL STATIC */ 81 82 dcl system_free_ptr pointer static initial (null); 83 84 /* EXTERNAL STATIC */ 85 86 dcl (error_table_$action_not_performed, 87 error_table_$dirseg, 88 error_table_$namedup, 89 error_table_$noentry, 90 error_table_$segnamedup) fixed bin (35) external static; 91 92 dcl sys_info$max_seg_size fixed bin (35) external static; 93 94 /* BUILTINS AND CONDITIONS */ 95 96 dcl (addr, binary, collate, divide, empty, length, max, null, pointer, rtrim, sum, unspec, verify) builtin; 97 98 dcl cleanup condition; 1 1 /* ---------- BEGIN include file tape_archive_table_dcl.incl.pl1 ---------- */ 1 2 1 3 /* Version 2 lengthened volume names from 6 to 32 characters */ 1 4 /* Version 3 introduced density field, workspace strategy for updates, */ 1 5 /* and the mount lock, which is less of a lock than a retain indicator. */ 1 6 /* Version 4 expanded density field to an array for independent volume set */ 1 7 /* densities and added uid fields for table deletion checking. */ 1 8 /* Modified 09/21/80 by C. D. Tavares for version 3 */ 1 9 /* Modified 12/9/81 by CDT to add highest_mount_type field */ 1 10 /* Last modified 83-03-16 by S. G. Harris (UNCA) for version 4. */ 1 11 /* Modified 09/16/83 by S. Krupp to add the TAPE_ARCHIVE_IO_MODULE 1 12* declaration for conversion to the mtape_ I/O module. */ 1 13 1 14 dcl 1 tape_archive_table aligned based (table_ptr), /* online segment for tape_archive command */ 1 15 2 nonvolatile_part aligned, /* temp table moving doesn't touch these */ 1 16 3 version_number fixed bin, /* of table */ 1 17 3 magic_constant char (8), /* "ta table" */ 1 18 3 compaction_warning_threshold float bin, /* when to suggest compaction to user */ 1 19 3 auto_compaction_threshold float bin, /* when to compact when user doesn't take hint */ 1 20 3 table_is_consistent bit (1) unaligned, /* update in progress indicator */ 1 21 3 lock bit (36), /* allows shared tape archives */ 1 22 3 lock_reason fixed bin, /* reason seg already locked, for failure msg */ 1 23 3 locker_id char (32), /* userid of locking process, for failure msg */ 1 24 3 io_module_name char (32), /* tape_ansi_ or tape_ibm_ */ 1 25 3 recovery_info_offset bit (18) aligned, /* holds address of workspace for table updates */ 1 26 3 perm_table_uid bit (36), /* used to prevent table deletion */ 1 27 3 future_expansion (6) bit (36), /* ... */ 1 28 2 volatile_part aligned, /* these can get altered due to temp table moves */ 1 29 3 n_components fixed bin, /* number valid (undeleted) components in archive */ 1 30 3 n_component_slots fixed bin, /* number of used component slots in table */ 1 31 3 n_queued_requests fixed bin, /* number requests to be performed next mount */ 1 32 3 n_request_slots fixed bin, /* number of used request slots in table */ 1 33 3 next_mount_type fixed bin, /* read only, write, or compact */ 1 34 3 date_time_tape_modified bit (36), /* last time tape written on */ 1 35 3 date_time_last_compacted bit (36), /* last time tape compacted */ 1 36 3 total_records fixed bin (35), /* data out on tape, in Multics records */ 1 37 3 dead_records fixed bin (35), /* records wasted (deletions, replacements) */ 1 38 3 incomplete_write_op_last bit (1), /* ON if determined that user or sys crashed while writing tape */ 1 39 3 last_tape_file_no fixed bin, /* number of last file existing on volume set */ 1 40 3 last_table_no fixed bin, /* number of copies of online table on this volume set */ 1 41 3 mount_lock bit (36) aligned, /* set to lock_id while volume set mounted */ 1 42 3 highest_mount_type fixed bin, /* max of next_mount_type since retained */ 1 43 3 future_expansion (6) bit (36), /* ... */ 1 44 3 tape_info aligned, 1 45 4 density (2) fixed bin (17) unal, /* post version 3 volume set densities */ 1 46 4 active_set fixed bin, /* which of the two is most current */ 1 47 4 n_volumes_in_set (2) fixed bin, /* how many reels comprise volume set */ 1 48 4 volume_set (2) aligned, 1 49 5 volume_id (8) char (168), /* physical reel and slot info */ 1 50 3 component_table (0 refer (tape_archive_table.n_component_slots)) aligned like component, 1 51 3 request_queue (0 refer (tape_archive_table.n_request_slots)) aligned like request; 1 52 1 53 dcl 1 component aligned based (component_ptr), /* format of one component entry */ 1 54 2 entry_status_descriptor like entry_status_descriptor aligned, 1 55 2 previous_instance_backchain fixed bin, /* index of file it replaced, if any */ 1 56 2 associated_request_index fixed bin, /* if extract pending, index of request with dirpath */ 1 57 2 date_time_deleted bit (36) aligned, /* if logically deleted, when. */ 1 58 2 future_expansion (5) bit (36) aligned; /* ... */ 1 59 1 60 dcl 1 request aligned based (request_ptr), /* format of a queued request */ 1 61 2 entry_status_descriptor like entry_status_descriptor aligned, 1 62 2 directory_name char (168) unaligned, /* in Multics file system */ 1 63 2 requested_ops unaligned, 1 64 3 append bit (1) unaligned, /* add to tape */ 1 65 3 replace bit (1) unaligned, /* replace to tape */ 1 66 3 extract bit (1) unaligned, /* extract from tape */ 1 67 3 delete bit (1) unaligned, /* delete from tape or file system */ 1 68 3 force bit (1) unaligned, /* forcibly do any of the above */ 1 69 3 single_name bit (1) unaligned, /* append/extract with only given name */ 1 70 3 future_expansion bit (30) unaligned, 1 71 2 existing_reference fixed bin, /* index of component block, if exists (e.g. read) */ 1 72 2 future_expansion (4) bit (36) aligned; 1 73 1 74 dcl 1 entry_status_descriptor aligned based, 1 75 2 valid bit (1) unaligned, /* an undeleted component or request if on */ 1 76 2 no_final_newline bit (1) unaligned, /* ON if last char in file was not newline */ 1 77 2 safety_switch bit (1) unaligned, /* reflects safety switch of file while online */ 1 78 2 pad bit (33) unaligned, 1 79 2 file_info aligned, /* main tape file for this entry */ 1 80 3 tape_file_name char (17), 1 81 3 entry_name char (32) unaligned, /* for Multics file system */ 1 82 3 date_time_archived bit (36), /* when it was put on tape */ 1 83 3 recording_mode char (8) aligned, /* "ascii", "binary", "ebcdic", etc. */ 1 84 3 date_time_branch_modified bit (36), /* last modified while in file system */ 1 85 3 date_time_dumped bit (36), /* by backup facility */ 1 86 3 bitcount_author char (32), /* last person who modified it while online */ 1 87 3 file_length fixed bin (35), /* in Multics pages */ 1 88 3 attribute_file_no fixed bin, /* file number of attribute file on tape */ 1 89 3 n_tape_records fixed bin (35), /* number of logical records on tape for this file */ 1 90 2 uid bit (36) aligned, /* used to prevent table deletion */ 1 91 2 future_expansion bit (36) aligned; 1 92 1 93 dcl 1 workspace based (workspace_ptr) aligned, /* to prevent update inconsistencies */ 1 94 2 workspace_id char (8), /* "wrkspace" */ 1 95 2 component_no fixed bin, 1 96 2 request_no fixed bin, 1 97 2 n_queued_requests fixed bin, 1 98 2 dead_records fixed bin, 1 99 2 total_records fixed bin, 1 100 2 n_components fixed bin, 1 101 2 n_request_slots fixed bin, 1 102 2 next_mount_type fixed bin, 1 103 2 future_expansion (70) fixed bin (35), 1 104 2 tape_info_copy aligned like tape_archive_table.tape_info, 1 105 2 future_expansion2 (16) fixed bin (35), 1 106 2 component_copy like component aligned, 1 107 2 future_expansion3 (16) fixed bin (35), 1 108 2 request_copy like request aligned; 1 109 1 110 dcl 1 based_tape_info based (tape_info_ptr) like tape_archive_table.tape_info aligned; 1 111 1 112 dcl (table_ptr, component_ptr, request_ptr, workspace_ptr, tape_info_ptr) pointer; 1 113 1 114 dcl ((None initial (0), /* next scheduled processing flags */ 1 115 Delete initial (1), 1 116 Read initial (2), 1 117 Write initial (3), 1 118 Compact initial (4), 1 119 1 120 Examine initial (1), /* current lock reason flags */ 1 121 Modify initial (2), 1 122 Process_tape initial (3), 1 123 1 124 Deletion initial (1), /* pending_operation flags */ 1 125 Extraction initial (2), 1 126 Replacement initial (3), 1 127 Cancellation initial (4), 1 128 Deletion_cancellation initial (5), 1 129 Volume_alteration initial (6), 1 130 Table_creation initial (7), 1 131 Table_copy initial (8), 1 132 1 133 Default_density initial (1600), 1 134 1 135 tape_archive_version_4 initial (4)) fixed bin, 1 136 1 137 TAPE_ARCHIVE_IO_MODULE char(6) init("mtape_"), 1 138 1 139 Lock_reasons (0:3) char (24) initial 1 140 ("no discernable reason", "table examination", "table modification", "tape processing"), 1 141 1 142 Magic_constant char (8) initial ("ta table"), 1 143 Magic_workspace_constant char (8) initial ("wrkspace")) static options (constant); 1 144 1 145 /* ---------------- END include file tape_archive_table_dcl.incl.pl1 ---------------- */ 99 100 2 1 /* --------------- BEGIN include file tape_archive_attributes.incl.pl1 --------------- */ 2 2 2 3 dcl 1 ta_attributes aligned based (attribute_seg_ptr), 2 4 2 version_no fixed bin, 2 5 2 own_length_in_chars fixed bin (21), 2 6 2 branch like status_branch aligned, 2 7 2 safety_switch bit (1) aligned, 2 8 2 entrypt_is_bounded bit (1) aligned, 2 9 2 entrypt_bound bit (14) aligned, 2 10 2 max_length fixed bin (19), 2 11 2 future_expansion (22) bit (36) aligned, 2 12 2 acl_count fixed bin, 2 13 2 n_components fixed bin, 2 14 2 names (binary (ta_attributes.nnames)) char (32) unaligned, 2 15 2 acl_list (ta_attributes.acl_count) aligned, 2 16 3 username char (32), 2 17 3 modes bit (36), 2 18 3 pad bit (72), 2 19 2 component_bc (0:ta_attributes.n_components-1) fixed bin (24); 2 20 3 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 3 2 3 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 3 4 3 5 /* This include file contains branch and link structures returned by 3 6* hcs_$status_ and hcs_$status_long. */ 3 7 3 8 dcl 1 status_branch aligned based (status_ptr), 3 9 2 short aligned, 3 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 3 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 3 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 3 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 3 14 3 dtu bit (36) unaligned, /* date/time last used */ 3 15 3 mode bit (5) unaligned, /* caller's effective access */ 3 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 3 17 3 pad1 bit (8) unaligned, 3 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 3 19 3 20 /* Limit of information returned by hcs_$status_ */ 3 21 3 22 2 long aligned, 3 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 3 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 3 25 3 lvid bit (36) unaligned, /* logical volume ID */ 3 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 3 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 3 28 3 pad2 bit (8) unaligned, 3 29 3 copy_switch bit (1) unaligned, /* copy switch */ 3 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 3 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 3 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 3 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 3 34 3 pad3 bit (5) unaligned, 3 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 3 36 3 uid bit (36) unaligned; /* unique ID */ 3 37 3 38 dcl 1 status_link aligned based (status_ptr), 3 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 3 40 2 nnames fixed bin (16) unaligned unsigned, 3 41 2 names_relp bit (18) unaligned, 3 42 2 dtem bit (36) unaligned, 3 43 2 dtd bit (36) unaligned, 3 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 3 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 3 46 3 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 3 48 based (pointer (status_area_ptr, status_branch.names_relp)), 3 49 /* array of names returned */ 3 50 status_pathname character (status_link.pathname_length) aligned 3 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 3 52 /* link target path */ 3 53 status_area_ptr pointer, 3 54 status_ptr pointer; 3 55 3 56 dcl (Link initial (0), 3 57 Segment initial (1), 3 58 Directory initial (2)) fixed bin internal static options (constant); 3 59 /* values for type fields declared above */ 3 60 3 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 2 21 2 22 2 23 /* ---------------- END include file tape_archive_attributes.incl.pl1 ---------------- */ 101 102 4 1 /* --------------- BEGIN include file tape_archive_star.incl.pl1 --------------- */ 4 2 4 3 dcl 1 ta_filesys_star_info aligned based (ta_filesys_star_ptr), 4 4 2 n_entries fixed bin, 4 5 2 ename (ta_star_match_count refer (ta_filesys_star_info.n_entries)) char (32) unaligned; 4 6 4 7 dcl 1 ta_component_star_info aligned based (ta_component_star_ptr), 4 8 2 n_entries fixed bin, 4 9 2 entry (ta_star_match_count refer (ta_component_star_info.n_entries)), 4 10 3 ename char (32) unaligned, 4 11 3 type fixed bin, 4 12 3 table_idx fixed bin; 4 13 4 14 dcl ta_star_match_count fixed bin, 4 15 ta_filesys_star_ptr pointer, 4 16 ta_component_star_ptr pointer; 4 17 4 18 dcl (Component initial (1), 4 19 Request initial (2)) fixed bin static options (constant); 4 20 4 21 /* ---------------- END include file tape_archive_star.incl.pl1 ---------------- */ 103 104 5 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 5 2 5 3 /* This include file contains structures for the hcs_$star_, 5 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 5 5* 5 6* Written 23 October 1978 by Monte Davidoff. 5 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 5 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 5 9**/ 5 10 5 11 /* automatic */ 5 12 5 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 5 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 5 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 5 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 5 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 5 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 5 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 5 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 5 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 5 22 5 23 /* based */ 5 24 5 25 /* hcs_$star_ entry structure */ 5 26 5 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 5 28 2 type fixed binary (2) unsigned unaligned, 5 29 /* storage system type */ 5 30 2 nnames fixed binary (16) unsigned unaligned, 5 31 /* number of names of entry that match star_name */ 5 32 2 nindex fixed binary (18) unsigned unaligned; 5 33 /* index of first name in star_names */ 5 34 5 35 /* hcs_$star_ name structure */ 5 36 5 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 5 38 5 39 /* hcs_$star_list_ branch structure */ 5 40 5 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 42 2 type fixed binary (2) unsigned unaligned, 5 43 /* storage system type */ 5 44 2 nnames fixed binary (16) unsigned unaligned, 5 45 /* number of names of entry that match star_name */ 5 46 2 nindex fixed binary (18) unsigned unaligned, 5 47 /* index of first name in star_list_names */ 5 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 5 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 5 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 5 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 5 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 5 53 2 pad bit (7) unaligned, 5 54 2 records fixed binary (18) unsigned unaligned; 5 55 /* records used by branch */ 5 56 5 57 /* hcs_$star_dir_list_ branch structure */ 5 58 5 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 60 2 type fixed binary (2) unsigned unaligned, 5 61 /* storage system type */ 5 62 2 nnames fixed binary (16) unsigned unaligned, 5 63 /* number of names of entry that match star_name */ 5 64 2 nindex fixed binary (18) unsigned unaligned, 5 65 /* index of first name in star_list_names */ 5 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 5 67 2 pad bit (36) unaligned, 5 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 5 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 5 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 5 71 2 bit_count fixed binary (24) unaligned; 5 72 /* bit count of the branch */ 5 73 5 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 5 75 5 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 77 2 type fixed binary (2) unsigned unaligned, 5 78 /* storage system type */ 5 79 2 nnames fixed binary (16) unsigned unaligned, 5 80 /* number of names of entry that match star_name */ 5 81 2 nindex fixed binary (18) unsigned unaligned, 5 82 /* index of first name in star_list_names */ 5 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 5 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 5 85 2 pathname_len fixed binary (18) unsigned unaligned, 5 86 /* length of the pathname of the link */ 5 87 2 pathname_index fixed binary (18) unsigned unaligned; 5 88 /* index of start of pathname in star_list_names */ 5 89 5 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 5 91 5 92 declare star_list_names char (32) based (star_list_names_ptr) 5 93 dimension (star_links (star_branch_count + star_link_count).nindex 5 94 + star_links (star_branch_count + star_link_count).nnames 5 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 5 96 * binary ( 5 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 5 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 5 99 5 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 5 101 5 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 5 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 5 104 5 105 /* internal static */ 5 106 5 107 /* star_select_sw values */ 5 108 5 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 5 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 5 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 5 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 5 113 fixed binary (3) internal static options (constant) initial (5); 5 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 5 115 fixed binary (3) internal static options (constant) initial (7); 5 116 5 117 /* storage system types */ 5 118 5 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 5 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 5 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 5 122 5 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 105 106 6 1 /* --------------- BEGIN include file status_for_backup.incl.pl1 --------------- */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(86-05-20,Lippard), approve(86-06-02,MCR7427), 6 6* audit(86-06-17,Farley), install(86-06-17,MR12.0-1077): 6 7* Change non-returned information into pad fields. 6 8* END HISTORY COMMENTS */ 6 9 6 10 6 11 dcl 1 status_for_backup aligned based, 6 12 2 version fixed bin, 6 13 2 pad1 bit (108), 6 14 2 switches unaligned, 6 15 3 safety bit (1) unaligned, 6 16 3 entrypt bit (1) unaligned, 6 17 3 security_oosw bit (1) unaligned, 6 18 3 audit_flag bit (1) unaligned, 6 19 3 multiple_class bit (1) unaligned, 6 20 3 pad2 bit (2) unaligned, 6 21 3 master_dir bit (1) unaligned, 6 22 3 tpd bit (1) unaligned, 6 23 3 pad13 bit (13) unaligned, 6 24 2 entrypt_bound bit (14) unaligned, 6 25 2 access_class bit (72), 6 26 2 spad bit (36), 6 27 2 author char (32), 6 28 2 bc_author char (32), 6 29 2 lvid bit (36), 6 30 2 pvid bit (36), 6 31 2 pad3 bit (216); 6 32 6 33 dcl status_for_backup_version_2 fixed bin initial (2) static options (constant); 6 34 6 35 /* ---------------- END include file status_for_backup.incl.pl1 ---------------- */ 107 108 7 1 dcl 1 uns_info based (addr (info)), /* info structure for unstructured files */ 7 2 2 info_version fixed, /* (Input) must =1--only one version 7 3* currently supported */ 7 4 2 type fixed, /* =1 */ 7 5 2 end_pos fixed (34), /* length (bytes) not including header */ 7 6 2 flags aligned, 7 7 3 pad1 bit (2) unal, /* used for lock_status in other files */ 7 8 3 header_present bit (1) unal, /* on if file code is set */ 7 9 3 pad2 bit (33) unal, 7 10 2 header_id fixed (35); /* meaning is user defined */ 7 11 dcl 1 seq_info based (addr (info)), /* info structure for sequential files */ 7 12 2 info_version fixed, 7 13 2 type fixed, /* =2 */ 7 14 2 end_pos fixed (34), /* record count */ 7 15 2 flags aligned, 7 16 3 lock_status bit (2) unal, /* 0,1,2, or 3 to indicate not locked, 7 17* locked by (other,this,dead) process */ 7 18 3 pad bit (34) unal, 7 19 2 version fixed, /* end_pos valid only in latest version */ 7 20 2 action fixed; /* indicates if adjustment or rollback is needed */ 7 21 dcl 1 blk_info based (addr (info)), /* info structure for blocked files */ 7 22 2 info_version fixed, 7 23 2 type fixed, /* =3 */ 7 24 2 end_pos fixed (34), /* record count */ 7 25 2 flags aligned, 7 26 3 lock_status bit (2) unal, /* same as seq_info.= */ 7 27 3 pad bit (34) unal, 7 28 2 version fixed, /* only one currently supported */ 7 29 2 action fixed, /* non-zero if truncation in progress, else =0 */ 7 30 2 max_rec_len fixed (21), /* bytes--determines characteristiWc block size */ 7 31 2 pad fixed, /* not used at this time */ 7 32 2 time_last_modified fixed (71); /* time stamp for synchronization */ 7 33 dcl 1 indx_info based (addr (info)), /* info structure for indexed files */ 7 34 2 info_version fixed, 7 35 2 type fixed, /* =4 */ 7 36 2 records fixed (34), /* record count */ 7 37 2 flags aligned, 7 38 3 lock_status bit (2) unal, /* same as seq_info.= */ 7 39 3 pad bit (34) unal, 7 40 2 version_info aligned, 7 41 3 file_version fixed (17) unal, /* headers differ */ 7 42 3 program_version fixed (17) unal, /* may indicate bugs */ 7 43 2 action fixed, /* non-zero code indicates update in progress */ 7 44 2 non_null_recs fixed (34), /* count of allocated recs */ 7 45 2 record_bytes fixed (34), /* total record length */ 7 46 2 free_blocks fixed, /* available record blocks */ 7 47 2 index_height fixed, /* height of index tree (0 if empty) */ 7 48 2 nodes fixed, /* nodes being used in the index */ 7 49 2 key_bytes fixed (34), /* total length of keys */ 7 50 2 change_count fixed (35), /* bumped on each file modification */ 7 51 2 num_keys fixed (34), /* number of index entries */ 7 52 2 dup_keys fixed (34), /* 0 if all keys are distinct, else 1 for each dup */ 7 53 2 dup_key_bytes fixed (34), /* total bytes of duplicate keys */ 7 54 2 word (1) fixed; /* reserved for future use */ 7 55 dcl 1 vbl_info based (addr (info)), /* info structure for variable files */ 7 56 2 info_version fixed, 7 57 2 type fixed, /* =5 */ 7 58 2 end_pos fixed (34), /* logical end of file--not necessarily allocation count */ 7 59 2 flags aligned, 7 60 3 lock_status bit (2) unal, /* same as seq_info.= */ 7 61 3 pad bit (34) unal, 7 62 2 version fixed, /* only one currently supported */ 7 63 2 action fixed, /* same as in indexed files */ 7 64 2 first_nz fixed (34), /* position (numeric key) for first allocated record */ 7 65 2 last_nz fixed (34), /* last allocated record position */ 7 66 2 change_count fixed (35); /* used for synchronization */ 7 67 dcl vfs_version_1 static internal fixed init (1); 7 68 /* should be used in 7 69* assignments to info_version */ 109 110 111 star_list: entry (a_dirname, a_starname, ta_filesys_star_ptr, code); 112 113 dcl a_starname char (*) parameter; 114 115 if system_free_ptr = null then 116 system_free_ptr = get_system_free_area_ (); 117 118 ta_filesys_star_ptr, 119 star_list_branch_ptr, 120 star_list_names_ptr = null; 121 122 on cleanup begin; 123 if star_list_names_ptr ^= null then 124 free star_list_names in (system_free_area); 125 if star_list_branch_ptr ^= null then 126 free star_dir_list_branch in (system_free_area); 127 if ta_filesys_star_ptr ^= null then 128 free ta_filesys_star_info in (system_free_area); 129 end; 130 131 star_select_sw = star_BRANCHES_ONLY; 132 133 call hcs_$star_dir_list_ (a_dirname, a_starname, star_select_sw, system_free_ptr, star_branch_count, star_link_count, 134 star_list_branch_ptr, star_list_names_ptr, code); 135 if code ^= 0 then return; 136 137 ta_star_match_count = 0; 138 139 do i = 1 to star_branch_count; 140 if star_dir_list_branch (i).type = star_DIRECTORY then 141 if star_dir_list_branch (i).bit_count > 0 then /* it's an MSF */ 142 star_dir_list_branch (i).type = star_SEGMENT; /* so lie. */ 143 144 if star_dir_list_branch (i).type = star_SEGMENT then 145 ta_star_match_count = ta_star_match_count + 1; 146 end; 147 148 allocate ta_filesys_star_info in (system_free_area); 149 150 ta_star_match_count = 0; 151 152 do i = 1 to star_branch_count; 153 if star_dir_list_branch (i).type = star_SEGMENT then do; 154 ta_star_match_count = ta_star_match_count + 1; 155 ta_filesys_star_info.ename (ta_star_match_count) = star_list_names (star_dir_list_branch (i).nindex); 156 end; 157 end; 158 159 free star_list_names in (system_free_area); 160 free star_dir_list_branch in (system_free_area); 161 return; 162 163 get_file_info: entry (a_dirname, a_ename, branch_type, file_length, safety_sw, binary_file, dtbm, code); 164 165 /* This entry returns a short status of a segment or MSF in the file system, including whether or not its 166* contents contain any non-ASCII characters. */ 167 168 dcl (a_dirname char (*), 169 a_ename char (*), 170 branch_type fixed bin, 171 file_length fixed bin (35), 172 safety_sw bit (1) aligned, 173 binary_file bit (1) aligned, 174 dtbm bit (36), 175 code fixed bin (35)) parameter; 176 177 call hcs_$status_long (a_dirname, a_ename, 1 /* chase */, addr (auto_branch), null, code); 178 if code ^= 0 then return; 179 180 call hcs_$get_safety_sw (a_dirname, a_ename, safety_sw, code); 181 if code ^= 0 then return; 182 183 branch_type = binary (auto_branch.type); 184 dtbm = auto_branch.dtem; 185 186 if auto_branch.type = Segment then do; 187 file_length = (binary (auto_branch.bit_count) + 36863) / 36864e0; /* 1024 * 36 */ 188 /* we return file length in pages */ 189 if ^binary_file then binary_file = check_binary_file (a_dirname, a_ename, binary (auto_branch.bit_count)); 190 end; 191 192 else do; /* MSF, this is a toughy */ 193 194 n_components = binary (auto_branch.bit_count); 195 if n_components = 0 then do; /* real dir, not an MSF */ 196 code = error_table_$dirseg; 197 return; 198 end; 199 200 begin; 201 202 dcl component_file_lengths (0:n_components-1) fixed bin (24); 203 204 call get_component_lengths (a_dirname, a_ename, n_components, component_file_lengths, binary_file); 205 component_file_lengths = (component_file_lengths + 36863) / 36864e0; 206 file_length = sum (component_file_lengths) + binary (auto_branch.records_used); 207 end; 208 end; 209 210 returner: 211 return; 212 213 check_binary_file: proc (a_dirname, a_ename, bitcount) returns (bit (1) aligned); 214 215 dcl (a_dirname char (*), 216 a_ename char (*), 217 bitcount fixed bin (24)) parameter; 218 219 dcl binary_file bit (1) aligned; 220 221 call hcs_$initiate (a_dirname, a_ename, "", 0, 0, seg_ptr, code); 222 if seg_ptr = null then goto returner; 223 224 char_count = divide (bitcount, 9, 21, 0); 225 binary_file = ""b; 226 227 if verify (based_segment, collate ()) > 0 then binary_file = "1"b; 228 229 call hcs_$terminate_noname (seg_ptr, code); 230 return (binary_file); 231 end check_binary_file; 232 233 create_attribute_file: entry (table_ptr, request_no, attribute_seg_ptr, binary_file, code); 234 235 /* This entry fills in the contents of the attribute file which will be put onto tape preceding each component. 236* The attribute file contains all the attributes of a segment in the file system (like ACL, names, 237* and other things) which have to be restored whenever the file is reloaded into the file system. 238* Also, since it has the information handy, it fills in components of the request structure with 239* the same information where necessary. */ 240 241 dcl request_no fixed bin parameter, 242 attribute_seg_ptr pointer parameter; 243 244 ta_attributes.version_no = tape_archive_version_4; 245 status_ptr = addr (ta_attributes.branch); 246 temp_area = empty (); 247 request_ptr = addr (request_queue (request_no)); 248 249 dirname = request.directory_name; 250 ename = request.entry_name; 251 252 call hcs_$status_long (dirname, ename, 253 1 /* chase */, addr (ta_attributes.branch), addr (temp_area), code); 254 if code ^= 0 then return; 255 256 request.entry_status_descriptor.uid = ta_attributes.branch.uid; /* used for checking against table deletion */ 257 258 if request.single_name then do; /* user requested that only one name be recorded */ 259 ta_attributes.branch.nnames = 1b; 260 ta_attributes.names (1) = ename; 261 end; 262 else unspec (ta_attributes.names) = unspec (pointer (addr (temp_area), branch.names_relp) -> name_array); 263 264 call hcs_$get_safety_sw (dirname, ename, ta_attributes.safety_switch, code); 265 if code ^= 0 then return; 266 267 request.safety_switch = ta_attributes.safety_switch; 268 269 call hcs_$get_bc_author (dirname, ename, request.bitcount_author, code); 270 if code ^= 0 then return; 271 272 temp_area = empty (); 273 274 check_for_binary = (^binary_file) & (binary (ta_attributes.dtem) > binary (request.date_time_branch_modified)); 275 /* only check for ascii-ness if it was ascii before and someone changed it since */ 276 277 if ta_attributes.branch.type = Segment then do; 278 279 call hcs_$get_max_length (dirname, ename, ta_attributes.max_length, code); 280 if code ^= 0 then return; 281 282 ta_attributes.n_components = 0; 283 284 auto_sfb.version = status_for_backup_version_2; 285 286 call hcs_$status_for_backup (dirname, ename, addr (auto_sfb), code); 287 if code ^= 0 then return; 288 289 ta_attributes.entrypt_is_bounded = auto_sfb.entrypt; 290 ta_attributes.entrypt_bound = auto_sfb.entrypt_bound; 291 292 call hcs_$list_acl (dirname, ename, 293 addr (temp_area), acl_list_ptr, null, ta_attributes.acl_count, code); 294 if code ^= 0 then return; 295 296 unspec (ta_attributes.acl_list) = unspec (based_acl_list); 297 298 if ^binary_file then binary_file = check_binary_file (dirname, ename, binary (ta_attributes.bit_count)); 299 end; 300 301 else do; /* MSF (we hope) */ 302 if ta_attributes.bit_count = 0 then do; 303 code = error_table_$dirseg; 304 return; 305 end; 306 307 ta_attributes.n_components = binary (ta_attributes.bit_count); 308 309 call msf_manager_$open (dirname, ename, msf_fcb_ptr, code); 310 if code ^= 0 then return; 311 312 call msf_manager_$acl_list (msf_fcb_ptr, addr (temp_area), acl_list_ptr, null, acl_count, code); 313 if code ^= 0 then return; 314 315 unspec (ta_attributes.acl_list) = unspec (based_acl_list); 316 317 call msf_manager_$close (msf_fcb_ptr); 318 319 temp_bit = ^check_for_binary; /* temp bit of 0 means to check for binary */ 320 321 bugblock: begin; /* PL/I bug won't generate calling seq right for the array */ 322 dcl temp_ptr pointer, /* unless we fake it out this way */ 323 based_array (0:ta_attributes.n_components - 1) fixed bin (24) based (temp_ptr); 324 325 temp_ptr = addr (ta_attributes.component_bc); /* This forces correct address computation */ 326 327 call get_component_lengths (dirname, ename, ta_attributes.n_components, based_array (*), temp_bit); 328 end bugblock; 329 330 if check_for_binary then binary_file = temp_bit; 331 end; 332 333 request.date_time_branch_modified = ta_attributes.dtem; 334 request.date_time_dumped = ta_attributes.dtd; 335 336 ta_attributes.own_length_in_chars = length (unspec (ta_attributes)) / 9e0; 337 338 return; 339 340 prepare_extraction: entry (table_ptr, request_no, code); 341 342 /* This entry simply checks to see if something we are extracting already exists or not, and figures out 343* how to handle things in case it does. */ 344 345 request_ptr = addr (request_queue (request_no)); 346 347 dirname = request.directory_name; 348 ename = request.entry_name; 349 350 call hcs_$status_long (dirname, ename, 1 /* chase */, addr (auto_branch), null (), code); 351 352 if code = 0 then do; /* file already exists */ 353 if auto_branch.uid = table_ptr -> tape_archive_table.perm_table_uid then do; 354 call ioa_ ("tape_archive: Extraction into active table ^a has been suppressed.", ename); 355 code = error_table_$action_not_performed; 356 end; 357 else do; 358 if request.force then call nd_handler_$force ("tape_archive", dirname, ename, code); 359 else call nd_handler_ ("tape_archive", dirname, ename, code); 360 if code = 1 then code = error_table_$action_not_performed; 361 end; 362 return; 363 end; 364 365 if code = error_table_$noentry then code = 0; /* file not found, this is what we want */ 366 367 return; 368 369 replace_attributes: entry (table_ptr, request_no, attribute_seg_ptr, code); 370 371 /* This entry takes the attribute file read in from the tape and places every attribute which is replaceable 372* back onto the segment branch. Things like dates and unique ID's are ignored (of course) */ 373 374 /* ENTRIEs */ 375 376 dcl com_err_ ext entry options (variable), 377 ioa_ ext entry options (variable), 378 cu_$level_get ext entry (fixed bin); 379 380 dcl hcs_$chname_file ext entry (char (*), char (*), char (*), char (*), fixed bin (35)), 381 hcs_$replace_acl ext entry (char (*), char (*), pointer, fixed bin, bit (1) aligned, fixed bin (35)), 382 hcs_$set_bc ext entry (char (*), char (*), fixed bin (24), fixed bin (35)), 383 hcs_$set_copysw ext entry (char (*), char (*), fixed bin (1), fixed bin (35)), 384 hcs_$set_entry_bound ext entry (char (*), char (*), fixed bin (18), fixed bin (35)), 385 hcs_$set_max_length ext entry (char (*), char (*), fixed bin (19), fixed bin (35)), 386 hcs_$set_ring_brackets ext entry (char (*), char (*), fixed bin dimension (3), fixed bin (35)), 387 hcs_$set_safety_sw ext entry (char (*), char (*), bit (1) aligned, fixed bin (35)), 388 msf_manager_$acl_replace ext entry (pointer, pointer, fixed bin, bit (1) aligned, fixed bin (35)); 389 390 /* STATIC */ 391 392 dcl validation_level fixed bin static initial (-1); 393 394 dcl rb (3) fixed bin; 395 396 request_ptr = addr (request_queue (request_no)); 397 398 dirname = request.directory_name; 399 ename = request.entry_name; 400 code = 0; 401 402 if ta_attributes.version_no ^= tape_archive_version_4 then; /* doesn't matter, this structure */ 403 /* has been identical from version 1 of tape_archive */ 404 /* the versions differed only in the online table format */ 405 406 if ta_attributes.safety_switch then 407 call hcs_$set_safety_sw (dirname, ename, "1"b, code); 408 if code ^= 0 then call explain (code, "set safety switch of"); 409 410 if ta_attributes.copy_switch then 411 call hcs_$set_copysw (dirname, ename, 1, code); 412 if code ^= 0 then call explain (code, "set copy switch of"); 413 414 if ta_attributes.type = Segment then do; 415 416 if ta_attributes.entrypt_is_bounded then 417 call hcs_$set_entry_bound (dirname, ename, binary (ta_attributes.entrypt_bound), code); 418 if code ^= 0 then call explain (code, "set entrypoint bound of"); 419 420 call hcs_$set_bc (dirname, ename, binary (ta_attributes.bit_count), code); 421 /* set the bitcount even though vfile_ has ostensibly set it */ 422 if code ^= 0 then call explain (code, "set bit count of"); 423 424 call hcs_$set_max_length (dirname, ename, ta_attributes.max_length, code); 425 if code ^= 0 then call explain (code, "set max length of"); 426 427 call hcs_$replace_acl (dirname, ename, addr (ta_attributes.acl_list), ta_attributes.acl_count, "1"b, code); 428 /* don't add SysDaemons if they weren't on before. */ 429 if code ^= 0 then call explain (code, "replace ACL of"); 430 431 do i = 0 to 2; 432 rb (i+1) = binary (ta_attributes.ring_brackets (i)); 433 end; 434 435 if validation_level = -1 then call cu_$level_get (validation_level); 436 437 if rb (1) < validation_level then do; 438 rb = max (rb, validation_level); 439 call ioa_ ("tape_archive: Warning - raising ring brackets of ^a to ^d,^d,^d.", ename, rb); 440 end; 441 442 call hcs_$set_ring_brackets (dirname, ename, rb, code); 443 if code ^= 0 then call explain (code, "set ring brackets of"); 444 end; 445 446 else do; /* file is an MSF */ 447 448 call msf_manager_$open (dirname, ename, msf_fcb_ptr, code); 449 if code ^= 0 then call explain (code, "open MSF"); 450 451 call msf_manager_$acl_replace (msf_fcb_ptr, addr (ta_attributes.acl_list), ta_attributes.acl_count, "1"b, code); 452 if code ^= 0 then call explain (code, "replace ACL of MSF"); 453 454 call msf_manager_$close (msf_fcb_ptr); 455 end; 456 457 if ^request.single_name then 458 do i = 1 to binary (ta_attributes.nnames); 459 460 call hcs_$chname_file (dirname, ename, "", ta_attributes.names (i), code); 461 if code = error_table_$segnamedup then code = 0; 462 else if code = error_table_$namedup then do; 463 call hcs_$status_long (dirname, ta_attributes.names (i), 1 /* chase */, addr (auto_branch), null (), code); 464 if code = 0 then do; 465 if auto_branch.uid = table_ptr -> tape_archive_table.perm_table_uid then 466 call ioa_ ("tape_archive: Potential conflict with active table, name ^a not added to ^a>^a.", ta_attributes.names (i), dirname, ename); 467 else do; 468 if request.force then call nd_handler_$force ("tape_archive", dirname, ta_attributes.names (i), code); 469 else call nd_handler_ ("tape_archive", dirname, ta_attributes.names (i), code); 470 if code = 0 then i = i - 1; /* name removal succeeded, try again */ 471 else code = error_table_$namedup; 472 end; 473 end; 474 end; 475 if code ^= 0 then call explain (code, "add name " || rtrim (ta_attributes.names (i)) || " to"); 476 end; 477 478 code = 0; 479 return; 480 481 get_component_lengths: proc (a_dirname, a_ename, n_components, bc_array, binary_file); 482 483 /* This internal subroutine returns an array of lengths (in pages) for all the components of an MSF. 484* Additionally, it checks each component (if necessary) to ensure that it contains only ASCII chars. */ 485 486 dcl (a_dirname char (*), 487 a_ename char (*), 488 n_components fixed bin, 489 bc_array (*) fixed bin (24), 490 binary_file bit (1) aligned) parameter; 491 492 /* AUTOMATIC */ 493 494 dcl i fixed bin, 495 bit_count fixed bin (24); 496 497 unspec (bc_array) = ""b; 498 499 if ^binary_file then do; /* make sure the file is a stream file */ 500 uns_info.info_version = vfs_version_1; 501 502 call vfile_status_ (a_dirname, a_ename, addr (uns_info), code); 503 if code ^= 0 then return; 504 505 if info.type > 1 then binary_file = "1"b; /* structured file, don't even try to stream it */ 506 end; 507 508 call msf_manager_$open (a_dirname, a_ename, msf_fcb_ptr, code); 509 if code ^= 0 then return; 510 511 do i = 0 to n_components - 1; 512 513 call msf_manager_$get_ptr (msf_fcb_ptr, i, ""b /* do not create */, seg_ptr, bit_count, code); 514 if seg_ptr = null then do; 515 call msf_manager_$close (msf_fcb_ptr); 516 return; 517 end; 518 519 char_count = divide (bit_count, 9, 21, 0); 520 521 bc_array (i) = bit_count; 522 523 if ^binary_file then /* check for legal ASCII */ 524 if verify (based_segment, collate ()) > 0 then /* AHA, a binary byte */ 525 binary_file = "1"b; 526 end; 527 528 call msf_manager_$close (msf_fcb_ptr); 529 return; 530 end get_component_lengths; 531 532 explain: proc (code, explanation); 533 534 dcl code fixed bin (35) parameter, 535 explanation char (*) parameter; 536 537 call com_err_ (code, "tape_archive", "Cannot ^a ^a>^a.", explanation, dirname, ename); 538 code = 0; 539 end explain; 540 541 end ta_filesys_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/17/86 1444.3 ta_filesys_util_.pl1 >spec>install>1077>ta_filesys_util_.pl1 99 1 02/16/84 1452.4 tape_archive_table_dcl.incl.pl1 >ldd>include>tape_archive_table_dcl.incl.pl1 101 2 01/15/79 2202.8 tape_archive_attributes.incl.pl1 >ldd>include>tape_archive_attributes.incl.pl1 2-21 3 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 103 4 12/14/79 1519.0 tape_archive_star.incl.pl1 >ldd>include>tape_archive_star.incl.pl1 105 5 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 107 6 06/17/86 1445.8 status_for_backup.incl.pl1 >spec>install>1077>status_for_backup.incl.pl1 109 7 07/19/79 1547.0 vfs_info.incl.pl1 >ldd>include>vfs_info.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. Segment constant fixed bin(17,0) initial dcl 3-56 ref 186 277 414 a_dirname parameter char unaligned dcl 215 in procedure "check_binary_file" set ref 213 221* a_dirname parameter char unaligned dcl 486 in procedure "get_component_lengths" set ref 481 502* 508* a_dirname parameter char unaligned dcl 168 in procedure "ta_filesys_util_" set ref 111 133* 163 177* 180* 189* 204* a_ename parameter char unaligned dcl 168 in procedure "ta_filesys_util_" set ref 163 177* 180* 189* 204* a_ename parameter char unaligned dcl 215 in procedure "check_binary_file" set ref 213 221* a_ename parameter char unaligned dcl 486 in procedure "get_component_lengths" set ref 481 502* 508* a_starname parameter char unaligned dcl 113 set ref 111 133* acl_count 46 based fixed bin(17,0) level 2 dcl 2-3 set ref 292* 296 296 312* 315 315 325 336 427* 451* acl_list based structure array level 2 dcl 2-3 set ref 296* 315* 427 427 451 451 acl_list_ptr 000256 automatic pointer dcl 50 set ref 292* 296 312* 315 addr builtin function dcl 96 ref 177 177 245 247 252 252 252 252 262 286 286 292 292 312 312 325 345 350 350 396 427 427 451 451 463 463 500 502 502 502 502 attribute_seg_ptr parameter pointer dcl 241 ref 233 244 245 252 252 256 259 260 262 262 262 262 264 267 274 277 279 282 289 290 292 296 296 296 296 298 298 302 307 307 312 315 315 315 315 325 325 325 327 327 333 334 336 336 336 336 336 369 402 406 410 414 416 416 416 420 420 424 427 427 427 427 427 432 451 451 451 451 451 457 460 463 465 468 469 475 auto_branch 000162 automatic structure level 1 dcl 44 set ref 177 177 350 350 463 463 auto_sfb 000215 automatic structure level 1 dcl 48 set ref 286 286 based_acl_list based structure array level 1 dcl 33 ref 296 315 based_array based fixed bin(24,0) array dcl 322 set ref 327* based_segment based char dcl 37 ref 227 523 bc_array parameter fixed bin(24,0) array dcl 486 set ref 481 497* 521* binary builtin function dcl 96 ref 123 159 183 187 189 189 194 206 262 262 274 274 296 298 298 307 315 325 336 416 416 420 420 427 427 432 451 451 457 binary_file parameter bit(1) dcl 168 in procedure "ta_filesys_util_" set ref 163 189 189* 204* 233 274 298 298* 330* binary_file 006226 automatic bit(1) dcl 219 in procedure "check_binary_file" set ref 225* 227* 230 binary_file parameter bit(1) dcl 486 in procedure "get_component_lengths" set ref 481 499 505* 523 523* bit_count 000101 automatic fixed bin(24,0) dcl 494 in procedure "get_component_lengths" set ref 513* 519 521 bit_count 7(12) 000162 automatic fixed bin(24,0) level 3 in structure "auto_branch" packed unsigned unaligned dcl 44 in procedure "ta_filesys_util_" set ref 187 189 189 194 bit_count 11(12) based fixed bin(24,0) level 4 in structure "ta_attributes" packed unsigned unaligned dcl 2-3 in procedure "ta_filesys_util_" set ref 298 298 302 307 420 420 bit_count 3(11) based fixed bin(24,0) array level 2 in structure "star_dir_list_branch" packed unaligned dcl 5-59 in procedure "ta_filesys_util_" ref 140 bitcount parameter fixed bin(24,0) dcl 215 ref 213 224 bitcount_author 23 based char(32) level 4 dcl 1-60 set ref 269* branch 2 based structure level 2 dcl 2-3 set ref 245 252 252 branch_type parameter fixed bin(17,0) dcl 168 set ref 163 183* char_count 000260 automatic fixed bin(21,0) dcl 50 set ref 224* 227 519* 523 check_for_binary 000261 automatic bit(1) unaligned dcl 50 set ref 274* 319 330 cleanup 006162 stack reference condition dcl 98 ref 122 code parameter fixed bin(35,0) dcl 168 in procedure "ta_filesys_util_" set ref 111 133* 135 163 177* 178 180* 181 196* 221* 229* 233 252* 254 264* 265 269* 270 279* 280 286* 287 292* 294 303* 309* 310 312* 313 340 350* 352 355* 358* 359* 360 360* 365 365* 369 400* 406* 408 408* 410* 412 412* 416* 418 418* 420* 422 422* 424* 425 425* 427* 429 429* 442* 443 443* 448* 449 449* 451* 452 452* 460* 461 461* 462 463* 464 468* 469* 470 471* 475 475* 478* 502* 503 508* 509 513* code parameter fixed bin(35,0) dcl 534 in procedure "explain" set ref 532 537* 538* collate builtin function dcl 96 ref 227 523 com_err_ 000070 constant entry external dcl 376 ref 537 component based structure level 1 dcl 1-53 component_bc based fixed bin(24,0) array level 2 dcl 2-3 set ref 325 component_file_lengths 000100 automatic fixed bin(24,0) array dcl 202 set ref 204* 205* 205 206 copy_switch 12(08) based bit(1) level 4 packed unaligned dcl 2-3 set ref 410 cu_$level_get 000074 constant entry external dcl 376 ref 435 date_time_branch_modified 21 based bit(36) level 4 dcl 1-60 set ref 274 333* date_time_dumped 22 based bit(36) level 4 dcl 1-60 set ref 334* directory_name 40 based char(168) level 2 packed unaligned dcl 1-60 ref 249 347 398 dirname 000100 automatic char(168) unaligned dcl 41 set ref 249* 252* 264* 269* 279* 286* 292* 298* 309* 327* 347* 350* 358* 359* 398* 406* 410* 416* 420* 424* 427* 442* 448* 460* 463* 465* 468* 469* 537* divide builtin function dcl 96 ref 123 159 224 519 dtbm parameter bit(36) unaligned dcl 168 set ref 163 184* dtd 6 based bit(36) level 4 packed unaligned dcl 2-3 set ref 334 dtem 5 000162 automatic bit(36) level 3 in structure "auto_branch" packed unaligned dcl 44 in procedure "ta_filesys_util_" set ref 184 dtem 7 based bit(36) level 4 in structure "ta_attributes" packed unaligned dcl 2-3 in procedure "ta_filesys_util_" set ref 274 333 empty builtin function dcl 96 ref 50 246 272 ename 1 based char(32) array level 2 in structure "ta_filesys_star_info" packed unaligned dcl 4-3 in procedure "ta_filesys_util_" set ref 155* ename 000152 automatic char(32) unaligned dcl 41 in procedure "ta_filesys_util_" set ref 250* 252* 260 264* 269* 279* 286* 292* 298* 309* 327* 348* 350* 354* 358* 359* 399* 406* 410* 416* 420* 424* 427* 439* 442* 448* 460* 465* 537* entry_name 6 based char(32) level 4 packed unaligned dcl 1-60 ref 250 348 399 entry_status_descriptor based structure level 2 in structure "request" dcl 1-60 in procedure "ta_filesys_util_" entry_status_descriptor based structure level 1 dcl 1-74 in procedure "ta_filesys_util_" entrypt 4(01) 000215 automatic bit(1) level 3 packed unaligned dcl 48 set ref 289 entrypt_bound 4(22) 000215 automatic bit(14) level 2 in structure "auto_sfb" packed unaligned dcl 48 in procedure "ta_filesys_util_" set ref 290 entrypt_bound 16 based bit(14) level 2 in structure "ta_attributes" dcl 2-3 in procedure "ta_filesys_util_" set ref 290* 416 416 entrypt_is_bounded 15 based bit(1) level 2 dcl 2-3 set ref 289* 416 error_table_$action_not_performed 000056 external static fixed bin(35,0) dcl 86 ref 355 360 error_table_$dirseg 000060 external static fixed bin(35,0) dcl 86 ref 196 303 error_table_$namedup 000062 external static fixed bin(35,0) dcl 86 ref 462 471 error_table_$noentry 000064 external static fixed bin(35,0) dcl 86 ref 365 error_table_$segnamedup 000066 external static fixed bin(35,0) dcl 86 ref 461 explanation parameter char unaligned dcl 534 set ref 532 537* file_info 1 based structure level 3 dcl 1-60 file_length parameter fixed bin(35,0) dcl 168 set ref 163 187* 206* force 112(04) based bit(1) level 3 packed unaligned dcl 1-60 ref 358 468 get_system_free_area_ 000014 constant entry external dcl 62 ref 115 hcs_$chname_file 000076 constant entry external dcl 380 ref 460 hcs_$get_bc_author 000016 constant entry external dcl 62 ref 269 hcs_$get_max_length 000020 constant entry external dcl 62 ref 279 hcs_$get_safety_sw 000022 constant entry external dcl 62 ref 180 264 hcs_$initiate 000024 constant entry external dcl 62 ref 221 hcs_$list_acl 000026 constant entry external dcl 62 ref 292 hcs_$replace_acl 000100 constant entry external dcl 380 ref 427 hcs_$set_bc 000102 constant entry external dcl 380 ref 420 hcs_$set_copysw 000104 constant entry external dcl 380 ref 410 hcs_$set_entry_bound 000106 constant entry external dcl 380 ref 416 hcs_$set_max_length 000110 constant entry external dcl 380 ref 424 hcs_$set_ring_brackets 000112 constant entry external dcl 380 ref 442 hcs_$set_safety_sw 000114 constant entry external dcl 380 ref 406 hcs_$star_dir_list_ 000030 constant entry external dcl 62 ref 133 hcs_$status_for_backup 000032 constant entry external dcl 62 ref 286 hcs_$status_long 000034 constant entry external dcl 62 ref 177 252 350 463 hcs_$terminate_noname 000036 constant entry external dcl 62 ref 229 i 000262 automatic fixed bin(17,0) dcl 50 in procedure "ta_filesys_util_" set ref 139* 140 140 140 144* 152* 153 155* 431* 432 432* 457* 460 463 465 468 469 470* 470 475* i 000100 automatic fixed bin(17,0) dcl 494 in procedure "get_component_lengths" set ref 511* 513* 521* indx_info based structure level 1 unaligned dcl 7-33 info 000174 automatic structure level 1 unaligned dcl 46 set ref 500 502 502 info_version based fixed bin(17,0) level 2 dcl 7-1 set ref 500* ioa_ 000072 constant entry external dcl 376 ref 354 439 465 length builtin function dcl 96 ref 336 long 6 based structure level 3 in structure "ta_attributes" dcl 2-3 in procedure "ta_filesys_util_" long 4 000162 automatic structure level 2 in structure "auto_branch" dcl 44 in procedure "ta_filesys_util_" max builtin function dcl 96 ref 438 max_length 17 based fixed bin(19,0) level 2 dcl 2-3 set ref 279* 424* msf_fcb_ptr 000264 automatic pointer dcl 50 set ref 309* 312* 317* 448* 451* 454* 508* 513* 515* 528* msf_manager_$acl_list 000040 constant entry external dcl 62 ref 312 msf_manager_$acl_replace 000116 constant entry external dcl 380 ref 451 msf_manager_$close 000044 constant entry external dcl 62 ref 317 454 515 528 msf_manager_$get_ptr 000042 constant entry external dcl 62 ref 513 msf_manager_$open 000046 constant entry external dcl 62 ref 309 448 508 n_component_slots 41 based fixed bin(17,0) level 3 dcl 1-14 ref 247 345 396 n_components 47 based fixed bin(17,0) level 2 in structure "ta_attributes" dcl 2-3 in procedure "ta_filesys_util_" set ref 282* 307* 327* 327 336 n_components parameter fixed bin(17,0) dcl 486 in procedure "get_component_lengths" ref 481 511 n_components 000263 automatic fixed bin(17,0) dcl 50 in procedure "ta_filesys_util_" set ref 194* 195 202 204* n_entries based fixed bin(17,0) level 2 dcl 4-3 set ref 127 148* name_array based char(32) array dcl 35 ref 262 names 50 based char(32) array level 2 packed unaligned dcl 2-3 set ref 260* 262* 460* 463* 465* 468* 469* 475 names_relp 2(18) based bit(18) level 4 packed unaligned dcl 2-3 set ref 262 nd_handler_ 000050 constant entry external dcl 62 ref 359 469 nd_handler_$force 000052 constant entry external dcl 62 ref 358 468 nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 5-59 in procedure "ta_filesys_util_" ref 155 nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 5-76 in procedure "ta_filesys_util_" ref 123 159 nnames 2(02) based fixed bin(16,0) level 4 in structure "ta_attributes" packed unsigned unaligned dcl 2-3 in procedure "ta_filesys_util_" set ref 259* 262 262 296 315 325 336 427 427 451 451 457 nnames 0(02) based fixed bin(16,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 5-76 in procedure "ta_filesys_util_" ref 123 159 nonvolatile_part based structure level 2 dcl 1-14 null builtin function dcl 96 ref 115 118 123 125 127 177 177 222 292 292 312 312 350 350 463 463 514 own_length_in_chars 1 based fixed bin(21,0) level 2 dcl 2-3 set ref 336* pathname_len 3 based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 5-76 ref 123 159 perm_table_uid 31 based bit(36) level 3 dcl 1-14 ref 353 465 pointer builtin function dcl 96 ref 262 rb 006205 automatic fixed bin(17,0) array dcl 394 set ref 432* 437 438* 438 439* 442* records_used 3(18) 000162 automatic fixed bin(18,0) level 3 packed unsigned unaligned dcl 44 set ref 206 request based structure level 1 dcl 1-60 request_no parameter fixed bin(17,0) dcl 241 ref 233 247 340 345 369 396 request_ptr 006170 automatic pointer dcl 1-112 set ref 247* 249 250 256 258 267 269 274 333 334 345* 347 348 358 396* 398 399 457 468 request_queue based structure array level 3 dcl 1-14 set ref 247 345 396 requested_ops 112 based structure level 2 packed unaligned dcl 1-60 ring_brackets 12(18) based fixed bin(6,0) array level 4 packed unsigned unaligned dcl 2-3 set ref 432 rtrim builtin function dcl 96 ref 475 safety_sw parameter bit(1) dcl 168 set ref 163 180* safety_switch 14 based bit(1) level 2 in structure "ta_attributes" dcl 2-3 in procedure "ta_filesys_util_" set ref 264* 267 406 safety_switch 0(02) based bit(1) level 3 in structure "request" packed unaligned dcl 1-60 in procedure "ta_filesys_util_" set ref 267* seg_ptr 000266 automatic pointer dcl 50 set ref 221* 222 227 229* 513* 514 523 short 000162 automatic structure level 2 in structure "auto_branch" dcl 44 in procedure "ta_filesys_util_" short 2 based structure level 3 in structure "ta_attributes" dcl 2-3 in procedure "ta_filesys_util_" single_name 112(05) based bit(1) level 3 packed unaligned dcl 1-60 ref 258 457 star_BRANCHES_ONLY constant fixed bin(2,0) initial dcl 5-110 ref 131 star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 5-121 ref 140 star_LINK constant fixed bin(2,0) initial unsigned dcl 5-119 ref 123 159 star_LINKS_ONLY_WITH_LINK_PATHS constant fixed bin(3,0) initial dcl 5-112 ref 123 159 star_SEGMENT constant fixed bin(2,0) initial unsigned dcl 5-120 ref 140 144 153 star_branch_count 006175 automatic fixed bin(17,0) dcl 5-13 set ref 123 123 123 123 125 133* 139 152 159 159 159 159 160 star_dir_list_branch based structure array level 1 dcl 5-59 set ref 125 160 star_link_count 006200 automatic fixed bin(17,0) dcl 5-17 set ref 123 123 123 123 125 133* 159 159 159 159 160 star_links based structure array level 1 dcl 5-76 star_list_branch_ptr 006176 automatic pointer dcl 5-16 set ref 118* 123 123 123 123 125 125 133* 140 140 140 144 153 155 159 159 159 159 160 star_list_names based char(32) array unaligned dcl 5-92 ref 123 155 159 star_list_names_ptr 006202 automatic pointer dcl 5-20 set ref 118* 123 123 133* 155 159 star_select_sw 006204 automatic fixed bin(3,0) dcl 5-21 set ref 123 131* 133* 159 status_branch based structure level 1 dcl 3-8 status_for_backup based structure level 1 dcl 6-11 status_for_backup_version_2 constant fixed bin(17,0) initial dcl 6-33 ref 284 status_ptr 006172 automatic pointer dcl 3-47 set ref 245* sum builtin function dcl 96 ref 206 switches 4 000215 automatic structure level 2 packed unaligned dcl 48 system_free_area based area dcl 36 ref 123 125 127 148 159 160 system_free_ptr 000010 internal static pointer initial dcl 82 set ref 115 115* 123 125 127 133* 148 159 160 ta_attributes based structure level 1 dcl 2-3 set ref 336 ta_filesys_star_info based structure level 1 dcl 4-3 set ref 127 148 ta_filesys_star_ptr parameter pointer dcl 4-14 set ref 111 118* 127 127 148* 155 ta_star_match_count 006174 automatic fixed bin(17,0) dcl 4-14 set ref 137* 144* 144 148 148 150* 154* 154 155 table_ptr parameter pointer dcl 1-112 ref 233 247 340 345 353 369 396 465 tape_archive_table based structure level 1 dcl 1-14 tape_archive_version_4 constant fixed bin(17,0) initial dcl 1-114 ref 244 402 tape_info 64 based structure level 3 dcl 1-14 temp_area 000270 automatic area(3000) dcl 50 set ref 50* 246* 252 252 262 272* 292 292 312 312 temp_bit 006160 automatic bit(1) dcl 50 set ref 319* 327* 330 temp_ptr 006230 automatic pointer dcl 322 set ref 325* 327 type based fixed bin(2,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 5-59 in procedure "ta_filesys_util_" set ref 140 140* 144 153 type 2 based fixed bin(2,0) level 4 in structure "ta_attributes" packed unsigned unaligned dcl 2-3 in procedure "ta_filesys_util_" set ref 277 414 type 000162 automatic fixed bin(2,0) level 3 in structure "auto_branch" packed unsigned unaligned dcl 44 in procedure "ta_filesys_util_" set ref 183 186 type based fixed bin(2,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 5-76 in procedure "ta_filesys_util_" ref 123 159 type 1 000174 automatic fixed bin(17,0) level 2 in structure "info" dcl 46 in procedure "ta_filesys_util_" set ref 505 uid 13 based bit(36) level 4 in structure "ta_attributes" packed unaligned dcl 2-3 in procedure "ta_filesys_util_" set ref 256 uid 11 000162 automatic bit(36) level 3 in structure "auto_branch" packed unaligned dcl 44 in procedure "ta_filesys_util_" set ref 353 465 uid 36 based bit(36) level 3 in structure "request" dcl 1-60 in procedure "ta_filesys_util_" set ref 256* uns_info based structure level 1 unaligned dcl 7-1 set ref 502 502 unspec builtin function dcl 96 set ref 262* 262 296* 296 315* 315 336 497* validation_level 000012 internal static fixed bin(17,0) initial dcl 392 set ref 435 435* 437 438 438 verify builtin function dcl 96 ref 227 523 version 000215 automatic fixed bin(17,0) level 2 dcl 48 set ref 284* version_no based fixed bin(17,0) level 2 dcl 2-3 set ref 244* 402 vfile_status_ 000054 constant entry external dcl 62 ref 502 vfs_version_1 constant fixed bin(17,0) initial dcl 7-67 ref 500 volatile_part 40 based structure level 2 dcl 1-14 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Cancellation internal static fixed bin(17,0) initial dcl 1-114 Compact internal static fixed bin(17,0) initial dcl 1-114 Component internal static fixed bin(17,0) initial dcl 4-18 Default_density internal static fixed bin(17,0) initial dcl 1-114 Delete internal static fixed bin(17,0) initial dcl 1-114 Deletion internal static fixed bin(17,0) initial dcl 1-114 Deletion_cancellation internal static fixed bin(17,0) initial dcl 1-114 Directory internal static fixed bin(17,0) initial dcl 3-56 Examine internal static fixed bin(17,0) initial dcl 1-114 Extraction internal static fixed bin(17,0) initial dcl 1-114 Link internal static fixed bin(17,0) initial dcl 3-56 Lock_reasons internal static char(24) initial array unaligned dcl 1-114 Magic_constant internal static char(8) initial unaligned dcl 1-114 Magic_workspace_constant internal static char(8) initial unaligned dcl 1-114 Modify internal static fixed bin(17,0) initial dcl 1-114 None internal static fixed bin(17,0) initial dcl 1-114 Process_tape internal static fixed bin(17,0) initial dcl 1-114 Read internal static fixed bin(17,0) initial dcl 1-114 Replacement internal static fixed bin(17,0) initial dcl 1-114 Request internal static fixed bin(17,0) initial dcl 4-18 TAPE_ARCHIVE_IO_MODULE internal static char(6) initial unaligned dcl 1-114 Table_copy internal static fixed bin(17,0) initial dcl 1-114 Table_creation internal static fixed bin(17,0) initial dcl 1-114 Volume_alteration internal static fixed bin(17,0) initial dcl 1-114 Write internal static fixed bin(17,0) initial dcl 1-114 based_tape_info based structure level 1 dcl 1-110 blk_info based structure level 1 unaligned dcl 7-21 component_ptr automatic pointer dcl 1-112 seq_info based structure level 1 unaligned dcl 7-11 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 5-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 5-114 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 5-109 star_entries based structure array level 1 dcl 5-27 star_entry_count automatic fixed bin(17,0) dcl 5-14 star_entry_ptr automatic pointer dcl 5-15 star_link_pathname based char unaligned dcl 5-102 star_linkx automatic fixed bin(17,0) dcl 5-18 star_list_branch based structure array level 1 dcl 5-41 star_names based char(32) array unaligned dcl 5-37 star_names_ptr automatic pointer dcl 5-19 status_area_ptr automatic pointer dcl 3-47 status_entry_names based char(32) array dcl 3-47 status_link based structure level 1 dcl 3-38 status_pathname based char dcl 3-47 sys_info$max_seg_size external static fixed bin(35,0) dcl 92 ta_component_star_info based structure level 1 dcl 4-7 ta_component_star_ptr automatic pointer dcl 4-14 tape_info_ptr automatic pointer dcl 1-112 vbl_info based structure level 1 unaligned dcl 7-55 workspace based structure level 1 dcl 1-93 workspace_ptr automatic pointer dcl 1-112 NAMES DECLARED BY EXPLICIT CONTEXT. bugblock 002135 constant label dcl 321 check_binary_file 004150 constant entry internal dcl 213 ref 189 298 create_attribute_file 001274 constant entry external dcl 233 explain 004562 constant entry internal dcl 532 ref 408 412 418 422 425 429 443 449 452 475 get_component_lengths 004276 constant entry internal dcl 481 ref 204 327 get_file_info 000727 constant entry external dcl 163 prepare_extraction 002261 constant entry external dcl 340 replace_attributes 002522 constant entry external dcl 369 returner 001266 constant label dcl 210 ref 222 star_list 000302 constant entry external dcl 111 ta_filesys_util_ 000266 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5534 5654 5051 5544 Length 6304 5051 120 413 462 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ta_filesys_util_ 3390 external procedure is an external procedure. on unit on line 122 67 on unit begin block on line 200 101 begin block uses auto adjustable storage. check_binary_file internal procedure shares stack frame of external procedure ta_filesys_util_. begin block on line 321 begin block shares stack frame of external procedure ta_filesys_util_. get_component_lengths 90 internal procedure is called by several nonquick procedures. explain 100 internal procedure is called during a stack extension. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_free_ptr ta_filesys_util_ 000012 validation_level ta_filesys_util_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 200 000100 component_file_lengths begin block on line 200 get_component_lengths 000100 i get_component_lengths 000101 bit_count get_component_lengths ta_filesys_util_ 000100 dirname ta_filesys_util_ 000152 ename ta_filesys_util_ 000162 auto_branch ta_filesys_util_ 000174 info ta_filesys_util_ 000215 auto_sfb ta_filesys_util_ 000256 acl_list_ptr ta_filesys_util_ 000260 char_count ta_filesys_util_ 000261 check_for_binary ta_filesys_util_ 000262 i ta_filesys_util_ 000263 n_components ta_filesys_util_ 000264 msf_fcb_ptr ta_filesys_util_ 000266 seg_ptr ta_filesys_util_ 000270 temp_area ta_filesys_util_ 006160 temp_bit ta_filesys_util_ 006170 request_ptr ta_filesys_util_ 006172 status_ptr ta_filesys_util_ 006174 ta_star_match_count ta_filesys_util_ 006175 star_branch_count ta_filesys_util_ 006176 star_list_branch_ptr ta_filesys_util_ 006200 star_link_count ta_filesys_util_ 006202 star_list_names_ptr ta_filesys_util_ 006204 star_select_sw ta_filesys_util_ 006205 rb ta_filesys_util_ 006226 binary_file check_binary_file 006230 temp_ptr begin block on line 321 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ge_a alloc_cs cat_realloc_cs enter_begin leave_begin call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return fl2_to_fx1 alloc_auto_adj enable shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc alloc_based free_based empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$level_get get_system_free_area_ hcs_$chname_file hcs_$get_bc_author hcs_$get_max_length hcs_$get_safety_sw hcs_$initiate hcs_$list_acl hcs_$replace_acl hcs_$set_bc hcs_$set_copysw hcs_$set_entry_bound hcs_$set_max_length hcs_$set_ring_brackets hcs_$set_safety_sw hcs_$star_dir_list_ hcs_$status_for_backup hcs_$status_long hcs_$terminate_noname ioa_ msf_manager_$acl_list msf_manager_$acl_replace msf_manager_$close msf_manager_$get_ptr msf_manager_$open nd_handler_ nd_handler_$force vfile_status_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$dirseg error_table_$namedup error_table_$noentry error_table_$segnamedup LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 50 000260 18 000265 18 000274 111 000275 115 000326 118 000341 122 000346 123 000362 125 000427 127 000441 129 000455 131 000456 133 000460 135 000530 137 000532 139 000533 140 000543 144 000563 146 000571 148 000573 150 000606 152 000607 153 000617 154 000626 155 000627 157 000650 159 000652 160 000712 161 000717 163 000720 177 000755 178 001021 180 001023 181 001052 183 001054 184 001060 186 001064 187 001066 189 001076 190 001130 194 001131 195 001134 196 001135 197 001140 200 001141 202 001144 204 001154 205 001217 206 001240 207 001265 210 001266 233 001267 244 001307 245 001313 246 001316 247 001321 249 001335 250 001340 252 001343 254 001407 256 001411 258 001417 259 001422 260 001426 261 001431 262 001432 264 001450 265 001475 267 001477 269 001507 270 001535 272 001537 274 001542 277 001563 279 001567 280 001614 282 001616 284 001622 286 001624 287 001653 289 001655 290 001664 292 001667 294 001732 296 001734 298 001755 299 002007 302 002010 303 002014 304 002017 307 002020 309 002021 310 002046 312 002050 313 002100 315 002102 317 002123 319 002132 325 002135 327 002153 330 002214 333 002221 334 002227 336 002231 338 002254 340 002255 345 002272 347 002306 348 002311 350 002314 352 002356 353 002360 354 002366 355 002406 356 002411 358 002412 359 002450 360 002501 362 002507 365 002510 367 002514 369 002515 396 002533 398 002547 399 002552 400 002555 402 002556 406 002562 408 002615 410 002636 412 002673 414 002717 416 002726 418 002760 420 003004 422 003037 424 003063 425 003113 427 003134 429 003204 431 003230 432 003235 433 003250 435 003252 437 003264 438 003270 439 003305 442 003330 443 003355 444 003401 448 003402 449 003427 451 003447 452 003501 454 003522 457 003531 460 003551 461 003611 462 003617 463 003621 464 003672 465 003674 468 003741 469 004005 470 004044 471 004051 475 004054 476 004143 478 004146 479 004147 213 004150 221 004166 222 004232 224 004236 225 004242 227 004243 229 004260 230 004271 481 004275 497 004316 499 004334 500 004337 502 004342 503 004371 505 004374 508 004402 509 004432 511 004435 513 004445 514 004471 515 004476 516 004505 519 004506 521 004511 523 004525 526 004546 528 004550 529 004560 532 004561 537 004575 538 004645 539 004647 ----------------------------------------------------------- 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