summaryrefslogtreecommitdiff
path: root/vms
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2012-11-26 07:07:21 -0600
committerCraig A. Berry <craigberry@mac.com>2012-11-26 07:07:21 -0600
commit06099f79acc9684bcbd2efbb1efe56ce80c65f08 (patch)
tree5e1af1b007d5c3ca70e76befce453c7b9af88bd0 /vms
parent05a206c836e4d4e324996ada45136cc40a68126c (diff)
downloadperl-06099f79acc9684bcbd2efbb1efe56ce80c65f08.tar.gz
Consider /... a directory component with EFS on VMS.
For some reason the omnibus patch (360732b5267d5dfe) that brought Extended Filename Syntax support to the VMS port considered three dots part of the filename portion rather than part of the directory portion when converting a Unix-format path to VMS format. There's no reason this should be different with EFS, so make it the same as without EFS, which gets two TODO tests passing.
Diffstat (limited to 'vms')
-rwxr-xr-xvms/ext/filespec.t4
-rw-r--r--vms/vms.c4
2 files changed, 3 insertions, 5 deletions
diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t
index 86cdc769c2..f31d9b731e 100755
--- a/vms/ext/filespec.t
+++ b/vms/ext/filespec.t
@@ -116,8 +116,8 @@ __some_/../../__where_/__over_/__the_.__rainbow_ vmsify [.__some_.--.__wh
.../__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_:[...] ^*
+__some_/__where_/... vmsify [.__some_.__where_...] ^
+/__where_/... vmsify __where_:[...] ^
. vmsify [] ^
.. vmsify [-] ^
../.. vmsify [--] ^
diff --git a/vms/vms.c b/vms/vms.c
index 15f350bd68..b847ab08c5 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -8383,9 +8383,7 @@ static char *int_tovmsspec
else if (*(dirend+1) == '.') { /* do we have trailing "/." or "/.." or "/..."? */
if (!*(dirend+2)) dirend +=2;
if (*(dirend+2) == '.' && !*(dirend+3)) dirend += 3;
- if (decc_efs_charset == 0) {
- if (*(dirend+2) == '.' && *(dirend+3) == '.' && !*(dirend+4)) dirend += 4;
- }
+ if (*(dirend+2) == '.' && *(dirend+3) == '.' && !*(dirend+4)) dirend += 4;
}
cp1 = rslt;