#!/usr/bin/perl -w
# -*- perl -*-

#
# $Id: $
# Author: Slaven Rezic
#

use strict;
use File::Find;

my $new_root = shift;
if (!defined $new_root) {
    if (defined $ENV{CVSROOT}) {
	$new_root = $ENV{CVSROOT};
    } else {
	die "New CVS root is not specified in the command line.
Alternatively the value of CVSROOT will be used.\n";
    }
}

find(\&wanted, '.');

sub wanted {
    if ($File::Find::name =~ m|/CVS/Root|) {
	open(O, ">$_")
	    or die "Can't write to $File::Find::name: $!";
	binmode O;
	warn "Changing $File::Find::name...\n";
	print O "$new_root\n";
	close O;
    }
}

__END__

=head1 NAME

newcvsroot - change the CVS root in a working directory

=head1 SYNOPSIS

    newcvsroot [newroot]

=head1 DESCRIPTION

C<newcvsroot> changes the CVS root in the current working directory
and all subdirectories. If C<newroot> is not specified, then the value
of the environment variable C<CVSROOT> is used as the new CVS root.

=head1 README

newcvsroot changes the CVS root in the current working directory and
all subdirectories.

=head1 PREREQUISITES

L<File::Find>

=head1 OSNAMES

OS independent

=head1 SCRIPT CATEGORIES

VersionControl:CVS

=head1 AUTHOR

Slaven Rezic <slaven@rezic.de>

=head1 SEE ALSO

cvs(1).

=cut