In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/9bd30c63d934b70cf98e71983670d3e837ec38bb?hp=f43791029d4ac4a5dbfd6ad9b67cb5407ac32e2a>
- Log ----------------------------------------------------------------- commit 9bd30c63d934b70cf98e71983670d3e837ec38bb Author: Craig A. Berry <[email protected]> Date: Tue Jul 22 20:38:29 2014 -0500 Fix legacy VMS feature checking status. Back in 8dc9d3390b257b I consolidated two routines that were almost identical -- except for their return values. The routine I kept returns the length of the equivalence name after logical name translation, but some uses of it were checking it to see if it was a successful VMS condition value. Which means an odd length (such as from "1") was successful but an even length (such as from "ENABLE", the value recommended in the documentation) failed. So fix those uses to check for a non-zero from simple_trnlnm. For most features this only affected pre-7.3 systems, i.e., VMS releases more than thirteen years old. However, it also affected features such as PERL_VMS_POSIX_EXIT that we have made up on our own and are not tracking a CRTL feature. ----------------------------------------------------------------------- Summary of changes: vms/vms.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/vms/vms.c b/vms/vms.c index 4e37b6c..7d556bc 100644 --- a/vms/vms.c +++ b/vms/vms.c @@ -13930,7 +13930,7 @@ set_feature_default(const char *name, int value) */ if (value > 0) { status = simple_trnlnm(name, val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if (val_str[0] == 'D' || val_str[0] == '0' || val_str[0] == 'F') return 0; @@ -13983,7 +13983,7 @@ vmsperl_set_features(void) /* Allow an exception to bring Perl into the VMS debugger */ vms_debug_on_exception = 0; status = simple_trnlnm("PERL_VMS_EXCEPTION_DEBUG", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_debug_on_exception = 1; @@ -13994,7 +13994,7 @@ vmsperl_set_features(void) /* Debug unix/vms file translation routines */ vms_debug_fileify = 0; status = simple_trnlnm("PERL_VMS_FILEIFY_DEBUG", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_debug_fileify = 1; @@ -14014,7 +14014,7 @@ vmsperl_set_features(void) /* enable it so that the impact can be studied. */ vms_bug_stat_filename = 0; status = simple_trnlnm("PERL_VMS_BUG_STAT_FILENAME", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_bug_stat_filename = 1; @@ -14026,7 +14026,7 @@ vmsperl_set_features(void) /* Create VTF-7 filenames from Unicode instead of UTF-8 */ vms_vtf7_filenames = 0; status = simple_trnlnm("PERL_VMS_VTF7_FILENAMES", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_vtf7_filenames = 1; @@ -14036,9 +14036,8 @@ vmsperl_set_features(void) /* unlink all versions on unlink() or rename() */ vms_unlink_all_versions = 0; - status = simple_trnlnm - ("PERL_VMS_UNLINK_ALL_VERSIONS", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + status = simple_trnlnm("PERL_VMS_UNLINK_ALL_VERSIONS", val_str, sizeof(val_str)); + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_unlink_all_versions = 1; @@ -14050,7 +14049,7 @@ vmsperl_set_features(void) /* Detect running under GNV Bash or other UNIX like shell */ gnv_unix_shell = 0; status = simple_trnlnm("GNV$UNIX_SHELL", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { gnv_unix_shell = 1; set_feature_default("DECC$FILENAME_UNIX_NO_VERSION", 1); set_feature_default("DECC$FILENAME_UNIX_REPORT", 1); @@ -14070,7 +14069,7 @@ vmsperl_set_features(void) /* PCP mode requires creating /dev/null special device file */ decc_bug_devnull = 0; status = simple_trnlnm("DECC_BUG_DEVNULL", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) decc_bug_devnull = 1; @@ -14151,7 +14150,7 @@ vmsperl_set_features(void) #else status = simple_trnlnm ("DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_disable_to_vms_logname_translation = 1; @@ -14160,7 +14159,7 @@ vmsperl_set_features(void) #ifndef __VAX status = simple_trnlnm("DECC$EFS_CASE_PRESERVE", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_efs_case_preserve = 1; @@ -14169,14 +14168,14 @@ vmsperl_set_features(void) #endif status = simple_trnlnm("DECC$FILENAME_UNIX_REPORT", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_filename_unix_report = 1; } } status = simple_trnlnm("DECC$FILENAME_UNIX_ONLY", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_filename_unix_only = 1; @@ -14184,14 +14183,14 @@ vmsperl_set_features(void) } } status = simple_trnlnm("DECC$FILENAME_UNIX_NO_VERSION", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_filename_unix_no_version = 1; } } status = simple_trnlnm("DECC$READDIR_DROPDOTNOTYPE", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) { decc_readdir_dropdotnotype = 1; @@ -14217,9 +14216,8 @@ vmsperl_set_features(void) /* USE POSIX/DCL Exit codes - Recommended, but needs to default to */ /* for strict backward compatibility */ - status = simple_trnlnm - ("PERL_VMS_POSIX_EXIT", val_str, sizeof(val_str)); - if ($VMS_STATUS_SUCCESS(status)) { + status = simple_trnlnm("PERL_VMS_POSIX_EXIT", val_str, sizeof(val_str)); + if (status) { val_str[0] = _toupper(val_str[0]); if ((val_str[0] == 'E') || (val_str[0] == '1') || (val_str[0] == 'T')) vms_posix_exit = 1; -- Perl5 Master Repository
