#!/usr/local/bin/perl
#
# ToolName: Change CVS/Repository
#    Usage: chcvsrepo oldcvsrepo newcvsrepo [targetdir]
#  Lisence: GNU Public Lisence
#   Author: Mika Ohtsuki (mika@mikamama.com)
#  Version: $Id: chcvsrepo.txt,v 1.1 2002/02/24 02:14:04 misty Exp $
#  Comment: Let's play with CVS!
#

# Argument1: oldcvsrepo
# Argument2: newcvsrepo
if ($ARGV[0] && $ARGV[1]) {
    $oldcvsrepo = $ARGV[0];
    $newcvsrepo = $ARGV[1];
} else {
    print "Usage: chcvsrepo oldcvsrepo newcvsrepo [targetdir]\n";
    exit (0);
}

# Argument 3: target
$target = '.';
if ($ARGV[2]) { $target = $ARGV[2]; }

chcvsrepo($target);

# Dir check method.
sub chcvsrepo {
    my $dirname = $_[0];
    my @dirs = ();
    print "Openning $dirname...";
    opendir(DIR, $dirname) or die "Could not open $dirname: $!\n";
    print "done.\n";
    while ($filename = readdir(DIR)) {
        $path = $dirname.'/'.$filename;
        if ( -d $path ) {
            if ($filename eq 'CVS') {
                $repo = $path.'/Repository';
                open (REPO, "<$repo") or die "Could not open $repo: $!\n";
		$str = <REPO>;
		chomp($str);
		close (REPO);
		$str =~ s/$oldcvsrepo/$newcvsrepo/eg;
                open (REPO, ">$repo") or die "Could not open $repo: $!\n";
                print "...writing $str..";
                print REPO "$str\n";
		print "done\n";
                close(REPO);
            } elsif ($filename ne '.' && $filename ne '..') {
                print "DIR: $path\n";
                push(@dirs, $path);
            }
        }
    }
    closedir(DIR);
    # Recursion (fun!)
    foreach $dir (@dirs) {
        chcvsrepo($dir);
    }
}
