$newAuthor = '<a href="mailto:avalon-dev@jakarta.apache.org">Apache Avalon Development Team</a>';
convertDir(".");

sub convertDir()
{
  my $dirname = shift @_;
  my $DIR;
  opendir(DIR, $dirname) || die "can't opendir $dirname: $!";
  my @dirs = grep {-d "$dirname/$_" && /^[^.]+$/ } readdir(DIR);
  rewinddir(DIR);
  my @files= grep {-f "$dirname/$_" && /\.java$/ } readdir(DIR);
  closedir(DIR);

  foreach $file (@files) {
    $file = "$dirname/".$file;
    print "Converting file $file\r\n";
    convertFile($file);
  }

  foreach $dir (@dirs) {
    $dir = "$dirname/".$dir;
    print "Moving into $dir\r\n";
    convertDir($dir);
  }
}

sub convertFile()
{
  my $filename = shift @_;
  my $FILE;
  my $TEMP;
  open(FILE, "<", $filename) or die "Could not open $filename: $!";
  open(TEMP, ">", "convertingTmp.tmp") or die "Could not open convertingTmp.tmp: $!";

  my $haveSeenAuthor = 0;
  while (<FILE>) {
    my $line = $_;
    if (/([^\@]+)(\@author)(.+)$/) {
      if (not $haveSeenAuthor) {
        $line = $1.$2." $newAuthor\r\n";
        $haveSeenAuthor = 1;
      } else {
        next;
      }
    }
    print TEMP $line;
  }

  close(FILE);
  close(TEMP);
  if ($haveSeenAuthor) {
    unlink $filename;
    rename("convertingTmp.tmp", $filename);
  } else {
    unlink "convertingTmp.tmp";
  }
}
