From: Jarkko Hietaniemi Date: Sat, 21 Jul 2001 23:02:30 +0000 (+0000) Subject: Integrate change #11388 from macperl (the *.t parts needed hand massage). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=d536870a93a670c31df812c6614c7c6180896307;p=p5sagit%2Fp5-mst-13.2.git Integrate change #11388 from macperl (the *.t parts needed hand massage). p4raw-link: @11388 on //depot/maint-5.6/macperl: fa1e76071cf9cd14bdc552967af2da831117260a p4raw-id: //depot/perl@11432 p4raw-branched: from //depot/maint-5.6/macperl@11423 'branch in' macos/MacPerlTests.cmd (@11243..) p4raw-branched: from //depot/maint-5.6/macperl@11388 'branch in' macos/xsubpp.patch (@11243..) --- diff --git a/ext/DB_File/t/db-btree.t b/ext/DB_File/t/db-btree.t index 4b4a796..2374810 100755 --- a/ext/DB_File/t/db-btree.t +++ b/ext/DB_File/t/db-btree.t @@ -142,7 +142,8 @@ ok(19, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_BTREE )) ; my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -ok(20, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'NetWare'); +ok(20, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) + || $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'NetWare'); my ($key, $value, $i); while (($key,$value) = each(%h)) { diff --git a/ext/DB_File/t/db-hash.t b/ext/DB_File/t/db-hash.t index 6f2ef37..1dbb21d 100755 --- a/ext/DB_File/t/db-hash.t +++ b/ext/DB_File/t/db-hash.t @@ -108,7 +108,8 @@ ok(15, $X = tie(%h, 'DB_File',$Dfile, O_RDWR|O_CREAT, 0640, $DB_HASH ) ); my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime, $blksize,$blocks) = stat($Dfile); -ok(16, ($mode & 0777) == ($^O eq 'os2' ? 0666 : 0640) || $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'NetWare'); +ok(16, ($mode & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) || + $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'NetWare'); my ($key, $value, $i); while (($key,$value) = each(%h)) { diff --git a/ext/DB_File/t/db-recno.t b/ext/DB_File/t/db-recno.t index 6dd913c..13c6355 100755 --- a/ext/DB_File/t/db-recno.t +++ b/ext/DB_File/t/db-recno.t @@ -152,7 +152,7 @@ my $X ; my @h ; ok(17, $X = tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) ; -ok(18, ((stat($Dfile))[2] & 0777) == ($^O eq 'os2' ? 0666 : 0640) +ok(18, ((stat($Dfile))[2] & 0777) == (($^O eq 'os2' || $^O eq 'MacOS') ? 0666 : 0640) || $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'amigaos') ; #my $l = @h ; diff --git a/ext/NDBM_File/ndbm.t b/ext/NDBM_File/ndbm.t index cb975e0..f560343 100755 --- a/ext/NDBM_File/ndbm.t +++ b/ext/NDBM_File/ndbm.t @@ -40,7 +40,7 @@ my $Dfile = "Op.dbmx.pag"; if (! -e $Dfile) { ($Dfile) = ; } -if ($^O eq 'amigaos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'NetWare') { +if ($^O eq 'amigaos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'NetWare' || $^O eq 'MacOS') { print "ok 2 # Skipped: different file permission semantics\n"; } else { @@ -137,7 +137,7 @@ print ($h{'foo'} eq '' ? "ok 11\n" : "not ok 11\n"); print ($h{''} eq 'bar' ? "ok 12\n" : "not ok 12\n"); untie %h; -unlink 'Op.dbmx.dir', $Dfile; +unlink , $Dfile; { # sub-class test diff --git a/ext/POSIX/POSIX.t b/ext/POSIX/POSIX.t index 2c52f26..a5dc9b8 100755 --- a/ext/POSIX/POSIX.t +++ b/ext/POSIX/POSIX.t @@ -21,6 +21,7 @@ $Is_W32 = $^O eq 'MSWin32'; $Is_NetWare = $^O eq 'NetWare'; $Is_Dos = $^O eq 'dos'; $Is_MPE = $^O eq 'mpeix'; +$Is_MacOS = $^O eq 'MacOS'; $testfd = open("TEST", O_RDONLY, 0) and print "ok 1\n"; read($testfd, $buffer, 9) if $testfd > 2; @@ -52,34 +53,51 @@ else { $sigset = new POSIX::SigSet 1,3; delset $sigset 1; if (!ismember $sigset 1) { print "ok 6\n" } -if (ismember $sigset 3) { print "ok 7\n" } -$mask = new POSIX::SigSet &SIGINT; -$action = new POSIX::SigAction 'main::SigHUP', $mask, 0; -sigaction(&SIGHUP, $action); -$SIG{'INT'} = 'SigINT'; -kill 'HUP', $$; -sleep 1; -print "ok 11\n"; - -sub SigHUP { - print "ok 8\n"; - kill 'INT', $$; - sleep 2; - print "ok 9\n"; -} +if ( ismember $sigset 3) { print "ok 7\n" } -sub SigINT { - print "ok 10\n"; +if ($Is_MacOS) { + for (8..11) { + print "ok $_ # skipped, no kill() support on Mac OS\n"; + } } +else { + $mask = new POSIX::SigSet &SIGINT; + $action = new POSIX::SigAction 'main::SigHUP', $mask, 0; + sigaction(&SIGHUP, $action); + $SIG{'INT'} = 'SigINT'; + kill 'HUP', $$; + sleep 1; + print "ok 11\n"; + + sub SigHUP { + print "ok 8\n"; + kill 'INT', $$; + sleep 2; + print "ok 9\n"; + } + + sub SigINT { + print "ok 10\n"; + } } if ($Is_MPE) { print "ok 12 # skipped, _POSIX_OPEN_MAX is inaccurate on MPE\n" } else { - print &_POSIX_OPEN_MAX > $fds[1] ? "ok 12\n" : "not ok 12\n" + if (&_POSIX_OPEN_MAX) { + print &_POSIX_OPEN_MAX > $fds[1] ? "ok 12\n" : "not ok 12\n"; + } else { + print "ok 12 # _POSIX_OPEN_MAX undefined ($fds[1])\n"; + } } -print getcwd() =~ m#[/\\]t$# ? "ok 13\n" : "not ok 13\n"; +my $pat; +if ($Is_MacOS) { + $pat = qr/:t:$/; +} else { + $pat = qr#/t$#; +} +print getcwd() =~ $pat ? "ok 13\n" : "not ok 13\n"; # Check string conversion functions. @@ -153,7 +171,7 @@ try_strftime(27, "Fri Mar 31 00:00:00 2000 091", 0,0,0, 31,2,100); $| = 0; # The following line assumes buffered output, which may be not true with EMX: -print '@#!*$@(!@#$' unless ($^O eq 'os2' || $^O eq 'uwin' || $^O eq 'os390' || +print '@#!*$@(!@#$' unless ($Is_MacOS || $^O eq 'os2' || $^O eq 'uwin' || $^O eq 'os390'); (defined $ENV{PERLIO} && $ENV{PERLIO} eq 'unix' && $Config::Config{useperlio})); diff --git a/macos/MacPerlTests.cmd b/macos/MacPerlTests.cmd new file mode 100644 index 0000000..3b8854d --- /dev/null +++ b/macos/MacPerlTests.cmd @@ -0,0 +1,603 @@ +# ::macos:perl -I::lib -e 'for(<:*:*.t>){open my $fh,"<$_";$t=<$fh>=~/(T)/?"-T":" ";$s="$^X -I::lib $t $_"; print qq[echo "$s"\n$s\n]}' +set -e MACPERL "" +set -e PERL5LIB "" +perl -e '`set -e MACPERL_OLD "{{MACPERL}}"` if `echo {{MACPERL}}`' +perl -e '`set -e PERL5LIB_OLD "{{PERL5LIB}}"` if `echo {{PERL5LIB}}`' +perl -e '`set -e MACPERL ""`' +perl -e '`set -e PERL5LIB ""`' +echo "# When finished, execute these lines to restore your ToolServer environment:" +echo "perl -e '¶`set -e MACPERL ¶"¶{¶{MACPERL_OLD¶}¶}¶"¶` if ¶`echo ¶{¶{MACPERL_OLD¶}¶}¶`'" +echo "perl -e '¶`set -e PERL5LIB ¶"¶{¶{PERL5LIB_OLD¶}¶}¶"¶` if ¶`echo ¶{¶{PERL5LIB_OLD¶}¶}¶`'" +echo "" + +perl -e 'open F, ">::macos:MacPerlTests.out"' +open ::macos:MacPerlTests.out + +echo "::macos:perl -I::lib :base:cond.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:cond.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :base:if.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:if.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :base:lex.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:lex.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :base:pat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:pat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :base:rs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:rs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :base:term.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :base:term.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:elsif.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:elsif.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:for.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:for.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:mod.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:mod.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:subval.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:subval.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:switch.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:switch.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :cmd:while.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :cmd:while.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:bproto.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:bproto.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:cmdopt.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:cmdopt.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:colon.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:colon.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:cpp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:cpp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:decl.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:decl.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:multiline.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:multiline.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:package.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:package.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:proto.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:proto.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:redef.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:redef.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:require.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:require.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:script.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:script.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:term.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:term.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :comp:use.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :comp:use.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:argv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:argv.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:dup.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:dup.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:fs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:fs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:inplace.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:inplace.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:iprefix.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:iprefix.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:nargv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:nargv.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:open.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:open.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:openpid.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:openpid.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:pipe.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:pipe.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:print.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:print.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:read.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:read.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :io:tell.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :io:tell.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:abbrev.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:abbrev.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:ansicolor.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:ansicolor.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:anydbm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:anydbm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:attrs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:attrs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:autoloader.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:autoloader.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:b.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:b.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :lib:basename.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :lib:basename.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:bigfloat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:bigfloat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:bigfltpm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:bigfltpm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:bigint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:bigint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:bigintpm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:bigintpm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-esc.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-esc.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-form.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-form.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-function.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-function.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-html.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-html.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-pretty.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-pretty.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:cgi-request.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:cgi-request.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:charnames.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:charnames.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:checktree.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:checktree.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:class-struct.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:class-struct.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:complex.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:complex.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:db-btree.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:db-btree.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:db-hash.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:db-hash.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:db-recno.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:db-recno.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:dirhand.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:dirhand.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:dosglob.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:dosglob.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:dprof.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:dprof.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:dumper-ovl.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:dumper-ovl.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:dumper.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:dumper.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:english.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:english.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:env-array.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:env-array.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:env.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:env.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:errno.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:errno.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:fatal.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:fatal.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:fields.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:fields.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filecache.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filecache.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filecopy.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filecopy.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :lib:filefind-taint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :lib:filefind-taint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filefind.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filefind.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filefunc.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filefunc.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filehand.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filehand.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filepath.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filepath.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:filespec.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:filespec.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:findbin.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:findbin.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:ftmp-mktemp.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:ftmp-mktemp.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:ftmp-posix.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:ftmp-posix.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:ftmp-security.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:ftmp-security.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :lib:ftmp-tempfile.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :lib:ftmp-tempfile.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:gdbm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:gdbm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:getopt.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:getopt.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:glob-basic.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:glob-basic.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:glob-case.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:glob-case.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:glob-global.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:glob-global.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :lib:glob-taint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :lib:glob-taint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:gol-basic.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:gol-basic.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:gol-compat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:gol-compat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:gol-linkage.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:gol-linkage.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:gol-oo.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:gol-oo.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:h2ph.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:h2ph.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:hostname.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:hostname.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_const.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_const.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_dir.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_dir.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_dup.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_dup.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_linenum.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_linenum.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_multihomed.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_multihomed.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_pipe.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_pipe.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_poll.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_poll.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_sel.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_sel.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_sock.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_sock.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :lib:io_taint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :lib:io_taint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_tell.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_tell.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_udp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_udp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_unix.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_unix.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:io_xs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:io_xs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:ipc_sysv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:ipc_sysv.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:ndbm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:ndbm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:odbm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:odbm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:opcode.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:opcode.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:open2.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:open2.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:open3.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:open3.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:ops.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:ops.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:parsewords.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:parsewords.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:peek.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:peek.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:ph.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:ph.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:posix.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:posix.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:safe1.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:safe1.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:safe2.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:safe2.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:sdbm.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:sdbm.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:searchdict.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:searchdict.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:selectsaver.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:selectsaver.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:selfloader.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:selfloader.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:socket.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:socket.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:soundex.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:soundex.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:symbol.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:symbol.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:syslfs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:syslfs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:syslog.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:syslog.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:textfill.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:textfill.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:texttabs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:texttabs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:textwrap.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:textwrap.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:thr5005.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:thr5005.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-push.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-push.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-refhash.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-refhash.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-splice.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-splice.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-stdarray.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-stdarray.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-stdhandle.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-stdhandle.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-stdpush.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-stdpush.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:tie-substrhash.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:tie-substrhash.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:timelocal.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:timelocal.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :lib:trig.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :lib:trig.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:64bitint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:64bitint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:anonsub.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:anonsub.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:append.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:append.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:args.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:args.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:arith.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:arith.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:array.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:array.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:assignwarn.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:assignwarn.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:attrs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:attrs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:auto.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:auto.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:avhv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:avhv.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:bop.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:bop.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:chars.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:chars.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:chop.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:chop.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:closure.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:closure.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:cmp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:cmp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:concat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:concat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:cond.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:cond.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:context.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:context.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:defins.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:defins.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:delete.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:delete.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:die.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:die.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :op:die_exit.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :op:die_exit.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:do.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:do.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:each.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:each.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:eval.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:eval.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:exec.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:exec.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:exists_sub.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:exists_sub.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:exp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:exp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:fh.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:fh.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:filetest.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:filetest.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:flip.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:flip.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:fork.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:fork.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:glob.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:glob.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:goto.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:goto.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:goto_xs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:goto_xs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:grent.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:grent.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:grep.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:grep.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:groups.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:groups.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:gv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:gv.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:hashwarn.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:hashwarn.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:inc.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:inc.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:index.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:index.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:int.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:int.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:join.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:join.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:length.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:length.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:lex_assign.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:lex_assign.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:lfs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:lfs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:list.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:list.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:local.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:local.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:lop.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:lop.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :op:magic.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :op:magic.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:method.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:method.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :op:misc.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :op:misc.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:mkdir.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:mkdir.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:my.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:my.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:my_stash.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:my_stash.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:nothr5005.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:nothr5005.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:numconvert.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:numconvert.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:oct.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:oct.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:ord.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:ord.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:pack.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:pack.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:pat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:pat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:pos.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:pos.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:push.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:push.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:pwent.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:pwent.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:quotemeta.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:quotemeta.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:rand.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:rand.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:range.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:range.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:read.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:read.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:readdir.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:readdir.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:recurse.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:recurse.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:ref.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:ref.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:regexp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:regexp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:regexp_noamp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:regexp_noamp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:regmesg.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:regmesg.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:repeat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:repeat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:reverse.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:reverse.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:runlevel.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:runlevel.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:sleep.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:sleep.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:sort.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:sort.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:splice.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:splice.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:split.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:split.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :op:sprintf.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :op:sprintf.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:stat.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:stat.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:study.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:study.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:subst.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:subst.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:subst_amp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:subst_amp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:subst_wamp.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:subst_wamp.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:substr.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:substr.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:sysio.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:sysio.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :op:taint.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :op:taint.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:tie.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:tie.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:tiearray.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:tiearray.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:tiehandle.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:tiehandle.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:time.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:time.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:tr.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:tr.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:undef.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:undef.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:universal.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:universal.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:unshift.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:unshift.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:utf8decode.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:utf8decode.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:vec.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:vec.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:ver.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:ver.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:wantarray.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:wantarray.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :op:write.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :op:write.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:emptycmd.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:emptycmd.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:find.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:find.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:for.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:for.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:headings.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:headings.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:include.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:include.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:included.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:included.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:lref.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:lref.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:multiline_items.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:multiline_items.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:nested_items.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:nested_items.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:nested_seqs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:nested_seqs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:oneline_cmds.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:oneline_cmds.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:pod2usage.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:pod2usage.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:poderrs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:poderrs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:podselect.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:podselect.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pod:special_seqs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pod:special_seqs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:constant.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:constant.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:diagnostics.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:diagnostics.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib -T :pragma:locale.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib -T :pragma:locale.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:overload.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:overload.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:strict.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:strict.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:sub_lval.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:sub_lval.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:subs.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:subs.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :pragma:utf8.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :pragma:utf8.t >> ::macos:MacPerlTests.out +# echo "::macos:perl -I::lib :pragma:warnings.t" >> ::macos:MacPerlTests.out +# ::macos:perl -I::lib :pragma:warnings.t >> ::macos:MacPerlTests.out +echo "::macos:perl -I::lib :run:runenv.t" >> ::macos:MacPerlTests.out +::macos:perl -I::lib :run:runenv.t >> ::macos:MacPerlTests.out + +::macos:perl -I::lib ::macos:MacPerlTests.plx ::macos:MacPerlTests.out >> ::macos:MacPerlTests.out + +echo "The following tests mostly work, but fail because of known" +echo "IO problems. Feel free to run them, and note the failures." +echo "These tests are known to fail. Run if you want to, but beware" +echo "because crashes are possible." +echo "" +echo "# DB is broken in a few different ways" +echo "::macos:perl -I::lib :lib:db-hash.t >> ::macos:MacPerlTests.out" +echo "::macos:perl -I::lib :lib:db-recno.t >> ::macos:MacPerlTests.out" +echo "" +echo "# DOS::Glob doesn't work ... do we care?" +echo "::macos:perl -I::lib :lib:dosglob.t >> ::macos:MacPerlTests.out" +echo "" +echo "# Devel::DProf seems to work, but test needs major work :/" +echo "::macos:perl -I::lib :lib:dprof.t >> ::macos:MacPerlTests.out" +echo "" +echo "# I have no idea about these ..." +echo "::macos:perl -I::lib :lib:ftmp-mktemp.t >> ::macos:MacPerlTests.out" +echo "::macos:perl -I::lib :lib:ftmp-posix.t >> ::macos:MacPerlTests.out" +echo "::macos:perl -I::lib :lib:ftmp-security.t >> ::macos:MacPerlTests.out" +echo "::macos:perl -I::lib :lib:ftmp-tempfile.t >> ::macos:MacPerlTests.out" +echo "" +echo "# system() fails to return a good value" +echo "::macos:perl -I::lib :op:die_exit.t >> ::macos:MacPerlTests.out" +echo "" +echo "# I dunno here" +echo "::macos:perl -I::lib :op:magic.t >> ::macos:MacPerlTests.out" +echo "" +echo "# fails test 48 (known problem in IO redirection)" +echo "::macos:perl -I::lib :op:misc.t >> ::macos:MacPerlTests.out" +echo "" +echo "# fails tests 129, 130, 142, 161 (known problem in sfio)" +echo "::macos:perl -I::lib :op:sprintf.t >> ::macos:MacPerlTests.out" +echo "" +echo "# fails tests 319, 329 (known problem in IO redirection)" +echo "::macos:perl -I::lib :pragma:warnings.t >> ::macos:MacPerlTests.out" diff --git a/macos/xsubpp.patch b/macos/xsubpp.patch new file mode 100644 index 0000000..6cce4e2 --- /dev/null +++ b/macos/xsubpp.patch @@ -0,0 +1,474 @@ +diff -ru :perl:lib:ExtUtils: :perl.new:lib:ExtUtils:xsubpp +--- :perl:lib:ExtUtils:xsubpp Mon Feb 19 17:07:32 2001 ++++ :perl.new:lib:ExtUtils:xsubpp Mon Feb 19 15:31:31 2001 +@@ -173,7 +173,13 @@ + ($dir, $filename) = $ARGV[0] =~ m#(.*)/(.*)# + or ($dir, $filename) = $ARGV[0] =~ m#(.*)\\(.*)# + or ($dir, $filename) = $ARGV[0] =~ m#(.*[>\]])(.*)# ++ or ($dir, $filename) = $ARGV[0] =~ m#(.*):(.*)# + or ($dir, $filename) = ('.', $ARGV[0]); ++ ++$Is_MacOS = $^O eq 'MacOS'; ++if ($Is_MacOS && $dir eq '.') { ++ $dir = ":"; ++} + chdir($dir); + $pwd = cwd(); + +@@ -209,9 +215,21 @@ + foreach $typemap (@tm) { + die "Can't find $typemap in $pwd\n" unless -r $typemap; + } +-unshift @tm, qw(../../../../lib/ExtUtils/typemap ../../../lib/ExtUtils/typemap ++if ($Is_MacOS) { my @tmp; ++ foreach (qw(:::: ::: :: :)) { ++ push @tmp, "$_:lib:ExtUtils:typemap"; ++ push @tmp, "$_:macos:lib:ExtUtils:typemap"; ++ push @tmp, "$_:Mac:typemap"; ++ push @tmp, "$_:macos:ext:Mac:typemap"; ++ push @tmp, "$_:typemap"; ++ } ++ unshift @tm, @tmp, "typemap"; ++} else { ++ unshift @tm, qw(../../../../lib/ExtUtils/typemap ../../../lib/ExtUtils/typemap + ../../lib/ExtUtils/typemap ../../../typemap ../../typemap + ../typemap typemap); ++} ++ + foreach $typemap (@tm) { + next unless -e $typemap ; + # skip directories, binary files etc. +@@ -364,7 +382,7 @@ + print("#line ", $line_no[@line_no - @line -1], " \"$filename\"\n") + if $WantLineNumbers && !/^\s*#\s*line\b/ && !/^#if XSubPPtmp/; + for (; defined($_) && !/^$BLOCK_re/o; $_ = shift(@line)) { +- print "$_\n"; ++ XS_process("$_\n"); + } + print "$xsubpp::counter::SECTION_END_MARKER\n" if $WantLineNumbers; + } +@@ -746,7 +764,85 @@ + $lastline_no = $. ; + + } +- ++ ++sub XS_PUSH_handler ++{ ++ my($type, $value, $xpush) = @_; ++ if ($xpush) { ++ print "\tEXTEND(sp, 1);\n"; ++ } ++ print "\t++sp;\n"; ++ &generate_output($type, 0, "($value)", "*sp", 1); ++ ""; ++} ++ ++sub XS_OUTPUT_handler ++{ ++ my($type, $value, $arg) = @_; ++ ++ &generate_output($type, 0, "($value)", 0, 0, $arg); ++ ""; ++} ++ ++sub XS_INPUT_handler ++{ ++ my($type, $var, $arg) = @_; ++ &generate_init($type, 0, $var, 0, 0, $arg, 1); ++ ""; ++} ++ ++ ++sub XS_POP_handler ++{ ++ my($type, $var, $pop) = @_; ++ &generate_init($type, 0, $var, "TOPs", 1); ++ print "\tPOPs;\n" if $pop; ++ ""; ++} ++ ++sub SplitArgs ++{ ++ my(@bits,@pieces,$item); ++ @bits = split /,/, $_[0]; ++ while (@bits) { ++ $item .= "," if $item; ++ $item .= shift @bits; ++ if (tr/(// == tr/)// ++ && tr/{// == tr/}// ++ && tr/[// == tr/]// ++ && !(tr/"// & 1) ++ && !(tr/'// & 1) ++ ) { ++ push @pieces, $item; ++ $item = ""; ++ } ++ } ++ @pieces; ++} ++ ++sub XS_process ++{ ++ my($text) = @_; ++ ++ while (length($text)) { ++ if ($text =~ s/^.*\bXS_PUSH\(([^,]+),\s*(.*)\)\s*;?.*\n?//) { ++ XS_PUSH_handler($1, $2, 0); ++ } elsif ($text =~ s/^.*\bXS_XPUSH\(([^,]+),\s*(.*)\)\s*;?.*\n?//) { ++ XS_PUSH_handler($1, $2, 1); ++ } elsif ($text =~ s/^.*\bXS_OUTPUT\((.*)\)\s*;?.*\n?//) { ++ XS_OUTPUT_handler(SplitArgs($1)); ++ } elsif ($text =~ s/^.*\bXS_INPUT\((.*)\)\s*;?.*\n?//) { ++ XS_INPUT_handler(SplitArgs($1)); ++ } elsif ($text =~ s/^.*\bXS_POP\(([^,]+),\s*(.*)\)\s*;?.*\n?//) { ++ XS_POP_handler($1, $2, 1); ++ } elsif ($text =~ s/^.*\bXS_TOP\(([^,]+),\s*(.*)\)\s*;?.*\n?//) { ++ XS_POP_handler($1, $2, 0); ++ } elsif ($text =~ s/^(.*\n?)//) { ++ print $1; ++ } ++ } ++} ++ + sub PopFile() + { + return 0 unless $XSStack[-1]{type} eq 'file' ; +@@ -861,8 +957,8 @@ + my $podstartline = $.; + do { + if (/^=cut\s*$/) { +- print("/* Skipped embedded POD. */\n"); +- printf("#line %d \"$filename\"\n", $. + 1) ++ XS_process("/* Skipped embedded POD. */\n"); ++ XS_process(sprintf("#line %d \"$filename\"\n", $. + 1)) + if $WantLineNumbers; + next firstmodule + } +@@ -880,7 +976,7 @@ + if ($OBJ) { + s/#if(?:def\s|\s+defined)\s*(\(__cplusplus\)|__cplusplus)/#if defined(__cplusplus) && !defined(PERL_OBJECT)/; + } +- print $_; ++ XS_process($_); + } + &Exit unless defined $_; + +@@ -949,6 +1045,185 @@ + 1; + } + ++sub indent { ++ my($line) = @_; ++ my($indent) = 0; ++ ++ for (;;) { ++ if ($line =~ s/^( +)//) { $indent += length $1; next; } ++ if ($line =~ s/^\t//) { $indent += 8 - ($indent & 7); next; } ++ last; ++ } ++ $indent; ++} ++ ++sub handle_struct ++{ ++ # extract return type, function name and arguments ++ my($deref, $structpack) = /(\**)\s*(\S+)/; ++ my($handle) = ($^O eq "MacOS") && ($deref eq "**"); ++ $deref =~ s/\*$/->/; ++ $deref =~ s/\*/\[0\]/g; ++ $deref ||= "."; ++ my($structtype) = $structpack; ++ ++ # a struct definition needs at least 2 lines ++ blurt ("Error: Struct definition too short '$structpack'"), next PARAGRAPH ++ unless @line ; ++ ++ ($clean_struct_name = $structpack) =~ s/^$Prefix//; ++ $Full_struct_name = "${Packid}_$clean_struct_name"; ++ if ($Is_VMS) { $Full_struct_name = $SymSet->addsym($Full_struct_name); } ++ ++ # Check for duplicate function definition ++ for $tmp (@XSStack) { ++ next unless defined $tmp->{functions}{$Full_struct_name}; ++ Warn("Warning: duplicate struct definition '$clean_struct_name' detected"); ++ last; ++ } ++ ++ # print struct function header ++ print Q<<"EOF"; ++#XS(XS_${Full_struct_name}) ++#[[ ++# dXSARGS; ++# dXSI32; ++# if (items < 1 || items > 2) ++# croak("Usage: %s(STRUCT [, VALUE])", GvNAME(CvGV(cv))); ++# SP -= items; ++EOF ++ ++ # Now do a block of some sort. ++ ++ &check_cpp; ++ my($structinput, $structoutput, $structindir, $structoutdir); ++ my(@field, @fieldindir, @fieldoutdir, @input, @output); ++ $structindir = $structoutdir = line_directive(); ++ $_ = ""; ++ while (defined $_) { ++ $_ = shift @line while /^\s*$/; ++ my($fieldindir) = line_directive(); ++ my($fieldoutdir)= $fieldindir; ++ my($indent,$fieldtype,$fieldname) = ++ m|^(\s*)(\S.*\S)\s*\b(\w+)\s*;?\s*(?:/\*.*\*/)?$|; ++ $indent = indent $indent; ++ $fieldtype = TidyType $fieldtype; ++ my($input, $output); ++ my $var = "STRUCT$deref$fieldname"; ++ $_ = shift @line; ++ while (/ALIAS|READ_ONLY|INPUT:|OUTPUT:/) { ++ if (/ALIAS\s*(.*)/) { ++ $var = $1; ++ $_ = shift @line; ++ } elsif (/READ_ONLY/) { ++ $fieldindir = line_directive(); ++ $input = "$_"; ++ $_ = shift @line; ++ } elsif (/INPUT/) { ++ last unless ($_ = shift @line); ++ $fieldindir = line_directive(); ++ while (indent($_) > $indent && !/ALIAS|READ_ONLY|INPUT:|OUTPUT:/) { ++ $input .= "$_\n"; ++ $_ = shift @line; ++ } ++ } else { ++ last unless ($_ = shift @line); ++ $fieldoutdir = line_directive(); ++ while (indent($_) > $indent && !/ALIAS|READ_ONLY|INPUT:|OUTPUT:/) { ++ $output .= "$_\n"; ++ $_ = shift @line; ++ } ++ } ++ } ++ if ($fieldname eq "STRUCT") { ++ $structindir = $fieldindir; ++ $structoutdir= $fieldoutdir; ++ $structtype = $fieldtype; ++ $arg = "ST(0)"; ++ $structinput = eval "qq\a$input\a"; ++ $structoutput= eval "qq\a$output\a"; ++ } else { ++ if ($input =~ /READ_ONLY/) { ++ $input = "\tcroak(\"$var is read-only\");\n"; ++ } elsif ($input) { ++ $arg = "ST(1)"; ++ $input = eval "qq\a$input\a"; ++ } else { ++ $input = "\tXS_INPUT($fieldtype, $var, ST(1));"; ++ } ++ if ($output) { ++ $arg = "*sp"; ++ $output = "\tPUSHs(sv_newmortal());\n" . eval "qq\a$output\a"; ++ } else { ++ $output = "\tXS_PUSH($fieldtype, $var);"; ++ } ++ push @field, $fieldname; ++ push @fieldindir, $fieldindir; ++ push @fieldoutdir, $fieldoutdir; ++ push @input, $input; ++ push @output, $output; ++ } ++ } ++ print Q<<"EOF"; ++# [[ ++# $structtype STRUCT; ++EOF ++ print "\tchar STRUCT_state;\n" if $handle; ++ print "\n$structindir"; ++ XS_process($structinput || "\tXS_INPUT($structtype, STRUCT, ST(0));"); ++ print "\n\tSTRUCT_state = HGetState((Handle)STRUCT); HLock((Handle)STRUCT);\n" if ($handle); ++ print Q<<"EOF"; ++# if (items == 1) [[ /* Get field */ ++# switch (ix) [[ ++EOF ++ for (0..$#field) { ++ print Q<<"EOF"; ++# case $_: /* $field[$_] */ ++EOF ++ print $fieldoutdir[$_]; ++ XS_process($output[$_]); ++ print Q<<"EOF"; ++# break; ++EOF ++ } ++ print Q<<"EOF"; ++# ]] ++# ]] else [[ /* Set field */ ++# switch (ix) [[ ++EOF ++ for (0..$#field) { ++ print Q<<"EOF"; ++# case $_: /* $field[$_] */ ++EOF ++ print $fieldindir[$_]; ++ XS_process($input[$_]); ++ print Q<<"EOF"; ++# break; ++EOF ++ } ++ print Q<<"EOF"; ++# ]] ++EOF ++ print $structoutdir; ++ XS_process($structoutput || "\tXS_OUTPUT($structtype, STRUCT, ST(0))\n"); ++ print Q<<"EOF"; ++# ]] ++EOF ++ print "\tHSetState((Handle)STRUCT, STRUCT_state);\n" if $handle; ++ print Q<<"EOF"; ++# ]] ++# XSRETURN(1); ++#]] ++# ++EOF ++ for (0..$#field) { ++ push(@InitFileCode, Q<<"EOF"); ++# cv = newXS(\"${structpack}::$field[$_]\", XS_$Full_struct_name, file); ++# XSANY.any_i32 = $_ ; ++EOF ++ } ++} ++ + PARAGRAPH: + while (fetch_para()) { + # Print initial preprocessor statements and blank lines +@@ -1040,7 +1315,11 @@ + next PARAGRAPH ; + } + +- ++ if (s/^STRUCT\s*//) { ++ handle_struct(); ++ next PARAGRAPH; ++ } ++ + # extract return type, function name and arguments + ($ret_type) = TidyType($_); + $RETVAL_no_return = 1 if $ret_type =~ s/^NO_OUTPUT\s+//; +@@ -1285,7 +1564,7 @@ + $processing_arg_with_types = 1; + INPUT_handler() ; + } +- print $deferred; ++ XS_process($deferred); + + process_keyword("INIT|ALIAS|ATTRS|PROTOTYPE|INTERFACE_MACRO|INTERFACE|C_ARGS") ; + +@@ -1338,7 +1617,7 @@ + + # all OUTPUT done, so now push the return value on the stack + if ($gotRETVAL && $RETVAL_code) { +- print "\t$RETVAL_code\n"; ++ XS_process("\t$RETVAL_code\n"); + } elsif ($gotRETVAL || $wantRETVAL) { + my $t = $WantOptimize && $targetable{$type_kind{$ret_type}}; + my $var = 'RETVAL'; +@@ -1574,6 +1853,14 @@ + } + } + ++sub line_directive ++{ ++ # work out the line number ++ my $line_no = $line_no[@line_no - @line -1] ; ++ ++ return "#line $line_no \"$filename\"\n" ; ++} ++ + sub Warn + { + # work out the line number +@@ -1595,12 +1882,12 @@ + } + + sub generate_init { +- local($type, $num, $var) = @_; +- local($arg) = "ST(" . ($num - 1) . ")"; ++ local($type, $num, $var, $arg, $immed) = @_; + local($argoff) = $num - 1; + local($ntype); + local($tk); + ++ $arg ||= "ST(" . ($num - 1) . ")"; + $type = TidyType($type) ; + blurt("Error: '$type' not in typemap"), return + unless defined($type_kind{$type}); +@@ -1656,17 +1943,18 @@ + } else { + die "panic: do not know how to handle this branch for function pointers" + if $name_printed; +- eval qq/print "$expr;\\n"/; ++ eval qq/XS_process "$expr;\\n"/; + warn $@ if $@; + } + } + + sub generate_output { +- local($type, $num, $var, $do_setmagic, $do_push) = @_; +- local($arg) = "ST(" . ($num - ($num != 0)) . ")"; ++ local($type, $num, $var, $do_setmagic, $do_push, $arg, $mortalize) = @_; + local($argoff) = $num - 1; + local($ntype); + ++ $mortalize ||= $var eq 'RETVAL'; ++ $arg ||= "ST(" . ($num - ($num != 0)) . ")"; + $type = TidyType($type) ; + if ($type =~ /^array\(([^,]*),(.*)\)/) { + print "\tsv_setpvn($arg, (char *)$var, $2 * sizeof($1));\n"; +@@ -1695,30 +1983,30 @@ + warn $@ if $@; + print "\t\tSvSETMAGIC(ST(ix_$var));\n" if $do_setmagic; + } +- elsif ($var eq 'RETVAL') { ++ elsif ($mortalize) { + if ($expr =~ /^\t\$arg = new/) { + # We expect that $arg has refcnt 1, so we need to + # mortalize it. + eval "print qq\a$expr\a"; + warn $@ if $@; +- print "\tsv_2mortal(ST($num));\n"; +- print "\tSvSETMAGIC(ST($num));\n" if $do_setmagic; ++ print "\tsv_2mortal($arg);\n"; ++ print "\tSvSETMAGIC($arg);\n" if $do_setmagic; + } + elsif ($expr =~ /^\s*\$arg\s*=/) { + # We expect that $arg has refcnt >=1, so we need + # to mortalize it! + eval "print qq\a$expr\a"; + warn $@ if $@; +- print "\tsv_2mortal(ST(0));\n"; +- print "\tSvSETMAGIC(ST(0));\n" if $do_setmagic; ++ print "\tsv_2mortal($arg);\n"; ++ print "\tSvSETMAGIC($arg);\n" if $do_setmagic; + } + else { + # Just hope that the entry would safely write it + # over an already mortalized value. By + # coincidence, something like $arg = &sv_undef + # works too. +- print "\tST(0) = sv_newmortal();\n"; +- eval "print qq\a$expr\a"; ++ print "\t$arg = sv_newmortal();\n"; ++ eval "XS_process qq\a$expr\a"; + warn $@ if $@; + # new mortals don't have set magic + } +@@ -1730,8 +2018,8 @@ + warn $@ if $@; + print "\tSvSETMAGIC($arg);\n" if $do_setmagic; + } +- elsif ($arg =~ /^ST\(\d+\)$/) { +- eval "print qq\a$expr\a"; ++ else { ++ eval "XS_process qq\a$expr\a"; + warn $@ if $@; + print "\tSvSETMAGIC($arg);\n" if $do_setmagic; + }