./lib/ExtUtils/t/Command.t	was not binmode()ing a test file
./os2/OS2/ExtAttr/t/os2_ea.t	JFS not allowing EAs with certain chars
					we are not testing for bugs in
					filesystems, so avoid these chars
./t/io/fs.t			fchown() may call chown(), so the error
					message may come from chown()
./t/op/getppid.t		Reparenting semantic different on OS/2
				ppid() goes up the tree, not to 1
diff_perl588_time_neg_epoch	Replaces diff_perl587_2005_time_neg_epoch
diff_perl588_test_fixes		Replaces diff_perl587_2005_test_fixes
./ext/IO/t/io_unix.t		On OS/2, "unix domain"-like sockets live
					in a separate part of the
					filesystem; we relocate those
					with absolute path there,
					but relative-path ones are
					not supported
./t/op/stat.t			Was living garbage behind
./lib/Time/Local.t		Was assuming that time_t is signed

--- ./lib/ExtUtils/t/Command.t-ini	Thu Nov 10 09:17:54 2005
+++ ./lib/ExtUtils/t/Command.t	Wed Dec 13 14:16:00 2006
@@ -257,6 +257,7 @@ BEGIN {
 {
     { local @ARGV = 'd2utest'; mkpath; }
     open(FILE, '>d2utest/foo');
+    binmode(FILE);
     print FILE "stuff\015\012and thing\015\012";
     close FILE;
 
--- ./os2/OS2/ExtAttr/t/os2_ea.t-pre-transact	Sat Sep  3 18:03:14 2005
+++ ./os2/OS2/ExtAttr/t/os2_ea.t	Sat Nov 25 16:55:40 2006
@@ -37,9 +37,14 @@ system 'cmd', '/c', 'echo OK > t.out';
   print "ok 2\n";
   
   keys %a == 0 ? print "ok 3\n" : print "not ok 3\n";
-  $a{'++'} = '---';
+# Standard Extended Attributes (SEAs) have a dot (.) as a prefix.
+# This identifies the extended attribute as a SEA. The leading dot is reserved,
+# so applications should not define extended attributes that start with a dot.
+# Also, extended attributes 
+# that start with the characters $, @, &, or + are reserved for system use.
+  $a{'X--Y'} = '---';		# '++', -++', '!++', 'X++Y' fail on JFS
   print "ok 4\n";
-  $a{'AAA'} = 'xyz';
+  $a{'AAA'} = 'xyz';		# Name is going to be uppercased???
   print "ok 5\n";
 }
 
@@ -51,10 +56,10 @@ system 'cmd', '/c', 'echo OK > t.out';
   my $c = keys %a;
   $c == 2 ? print "ok 7\n" : print "not ok 7\n# c=$c\n";
   my @b = sort keys %a;
-  "@b" eq '++ AAA' ? print "ok 8\n" : print "not ok 8\n# keys=`@b'\n";
-  $a{'++'} eq '---' ? print "ok 9\n" : print "not ok 9\n";;
+  "@b" eq 'AAA X--Y' ? print "ok 8\n" : print "not ok 8\n# keys=`@b'\n";
+  $a{'X--Y'} eq '---' ? print "ok 9\n" : print "not ok 9\n";;
   $a{'AAA'} eq 'xyz' ? print "ok 10\n" : print "not ok 10\n# aaa->`$a{AAA}'\n";
-  $c = delete $a{'++'};
+  $c = delete $a{'X--Y'};
   $c eq '---' ? print "ok 11\n" : print "not ok 11\n# deleted->`$c'\n";;
 }
 
@@ -70,10 +75,11 @@ print "ok 12\n";
   "@b" eq 'AAA' ? print "ok 15\n" : print "not ok 15\n";
   $a{'AAA'} eq 'xyz' ? print "ok 16\n" : print "not ok 16\n";;
   ! exists $a{'+'} ? print "ok 17\n" : print "not ok 17\n";;
-  ! defined $a{'+'} ? print "ok 18\n" : print "not ok 18\n# ->`$a{'++'}'\n";;
-  ! exists $a{'++'} ? print "ok 19\n" : print "not ok 19\n";;
-  ! defined $a{'++'} ? print "ok 20\n" : print "not ok 20\n# ->`$a{'++'}'\n";;
+  ! defined $a{'+'} ? print "ok 18\n" : print "not ok 18\n# ->`$a{'X--Y'}'\n";;
+  ! exists $a{'X--Y'} ? print "ok 19\n" : print "not ok 19\n";;
+  ! defined $a{'X--Y'} ? print "ok 20\n" : print "not ok 20\n# ->`$a{'X--Y'}'\n";;
 }
 
 print "ok 21\n";
 unlink 't.out';
+ 
--- ./t/io/fs.t-pre	Sun Jan  8 13:46:14 2006
+++ ./t/io/fs.t	Tue Dec 12 23:08:00 2006
@@ -200,7 +200,7 @@ SKIP: {
     skip "has fchown", 1 if ($Config{d_fchown} || "") eq "define";
     open(my $fh, "<", "a");
     eval { chown(0, 0, $fh); };
-    like($@, qr/^The fchown function is unimplemented at/, "fchown is unimplemented");
+    like($@, qr/^The f?chown function is unimplemented at/, "fchown is unimplemented");
 }
 
 is(rename('a','b'), 1, "rename a b");
--- ./t/op/getppid.t-pre	Sun Jun  5 05:01:26 2005
+++ ./t/op/getppid.t	Tue Dec 12 23:53:20 2006
@@ -22,6 +22,7 @@ BEGIN {
 }
 
 pipe my ($r, $w) or die "pipe: $!\n";
+my $opid1 = $$;
 my $pid = fork; defined $pid or die "fork: $!\n";
 
 if ($pid) {
@@ -33,6 +34,7 @@ if ($pid) {
 else {
     # child
     close $r;
+    my $opid2 = $$;
     my $pid2 = fork; defined $pid2 or die "fork: $!\n";
     if ($pid2) {
 	close $w;
@@ -47,8 +49,9 @@ else {
 	my $ppid2 = getppid();
 	print $w "not " if $ppid1 == $ppid2;
 	print $w "ok 2 # ppid2=$ppid2, ppid1!=ppid2\n";
-	print $w "not " if $ppid2 != 1;
-	print $w "ok 3 # ppid2=1\n";
+	my $expected = ($^O eq 'os2' ? $opid1 : 1); # goes up the tree on OS/2
+	print $w "not " if $ppid2 != $expected;
+	print $w "ok 3 # ppid2 $ppid2==$expected [opid1=$opid1, opid2=$opid2]\n";
     }
     exit 0;
 }
diff -pru perl-5.8.7-min-patched/ext/IO/t/io_unix.t perl-5.8.7-patched/ext/IO/t/io_unix.t
--- perl-5.8.7-min-patched/ext/IO/t/io_unix.t	Sun Feb  1 05:30:14 2004
+++ perl-5.8.7-patched/ext/IO/t/io_unix.t	Mon Nov 27 20:59:06 2006
@@ -39,6 +39,13 @@ BEGIN {
 
 $PATH = "sock-$$";
 
+if ($^O eq 'os2') {	# Can't create sockets with relative path...
+  require Cwd;
+  my $d = Cwd::cwd();
+  $d =~ s/^[a-z]://i;
+  $PATH = "$d/$PATH";
+}
+
 # Test if we can create the file within the tmp directory
 if (-e $PATH or not open(TEST, ">$PATH") and $^O ne 'os2') {
     print "1..0 # Skip: cannot open '$PATH' for write\n";
diff -pru perl-5.8.7-min-patched/t/op/stat.t perl-5.8.7-patched/t/op/stat.t
--- perl-5.8.7-min-patched/t/op/stat.t	Thu Apr  7 09:07:50 2005
+++ perl-5.8.7-patched/t/op/stat.t	Mon Nov 27 20:59:12 2006
@@ -41,7 +41,7 @@ my $Curdir = File::Spec->curdir;
 my $tmpfile = 'Op_stat.tmp';
 my $tmpfile_link = $tmpfile.'2';
 
-
+chmod 0666, $tmpfile;
 1 while unlink $tmpfile;
 open(FOO, ">$tmpfile") || DIE("Can't open temp test file: $!");
 close FOO;
@@ -466,5 +466,6 @@ ok(unlink($f), 'unlink tmp file');
 }
 
 END {
+    chmod 0666, $tmpfile;
     1 while unlink $tmpfile;
 }
--- ./perl-5.8.8/lib/Time/Local.t.orig	Wed Aug 17 03:05:12 2005
+++ ./perl-5.8.8/lib/Time/Local.t	Tue Nov 28 03:09:18 2006
@@ -56,7 +56,8 @@ my @neg_time =
 # Use 3 days before the start of the epoch because with Borland on
 # Win32 it will work for -3600 _if_ your time zone is +01:00 (or
 # greater).
-my $neg_epoch_ok = defined ((localtime(-259200))[0]) ? 1 : 0;
+my $neg_epoch_ok =	# take into account systems with unsigned time too
+    (defined ((localtime(-259200))[0]) and (localtime(-259200))[5] == 69) ? 1 : 0;
 
 # use vmsish 'time' makes for oddness around the Unix epoch
 if ($^O eq 'VMS') { 
