#!/usr/local/bin/perl -w use strict; use File::Copy; use File::Compare; my $tdir = $ENV{'HOME'}."/tcl"; my $ntcl = "$tdir/tcl8.0b2"; my $otcl = "$tdir/tcl7.6p2"; my $ntk = "$tdir/tk8.0b2"; my $otk = "$tdir/tk4.2p2"; open(FIXUP,">Fixup"); sub mergedir { foreach (@_) { die "No $_\n" unless (-d $_); } my ($ptk,$old,$new) = @_; my %done; opendir(DIR,$new) || die "Cannot open $new:$!"; my $file; while (defined($file = readdir(DIR))) { if ($file =~ /\.[ch]$/) { my $nf = "$new/$file"; next unless -r $nf; my $of = "$old/$file"; my $pf = "$ptk/$file"; unless (-r $pf) { copy($nf,$pf); my $code = system('p4','add',$pf); die "Cannot add $pf\n" if $code; print "$pf added\n"; next; } $of = "/dev/null" unless (-r $of); if (compare($of,$nf)) { # Tcl/Tk version has changed if (compare($nf,$pf)) { my $code = system('p4','edit',$pf); die "Cannot edit $pf\n" if $code; $code = system('merge',$pf,$of,$nf); if ($code) { print "$pf needs fixing\n"; print FIXUP "$pf\n"; } else { print "$pf merged okay\n"; } } else { print "cmp $nf $pf - idential to source\n"; } } else { print "cmp $of $nf - unchanged in source\n"; } } } closedir(DIR); } mergedir("unix","$otk/unix","$ntk/unix"); mergedir("tclGeneric","$otcl/generic","$ntcl/generic"); mergedir("tclUnix","$otcl/unix","$ntcl/unix"); mergedir("tclWin","$otcl/win","$ntcl/win"); mergedir("generic","$otk/generic","$ntk/generic"); mergedir("win","$otk/win","$ntk/win"); close(FIXUP);