diff options
author | John Malmberg <wb8tyw@gmail.com> | 2009-01-04 12:42:07 -0600 |
---|---|---|
committer | Craig A. Berry <craigberry@mac.com> | 2009-01-04 21:31:36 -0600 |
commit | e08e1e1d056fc71c85ae29ec7e82ba2b6320e6e4 (patch) | |
tree | 641cec45bf6aa05d60a9cff7e6ebaba4d968c4b4 /t/op/exec.t | |
parent | ef3a38ffad701e4f5a98a0a1f84c7e2e8c3da11e (diff) | |
download | perl-e08e1e1d056fc71c85ae29ec7e82ba2b6320e6e4.tar.gz |
VMS posix exit fixes
perl.h and perl.c need further fixes to get VMS to return the expected
POSIX exit codes when that is enabled.
This fix gets the correct numbers except for the SIGTERM case, which
will need some more work.
It also gets the posix exit code to set an error severity on a fatal
exit so that DCL and MMS/MMK or VMS native programs can easily detect a
script failure.
This patch does not address an issue in vms.c where the feature logicals
may not be correctly read. That will follow in a future patch.
The tests have been adjusted to detect when VMS is in the POSIX exit
mode and perform properly.
-John
wb8tyw@gmail.com
--
My qsl.net e-mail address is temporarily out of order.
Diffstat (limited to 't/op/exec.t')
-rwxr-xr-x | t/op/exec.t | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/t/op/exec.t b/t/op/exec.t index c23364b29d..91821aa08e 100755 --- a/t/op/exec.t +++ b/t/op/exec.t @@ -6,6 +6,25 @@ BEGIN { require './test.pl'; } +my $vms_exit_mode = 0; + +if ($^O eq 'VMS') { + if (eval 'require VMS::Feature') { + $vms_exit_mode = !(VMS::Feature::current("posix_exit")); + } else { + my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; + my $env_posix_ex = $ENV{'PERL_VMS_POSIX_EXIT'} || ''; + my $unix_rpt = $env_unix_rpt =~ /^[ET1]/i; + my $posix_ex = $env_posix_ex =~ /^[ET1]/i; + if (($unix_rpt || $posix_ex) ) { + $vms_exit_mode = 0; + } else { + $vms_exit_mode = 1; + } + } +} + + # supress VMS whinging about bad execs. use vmsish qw(hushed); @@ -85,7 +104,7 @@ is( $echo_out, "ok\n", 'piped echo emulation'); is( system(qq{$Perl -e "exit 0"}), 0, 'Explicit exit of 0' ); -my $exit_one = $Is_VMS ? 4 << 8 : 1 << 8; +my $exit_one = $vms_exit_mode ? 4 << 8 : 1 << 8; is( system(qq{$Perl "-I../lib" -e "use vmsish qw(hushed); exit 1"}), $exit_one, 'Explicit exit of 1' ); |