In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/7cae3803937000688a3564bfdabfb7a3935a6e86?hp=f9cf141af97dff1d857ee2f905962a19ac97fc36>
- Log ----------------------------------------------------------------- commit 7cae3803937000688a3564bfdabfb7a3935a6e86 Author: Craig A. Berry <[email protected]> Date: Fri Jan 20 21:29:08 2012 -0600 Restore triple-dot directory spec tests in vms/ext/filespec.t. 1fe570cc5e24eecfb07059e53e95fa864bb44142 declared directory components containing '...' as either 'not translatable' or created the expectation that each dot should be individually escaped when translating between Unix and VMS directory specs. That doesn't really make sense since in both formats it means any number of intervening directories, plus there was already code of long standing that handles it. So get the tests in this regard back in line with reality. M vms/ext/filespec.t commit 3b7517cbd076db646028fd535ee0edea05bc378a Author: Craig A. Berry <[email protected]> Date: Fri Jan 20 18:04:20 2012 -0600 Start rationalizing Unix-to-VMS file spec conversion code. Back in 360732b5267d5dfef32b932bf13ceebc6683df74, we started using an experimental new conversion routine that had been designed for a CRTL feature called POSIX-compliant pathnames but at this point was added as a jumping-off place halfway through the existing code for converting Unix-format file specifications to VMS format. But only for newer versions of VMS and only when a different and unrelated feature called Extended Filename Syntax (EFS) had been enabled. But this newer implementation (somewhat inauspiciously named posix_to_vmsspec_hardway) is less complete and more buggy than the older implementation, and it imposes expectations that have nothing to do with EFS, not to mention making for a larger, version- specific support matrix. So for now go back to the older, better-tested (though imperfect) version and simplify the differences made by invoking EFS. None of this makes any difference at all unless non-default CRTL features have been enabled. M vms/vms.c commit 102411b6b99d0bbca50835265fea29091f139c13 Author: Craig A. Berry <[email protected]> Date: Fri Jan 20 17:19:43 2012 -0600 VMS-specific symlink tweak for stat.t If the target of a symlink has a version number in the symlink, that makes the symlink implementation unable to locate it, so trim off the version. M t/op/stat.t ----------------------------------------------------------------------- Summary of changes: t/op/stat.t | 4 +++- vms/ext/filespec.t | 14 +++++++------- vms/vms.c | 11 ----------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/t/op/stat.t b/t/op/stat.t index df31a38..1fa0d2f 100644 --- a/t/op/stat.t +++ b/t/op/stat.t @@ -479,7 +479,9 @@ SKIP: { # bug id 20020124.004 # If we have d_lstat, we should have symlink() my $linkname = 'stat-' . rand =~ y/.//dr; - symlink $Perl, $linkname or die "# Can't symlink $0: $!"; + my $target = $Perl; + $target =~ s/;\d+\z// if $Is_VMS; # symlinks don't like version numbers + symlink $target, $linkname or die "# Can't symlink $0: $!"; lstat $linkname; -T _; eval { lstat _ }; diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t index c5bf12b..7e12e12 100755 --- a/vms/ext/filespec.t +++ b/vms/ext/filespec.t @@ -113,15 +113,15 @@ __lyrics_:[__are_.__very_^.__sappy_]__but_^.__rhymes_^.__are_.__true_ unixify __some_/__where_/__over_/__the_.__rainbow_ vmsify [.__some_.__where_.__over_]__the_.__rainbow_ ^ ../__some_/__where_/__over_/__the_.__rainbow_ vmsify [-.__some_.__where_.__over_]__the_.__rainbow_ ^ __some_/../../__where_/__over_/__the_.__rainbow_ vmsify [.__some_.--.__where_.__over_]__the_.__rainbow_ ^ -.../__some_/__where_/__over_/__the_.__rainbow_ vmsify [...__some_.__where_.__over_]__the_.__rainbow_ [.^.^.^..__some_.__where_.__over_]__the_.__rainbow_ -__some_/.../__where_/__over_/__the_.__rainbow_ vmsify [.__some_...__where_.__over_]__the_.__rainbow_ [.__some_.^.^.^..__where_.__over_]__the_.__rainbow_ -/__some_/.../__where_/__over_/__the_.__rainbow_ vmsify __some_:[...__where_.__over_]__the_.__rainbow_ __some_:[^.^.^..__where_.__over_]__the_.__rainbow_ -__some_/__where_/... vmsify [.__some_.__where_...] [.__some_.__where_]^.^.^.. -/__where_/... vmsify __where_:[...] __where_:[]^.^.^.. +.../__some_/__where_/__over_/__the_.__rainbow_ vmsify [...__some_.__where_.__over_]__the_.__rainbow_ ^ +__some_/.../__where_/__over_/__the_.__rainbow_ vmsify [.__some_...__where_.__over_]__the_.__rainbow_ ^ +/__some_/.../__where_/__over_/__the_.__rainbow_ vmsify __some_:[...__where_.__over_]__the_.__rainbow_ ^ +__some_/__where_/... vmsify [.__some_.__where_...] ^* +/__where_/... vmsify __where_:[...] ^* . vmsify [] ^ .. vmsify [-] ^ ../.. vmsify [--] ^ -.../ vmsify [...] [.^.^.^.] +.../ vmsify [...] ^ / vmsify sys$disk:[000000] ^* ./$(macro)/ vmsify [.$(macro)] ^ ./$(macro) vmsify []$(macro) ^ @@ -160,7 +160,7 @@ __path_.notdir pathify __path__notdir/ __path_.notdir/ __down_:[__the_.__garden_]__path_.dir;1 unixpath /__down_/__the_/__garden_/__path_/ ^ /__down_/__the_/__garden_/__path_ vmspath __down_:[__the_.__garden_.__path_] ^ __down_:[__the_.__garden_.__path_] unixpath /__down_/__the_/__garden_/__path_/ ^ -__down_:[__the_.__garden_.__path_...] unixpath /__down_/__the_/__garden_/__path_/.../ # Not translatable +__down_:[__the_.__garden_.__path_...] unixpath /__down_/__the_/__garden_/__path_/.../ ^ /__down_/__the_/__garden_/__path_.dir vmspath __down_:[__the_.__garden_.__path_] ^ [.__down_.__the_.__garden_]__path_.dir unixpath __down_/__the_/__garden_/__path_/ ^ __down_/__the_/__garden_/__path_ vmspath [.__down_.__the_.__garden_.__path_] ^ diff --git a/vms/vms.c b/vms/vms.c index 95b69a9..4f69ec5 100644 --- a/vms/vms.c +++ b/vms/vms.c @@ -8467,17 +8467,6 @@ static char *int_tovmsspec } } -/* If EFS charset mode active, handle the conversion */ -#if __CRTL_VER >= 80200000 && !defined(__VAX) - if (decc_efs_charset) { - posix_to_vmsspec_hardway(rslt, rslt_len, path, dir_flag, utf8_flag); - if (vms_debug_fileify) { - fprintf(stderr, "int_tovmsspec: rslt = %s\n", rslt); - } - return rslt; - } -#endif - if (*(dirend+1) == '.') { /* do we have trailing "/." or "/.." or "/..."? */ if (!*(dirend+2)) dirend +=2; if (*(dirend+2) == '.' && !*(dirend+3)) dirend += 3; -- Perl5 Master Repository
