--- a
+++ b/perl/pl-CYG10-95f6fab9_skip_testing_cygwin_utf8_readdir_with_Win32_ANSI_API.patch
@@ -0,0 +1,183 @@
+From: Reini Urban <rurban@x-ray.at>
+Subject: [PATCH] skip testing cygwin utf8 readdir() with Win32 ANSI API
+Author: Reini Urban <rurban@x-ray.at>
+Date:   Tue Apr 12 12:29:30 2011 +0200
+
+diff --git a/cpan/Win32/t/Unicode.t b/cpan/Win32/t/Unicode.t
+index 3570142..154372b 100644
+--- a/cpan/Win32/t/Unicode.t
++++ b/cpan/Win32/t/Unicode.t
+@@ -1,85 +1,88 @@
+-use strict;
+-use Test;
+-use Cwd qw(cwd);
+-use Win32;
+-
+-BEGIN {
+-    unless (defined &Win32::BuildNumber && Win32::BuildNumber() >= 820 or $] >= 5.008009) {
+-	print "1..0 # Skip: Needs ActivePerl 820 or Perl 5.8.9 or later\n";
+-	exit 0;
+-    }
+-    if ((((Win32::FsType())[1] & 4) == 0) || (Win32::FsType() =~ /^FAT/)) {
+-	print "1..0 # Skip: Filesystem doesn't support Unicode\n";
+-	exit 0;
+-    }
+-    unless ((Win32::GetOSVersion())[1] > 4) {
+-	print "1..0 # Skip: Unicode support requires Windows 2000 or later\n";
+-	exit 0;
+-    }
+-}
+-
+-my $home = Win32::GetCwd();
+-my $cwd  = cwd(); # may be a Cygwin path
+-my $dir  = "Foo \x{394}\x{419} Bar \x{5E7}\x{645} Baz";
+-my $file = "$dir\\xyzzy \x{394}\x{419} plugh \x{5E7}\x{645}";
+-
+-sub cleanup {
+-    chdir($home);
+-    my $ansi = Win32::GetANSIPathName($file);
+-    unlink($ansi) if -f $ansi;
+-    $ansi = Win32::GetANSIPathName($dir);
+-    rmdir($ansi) if -d $ansi;
+-}
+-
+-cleanup();
+-END { cleanup() }
+-
+-plan test => 12;
+-
+-# Create Unicode directory
+-Win32::CreateDirectory($dir);
+-ok(-d Win32::GetANSIPathName($dir));
+-
+-# Create Unicode file
+-Win32::CreateFile($file);
+-ok(-f Win32::GetANSIPathName($file));
+-
+-# readdir() returns ANSI form of Unicode filename
+-ok(opendir(my $dh, Win32::GetANSIPathName($dir)));
+-while ($_ = readdir($dh)) {
+-    next if /^\./;
+-    ok($file, Win32::GetLongPathName("$dir\\$_"));
+-}
+-closedir($dh);
+-
+-# Win32::GetLongPathName() of the absolute path restores the Unicode dir name
+-my $full = Win32::GetFullPathName($dir);
+-my $long = Win32::GetLongPathName($full);
+-
+-ok($long, Win32::GetLongPathName($home)."\\$dir");
+-
+-# We can Win32::SetCwd() into the Unicode directory
+-ok(Win32::SetCwd($dir));
+-
+-my $w32dir = Win32::GetCwd();
+-# cwd() also returns a usable ANSI directory name
+-my $subdir = cwd();
+-
+-# change back to home directory to make sure relative paths
+-# in @INC continue to work
+-ok(chdir($home));
+-ok(Win32::GetCwd(), $home);
+-
+-ok(Win32::GetLongPathName($w32dir), $long);
+-
+-# cwd() on Cygwin returns a mapped path that we need to translate
+-# back to a Windows path. Invoking `cygpath` on $subdir doesn't work.
+-if ($^O eq "cygwin") {
+-    $subdir = Cygwin::posix_to_win_path($subdir, 1);
+-}
+-$subdir =~ s,/,\\,g;
+-ok(Win32::GetLongPathName($subdir), $long);
+-
+-# We can chdir() into the Unicode directory if we use the ANSI name
+-ok(chdir(Win32::GetANSIPathName($dir)));
+-ok(Win32::GetLongPathName(Win32::GetCwd()), $long);
++use strict;
++use Test;
++use Cwd qw(cwd);
++use Config qw(%Config);
++use Win32;
++
++BEGIN {
++    unless (defined &Win32::BuildNumber && Win32::BuildNumber() >= 820 or $] >= 5.008009) {
++	print "1..0 # Skip: Needs ActivePerl 820 or Perl 5.8.9 or later\n";
++	exit 0;
++    }
++    if ((((Win32::FsType())[1] & 4) == 0) || (Win32::FsType() =~ /^FAT/)) {
++	print "1..0 # Skip: Filesystem doesn't support Unicode\n";
++	exit 0;
++    }
++    unless ((Win32::GetOSVersion())[1] > 4) {
++	print "1..0 # Skip: Unicode support requires Windows 2000 or later\n";
++	exit 0;
++    }
++}
++
++my $home = Win32::GetCwd();
++my $cwd  = cwd(); # may be a Cygwin path
++my $dir  = "Foo \x{394}\x{419} Bar \x{5E7}\x{645} Baz";
++my $file = "$dir\\xyzzy \x{394}\x{419} plugh \x{5E7}\x{645}";
++
++sub cleanup {
++    chdir($home);
++    my $ansi = Win32::GetANSIPathName($file);
++    unlink($ansi) if -f $ansi;
++    $ansi = Win32::GetANSIPathName($dir);
++    rmdir($ansi) if -d $ansi;
++}
++
++cleanup();
++END { cleanup() }
++
++plan test => 12;
++
++# Create Unicode directory
++Win32::CreateDirectory($dir);
++ok(-d Win32::GetANSIPathName($dir));
++
++# Create Unicode file
++Win32::CreateFile($file);
++ok(-f Win32::GetANSIPathName($file));
++
++# readdir() returns ANSI form of Unicode filename
++# but on cygwin-1.7 the utf-8 form.
++ok(opendir(my $dh, Win32::GetANSIPathName($dir)));
++while ($_ = readdir($dh)) {
++    next if /^\./;
++    skip($^O eq 'cygwin' and $Config{osvers} ge "1.7" ? "do not test cygwin utf8 readdir()" : 0,
++         $file, Win32::GetLongPathName("$dir\\$_"));
++}
++closedir($dh);
++
++# Win32::GetLongPathName() of the absolute path restores the Unicode dir name
++my $full = Win32::GetFullPathName($dir);
++my $long = Win32::GetLongPathName($full);
++
++ok($long, Win32::GetLongPathName($home)."\\$dir");
++
++# We can Win32::SetCwd() into the Unicode directory
++ok(Win32::SetCwd($dir));
++
++my $w32dir = Win32::GetCwd();
++# cwd() also returns a usable ANSI directory name
++my $subdir = cwd();
++
++# change back to home directory to make sure relative paths
++# in @INC continue to work
++ok(chdir($home));
++ok(Win32::GetCwd(), $home);
++
++ok(Win32::GetLongPathName($w32dir), $long);
++
++# cwd() on Cygwin returns a mapped path that we need to translate
++# back to a Windows path. Invoking `cygpath` on $subdir doesn't work.
++if ($^O eq "cygwin") {
++    $subdir = Cygwin::posix_to_win_path($subdir, 1);
++}
++$subdir =~ s,/,\\,g;
++ok(Win32::GetLongPathName($subdir), $long);
++
++# We can chdir() into the Unicode directory if we use the ANSI name
++ok(chdir(Win32::GetANSIPathName($dir)));
++ok(Win32::GetLongPathName(Win32::GetCwd()), $long);