1*6236dae4SAndroid Build Coastguard Worker$! Compare_curl_source.com 2*6236dae4SAndroid Build Coastguard Worker$! 3*6236dae4SAndroid Build Coastguard Worker$! This procedure compares the files in two directories and reports the 4*6236dae4SAndroid Build Coastguard Worker$! differences. It is customized for the vmsports repository layout. 5*6236dae4SAndroid Build Coastguard Worker$! 6*6236dae4SAndroid Build Coastguard Worker$! It needs to be customized to the local site directories. 7*6236dae4SAndroid Build Coastguard Worker$! 8*6236dae4SAndroid Build Coastguard Worker$! This is used by me for these purposes: 9*6236dae4SAndroid Build Coastguard Worker$! 1. Compare the original source of a project with an existing 10*6236dae4SAndroid Build Coastguard Worker$! VMS port. 11*6236dae4SAndroid Build Coastguard Worker$! 2. Compare the checked out repository of a project with the 12*6236dae4SAndroid Build Coastguard Worker$! the local working copy to make sure they are in sync. 13*6236dae4SAndroid Build Coastguard Worker$! 3. Keep a copy directory up to date. The third is needed by 14*6236dae4SAndroid Build Coastguard Worker$! me because VMS Backup can create a saveset of files from a 15*6236dae4SAndroid Build Coastguard Worker$! NFS mounted volume. 16*6236dae4SAndroid Build Coastguard Worker$! 17*6236dae4SAndroid Build Coastguard Worker$! First the files in the original source directory which is assumed to be 18*6236dae4SAndroid Build Coastguard Worker$! under source code control are compared with the copy directory. 19*6236dae4SAndroid Build Coastguard Worker$! 20*6236dae4SAndroid Build Coastguard Worker$! Only files present in the copy directory are listed. 21*6236dae4SAndroid Build Coastguard Worker$! 22*6236dae4SAndroid Build Coastguard Worker$! Diagnostics are displayed about the files: 23*6236dae4SAndroid Build Coastguard Worker$! 1. Files that are not generation 1. 24*6236dae4SAndroid Build Coastguard Worker$! 2. Files missing in the copy directory. 25*6236dae4SAndroid Build Coastguard Worker$! 3. Files in the copy directory not in the source directory. 26*6236dae4SAndroid Build Coastguard Worker$! 4. Files different from the source directory. 27*6236dae4SAndroid Build Coastguard Worker$! 5. Files that VMS DIFF can not process. 28*6236dae4SAndroid Build Coastguard Worker$! 29*6236dae4SAndroid Build Coastguard Worker$! This needs to be run on an ODS-5 volume. 30*6236dae4SAndroid Build Coastguard Worker$! 31*6236dae4SAndroid Build Coastguard Worker$! If UPDATE is given as a second parameter, files missing or different in the 32*6236dae4SAndroid Build Coastguard Worker$! copy directory will be updated. 33*6236dae4SAndroid Build Coastguard Worker$! 34*6236dae4SAndroid Build Coastguard Worker$! By default: 35*6236dae4SAndroid Build Coastguard Worker$! The directory src_root:[project_name] will be translated to something like 36*6236dae4SAndroid Build Coastguard Worker$! DISK:[dir.dir.reference.project_name] and this will be used 37*6236dae4SAndroid Build Coastguard Worker$! to calculate DISK:[dir.dir.vms_source.project_name] for the VMS specific 38*6236dae4SAndroid Build Coastguard Worker$! source directory. 39*6236dae4SAndroid Build Coastguard Worker$! 40*6236dae4SAndroid Build Coastguard Worker$! The copy directory is vms_root:[project_name] 41*6236dae4SAndroid Build Coastguard Worker$! The UPDATE parameter is ignored. 42*6236dae4SAndroid Build Coastguard Worker$! 43*6236dae4SAndroid Build Coastguard Worker$! This setting is used to make sure that the working vms directory 44*6236dae4SAndroid Build Coastguard Worker$! and the repository checkout directory have the same contents. 45*6236dae4SAndroid Build Coastguard Worker$! 46*6236dae4SAndroid Build Coastguard Worker$! If P1 is "SRCBCK" then this 47*6236dae4SAndroid Build Coastguard Worker$! The source directory tree is: src_root:[project_name] 48*6236dae4SAndroid Build Coastguard Worker$! The copy directory is src_root1:[project_name] 49*6236dae4SAndroid Build Coastguard Worker$! 50*6236dae4SAndroid Build Coastguard Worker$! src_root1:[project_name] is used by me to work around that VMS backup will 51*6236dae4SAndroid Build Coastguard Worker$! not use NFS as a source directory so I need to make a copy. 52*6236dae4SAndroid Build Coastguard Worker$! 53*6236dae4SAndroid Build Coastguard Worker$! This is to make sure that the backup save set for the unmodified 54*6236dae4SAndroid Build Coastguard Worker$! source is up to date. 55*6236dae4SAndroid Build Coastguard Worker$! 56*6236dae4SAndroid Build Coastguard Worker$! If your repository checkout is not on an NFS mounted volume, you do not 57*6236dae4SAndroid Build Coastguard Worker$! need to use this option or have the logical name src_root1 defined. 58*6236dae4SAndroid Build Coastguard Worker$! 59*6236dae4SAndroid Build Coastguard Worker$! If P1 is "VMSBCK" then this changes the two directories: 60*6236dae4SAndroid Build Coastguard Worker$! The source directory is vms_root:[project_name] 61*6236dae4SAndroid Build Coastguard Worker$! The copy directory is vms_root1:[project_name] 62*6236dae4SAndroid Build Coastguard Worker$! 63*6236dae4SAndroid Build Coastguard Worker$! vms_root:[project_name] is where I do the VMS specific edits. 64*6236dae4SAndroid Build Coastguard Worker$! vms_root1:[project_name] is used by me to work around that VMS backup will 65*6236dae4SAndroid Build Coastguard Worker$! not use NFS as a source directory so I need to make a copy. 66*6236dae4SAndroid Build Coastguard Worker$! 67*6236dae4SAndroid Build Coastguard Worker$! This is to make sure that the backup save set for the unmodified 68*6236dae4SAndroid Build Coastguard Worker$! source is up to date. 69*6236dae4SAndroid Build Coastguard Worker$! 70*6236dae4SAndroid Build Coastguard Worker$! Copyright (C) John Malmberg 71*6236dae4SAndroid Build Coastguard Worker$! 72*6236dae4SAndroid Build Coastguard Worker$! Permission to use, copy, modify, and/or distribute this software for any 73*6236dae4SAndroid Build Coastguard Worker$! purpose with or without fee is hereby granted, provided that the above 74*6236dae4SAndroid Build Coastguard Worker$! copyright notice and this permission notice appear in all copies. 75*6236dae4SAndroid Build Coastguard Worker$! 76*6236dae4SAndroid Build Coastguard Worker$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 77*6236dae4SAndroid Build Coastguard Worker$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 78*6236dae4SAndroid Build Coastguard Worker$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 79*6236dae4SAndroid Build Coastguard Worker$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 80*6236dae4SAndroid Build Coastguard Worker$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 81*6236dae4SAndroid Build Coastguard Worker$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 82*6236dae4SAndroid Build Coastguard Worker$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 83*6236dae4SAndroid Build Coastguard Worker$! 84*6236dae4SAndroid Build Coastguard Worker$! SPDX-License-Identifier: ISC 85*6236dae4SAndroid Build Coastguard Worker$! 86*6236dae4SAndroid Build Coastguard Worker$!========================================================================== 87*6236dae4SAndroid Build Coastguard Worker$! 88*6236dae4SAndroid Build Coastguard Worker$! Update missing/changed files. 89*6236dae4SAndroid Build Coastguard Worker$ update_file = 0 90*6236dae4SAndroid Build Coastguard Worker$ if (p2 .eqs. "UPDATE") 91*6236dae4SAndroid Build Coastguard Worker$ then 92*6236dae4SAndroid Build Coastguard Worker$ update_file = 1 93*6236dae4SAndroid Build Coastguard Worker$ endif 94*6236dae4SAndroid Build Coastguard Worker$! 95*6236dae4SAndroid Build Coastguard Worker$ myproc = f$environment("PROCEDURE") 96*6236dae4SAndroid Build Coastguard Worker$ myprocdir = f$parse(myproc,,,"DIRECTORY") - "[" - "]" - "<" - ">" 97*6236dae4SAndroid Build Coastguard Worker$ myprocdir = f$edit(myprocdir, "LOWERCASE") 98*6236dae4SAndroid Build Coastguard Worker$ mydefault = f$environment("DEFAULT") 99*6236dae4SAndroid Build Coastguard Worker$ mydir = f$parse(mydefault,,,"DIRECTORY") 100*6236dae4SAndroid Build Coastguard Worker$ mydir = f$edit(mydir, "LOWERCASE") 101*6236dae4SAndroid Build Coastguard Worker$ odelim = f$extract(0, 1, mydir) 102*6236dae4SAndroid Build Coastguard Worker$ mydir = mydir - "[" - "]" - "<" - ">" 103*6236dae4SAndroid Build Coastguard Worker$ mydev = f$parse(mydefault,,,"DEVICE") 104*6236dae4SAndroid Build Coastguard Worker$! 105*6236dae4SAndroid Build Coastguard Worker$ ref = "" 106*6236dae4SAndroid Build Coastguard Worker$ if P1 .eqs. "" 107*6236dae4SAndroid Build Coastguard Worker$ then 108*6236dae4SAndroid Build Coastguard Worker$ ref_base_dir = myprocdir 109*6236dae4SAndroid Build Coastguard Worker$ wrk_base_dir = mydir 110*6236dae4SAndroid Build Coastguard Worker$ update_file = 0 111*6236dae4SAndroid Build Coastguard Worker$ resultd = f$parse("src_root:",,,,"NO_CONCEAL") 112*6236dae4SAndroid Build Coastguard Worker$ resultd = f$edit(resultd, "LOWERCASE") 113*6236dae4SAndroid Build Coastguard Worker$ resultd = resultd - "][" - "><" - ".;" - ".." 114*6236dae4SAndroid Build Coastguard Worker$ resultd_len = f$length(resultd) - 1 115*6236dae4SAndroid Build Coastguard Worker$ delim = f$extract(resultd_len, 1, resultd) 116*6236dae4SAndroid Build Coastguard Worker$ ref_root_base = mydir + delim 117*6236dae4SAndroid Build Coastguard Worker$ resultd = resultd - ref_root_base - "reference." + "vms_source." 118*6236dae4SAndroid Build Coastguard Worker$ ref = resultd + ref_base_dir 119*6236dae4SAndroid Build Coastguard Worker$ wrk = "VMS_ROOT:" + odelim + wrk_base_dir 120*6236dae4SAndroid Build Coastguard Worker$ resultd_len = f$length(resultd) - 1 121*6236dae4SAndroid Build Coastguard Worker$ resultd = f$extract(0, resultd_len, resultd) + delim 122*6236dae4SAndroid Build Coastguard Worker$ ref_root_dir = f$parse(resultd,,,"DIRECTORY") 123*6236dae4SAndroid Build Coastguard Worker$ ref_root_dir = f$edit(ref_root_dir, "LOWERCASE") 124*6236dae4SAndroid Build Coastguard Worker$ ref_root_dir = ref_root_dir - "[" - "]" 125*6236dae4SAndroid Build Coastguard Worker$ ref_base_dir = ref_root_dir + "." + ref_base_dir 126*6236dae4SAndroid Build Coastguard Worker$ endif 127*6236dae4SAndroid Build Coastguard Worker$! 128*6236dae4SAndroid Build Coastguard Worker$ if p1 .eqs. "SRCBCK" 129*6236dae4SAndroid Build Coastguard Worker$ then 130*6236dae4SAndroid Build Coastguard Worker$ ref_base_dir = "curl" 131*6236dae4SAndroid Build Coastguard Worker$ wrk_base_dir = "curl" 132*6236dae4SAndroid Build Coastguard Worker$ ref = "src_root:[" + ref_base_dir 133*6236dae4SAndroid Build Coastguard Worker$ wrk = "src_root1:[" + wrk_base_dir 134*6236dae4SAndroid Build Coastguard Worker$ if update_file 135*6236dae4SAndroid Build Coastguard Worker$ then 136*6236dae4SAndroid Build Coastguard Worker$ if f$search("src_root1:[000000]curl.dir") .eqs. "" 137*6236dae4SAndroid Build Coastguard Worker$ then 138*6236dae4SAndroid Build Coastguard Worker$ create/dir/prot=o:rwed src_root1:[curl] 139*6236dae4SAndroid Build Coastguard Worker$ endif 140*6236dae4SAndroid Build Coastguard Worker$ endif 141*6236dae4SAndroid Build Coastguard Worker$ endif 142*6236dae4SAndroid Build Coastguard Worker$! 143*6236dae4SAndroid Build Coastguard Worker$! 144*6236dae4SAndroid Build Coastguard Worker$ if p1 .eqs. "VMSBCK" 145*6236dae4SAndroid Build Coastguard Worker$ then 146*6236dae4SAndroid Build Coastguard Worker$ ref_base_dir = "curl" 147*6236dae4SAndroid Build Coastguard Worker$ wrk_base_dir = "curl" 148*6236dae4SAndroid Build Coastguard Worker$ ref = "vms_root:[" + ref_base_dir 149*6236dae4SAndroid Build Coastguard Worker$ wrk = "vms_root1:[" + wrk_base_dir 150*6236dae4SAndroid Build Coastguard Worker$ if update_file 151*6236dae4SAndroid Build Coastguard Worker$ then 152*6236dae4SAndroid Build Coastguard Worker$ if f$search("vms_root1:[000000]curl.dir") .eqs. "" 153*6236dae4SAndroid Build Coastguard Worker$ then 154*6236dae4SAndroid Build Coastguard Worker$ create/dir/prot=o:rwed vms_root1:[curl] 155*6236dae4SAndroid Build Coastguard Worker$ endif 156*6236dae4SAndroid Build Coastguard Worker$ endif 157*6236dae4SAndroid Build Coastguard Worker$ endif 158*6236dae4SAndroid Build Coastguard Worker$! 159*6236dae4SAndroid Build Coastguard Worker$! 160*6236dae4SAndroid Build Coastguard Worker$ if ref .eqs. "" 161*6236dae4SAndroid Build Coastguard Worker$ then 162*6236dae4SAndroid Build Coastguard Worker$ write sys$output "Unknown compare type specified!" 163*6236dae4SAndroid Build Coastguard Worker$ exit 44 164*6236dae4SAndroid Build Coastguard Worker$ endif 165*6236dae4SAndroid Build Coastguard Worker$! 166*6236dae4SAndroid Build Coastguard Worker$! 167*6236dae4SAndroid Build Coastguard Worker$! Future - check the device types involved for the 168*6236dae4SAndroid Build Coastguard Worker$! the syntax to check. 169*6236dae4SAndroid Build Coastguard Worker$ ODS2_SYNTAX = 0 170*6236dae4SAndroid Build Coastguard Worker$ NFS_MANGLE = 0 171*6236dae4SAndroid Build Coastguard Worker$ PWRK_MANGLE = 0 172*6236dae4SAndroid Build Coastguard Worker$! 173*6236dae4SAndroid Build Coastguard Worker$ vax = f$getsyi("HW_MODEL") .lt. 1024 174*6236dae4SAndroid Build Coastguard Worker$ if vax 175*6236dae4SAndroid Build Coastguard Worker$ then 176*6236dae4SAndroid Build Coastguard Worker$ ODS2_SYNTAX = 1 177*6236dae4SAndroid Build Coastguard Worker$ endif 178*6236dae4SAndroid Build Coastguard Worker$! 179*6236dae4SAndroid Build Coastguard Worker$ report_missing = 1 180*6236dae4SAndroid Build Coastguard Worker$! 181*6236dae4SAndroid Build Coastguard Worker$ if .not. ODS2_SYNTAX 182*6236dae4SAndroid Build Coastguard Worker$ then 183*6236dae4SAndroid Build Coastguard Worker$ set proc/parse=extended 184*6236dae4SAndroid Build Coastguard Worker$ endif 185*6236dae4SAndroid Build Coastguard Worker$! 186*6236dae4SAndroid Build Coastguard Worker$loop: 187*6236dae4SAndroid Build Coastguard Worker$ ref_spec = f$search("''ref'...]*.*;",1) 188*6236dae4SAndroid Build Coastguard Worker$ if ref_spec .eqs. "" then goto loop_end 189*6236dae4SAndroid Build Coastguard Worker$! 190*6236dae4SAndroid Build Coastguard Worker$ ref_dev = f$parse(ref_spec,,,"DEVICE") 191*6236dae4SAndroid Build Coastguard Worker$ ref_dir = f$parse(ref_spec,,,"DIRECTORY") 192*6236dae4SAndroid Build Coastguard Worker$ ref_dir = f$edit(ref_dir, "LOWERCASE") 193*6236dae4SAndroid Build Coastguard Worker$ ref_name = f$parse(ref_spec,,,"NAME") 194*6236dae4SAndroid Build Coastguard Worker$ ref_type = f$parse(ref_spec,,,"TYPE") 195*6236dae4SAndroid Build Coastguard Worker$! 196*6236dae4SAndroid Build Coastguard Worker$! 197*6236dae4SAndroid Build Coastguard Worker$ rel_path = ref_dir - "[" - ref_base_dir 198*6236dae4SAndroid Build Coastguard Worker$! rel_path_len = f$length(rel_path) - 1 199*6236dae4SAndroid Build Coastguard Worker$! delim = f$extract(rel_path_len, 1, rel_path) 200*6236dae4SAndroid Build Coastguard Worker$! rel_path = rel_path - ".]" - ".>" - "]" - ">" 201*6236dae4SAndroid Build Coastguard Worker$! rel_path = rel_path + delim 202*6236dae4SAndroid Build Coastguard Worker$! 203*6236dae4SAndroid Build Coastguard Worker$ if ODS2_SYNTAX 204*6236dae4SAndroid Build Coastguard Worker$ then 205*6236dae4SAndroid Build Coastguard Worker$! if rel_path .eqs. ".examples.scripts^.noah]" 206*6236dae4SAndroid Build Coastguard Worker$! then 207*6236dae4SAndroid Build Coastguard Worker$! rel_path = ".examples.scripts_noah]" 208*6236dae4SAndroid Build Coastguard Worker$! endif 209*6236dae4SAndroid Build Coastguard Worker$! if rel_path .eqs. ".examples.scripts^.v2]" 210*6236dae4SAndroid Build Coastguard Worker$! then 211*6236dae4SAndroid Build Coastguard Worker$! rel_path = ".examples.scripts_v2]" 212*6236dae4SAndroid Build Coastguard Worker$! endif 213*6236dae4SAndroid Build Coastguard Worker$ endif 214*6236dae4SAndroid Build Coastguard Worker$! 215*6236dae4SAndroid Build Coastguard Worker$ wrk_path = wrk + rel_path 216*6236dae4SAndroid Build Coastguard Worker$! 217*6236dae4SAndroid Build Coastguard Worker$ ref_name_type = ref_name + ref_type 218*6236dae4SAndroid Build Coastguard Worker$! 219*6236dae4SAndroid Build Coastguard Worker$ if ODS2_SYNTAX 220*6236dae4SAndroid Build Coastguard Worker$ then 221*6236dae4SAndroid Build Coastguard Worker$ endif 222*6236dae4SAndroid Build Coastguard Worker$! 223*6236dae4SAndroid Build Coastguard Worker$ wrk_spec = wrk_path + ref_name_type 224*6236dae4SAndroid Build Coastguard Worker$! 225*6236dae4SAndroid Build Coastguard Worker$! 226*6236dae4SAndroid Build Coastguard Worker$ wrk_chk = f$search(wrk_spec, 0) 227*6236dae4SAndroid Build Coastguard Worker$ if wrk_chk .eqs. "" 228*6236dae4SAndroid Build Coastguard Worker$ then 229*6236dae4SAndroid Build Coastguard Worker$ if report_missing 230*6236dae4SAndroid Build Coastguard Worker$ then 231*6236dae4SAndroid Build Coastguard Worker$ write sys$output "''wrk_spec' is missing" 232*6236dae4SAndroid Build Coastguard Worker$ endif 233*6236dae4SAndroid Build Coastguard Worker$ if update_file 234*6236dae4SAndroid Build Coastguard Worker$ then 235*6236dae4SAndroid Build Coastguard Worker$ copy/log 'ref_spec' 'wrk_spec' 236*6236dae4SAndroid Build Coastguard Worker$ endif 237*6236dae4SAndroid Build Coastguard Worker$ goto loop 238*6236dae4SAndroid Build Coastguard Worker$ endif 239*6236dae4SAndroid Build Coastguard Worker$! 240*6236dae4SAndroid Build Coastguard Worker$ wrk_name = f$parse(wrk_spec,,,"NAME") 241*6236dae4SAndroid Build Coastguard Worker$ wrk_type = f$parse(wrk_spec,,,"TYPE") 242*6236dae4SAndroid Build Coastguard Worker$ wrk_fname = wrk_name + wrk_type" 243*6236dae4SAndroid Build Coastguard Worker$ ref_fname = ref_name + ref_type 244*6236dae4SAndroid Build Coastguard Worker$! 245*6236dae4SAndroid Build Coastguard Worker$ if ref_fname .nes. wrk_fname 246*6236dae4SAndroid Build Coastguard Worker$ then 247*6236dae4SAndroid Build Coastguard Worker$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'""" 248*6236dae4SAndroid Build Coastguard Worker$ endif 249*6236dae4SAndroid Build Coastguard Worker$! 250*6236dae4SAndroid Build Coastguard Worker$ ref_type = f$edit(ref_type, "UPCASE") 251*6236dae4SAndroid Build Coastguard Worker$ if ref_type .eqs. ".DIR" then goto loop 252*6236dae4SAndroid Build Coastguard Worker$! 253*6236dae4SAndroid Build Coastguard Worker$ if ODS2_SYNTAX 254*6236dae4SAndroid Build Coastguard Worker$ then 255*6236dae4SAndroid Build Coastguard Worker$ ref_fname = f$edit(ref_fname, "LOWERCASE") 256*6236dae4SAndroid Build Coastguard Worker$ endif 257*6236dae4SAndroid Build Coastguard Worker$! 258*6236dae4SAndroid Build Coastguard Worker$! These files are in the wrong format for VMS diff, and we don't change them. 259*6236dae4SAndroid Build Coastguard Worker$ ref_skip = 0 260*6236dae4SAndroid Build Coastguard Worker$ if ref_type .eqs. ".PDF" then ref_skip = 1 261*6236dae4SAndroid Build Coastguard Worker$ if ref_type .eqs. ".HTML" then ref_skip = 1 262*6236dae4SAndroid Build Coastguard Worker$ if ref_type .eqs. ".P12" then ref_skip = 1 263*6236dae4SAndroid Build Coastguard Worker$ if ref_type .eqs. "." 264*6236dae4SAndroid Build Coastguard Worker$ then 265*6236dae4SAndroid Build Coastguard Worker$ if f$locate("test", ref_fname) .eq. 0 then ref_skip = 1 266*6236dae4SAndroid Build Coastguard Worker$ if ref_fname .eqs. "configure." then ref_skip = 1 267*6236dae4SAndroid Build Coastguard Worker$ endif 268*6236dae4SAndroid Build Coastguard Worker$! 269*6236dae4SAndroid Build Coastguard Worker$! 270*6236dae4SAndroid Build Coastguard Worker$ if ref_skip .ne. 0 271*6236dae4SAndroid Build Coastguard Worker$ then 272*6236dae4SAndroid Build Coastguard Worker$ if report_missing 273*6236dae4SAndroid Build Coastguard Worker$ then 274*6236dae4SAndroid Build Coastguard Worker$ write sys$output "Skipping diff of ''ref_fname'" 275*6236dae4SAndroid Build Coastguard Worker$ endif 276*6236dae4SAndroid Build Coastguard Worker$ goto loop 277*6236dae4SAndroid Build Coastguard Worker$ endif 278*6236dae4SAndroid Build Coastguard Worker$! 279*6236dae4SAndroid Build Coastguard Worker$! 280*6236dae4SAndroid Build Coastguard Worker$ wrk_ver = f$parse(wrk_chk,,,"VERSION") 281*6236dae4SAndroid Build Coastguard Worker$ if wrk_ver .nes. ";1" 282*6236dae4SAndroid Build Coastguard Worker$ then 283*6236dae4SAndroid Build Coastguard Worker$ write sys$output "Version for ''wrk_spec' is not 1" 284*6236dae4SAndroid Build Coastguard Worker$ endif 285*6236dae4SAndroid Build Coastguard Worker$ set noon 286*6236dae4SAndroid Build Coastguard Worker$ diff/out=nl: 'wrk_spec' 'ref_spec' 287*6236dae4SAndroid Build Coastguard Worker$ if $severity .nes. "1" 288*6236dae4SAndroid Build Coastguard Worker$ then 289*6236dae4SAndroid Build Coastguard Worker$ write sys$output "''wrk_spec' is different from ''ref_spec'" 290*6236dae4SAndroid Build Coastguard Worker$ if update_file 291*6236dae4SAndroid Build Coastguard Worker$ then 292*6236dae4SAndroid Build Coastguard Worker$ delete 'wrk_spec';* 293*6236dae4SAndroid Build Coastguard Worker$ copy/log 'ref_spec' 'wrk_spec' 294*6236dae4SAndroid Build Coastguard Worker$ endif 295*6236dae4SAndroid Build Coastguard Worker$ endif 296*6236dae4SAndroid Build Coastguard Worker$ set on 297*6236dae4SAndroid Build Coastguard Worker$ 298*6236dae4SAndroid Build Coastguard Worker$! 299*6236dae4SAndroid Build Coastguard Worker$ goto loop 300*6236dae4SAndroid Build Coastguard Worker$loop_end: 301*6236dae4SAndroid Build Coastguard Worker$! 302*6236dae4SAndroid Build Coastguard Worker$! 303*6236dae4SAndroid Build Coastguard Worker$missing_loop: 304*6236dae4SAndroid Build Coastguard Worker$! For missing loop, check the latest generation. 305*6236dae4SAndroid Build Coastguard Worker$ ref_spec = f$search("''wrk'...]*.*;") 306*6236dae4SAndroid Build Coastguard Worker$ if ref_spec .eqs. "" then goto missing_loop_end 307*6236dae4SAndroid Build Coastguard Worker$! 308*6236dae4SAndroid Build Coastguard Worker$ ref_dev = f$parse(ref_spec,,,"DEVICE") 309*6236dae4SAndroid Build Coastguard Worker$ ref_dir = f$parse(ref_spec,,,"DIRECTORY") 310*6236dae4SAndroid Build Coastguard Worker$ ref_dir = f$edit(ref_dir, "LOWERCASE") 311*6236dae4SAndroid Build Coastguard Worker$ ref_name = f$parse(ref_spec,,,"NAME") 312*6236dae4SAndroid Build Coastguard Worker$ ref_type = f$parse(ref_spec,,,"TYPE") 313*6236dae4SAndroid Build Coastguard Worker$ ref_name_type = ref_name + ref_type 314*6236dae4SAndroid Build Coastguard Worker$! 315*6236dae4SAndroid Build Coastguard Worker$ rel_path = ref_dir - "[" - wrk_base_dir 316*6236dae4SAndroid Build Coastguard Worker$! 317*6236dae4SAndroid Build Coastguard Worker$! 318*6236dae4SAndroid Build Coastguard Worker$ wrk_path = ref + rel_path 319*6236dae4SAndroid Build Coastguard Worker$ wrk_spec = wrk_path + ref_name + ref_type 320*6236dae4SAndroid Build Coastguard Worker$ wrk_name = f$parse(wrk_spec,,,"NAME") 321*6236dae4SAndroid Build Coastguard Worker$ wrk_type = f$parse(wrk_spec,,,"TYPE") 322*6236dae4SAndroid Build Coastguard Worker$! 323*6236dae4SAndroid Build Coastguard Worker$ wrk_fname = wrk_name + wrk_type" 324*6236dae4SAndroid Build Coastguard Worker$ ref_fname = ref_name + ref_type 325*6236dae4SAndroid Build Coastguard Worker$! 326*6236dae4SAndroid Build Coastguard Worker$ wrk_skip = 0 327*6236dae4SAndroid Build Coastguard Worker$ ref_utype = f$edit(ref_type,"UPCASE") 328*6236dae4SAndroid Build Coastguard Worker$ ref_ufname = f$edit(ref_fname,"UPCASE") 329*6236dae4SAndroid Build Coastguard Worker$! 330*6236dae4SAndroid Build Coastguard Worker$ if wrk_skip .eq. 0 331*6236dae4SAndroid Build Coastguard Worker$ then 332*6236dae4SAndroid Build Coastguard Worker$ wrk_chk = f$search(wrk_spec, 0) 333*6236dae4SAndroid Build Coastguard Worker$ if wrk_chk .eqs. "" 334*6236dae4SAndroid Build Coastguard Worker$ then 335*6236dae4SAndroid Build Coastguard Worker$ if report_missing 336*6236dae4SAndroid Build Coastguard Worker$ then 337*6236dae4SAndroid Build Coastguard Worker$ write sys$output "''wrk_spec' is missing" 338*6236dae4SAndroid Build Coastguard Worker$ endif 339*6236dae4SAndroid Build Coastguard Worker$ goto missing_loop 340*6236dae4SAndroid Build Coastguard Worker$ endif 341*6236dae4SAndroid Build Coastguard Worker$ else 342*6236dae4SAndroid Build Coastguard Worker$ goto missing_loop 343*6236dae4SAndroid Build Coastguard Worker$ endif 344*6236dae4SAndroid Build Coastguard Worker$! 345*6236dae4SAndroid Build Coastguard Worker$ if ref_fname .nes. wrk_fname 346*6236dae4SAndroid Build Coastguard Worker$ then 347*6236dae4SAndroid Build Coastguard Worker$ write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'""" 348*6236dae4SAndroid Build Coastguard Worker$ endif 349*6236dae4SAndroid Build Coastguard Worker$! 350*6236dae4SAndroid Build Coastguard Worker$ if ref_utype .eqs. ".DIR" then goto missing_loop 351*6236dae4SAndroid Build Coastguard Worker$! 352*6236dae4SAndroid Build Coastguard Worker$ wrk_ver = f$parse(wrk_chk,,,"VERSION") 353*6236dae4SAndroid Build Coastguard Worker$ if wrk_ver .nes. ";1" 354*6236dae4SAndroid Build Coastguard Worker$ then 355*6236dae4SAndroid Build Coastguard Worker$ write sys$output "Version for ''wrk_spec' is not 1" 356*6236dae4SAndroid Build Coastguard Worker$ endif 357*6236dae4SAndroid Build Coastguard Worker$! 358*6236dae4SAndroid Build Coastguard Worker$ goto missing_loop 359*6236dae4SAndroid Build Coastguard Worker$! 360*6236dae4SAndroid Build Coastguard Worker$! 361*6236dae4SAndroid Build Coastguard Worker$missing_loop_end: 362*6236dae4SAndroid Build Coastguard Worker$! 363*6236dae4SAndroid Build Coastguard Worker$exit 364