I am fighting some fires in my day job.

My pesonal TODO list for pg up to beta is:

. fix chunking muddle (see recent emails)
. complete CSV logs patch
. harden MSVC builds

I'll get to this when I can. I can dig up the patch I did if you want it again.

cheers

andrew


Magnus Hagander wrote:
I used to have a different patch from Andrew that did part of this, and
more, and conflicted rather badly with it. However, I never got around
to applying that one, and I can't seem to find it anymore.

Andrew -do you recall if you had all this in yours, and is it still
something you want in, or should we just go with this one?

//Magnus

Bruce Momjian wrote:
Magnus, what is your reaction to this patch?

---------------------------------------------------------------------------

Hannes Eder wrote:
Magnus Hagander wrote:
 >Hannes Eder wrote:
>> Is it worth doing this the "Perl-way" and using File::Find? If so, I can
 >> work an a patch for that.
 >>
> It's certainly cleaner that way, but I don't find it a major issue. But I'd
 > rather see that fix than the other one.

Here we go. See attached patch. Your comments are welcome.

Hannes.

*** ..\pgsql-cvshead\src\tools\msvc\Install.pm Mo Mai 14 16:36:10 2007
--- src\tools\msvc\Install.pm   Mi Jun  6 20:39:47 2007
***************
*** 10,15 ****
--- 10,18 ----
  use Carp;
  use File::Basename;
  use File::Copy;
+ use File::Find;
+ use File::Glob;
+ use File::Spec;
use Exporter;
  our (@ISA,@EXPORT_OK);
***************
*** 99,104 ****
--- 102,142 ----
      print "\n";
  }
+ sub FindFiles
+ {
+     my $spec = shift;
+     my $nonrecursive = shift;
+     my $pat = basename($spec);
+     my $dir = dirname($spec);
+ + if ($dir eq '') { $dir = '.'; } + + -d $dir || croak "Could not list directory $dir: $!\n"; + + if ($nonrecursive)
+     {
+         return glob($spec);
+     }
+ + # borrowed from File::DosGlob
+     # escape regex metachars but not glob chars
+     $pat =~ s:([].+^\-\${}[|]):\\$1:g;
+     # and convert DOS-style wildcards to regex
+     $pat =~ s/\*/.*/g;
+     $pat =~ s/\?/.?/g;
+ + $pat = '^' . $pat . '\z'; + + my @res;
+     find(
+         {
+             wanted => sub { /$pat/s && push (@res, 
File::Spec->canonpath($File::Find::name)); }
+         },
+         $dir
+     );
+     return @res;
+ }
+ sub CopySetOfFiles
  {
      my $what = shift;
***************
*** 106,126 ****
      my $target = shift;
      my $silent = shift;
      my $norecurse = shift;
-     my $D;
- my $subdirs = $norecurse?'':'/s';
      print "Copying $what" unless ($silent);
!     open($D, "dir /b $subdirs $spec |") || croak "Could not list $spec\n";
!     while (<$D>)
      {
-         chomp;
          next if /regress/; # Skip temporary install in regression subdir
!         my $tgt = $target . basename($_);
          print ".";
!         my $src = $norecurse?(dirname($spec) . '/' . $_):$_;
!         copy($src, $tgt) || croak "Could not copy $src: $!\n";
      }
!     close($D);
      print "\n";
  }
--- 144,161 ----
      my $target = shift;
      my $silent = shift;
      my $norecurse = shift;
print "Copying $what" unless ($silent); ! ! foreach (FindFiles($spec, $norecurse))
      {
          next if /regress/; # Skip temporary install in regression subdir
!         my $src = $_;
!         my $tgt = $target . basename($src);
          print ".";
!         copy($src, $tgt) || croak "Could not copy $src to $tgt: $!\n";
      }
! print "\n";
  }
***************
*** 371,395 ****
  {
      my $target = shift;
      my $nlspath = shift;
-     my $D;
print "Installing NLS files...";
      EnsureDirectories($target, "share/locale");
!     open($D,"dir /b /s nls.mk|") || croak "Could not list nls.mk\n";
!     while (<$D>)
      {
-         chomp;
          s/nls.mk/po/;
          my $dir = $_;
          next unless ($dir =~ /([^\\]+)\\po$/);
          my $prgm = $1;
          $prgm = 'postgres' if ($prgm eq 'backend');
-         my $E;
-         open($E,"dir /b $dir\\*.po|") || croak "Could not list contents of 
$_\n";
! while (<$E>)
          {
-             chomp;
              my $lang;
              next unless /^(.*)\.po/;
              $lang = $1;
--- 406,425 ----
  {
      my $target = shift;
      my $nlspath = shift;
print "Installing NLS files...";
      EnsureDirectories($target, "share/locale");
! ! foreach (FindFiles("nls.mk"))
      {
          s/nls.mk/po/;
          my $dir = $_;
          next unless ($dir =~ /([^\\]+)\\po$/);
          my $prgm = $1;
          $prgm = 'postgres' if ($prgm eq 'backend');
! foreach (FindFiles("$dir\\*.po", 1))
          {
              my $lang;
              next unless /^(.*)\.po/;
              $lang = $1;
***************
*** 401,409 ****
                && croak("Could not run msgfmt on $dir\\$_");
              print ".";
          }
-         close($E);
      }
!     close($D);
      print "\n";
  }
--- 431,438 ----
                && croak("Could not run msgfmt on $dir\\$_");
              print ".";
          }
      }
! print "\n";
  }
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend


---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to