THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT create Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 03/15/89 0829.9 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1974 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 create: cr: proc; 12 13 14 /* Command completely re-written on 10/04/74 to add create_dir options for 15* compatibility with the Access Isolation Mechanism -- J. C. Whitmore */ 16 /* Modified 750122 by LJS to use new hcs_$create_branch_ and clean up error handling */ 17 /* Modified 751205 by LJS to use parent access class as default, make dir names starting with "-" invalid */ 18 /* Modified April 1976 by Larry Johnson to create master directories */ 19 /* Fix to reject "" and not print err after "no" to query 04/08/80 S. Herbst */ 20 /* Fixed to reject -foo, create_dir to set 7,7 brackets and accept -rb 06/30/82 S. Herbst */ 21 /* Changed to not create through links 07/28/82 S. Herbst */ 22 /* Fixed -name 12/21/83 S. Herbst */ 23 /* Rewrote again, added -msf and -max_length 01/11/84 S. Herbst */ 24 /* Changed to provide dir_quota for dirs, December 1984, Keith Loepere. */ 25 /* Modified 1985-01-02 by EJ Sharpe to add -account and -owner */ 26 /* Fixed -name to disallow white space or null arg 02/21/85 Steve Herbst */ 27 28 29 /* Constants */ 30 31 dcl SMA bit (3) unaligned internal static options (constant) init ("111"b); 32 dcl RW bit (3) unaligned internal static options (constant) init ("101"b); 33 34 35 /* Based */ 36 37 dcl arg char (arg_len) based (arg_ptr); 38 39 40 /* Automatic */ 41 42 dcl dn char (168); 43 dcl (ctl_arg_name, en, lv_name, type_name, whoami) char (32); 44 dcl (account, owner) char (32); 45 46 dcl access_class bit (72) aligned; 47 dcl (create_dir_sw, create_msf_sw) bit (1); 48 dcl (ac_specified_sw, lv_specified_sw, quota_specified_sw, dir_quota_specified_sw) bit (1); 49 dcl (acct_specified_sw, owner_specified_sw) bit (1); 50 51 dcl (alp, arg_ptr, fcb_ptr) ptr; 52 53 dcl rb (3) fixed bin; 54 dcl (arg_count, i) fixed bin; 55 dcl (quota, dir_quota) fixed bin (18); 56 dcl (msf_max_length, specified_max_length) fixed bin (19); 57 dcl arg_len fixed bin (21); 58 dcl code fixed bin (35); 59 60 61 /* External */ 62 63 dcl error_table_$action_not_performed fixed bin (35) ext; 64 dcl error_table_$bad_ring_brackets fixed bin (35) ext; 65 dcl error_table_$badopt fixed bin (35) ext; 66 dcl error_table_$invalid_ring_brackets fixed bin (35) ext; 67 dcl error_table_$namedup fixed bin (35) ext; 68 dcl error_table_$no_s_permission fixed bin (35) ext; 69 dcl error_table_$noarg fixed bin (35) ext; 70 dcl error_table_$noentry fixed bin (35) ext; 71 dcl error_table_$nostars fixed bin (35) ext; 72 dcl sys_info$max_seg_size fixed bin(35) ext static; 73 74 75 /* Entries */ 76 77 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 78 dcl (com_err_, com_err_$suppress_name) entry options (variable); 79 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 80 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 81 dcl cu_$arg_list_ptr entry (ptr); 82 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 83 dcl mdc_$create_dirx_acct entry (char (*), char (*), char (*), ptr, char (*), char (*), fixed bin (35)); 84 dcl cu_$level_get entry () returns (fixed bin); 85 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 86 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 87 dcl get_authorization_ entry returns (bit (72) aligned); 88 dcl get_group_id_$tag_star entry () returns (char (32)); 89 dcl get_wdir_ entry returns (char (168)); 90 dcl hcs_$create_branch_ entry (char (*), char (*), pointer, fixed bin (35)); 91 dcl hcs_$set_max_length entry (char(*), char(*), fixed bin(19), fixed bin(35)); 92 dcl hcs_$status_minf entry (char(*), char(*), fixed bin(1), fixed bin(2), fixed bin(24), fixed bin(35)); 93 dcl ioa_ entry options (variable); 94 dcl msf_manager_$close entry (ptr); 95 dcl msf_manager_$msf_get_ptr entry (ptr, fixed bin, bit(1), ptr, fixed bin(24), fixed bin(35)); 96 dcl msf_manager_$open entry (char(*), char(*), ptr, fixed bin(35)); 97 dcl nd_handler_ entry (char (*), char (*), char (*), fixed bin (35)); 98 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 99 100 101 /* Builtins */ 102 103 dcl (addr, mod, null, string, substr, verify) builtin; 104 105 106 /* Conditions */ 107 108 dcl cleanup condition; 109 1 1 /* BEGIN INCLUDE FILE - - - create_branch_info.incl.pl1 - - - created January 1975 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(89-01-16,TLNguyen), approve(89-01-16,MCR8049), 1 6* audit(89-02-03,Parisek), install(89-03-15,MR12.3-1025): 1 7* 1. Declare version constant properly. 1 8* 2. Remove version 1 since it was never referenced and to force 1 9* callers to upgrade their programs. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 /* Modified December 1984 for dir_quota, Keith Loepere. */ 1 14 1 15 /* this include files gives the argument structure for create_branch_ */ 1 16 1 17 dcl 1 create_branch_info aligned based, 1 18 2 version fixed bin, /* set this to the largest value given below */ 1 19 2 switches unaligned, 1 20 3 dir_sw bit (1) unaligned, /* if on, a directory branch is wanted */ 1 21 3 copy_sw bit (1) unaligned, /* if on, initiating segment will be done by copying */ 1 22 3 chase_sw bit (1) unaligned, /* if on, if pathname is a link, it will be chased */ 1 23 3 priv_upgrade_sw bit (1) unaligned, /* privileged creation (ring 1) of upgraded object */ 1 24 3 parent_ac_sw bit (1) unaligned, /* if on, use parent's access class for seg or dir created */ 1 25 3 mbz1 bit (31) unaligned, /* pad to full word */ 1 26 2 mode bit (3) unaligned, /* segment or directory for acl for userid */ 1 27 2 mbz2 bit (33) unaligned, /* pad to full word */ 1 28 2 rings (3) fixed bin (3), /* branch's ring brackets */ 1 29 2 userid char (32), /* user's access control name */ 1 30 2 bitcnt fixed bin (24), /* bit count of the segment */ 1 31 2 quota fixed bin (18), /* for directories, this am't of quota will be moved to it */ 1 32 2 access_class bit (72), /* is the access class of the body of the branch */ 1 33 2 dir_quota fixed bin (18); /* for directories, this am't of dir quota will be moved to it */ 1 34 1 35 dcl create_branch_version_2 fixed bin int static options (constant) init (2); 1 36 1 37 /* END INCLUDE FILE - - - create_branch_info.incl.pl1 - - - */ 1 38 110 111 112 dcl 1 branch_template aligned like create_branch_info; 113 114 dcl WHITE_SPACE char (4) aligned int static options (constant) init (/* NL HT SP FF */ " 115 "); 116 117 whoami = "create"; 118 create_dir_sw = "0"b; 119 go to CHECK_ARGS; 120 121 122 123 create_dir: createdir: cd: entry; 124 125 whoami = "create_dir"; 126 create_dir_sw = "1"b; 127 128 CHECK_ARGS: 129 access_class = get_authorization_ (); 130 131 call cu_$arg_count (arg_count, code); 132 if code ^= 0 then do; 133 call com_err_ (code, whoami); 134 return; 135 end; 136 if arg_count = 0 then do; 137 USAGE: call com_err_$suppress_name (0, whoami, "Usage: ^a paths {-control_args}", whoami); 138 return; 139 end; 140 141 call cu_$arg_list_ptr (alp); 142 143 create_msf_sw = "0"b; 144 ac_specified_sw, lv_specified_sw, quota_specified_sw, dir_quota_specified_sw = "0"b; 145 acct_specified_sw, owner_specified_sw = "0"b; 146 msf_max_length = 0; /* can be changed by -max_length */ 147 quota, dir_quota = 0; 148 149 if create_dir_sw then rb (1), rb (2), rb (3) = 7; /* default for dirs */ 150 else rb (1), rb (2), rb (3) = cu_$level_get (); /* for segments */ 151 account = ""; /* defaults to user's proccess group id */ 152 owner = ""; /* defaults to user's proccess group id */ 153 154 begin; 155 156 dcl name_sw (arg_count) bit (1) unaligned; 157 dcl path_sw (arg_count) bit (1) unaligned; 158 159 string (name_sw) = "0"b; 160 string (path_sw) = "0"b; 161 162 do i = 1 to arg_count; 163 164 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 165 if code ^= 0 then do; 166 call com_err_ (code, whoami); 167 return; 168 end; 169 170 /* Control args only for create_dir */ 171 172 if arg = "-access_class" | arg = "-acc" then do; 173 if ^create_dir_sw then go to BAD_CTL_ARG; 174 ctl_arg_name = "-access_class"; /* save arg name in case error printed */ 175 i = i + 1; 176 if i > arg_count then do; 177 MISSING_VALUE: call com_err_ (0, whoami, "No value specified for ^a", ctl_arg_name); 178 return; 179 end; 180 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 181 call convert_authorization_$from_string (access_class, arg, code); 182 if code ^= 0 then do; /* all errors are fatal */ 183 call com_err_ (code, whoami, arg); 184 return; 185 end; 186 ac_specified_sw = "1"b; 187 end; 188 189 else if arg = "-logical_volume" | arg = "-lv" then do; 190 if ^create_dir_sw then go to BAD_CTL_ARG; 191 ctl_arg_name = "-logical_volume"; 192 i = i + 1; 193 if i > arg_count then go to MISSING_VALUE; 194 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 195 lv_specified_sw = "1"b; 196 lv_name = arg; 197 end; 198 199 else if arg = "-quota" then do; 200 if ^create_dir_sw then go to BAD_CTL_ARG; 201 ctl_arg_name = "-quota"; 202 i = i + 1; 203 if i > arg_count then go to MISSING_VALUE; 204 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 205 quota = cv_dec_check_ (arg, code); 206 if code ^= 0 then do; 207 BAD_VALUE: call com_err_ (code, whoami, "Cannot convert ^a value ^a", ctl_arg_name, arg); 208 return; 209 end; 210 quota_specified_sw = "1"b; 211 end; 212 213 else if arg = "-dir_quota" then do; 214 if ^create_dir_sw then go to BAD_CTL_ARG; 215 ctl_arg_name = "-dir_quota"; 216 i = i + 1; 217 if i > arg_count then go to MISSING_VALUE; 218 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 219 dir_quota = cv_dec_check_ (arg, code); 220 if code ^= 0 then go to BAD_VALUE; 221 dir_quota_specified_sw = "1"b; 222 end; 223 224 else if arg = "-account" | arg = "-acct" then do; 225 if ^create_dir_sw then go to BAD_CTL_ARG; 226 ctl_arg_name = "-account"; 227 i = i + 1; 228 if i > arg_count then go to MISSING_VALUE; 229 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 230 account = arg; 231 acct_specified_sw = "1"b; 232 end; 233 234 else if arg = "-owner" | arg = "-ow" then do; 235 if ^create_dir_sw then go to BAD_CTL_ARG; 236 ctl_arg_name = "-owner"; 237 i = i + 1; 238 if i > arg_count then go to MISSING_VALUE; 239 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 240 owner = arg; 241 owner_specified_sw = "1"b; 242 end; 243 244 /* Control args only for create */ 245 246 else if arg = "-max_length" | arg = "-ml" then do; 247 if create_dir_sw then go to BAD_CTL_ARG; 248 ctl_arg_name = "-max_length"; 249 i = i + 1; 250 if i > arg_count then go to MISSING_VALUE; 251 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 252 msf_max_length = cv_dec_check_ (arg, code); 253 if code ^= 0 then go to BAD_VALUE; 254 if msf_max_length <= 0 then go to BAD_VALUE; 255 end; 256 257 else if arg = "-multisegment_file" | arg = "-msf" then do; 258 if create_dir_sw then go to BAD_CTL_ARG; 259 create_msf_sw = "1"b; 260 end; 261 262 else if arg = "-segment" | arg = "-sm" then do; 263 if create_dir_sw then go to BAD_CTL_ARG; 264 create_msf_sw = "0"b; 265 end; 266 267 /* Control args for both commands */ 268 269 else if arg = "-name" | arg = "-nm" then do; 270 ctl_arg_name = "-name"; 271 i = i + 1; 272 if i > arg_count then go to MISSING_VALUE; 273 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 274 if verify (arg, WHITE_SPACE) = 0 then do; 275 call com_err_ (0, whoami, "Invalid name ""^a""", arg); 276 return; 277 end; 278 path_sw (i), name_sw (i) = "1"b; 279 end; 280 281 else if arg = "-ring_brackets" | arg = "-rb" then do; 282 ctl_arg_name = "-ring_brackets"; 283 i = i + 1; 284 if i > arg_count then go to MISSING_VALUE; 285 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 286 rb (1) = cv_dec_check_ (arg, code); 287 if code ^= 0 then go to BAD_VALUE; 288 if i < arg_count then do; 289 call cu_$arg_ptr_rel (i + 1, arg_ptr, arg_len, code, alp); 290 rb (2) = cv_dec_check_ (arg, code); 291 if code = 0 then do; 292 i = i + 1; 293 if i < arg_count & ^create_dir_sw then do; 294 call cu_$arg_ptr_rel (i + 1, arg_ptr, arg_len, code, alp); 295 rb (3) = cv_dec_check_ (arg, code); 296 if code = 0 then i = i + 1; 297 else rb (3) = rb (2); 298 end; 299 else rb (3) = rb (2); 300 end; 301 else rb (2), rb (3) = rb (1); 302 end; 303 else rb (2), rb (3) = rb (1); 304 end; 305 306 else if substr (arg, 1, 1) = "-" then do; 307 BAD_CTL_ARG: call com_err_ (error_table_$badopt, whoami, arg); 308 return; 309 end; 310 311 else do; 312 if verify (arg, WHITE_SPACE) = 0 then do; /* blank arg */ 313 call com_err_ (0, whoami, "Invalid name ""^a""", arg); 314 return; 315 end; 316 path_sw (i) = "1"b; 317 end; 318 end; 319 320 if string (path_sw) = "0"b then go to USAGE; 321 322 if msf_max_length ^= 0 & ^create_msf_sw then do; 323 call com_err_ (0, whoami, "-max_length can only be specified with -msf."); 324 return; 325 end; 326 327 if msf_max_length > sys_info$max_seg_size then do; 328 call ioa_ ("^a: Max length ^d greater than limit of ^d; using ^d for max length.", 329 whoami, msf_max_length, sys_info$max_seg_size, sys_info$max_seg_size); 330 msf_max_length = sys_info$max_seg_size; 331 end; 332 if mod (msf_max_length, 1024) ^= 0 then do; 333 specified_max_length = msf_max_length; 334 msf_max_length = msf_max_length - mod (msf_max_length, 1024) + 1024; 335 call ioa_ ("^a: ^d is not a multiple of 1024; ^d will be used for max length.", 336 whoami, specified_max_length, msf_max_length); 337 end; 338 339 if ^quota_specified_sw & (lv_specified_sw | ac_specified_sw) then do; /* special directories need quota */ 340 if lv_specified_sw & ac_specified_sw then type_name = "upgraded master"; 341 else if lv_specified_sw then type_name = "master"; 342 else type_name = "upgraded"; 343 call com_err_ (error_table_$noarg, whoami, "-quota needed to create ^a directory.", type_name); 344 return; 345 end; 346 347 if (acct_specified_sw | owner_specified_sw) & ^lv_specified_sw then do; 348 call com_err_ (error_table_$noarg, whoami, 349 "^[-account^]^[ and ^]^[-owner^] may only be specified when using -logical_volume to create a master directory.", 350 acct_specified_sw, (acct_specified_sw & owner_specified_sw), owner_specified_sw); 351 return; 352 end; 353 354 /* - - - - This is where the real work starts - - - - */ 355 356 /* Fill in structure that gets passed to hcs_$create_branch_ */ 357 358 branch_template.version = create_branch_version_2; /* Fill in version constant defined 359* in include file */ 360 branch_template.switches.dir_sw = create_dir_sw; 361 branch_template.switches.copy_sw = "0"b; 362 branch_template.switches.priv_upgrade_sw = "0"b; 363 branch_template.switches.mbz1 = (31)"0"b; 364 if create_dir_sw then branch_template.mode = SMA; 365 else branch_template.mode = RW; 366 branch_template.mbz2 = (33)"0"b; 367 do i = 1 to 3; 368 branch_template.rings (i) = rb (i); 369 end; 370 branch_template.userid = get_group_id_$tag_star (); 371 branch_template.bitcnt = 0; 372 branch_template.quota = quota; 373 branch_template.dir_quota = dir_quota; 374 branch_template.chase_sw = "0"b; 375 376 do i = 1 to arg_count; 377 378 if ^path_sw (i) then go to END_LOOP; /* skip over control args */ 379 380 call cu_$arg_ptr_rel (i, arg_ptr, arg_len, code, alp); 381 if code ^= 0 then do; 382 call com_err_ (code, whoami, "Arg: ^d", i); 383 return; 384 end; 385 386 if name_sw (i) then do; 387 dn = get_wdir_ (); 388 en = arg; 389 end; 390 else do; 391 call expand_pathname_ (arg, dn, en, code); 392 if code ^= 0 then do; 393 call com_err_ (code, whoami, arg); 394 go to END_LOOP; 395 end; 396 397 call check_star_name_$entry (en, code); 398 if code ^= 0 then do; 399 if code < 3 then code = error_table_$nostars; /* star convention not allowed */ 400 go to COMPLAIN; 401 end; 402 end; 403 404 branch_template.parent_ac_sw = ^ac_specified_sw; 405 branch_template.access_class = access_class; 406 407 TRY_AGAIN: 408 if lv_specified_sw then 409 call mdc_$create_dirx_acct (dn, en, lv_name, addr (branch_template), account, owner, code); 410 411 else if create_msf_sw then code = create_msf (); 412 413 else call hcs_$create_branch_ (dn, en, addr (branch_template), code); 414 415 if code ^= 0 then 416 if code = error_table_$namedup then do; 417 418 call nd_handler_ (whoami, dn, en, code); 419 if code = 0 then go to TRY_AGAIN; /* user deleted it */ 420 if code > 1 & code ^= error_table_$action_not_performed then 421 COMPLAIN: call com_err_ (code, whoami, "^a^[^/^-Specified ring brackets: ^d,^d,^d^]", 422 pathname_ (dn, en), 423 code = error_table_$bad_ring_brackets | code = error_table_$invalid_ring_brackets, 424 rb (1), rb (2), rb (3)); 425 go to END_LOOP; 426 end; 427 else go to COMPLAIN; 428 429 END_LOOP: end; 430 431 end; /* begin block */ 432 433 return; 434 435 create_msf: proc returns (fixed bin (35)); 436 437 /* Creates an MSF with pathname dn>en, returns the status code */ 438 439 dcl code fixed bin (35); 440 441 call hcs_$status_minf (dn, en, 0, 0, 0, code); 442 if code = 0 | code = error_table_$no_s_permission then return (error_table_$namedup); 443 else if code ^= error_table_$noentry then return (code); 444 445 fcb_ptr = null; 446 447 on cleanup begin; 448 if fcb_ptr ^= null then call msf_manager_$close (fcb_ptr); 449 end; 450 451 call msf_manager_$open (dn, en, fcb_ptr, code); 452 if fcb_ptr = null then return (code); 453 454 call msf_manager_$msf_get_ptr (fcb_ptr, 0, "1"b, null, 0, code); /* creates the MSF */ 455 456 call msf_manager_$close (fcb_ptr); 457 458 if msf_max_length ^= 0 then do; 459 call hcs_$set_max_length (pathname_ (dn, en), "0", msf_max_length, code); 460 if code ^= 0 then 461 call com_err_ (code, whoami, "Could not set max length of ^a>0", pathname_ (dn, en)); 462 end; 463 464 return (code); 465 466 end create_msf; 467 468 469 end create; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/15/89 0800.5 create.pl1 >special_ldd>install>MR12.3-1025>create.pl1 110 1 03/15/89 0759.4 create_branch_info.incl.pl1 >special_ldd>install>MR12.3-1025>create_branch_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. RW constant bit(3) initial packed unaligned dcl 32 ref 365 SMA constant bit(3) initial packed unaligned dcl 31 ref 364 WHITE_SPACE 000000 constant char(4) initial dcl 114 ref 274 312 ac_specified_sw 000246 automatic bit(1) packed unaligned dcl 48 set ref 144* 186* 339 340 404 access_class 20 000275 automatic bit(72) level 2 in structure "branch_template" dcl 112 in procedure "cr" set ref 405* access_class 000242 automatic bit(72) dcl 46 in procedure "cr" set ref 128* 181* 405 account 000222 automatic char(32) packed unaligned dcl 44 set ref 151* 230* 407* acct_specified_sw 000252 automatic bit(1) packed unaligned dcl 49 set ref 145* 231* 347 348* 348 addr builtin function dcl 103 ref 407 407 413 413 alp 000254 automatic pointer dcl 51 set ref 141* 164* 180* 194* 204* 218* 229* 239* 251* 273* 285* 289* 294* 380* arg based char packed unaligned dcl 37 set ref 172 172 181* 183* 189 189 196 199 205* 207* 213 219* 224 224 230 234 234 240 246 246 252* 257 257 262 262 269 269 274 275* 281 281 286* 290* 295* 306 307* 312 313* 388 391* 393* arg_count 000265 automatic fixed bin(17,0) dcl 54 set ref 131* 136 156 157 162 176 193 203 217 228 238 250 272 284 288 293 376 arg_len 000273 automatic fixed bin(21,0) dcl 57 set ref 164* 172 172 180* 181 181 183 183 189 189 194* 196 199 204* 205 205 207 207 213 218* 219 219 224 224 229* 230 234 234 239* 240 246 246 251* 252 252 257 257 262 262 269 269 273* 274 275 275 281 281 285* 286 286 289* 290 290 294* 295 295 306 307 307 312 313 313 380* 388 391 391 393 393 arg_ptr 000256 automatic pointer dcl 51 set ref 164* 172 172 180* 181 183 189 189 194* 196 199 204* 205 207 213 218* 219 224 224 229* 230 234 234 239* 240 246 246 251* 252 257 257 262 262 269 269 273* 274 275 281 281 285* 286 289* 290 294* 295 306 307 312 313 380* 388 391 393 bitcnt 16 000275 automatic fixed bin(24,0) level 2 dcl 112 set ref 371* branch_template 000275 automatic structure level 1 dcl 112 set ref 407 407 413 413 chase_sw 1(02) 000275 automatic bit(1) level 3 packed packed unaligned dcl 112 set ref 374* check_star_name_$entry 000034 constant entry external dcl 77 ref 397 cleanup 000000 stack reference condition dcl 108 ref 447 code 000100 automatic fixed bin(35,0) dcl 439 in procedure "create_msf" set ref 441* 442 442 443 443 451* 452 454* 459* 460 460* 464 code 000274 automatic fixed bin(35,0) dcl 58 in procedure "cr" set ref 131* 132 133* 164* 165 166* 180* 181* 182 183* 194* 204* 205* 206 207* 218* 219* 220 229* 239* 251* 252* 253 273* 285* 286* 287 289* 290* 291 294* 295* 296 380* 381 382* 391* 392 393* 397* 398 399 399* 407* 411* bPalter  Ĭ( Palter Multics RDomstad @ &4^ Domstad tracey OperDevel KB:ZK%rTnoneVIP7400_DTR n(35,0) dcl 68 ref 442 error_table_$noarg 000024 external static fixed bin(35,0) dcl 69 set ref 343* 348* error_table_$noentry 000026 external static fixed bin(35,0) dcl 70 ref 443 error_table_$nostars 000030 external static fixed bin(35,0) dcl 71 ref 399 expand_pathname_ 000060 constant entry external dcl 86 ref 391 fcb_ptr 000260 automatic pointer dcl 51 set ref 445* 448 448* 451* 452 454* 456* get_authorization_ 000062 constant entry external dcl 87 ref 128 get_group_id_$tag_star 000064 constant entry external dcl 88 ref 370 get_wdir_ 000066 constant entry external dcl 89 ref 387 hcs_$create_branch_ 000070 constant entry external dcl 90 ref 413 hcs_$set_max_length 000072 constant entry external dcl 91 ref 459 hcs_$status_minf 000074 constant entry external dcl 92 ref 441 i 000266 automatic fixed bin(17,0) dcl 54 set ref 162* 164* 175* 175 176 180* 192* 192 193 194* 202* 202 203 204* 216* 216 217 218* 227* 227 228 229* 237* 237 238 239* 249* 249 250 251* 271* 271 272 273* 278 278 283* 283 284 285* 288 289 292* 292 293 294 296* 296 316* 367* 368 368* 376* 378 380* 382* 386* ioa_ 000076 constant entry external dcl 93 ref 328 335 lv_name 000172 automatic char(32) packed unaligned dcl 43 set ref 196* 407* lv_specified_sw 000247 automatic bit(1) packed unaligned dcl 48 set ref 144* 195* 339 340 341 347 407 mbz1 1(05) 000275 automatic bit(31) level 3 packed packed unaligned dcl 112 set ref 363* mbz2 2(03) 000275 automatic bit(33) level 2 packed packed unaligned dcl 112 set ref 366* mdc_$create_dirx_acct 000052 constant entry external dcl 83 ref 407 mod builtin function dcl 103 ref 332 334 mode 2 000275 automatic bit(3) level 2 packed packed unaligned dcl 112 set ref 364* 365* msf_manager_$close 000100 constant entry external dcl 94 ref 448 456 msf_manager_$msf_get_ptr 000102 constant entry external dcl 95 ref 454 msf_manager_$open 000104 constant entry external dcl 96 ref 451 msf_max_length 000271 automatic fixed bin(19,0) dcl 56 set ref 146* 252* 254 322 327 328* 330* 332 333 334* 334 334 335* 458 459* name_sw 000100 automatic bit(1) array packed unaligned dcl 156 set ref 159* 278* 386 nd_handler_ 000106 constant entry external dcl 97 ref 418 null builtin function dcl 103 ref 445 448 452 454 454 owner 000232 automatic char(32) packed unaligned dcl 44 set ref 152* 240* 407* owner_specified_sw 000253 automatic bit(1) packed unaligned dcl 49 set ref 145* 241* 347 348 348* parent_ac_sw 1(04) 000275 automatic bit(1) level 3 packed packed unaligned dcl 112 set ref 404* path_sw 000100 automatic bit(1) array packed unaligned dcl 157 set ref 160* 278* 316* 320 378 pathname_ 000110 constant entry external dcl 98 ref 420 420 459 459 460 460 priv_upgrade_sw 1(03) 000275 automatic bit(1) level 3 packed packed unaligned dcl 112 set ref 362* quota 000267 automatic fixed bin(18,0) dcl 55 in procedure "cr" set ref 147* 205* 372 quota 17 000275 automatic fixed bin(18,0) level 2 in structure "branch_template" dcl 112 in procedure "cr" set ref 372* quota_specified_sw 000250 automatic bit(1) packed unaligned dcl 48 set ref 144* 210* 339 rb 000262 automatic fixed bin(17,0) array dcl 53 set ref 149* 149* 149* 150* 150* 150* 286* 290* 295* 297* 297 299* 299 301 301* 301* 303 303* 303* 368 420* 420* 420* rings 3 000275 automatic fixed bin(3,0) array level 2 dcl 112 set ref 368* specified_max_length 000272 automatic fixed bin(19,0) dcl 56 set ref 333* 335* string builtin function dcl 103 set ref 159* 160* 320 substr builtin function dcl 103 ref 306 switches 1 000275 automatic structure level 2 packed packed unaligned dcl 112 sys_info$max_seg_size 000032 external static fixed bin(35,0) dcl 72 set ref 327 328* 328* 330 type_name 000202 automatic char(32) packed unaligned dcl 43 set ref 340* 341* 342* 343* userid 6 000275 automatic char(32) level 2 dcl 112 set ref 370* verify builtin function dcl 103 ref 274 312 version 000275 automatic fixed bin(17,0) level 2 dcl 112 set ref 358* whoami 000212 automatic char(32) packed unaligned dcl 43 set ref 117* 125* 133* 137* 137* 166* 177* 183* 207* 275* 307* 313* 323* 328* 335* 343* 348* 382* 393* 418* 420* 460* NAMES DECLARED BY EXPLICIT CONTEXT. BAD_CTL_ARG 002167 constant label dcl 307 ref 173 190 200 214 225 235 247 258 263 BAD_VALUE 001172 constant label dcl 207 ref 220 253 254 287 CHECK_ARGS 000404 constant label dcl 128 ref 119 COMPLAIN 003273 constant label dcl 420 ref 400 415 END_LOOP 003374 constant label dcl 429 ref 378 394 425 MISSING_VALUE 000700 constant label dcl 177 ref 193 203 217 228 238 250 272 284 TRY_AGAIN 003125 constant label dcl 407 ref 419 USAGE 000446 constant label dcl 137 ref 320 cd 000354 constant entry external dcl 123 cr 000332 constant entry external dcl 11 create 000341 constant entry external dcl 11 create_dir 000372 constant entry external dcl 123 create_msf 003402 constant entry internal dcl 435 ref 411 createdir 000363 constant entry external dcl 123 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4624 4736 4160 4634 Length 5242 4160 112 270 444 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cr 248 external procedure is an external procedure. begin block on line 154 290 begin block uses auto adjustable storage. create_msf 178 internal procedure enables or reverts conditions. on unit on line 447 68 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 154 000100 path_sw begin block on line 154 000100 name_sw begin block on line 154 cr 000100 dn cr 000152 ctl_arg_name cr 000162 en cr 000172 lv_name cr 000202 type_name cr 000212 whoami cr 000222 account cr 000232 owner cr 000242 access_class cr 000244 create_dir_sw cr 000245 create_msf_sw cr 000246 ac_specified_sw cr 000247 lv_specified_sw cr 000250 quota_specified_sw cr 000251 dir_quota_specified_sw cr 000252 acct_specified_sw cr 000253 owner_specified_sw cr 000254 alp cr 000256 arg_ptr cr 000260 fcb_ptr cr 000262 rb cr 000265 arg_count cr 000266 i cr 000267 quota cr 000270 dir_quota cr 000271 msf_max_length cr 000272 specified_max_length cr 000273 arg_len cr 000274 code cr 000275 branch_template cr create_msf 000100 code create_msf THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj mdfx1 enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry com_err_ com_err_$suppress_name convert_authorization_$from_string cu_$arg_count cu_$arg_list_ptr cu_$arg_p Multics `Clayton nr Clayton Multics K2R{6T?mMTZTjnoneSTY_TELNET QzgBPalmer J6( Palmer Multics =+QEU TwxT֪noneSTY_TELNET QxiInternet 28\ Internet Daemon 369 002645 370 002647 371 002662 372 002663 373 002665 374 002667 376 002671 378 002702 380 002707 381 002726 382 002731 383 002760 386 002762 387 002770 388 002777 389 003005 391 003006 392 003036 393 003041 394 003065 397 003066 398 003103 399 003106 400 003113 404 003114 405 003122 407 003125 411 003171 413 003203 415 003232 418 003240 419 003263 420 003266 425 003373 429 003374 431 003377 433 003400 435 003401 441 003407 442 003447 443 003461 445 003466 447 003471 448 003505 449 003521 451 003522 452 003550 454 003561 456 003610 458 003620 459 003623 460 003673 464 003747 ----------------------------------------------------------- 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