COMPILATION LISTING OF SEGMENT copy_dir Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/08/85 1020.7 mst Fri Options: optimize map 1 /* ************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* ************************************************************** */ 8 9 10 11 12 /* format: style2,idind30,indcomtxt */ 13 copy_dir: 14 cpd: 15 procedure options (variable); 16 17 /* Move or copy a directory and its subtree. 18* 19* Last modified: 20* 21* 06/02/78 by LLS for initial implementation 22* 07/06/78 by LLS to add -update, the entry_type_keys, and fix containment and argument consistency checking. 23* 11/14/80 by GAT to use copy_dir_. 24* 09/22/81 by Lindsey Spratt: removed call to status to validate pathnames. 25* copy_dir_ does this validation and it need not be duplicated 26* here. 27* 6/29/83 by Jay Pattin to add -fcnt 28* 831002 by BIM to cleanup a bit, audit above, etc. 29* 25/09/84 by B. Braun to initialize copy_dir_options.parent_ac_sw to "0"b; 30* 12/27/84 by Keith Loepere to remove create_branch_info. 31* 830206 by MSharpe to replace -fcnt with -inase/inaee; to accept -fc 32* as synonym for -force; to initialize cdo.primary to ""b. 33**/ 34 /* Entries */ 35 36 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 37 dcl com_err_ entry options (variable); 38 dcl com_err_$suppress_name entry options (variable); 39 dcl copy_dir_ entry (char (*), char (*), char (*), char (*), char (*), ptr, 40 fixed bin (35)); 41 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 42 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 43 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 44 dcl get_equal_name_ entry (char (*), char (*), char (32), fixed bin (35)); 45 dcl get_system_free_area_ entry returns (ptr); 46 dcl get_wdir_ entry returns (char (168)); 47 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, 48 fixed bin (35)); 49 50 /**** * Conditions */ 51 52 dcl cleanup condition; 53 54 /**** * Based */ 55 56 dcl arg char (arg_len) based (arg_ptr); 57 dcl area area based (area_ptr); 58 59 /**** * Automatic */ 60 61 dcl whoami char (8); /* name of entry into code ("copy_dir" or "move_dir"). */ 62 dcl code fixed bin (35); 63 /* the returned error code from a system call. */ 64 dcl ( 65 all_entries, /* all entries are copied */ 66 all_names, /* all names on an entry are copied */ 67 errors, 68 have_source, /* pathname of source is known. */ 69 have_target, /* pathname of target is known */ 70 same_dir, /* se_name and te_name are in the same directory. */ 71 multiple_sources, /* star name input */ 72 move 73 ) bit (1); /* delete source_dir after copying */ 74 dcl ( 75 argno, /* index to count through the argument list. */ 76 entry_count, /* number star matches */ 77 entry_index, 78 nargs 79 ) fixed bin; 80 dcl arg_len fixed bin (21); 81 /* length of argument pointed to by arg_ptr. */ 82 83 dcl (sd_name, td_name, wd) char (168); 84 dcl (entry_temp, se_name, te_name) 85 char (32); 86 dcl (arg1, arg2) char (32) varying; 87 dcl ( 88 area_ptr, /* ptr on which area is based. */ 89 arg_ptr /* Ptr to arg, set by call to cu_$arg_ptr. */ 90 ) ptr; 91 92 /* External */ 93 94 dcl ( 95 error_table_$badopt, 96 error_table_$inconsistent, 97 error_table_$notadir, 98 error_table_$no_s_permission 99 ) fixed bin (35) external; 100 101 /**** * Builtins */ 102 103 dcl (addr, binary, null, substr, sum) 104 builtin; 105 106 107 whoami = "copy_dir"; 108 move = "0"b; 109 go to START; 110 111 move_dir: 112 mvd: 113 entry options (variable); 114 115 whoami = "move_dir"; 116 move = "1"b; 117 118 /* true beginning of program */ 119 120 START: 121 star_branch_count, star_link_count = 0; 122 star_select_sw = star_BRANCHES_ONLY; 123 area_ptr = get_system_free_area_ (); 124 star_entry_ptr, star_names_ptr = null (); 125 on condition (cleanup) 126 begin; 127 if star_names_ptr ^= null () 128 then free star_names in (area); 129 if star_entry_ptr ^= null () 130 then free star_entries in (area); 131 end; 132 133 wd = get_wdir_ (); 134 have_source = "0"b; 135 have_target = "0"b; 136 all_names = "1"b; 137 all_entries = "1"b; 138 errors = "0"b; 139 same_dir = "0"b; 140 141 cdo.version = copy_dir_options_version_0; 142 cdo.replace = "0"b; 143 cdo.link_translation = "1"b; 144 cdo.primary = "0"b; 145 cdo.acl = "0"b; 146 cdo.force = "0"b; 147 cdo.brief = "0"b; 148 cdo.chase = "0"b; 149 cdo.parent_ac_sw = "0"b; 150 cdo.link = "0"b; 151 cdo.seg = "0"b; 152 cdo.msf = "0"b; 153 cdo.nnlk = "0"b; 154 cdo.update = "0"b; 155 cdo.dir = "0"b; 156 cdo.raw = "0"b; 157 cdo.pad1, cdo.pad2 = "0"b; 158 if move 159 then cdo.delete = "1"b; 160 else cdo.delete = "0"b; 161 162 163 /* process arguments */ 164 165 call cu_$arg_count (nargs, code); 166 if code ^= 0 167 then do; 168 call com_err_ (code, whoami); 169 return; 170 end; 171 if nargs = 0 172 then do; 173 usage: 174 call com_err_$suppress_name (0, whoami, 175 "Usage: ^a source_dir {target_dir} {-entry_type_keys} {-control_args} ", whoami); 176 goto finish; 177 end; /* get source_dir (sd_name and se_name). */ 178 179 180 do argno = 1 to nargs; 181 call cu_$arg_ptr (argno, arg_ptr, arg_len, code); 182 if code ^= 0 183 then do; 184 call com_err_ (code, whoami, "On argument number ^d", argno); 185 goto finish; 186 end; 187 188 if substr (arg, 1, 1) ^= "-" 189 then if ^have_source 190 then do; 191 call expand_pathname_ (arg, sd_name, se_name, code); 192 if code ^= 0 193 then do; 194 err: 195 call com_err_ (code, whoami, "^a", arg); 196 goto finish; 197 end; 198 call check_star_name_$entry (se_name, code); 199 if code = 0 200 then do; 201 entry_count = 1; 202 multiple_sources = "0"b; 203 end; 204 else if (code = 1 | code = 2) 205 then multiple_sources = "1"b; 206 else do; 207 call com_err_ (code, whoami, "Star name check failed on ^a.", se_name); 208 goto finish; 209 end; 210 have_source = "1"b; 211 end; 212 213 /* process the rest of the arguments. */ 214 215 else if ^have_target 216 then do; 217 218 call expand_pathname_ (arg, td_name, entry_temp, code); 219 if code ^= 0 220 then do; 221 call com_err_ (code, whoami, "^a", arg); 222 goto finish; 223 end; 224 225 have_target = "1"b; 226 end; 227 else do; 228 call com_err_ (error_table_$badopt, whoami, 229 "Too many pathnames, a maximum of two is allowed."); 230 goto finish; 231 end; /* check for the control arguments */ 232 else if arg = "-replace" | arg = "-rp" 233 then cdo.replace = "1"b; 234 else if arg = "-update" | arg = "-ud" 235 then cdo.update = "1"b; 236 else if (arg = "-no_link_translation" | arg = "-nlt") & ^move 237 then cdo.link_translation = "0"b; 238 else if arg = "-acl" 239 then cdo.acl = "1"b; 240 else if arg = "-force" | arg = "-fc" 241 then cdo.force = "1"b; 242 else if arg = "-brief" | arg = "-bf" 243 then cdo.brief = "1"b; 244 else if arg = "-chase" 245 then cdo.chase = "1"b; 246 else if arg = "-primary" | arg = "-pri" 247 then cdo.primary = "1"b; 248 else if arg = "-interpret_as_standard_entry" | arg = "-inase" 249 then cdo.raw = "1"b; 250 251 else if arg = "-interpret_as_extended_entry" | arg = "-inaee" 252 then cdo.raw = "0"b; 253 254 /* check for entry type keys. */ 255 256 else if arg = "-link" | arg = "-lk" 257 then do; 258 all_entries = "0"b; 259 cdo.link = "1"b; 260 end; 261 else if arg = "-sm" | arg = "-segment" 262 then do; 263 all_entries = "0"b; 264 cdo.seg = "1"b; 265 end; 266 else if arg = "-dr" | arg = "-directory" 267 then do; 268 all_entries = "0"b; 269 cdo.dir = "1"b; 270 end; 271 else if arg = "-branch" | arg = "-br" 272 then do; 273 all_entries = "0"b; 274 cdo.seg = "1"b; 275 cdo.msf = "1"b; 276 cdo.dir = "1"b; 277 end; 278 else if arg = "-file" | arg = "-f" 279 then do; 280 all_entries = "0"b; 281 cdo.seg = "1"b; 282 cdo.msf = "1"b; 283 end; 284 else if arg = "-msf" | arg = "-multisegment_file" 285 then do; 286 all_entries = "0"b; 287 cdo.msf = "1"b; 288 end; 289 else if arg = "-non_null_link" | arg = "-nnlk" 290 then do; 291 all_entries = "0"b; 292 cdo.nnlk = "1"b; 293 end; 294 else do; 295 call com_err_ (error_table_$badopt, whoami, "^a", arg); 296 goto finish; 297 end; 298 end; 299 300 /* check argument compatibility. */ 301 302 if (cdo.nnlk & cdo.link) 303 then do; 304 arg1 = "-non_null_link"; 305 arg2 = "-link"; 306 incompatarg: 307 call com_err_ (error_table_$inconsistent, whoami, "Incompatible arguments ^a and ^a", arg1, arg2); 308 goto finish; 309 end; 310 if (cdo.replace & cdo.update) 311 then do; 312 arg1 = "-replace"; 313 arg2 = "-update"; 314 goto incompatarg; 315 end; 316 if (cdo.chase & ^(cdo.link | all_entries)) 317 then do; 318 arg1 = "-chase"; 319 arg2 = "not -link"; 320 goto incompatarg; 321 end; 322 if ^have_target 323 then do; 324 td_name = wd; 325 entry_temp = "=="; 326 end; 327 if all_entries 328 then cdo.link, cdo.seg, cdo.dir, cdo.msf = "1"b; 329 330 331 /* if source_dir is a star name, decode it and set up for using 332* multiple source entries. Otherwise, set up for using a single 333* source entry. */ 334 335 if multiple_sources 336 then do; 337 338 call hcs_$star_ (sd_name, se_name, star_BRANCHES_ONLY, area_ptr, star_entry_count, star_entry_ptr, 339 star_names_ptr, code); 340 if code ^= 0 341 then do; 342 call com_err_ (code, whoami, "Could not get matching names for ^a^[>^]^a.", sd_name, 343 sd_name ^= ">", se_name); 344 goto finish; 345 end; 346 entry_count = star_entry_count; 347 end; 348 349 /* begin the loop through all of the source entries. */ 350 351 do entry_index = 1 to entry_count; 352 if multiple_sources 353 then if star_entries (entry_index).type = star_DIRECTORY 354 /* check that arg 1 is a directory. */ 355 then se_name = star_names (star_entries (entry_index).nindex); 356 else goto NEXT_ENTRY; 357 358 call get_equal_name_ (se_name, entry_temp, te_name, code); 359 call copy_dir_ (whoami, sd_name, se_name, td_name, te_name, addr (cdo), code); 360 361 /* errors messages are taken care of by copy_dir_, if -brief was used, the "trivial" errors 362* aren't reported anywhere. 363**/ 364 NEXT_ENTRY: 365 end; 366 finish: 367 if star_names_ptr ^= null () 368 then free star_names in (area); 369 if star_entry_ptr ^= null () 370 then free star_entries in (area); 371 372 return; 373 374 /* Include */ 375 1 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 1 2 1 3 /* This include file contains structures for the hcs_$star_, 1 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 1 5* 1 6* Written 23 October 1978 by Monte Davidoff. 1 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 1 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 1 9**/ 1 10 1 11 /* automatic */ 1 12 1 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 1 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 1 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 1 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 1 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 1 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 1 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 1 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 1 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 1 22 1 23 /* based */ 1 24 1 25 /* hcs_$star_ entry structure */ 1 26 1 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 1 28 2 type fixed binary (2) unsigned unaligned, 1 29 /* storage system type */ 1 30 2 nnames fixed binary (16) unsigned unaligned, 1 31 /* number of names of entry that match star_name */ 1 32 2 nindex fixed binary (18) unsigned unaligned; 1 33 /* index of first name in star_names */ 1 34 1 35 /* hcs_$star_ name structure */ 1 36 1 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 1 38 1 39 /* hcs_$star_list_ branch structure */ 1 40 1 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 42 2 type fixed binary (2) unsigned unaligned, 1 43 /* storage system type */ 1 44 2 nnames fixed binary (16) unsigned unaligned, 1 45 /* number of names of entry that match star_name */ 1 46 2 nindex fixed binary (18) unsigned unaligned, 1 47 /* index of first name in star_list_names */ 1 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 1 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 1 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 53 2 pad bit (7) unaligned, 1 54 2 records fixed binary (18) unsigned unaligned; 1 55 /* records used by branch */ 1 56 1 57 /* hcs_$star_dir_list_ branch structure */ 1 58 1 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 60 2 type fixed binary (2) unsigned unaligned, 1 61 /* storage system type */ 1 62 2 nnames fixed binary (16) unsigned unaligned, 1 63 /* number of names of entry that match star_name */ 1 64 2 nindex fixed binary (18) unsigned unaligned, 1 65 /* index of first name in star_list_names */ 1 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 1 67 2 pad bit (36) unaligned, 1 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 1 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 1 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 1 71 2 bit_count fixed binary (24) unaligned; 1 72 /* bit count of the branch */ 1 73 1 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 1 75 1 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 1 77 2 type fixed binary (2) unsigned unaligned, 1 78 /* storage system type */ 1 79 2 nnames fixed binary (16) unsigned unaligned, 1 80 /* number of names of entry that match star_name */ 1 81 2 nindex fixed binary (18) unsigned unaligned, 1 82 /* index of first name in star_list_names */ 1 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 1 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 1 85 2 pathname_len fixed binary (18) unsigned unaligned, 1 86 /* length of the pathname of the link */ 1 87 2 pathname_index fixed binary (18) unsigned unaligned; 1 88 /* index of start of pathname in star_list_names */ 1 89 1 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 1 91 1 92 declare star_list_names char (32) based (star_list_names_ptr) 1 93 dimension (star_links (star_branch_count + star_link_count).nindex 1 94 + star_links (star_branch_count + star_link_count).nnames 1 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 1 96 * binary ( 1 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 1 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 1 99 1 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 1 101 1 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 1 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 1 104 1 105 /* internal static */ 1 106 1 107 /* star_select_sw values */ 1 108 1 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 1 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 1 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 1 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 1 113 fixed binary (3) internal static options (constant) initial (5); 1 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 1 115 fixed binary (3) internal static options (constant) initial (7); 1 116 1 117 /* storage system types */ 1 118 1 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 1 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 1 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 1 122 1 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 376 377 2 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 2 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 2 3 /* version number changed to 4, 08/10/78 WOS */ 2 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 2 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 2 6 2 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 2 8 2 version fixed bin, /* version of this structure - must be set, see below */ 2 9 2 switches aligned, /* various bit switch values */ 2 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 2 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 2 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 2 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 2 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 2 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 2 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 2 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 2 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 2 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 2 20 2 21 /* Limit of data defined for version 2 */ 2 22 2 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 2 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 2 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 2 26 /* minimum of 30 seconds required for repeat */ 2 27 /* otherwise, no repeat will occur */ 2 28 /* Limit of data defined for version 4 */ 2 29 2 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 2 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 2 32 2 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 2 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 2 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 2 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 2 37 2 38 /* END INCLUDE FILE query_info.incl.pl1 */ 378 379 3 1 /* START OF: copy_dir_options.incl.pl1 * * * * * * * * * * * * * * * * * * * * * */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* This include file is used with the copy_dir_ subroutine to control the */ 3 6 /* type of entries copied or moved, and to control the operation of the subroutine. */ 3 7 /* Status: */ 3 8 /* */ 3 9 /* 0) Created: 11/14/80 by GA Texada */ 3 10 /* 1) Modified: 09/25/84 by B. Braun to add the parent_ac_sw. */ 3 11 /* */ 3 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 13 3 14 dcl 1 copy_dir_options aligned based(pcopy_dir_options), 3 15 2 version fixed bin, /* version of this structure, see below */ 3 16 2 entry_control aligned, /* these switches control what type of storage */ 3 17 /* system entries in the subtree are copied/moved */ 3 18 3 link bit(1) unal, /* copy links */ 3 19 3 seg bit(1) unal, /* copy segments */ 3 20 3 dir bit(1) unal, /* copy directories */ 3 21 3 msf bit(1) unal, /* copy multisegment_files */ 3 22 3 nnlk bit(1) unal, /* copy non_null_links */ 3 23 3 raw bit (1) unal, /* treat all objects as primitive types */ 3 24 3 pad1 bit(30) unal, /* mbz */ 3 25 2 operation_control aligned, /* the following switches control appropriate */ 3 26 /* portions of the subroutines execution */ 3 27 3 delete bit(1) unal, /* delete the source_dir */ 3 28 3 brief bit(1) unal, /* suppresses warning messages */ 3 29 3 force bit(1) unal, /* if target dir exists, do anyway without query */ 3 30 3 replace bit(1) unal, /* delete contents of target_dir (if any) */ 3 31 3 update bit(1) unal, /* update name dups without query */ 3 32 3 acl bit(1) unal, /* copy acl from source_dir */ 3 33 3 primary bit(1) unal, /* copy only primary names */ 3 34 3 link_translation bit(1) unal, /* copies links with translation */ 3 35 3 chase bit(1) unal, /* copies the target of a link */ 3 36 3 parent_ac_sw bit(1) unal, /* if on, use the target parent's access class */ 3 37 /* for seg or dir created */ 3 38 3 pad2 bit(26) unal; /* mbz */ 3 39 3 40 dcl copy_dir_options_version_0 fixed bin init(0) 3 41 int static options(constant); 3 42 3 43 dcl pcopy_dir_options ptr; 3 44 3 45 /* END OF: copy_dir_options.incl.pl1 * * * * * * * * * * * * * * * * * * * * * */ 380 381 382 declare 1 cdo aligned like copy_dir_options; 383 384 end copy_dir; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/08/85 1003.3 copy_dir.pl1 >spec>on>maggie_fixes>copy_dir.pl1 376 1 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 378 2 03/11/83 1204.3 query_info_.incl.pl1 >ldd>include>query_info.incl.pl1 380 3 10/04/84 1320.9 copy_dir_options.incl.pl1 >ldd>include>copy_dir_options.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 103 ref 359 359 all_entries 000111 automatic bit(1) unaligned dcl 64 set ref 137* 258* 263* 268* 273* 280* 286* 291* 316 327 all_names 000112 automatic bit(1) unaligned dcl 64 set ref 136* answer_iocbp 6 000414 automatic pointer initial level 2 dcl 2-7 set ref 2-7* area based area(1024) dcl 57 ref 127 129 366 369 area_ptr 000376 automatic pointer dcl 87 set ref 123* 127 129 338* 366 369 arg based char unaligned dcl 56 set ref 188 191* 194* 218* 221* 232 232 234 234 236 236 238 240 240 242 242 244 246 246 248 248 251 251 256 256 261 261 266 266 271 271 278 278 284 284 289 289 295* arg1 000354 automatic varying char(32) dcl 86 set ref 304* 306* 312* 318* arg2 000365 automatic varying char(32) dcl 86 set ref 305* 306* 313* 319* arg_len 000125 automatic fixed bin(21,0) dcl 80 set ref 181* 188 191 191 194 194 218 218 221 221 232 232 234 234 236 236 238 240 240 242 242 244 246 246 248 248 251 251 256 256 261 261 266 266 271 271 278 278 284 284 289 289 295 295 arg_ptr 000400 automatic pointer dcl 87 set ref 181* 188 191 194 218 221 232 232 234 234 236 236 238 240 240 242 242 244 246 246 248 248 251 251 256 256 261 261 266 266 271 271 278 278 284 284 289 289 295 argno 000121 automatic fixed bin(17,0) dcl 74 set ref 180* 181* 184* cdo 000431 automatic structure level 1 dcl 382 set ref 359 359 check_star_name_$entry 000010 constant entry external dcl 36 ref 198 cleanup 000100 stack reference condition dcl 52 ref 125 code 000110 automatic fixed bin(35,0) dcl 62 set ref 165* 166 168* 181* 182 184* 191* 192 194* 198* 199 204 204 207* 218* 219 221* 338* 340 342* 358* 359* com_err_ 000012 constant entry external dcl 37 ref 168 184 194 207 221 228 295 306 342 com_err_$suppress_name 000014 constant entry external dcl 38 ref 173 copy_dir_ 000016 constant entry external dcl 39 ref 359 copy_dir_options based structure level 1 dcl 3-14 copy_dir_options_version_0 constant fixed bin(17,0) initial dcl 3-40 ref 141 cp_escape_control 1(02) 000414 automatic bit(2) initial level 3 packed unaligned dcl 2-7 set ref 2-7* cu_$arg_count 000020 constant entry external dcl 41 ref 165 cu_$arg_ptr 000022 constant entry external dcl 42 ref 181 entry_count 000122 automatic fixed bin(17,0) dcl 74 set ref 201* 346* 351 entry_index 000123 automatic fixed bin(17,0) dcl 74 set ref 351* 352 352* entry_temp 000324 automatic char(32) unaligned dcl 84 set ref 218* 325* 358* error_table_$badopt 000036 external static fixed bin(35,0) dcl 94 set ref 228* 295* error_table_$inconsistent 000040 external static fixed bin(35,0) dcl 94 set ref 306* errors 000113 automatic bit(1) unaligned dcl 64 set ref 138* expand_pathname_ 000024 constant entry external dcl 43 ref 191 218 explanation_len 14 000414 automatic fixed bin(21,0) initial level 2 dcl 2-7 set ref 2-7* explanation_ptr 12 000414 automatic pointer initial level 2 dcl 2-7 set ref 2-7* get_equal_name_ 000026 constant entry external dcl 44 ref 358 get_system_free_area_ 000030 constant entry external dcl 45 ref 123 get_wdir_ 000032 constant entry external dcl 46 ref 133 have_source 000114 automatic bit(1) unaligned dcl 64 set ref 134* 188 210* have_target 000115 automatic bit(1) unaligned dcl 64 set ref 135* 215 225* 322 hcs_$star_ 000034 constant entry external dcl 47 ref 338 literal_sw 1(05) 000414 automatic bit(1) initial level 3 packed unaligned dcl 2-7 set ref 2-7* move 000120 automatic bit(1) unaligned dcl 64 set ref 108* 116* 158 236 multiple_sources 000117 automatic bit(1) unaligned dcl 64 set ref 202* 204* 335 352 nargs 000124 automatic fixed bin(17,0) dcl 74 set ref 165* 171 180 nindex 0(18) based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 1-27 ref 352 nnames 0(02) based fixed bin(16,0) array level 2 packed unsigned unaligned dcl 1-27 ref 127 366 null builtin function dcl 103 ref 124 366 369 2-7 2-7 2-7 127 129 padding 1(07) 000414 automatic bit(29) initial level 3 packed unaligned dcl 2-7 set ref 2-7* prompt_after_explanation 1(06) 000414 automatic bit(1) initial level 3 packed unaligned dcl 2-7 set ref 2-7* query_code 3 000414 automatic fixed bin(35,0) initial level 2 dcl 2-7 set ref 2-7* query_info 000414 automatic structure level 1 dcl 2-7 question_iocbp 4 000414 automatic pointer initial level 2 dcl 2-7 set ref 2-7* repeat_time 10 000414 automatic fixed bin(71,0) initial level 2 dcl 2-7 set ref 2-7* same_dir 000116 automatic bit(1) unaligned dcl 64 set ref 139* sd_name 000126 automatic char(168) unaligned dcl 83 set ref 191* 338* 342* 342 359* se_name 000334 automatic char(32) unaligned dcl 84 set ref 191* 198* 207* 338* 342* 352* 358* 359* star_BRANCHES_ONLY 000022 constant fixed bin(2,0) initial dcl 1-110 set ref 122 338* star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 1-121 ref 352 star_branch_count 000402 automatic fixed bin(17,0) dcl 1-13 set ref 120* star_entries based structure array level 1 dcl 1-27 ref 129 369 star_entry_count 000403 automatic fixed bin(17,0) dcl 1-14 set ref 127 129 338* 346 366 369 star_entry_ptr 000404 automatic pointer dcl 1-15 set ref 124* 127 129 129 338* 352 352 366 369 369 star_link_count 000406 automatic fixed bin(17,0) dcl 1-17 set ref 120* star_names based char(32) array unaligned dcl 1-37 ref 127 352 366 star_names_ptr 000410 automatic pointer dcl 1-19 set ref 124* 127 127 338* 352 366 366 star_select_sw 000412 automatic fixed bin(3,0) dcl 1-21 set ref 122* status_code 2 000414 automatic fixed bin(35,0) initial level 2 dcl 2-7 set ref 2-7* substr builtin function dcl 103 ref 188 sum builtin function dcl 103 ref 127 366 suppress_name_sw 1(01) 000414 automatic bit(1) initial level 3 packed unaligned dcl 2-7 set ref 2-7* suppress_spacing 1(04) 000414 automatic bit(1) initial level 3 packed unaligned dcl 2-7 set ref 2-7* switches 1 000414 automatic structure level 2 dcl 2-7 td_name 000200 automatic char(168) unaligned dcl 83 set ref 218* 324* 359* te_name 000344 automatic char(32) unaligned dcl 84 set ref 358* 359* type based fixed bin(2,0) array level 2 packed unsigned unaligned dcl 1-27 ref 352 wd 000252 automatic char(168) unaligned dcl 83 set ref 133* 324 whoami 000106 automatic char(8) unaligned dcl 61 set ref 107* 115* 168* 173* 173* 184* 194* 207* 221* 228* 295* 306* 342* 359* yes_or_no_sw 1 000414 automatic bit(1) initial level 3 packed unaligned dcl 2-7 set ref 2-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. binary builtin function dcl 103 error_table_$no_s_permission external static fixed bin(35,0) dcl 94 error_table_$notadir external static fixed bin(35,0) dcl 94 pcopy_dir_options automatic pointer dcl 3-43 query_info_version_3 internal static fixed bin(17,0) initial dcl 2-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 2-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 2-35 query_info_version_6 internal static fixed bin(17,0) initial dcl 2-36 star_ALL_ENTRIES internal static fixed bin(2,0) initial dcl 1-111 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-114 star_LINK internal static fixed bin(2,0) initial unsigned dcl 1-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 1-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 1-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 1-120 star_dir_list_branch based structure array level 1 dcl 1-59 star_link_pathname based char unaligned dcl 1-102 star_links based structure array level 1 dcl 1-76 star_linkx automatic fixed bin(17,0) dcl 1-18 star_list_branch based structure array level 1 dcl 1-41 star_list_branch_ptr automatic pointer dcl 1-16 star_list_names based char(32) array unaligned dcl 1-92 star_list_names_ptr automatic pointer dcl 1-20 NAMES DECLARED BY EXPLICIT CONTEXT. NEXT_ENTRY 002133 constant label dcl 364 ref 352 START 000344 constant label dcl 120 ref 109 copy_dir 000307 constant entry external dcl 13 cpd 000277 constant entry external dcl 13 err 000741 constant label dcl 194 finish 002135 constant label dcl 366 ref 176 185 196 208 222 230 296 308 344 incompatarg 001563 constant label dcl 306 ref 314 320 move_dir 000332 constant entry external dcl 111 mvd 000322 constant entry external dcl 111 usage 000566 constant label dcl 173 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2424 2466 2216 2434 Length 2734 2216 42 231 206 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cpd 410 external procedure is an external procedure. on unit on line 125 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cpd 000106 whoami cpd 000110 code cpd 000111 all_entries cpd 000112 all_names cpd 000113 errors cpd 000114 have_source cpd 000115 have_target cpd 000116 same_dir cpd 000117 multiple_sources cpd 000120 move cpd 000121 argno cpd 000122 entry_count cpd 000123 entry_index cpd 000124 nargs cpd 000125 arg_len cpd 000126 sd_name cpd 000200 td_name cpd 000252 wd cpd 000324 entry_temp cpd 000334 se_name cpd 000344 te_name cpd 000354 arg1 cpd 000365 arg2 cpd 000376 area_ptr cpd 000400 arg_ptr cpd 000402 star_branch_count cpd 000403 star_entry_count cpd 000404 star_entry_ptr cpd 000406 star_link_count cpd 000410 star_names_ptr cpd 000412 star_select_sw cpd 000414 query_info cpd 000431 cdo cpd THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out return mpfx2 enable ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ com_err_$suppress_name copy_dir_ cu_$arg_count cu_$arg_ptr expand_pathname_ get_equal_name_ get_system_free_area_ get_wdir_ hcs_$star_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 7 000244 13 000276 107 000315 108 000317 109 000320 111 000321 115 000340 116 000342 120 000344 122 000346 123 000350 124 000357 125 000362 127 000376 129 000433 131 000442 133 000443 134 000452 135 000453 136 000454 137 000456 138 000457 139 000460 141 000461 142 000463 143 000465 144 000467 145 000471 146 000473 147 000475 148 000477 149 000501 150 000503 151 000505 152 000507 153 000511 154 000513 155 000514 156 000516 157 000520 158 000524 160 000531 165 000533 166 000544 168 000546 169 000563 171 000564 173 000566 176 000616 180 000617 181 000625 182 000642 184 000644 185 000677 188 000700 191 000707 192 000737 194 000741 196 000773 198 000774 199 001011 201 001013 202 001015 203 001016 204 001017 207 001026 208 001056 210 001057 211 001061 215 001062 218 001064 219 001114 221 001116 222 001150 225 001151 226 001153 228 001154 230 001200 231 001201 232 001202 234 001216 236 001231 238 001246 240 001256 242 001271 244 001304 246 001313 248 001326 251 001341 256 001354 258 001364 259 001365 260 001367 261 001370 263 001400 264 001401 265 001403 266 001404 268 001414 269 001415 270 001417 271 001420 273 001430 274 001431 275 001433 276 001435 277 001437 278 001440 280 001450 281 001451 282 001453 283 001455 284 001456 286 001466 287 001467 288 001471 289 001472 291 001502 292 001503 293 001505 295 001506 296 001540 298 001541 302 001543 304 001552 305 001557 306 001563 308 001616 310 001617 312 001623 313 001630 314 001634 316 001635 318 001644 319 001651 320 001656 322 001657 324 001661 325 001664 327 001667 335 001701 338 001703 340 001746 342 001750 344 002015 346 002016 351 002020 352 002027 358 002047 359 002072 364 002133 366 002135 369 002170 372 002176 ----------------------------------------------------------- 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