diff --git a/src/tools/copyright.pl b/src/tools/copyright.pl
new file mode 100755
index 96b1f22..91f73e3
*** a/src/tools/copyright.pl
--- b/src/tools/copyright.pl
*************** use warnings;
*** 13,19 ****
  use File::Find;
  
  my $pgdg = 'PostgreSQL Global Development Group';
! my $cc = 'Copyright (c) ';
  # year-1900 is what localtime(time) puts in element 5
  my $year = 1900 + ${[localtime(time)]}[5];
  
--- 13,19 ----
  use File::Find;
  
  my $pgdg = 'PostgreSQL Global Development Group';
! my $cc = 'Copyright \(c\) ';
  # year-1900 is what localtime(time) puts in element 5
  my $year = 1900 + ${[localtime(time)]}[5];
  
*************** print "Using current year:  $year\n";
*** 22,33 ****
  find({wanted => \&wanted, no_chdir => 1}, '.');
  
  sub wanted {
!     return unless -f $File::Find::name;
  
!     my @lines;
!     tie @lines, Tie::File, $File::Find::name;
  
!     foreach my $line (@lines) {
          # We only care about lines with a copyright notice.
          next unless $line =~ m/$cc.*$pgdg/;
          # We stop when we've done one substitution.  This is both for
--- 22,35 ----
  find({wanted => \&wanted, no_chdir => 1}, '.');
  
  sub wanted {
!     my $filename = $File::Find::name;
  
!     # only regular files
!     return if ! -f $filename;
  
!     open(my $FILE, '<', $filename) or die "Cannot open $filename";
! 
!     foreach my $line (<$FILE>) {
          # We only care about lines with a copyright notice.
          next unless $line =~ m/$cc.*$pgdg/;
          # We stop when we've done one substitution.  This is both for
*************** sub wanted {
*** 37,43 ****
          last if $line =~ s/($cc\d{4})(, $pgdg)/$1-$year$2/;
          last if $line =~ s/($cc\d{4})-\d{4}(, $pgdg)/$1-$year$2/;
      }
!     untie @lines;
  }
  
  print "Manually update doc/src/sgml/legal.sgml and src/interfaces/libpq/libpq.rc.in too\n";
--- 39,45 ----
          last if $line =~ s/($cc\d{4})(, $pgdg)/$1-$year$2/;
          last if $line =~ s/($cc\d{4})-\d{4}(, $pgdg)/$1-$year$2/;
      }
!     close($FILE) or die "Cannot close $filename";
  }
  
  print "Manually update doc/src/sgml/legal.sgml and src/interfaces/libpq/libpq.rc.in too\n";
